--- parser3/src/classes/hash.C 2002/08/01 11:26:43 1.41 +++ parser3/src/classes/hash.C 2002/09/17 08:48:35 1.47 @@ -5,7 +5,7 @@ Author: Alexandr Petrosian (http://paf.design.ru) */ -static const char* IDENT_HASH_C="$Id: hash.C,v 1.41 2002/08/01 11:26:43 paf Exp $"; +static const char* IDENT_HASH_C="$Date: 2002/09/17 08:48:35 $"; #include "classes.h" #include "pa_request.h" @@ -194,7 +194,7 @@ static void _sql(Request& r, const Strin ulong offset=0; if(params->size()>1) { Value& voptions=params->as_no_junction(1, "options must be hash, not code"); - if(voptions.is_defined()) + if(!voptions.is_string()) if(Hash *options=voptions.get_hash(&method_name)) { if(Value *vlimit=(Value *)options->get(*sql_limit_name)) limit=(ulong)r.process_to_value(*vlimit).as_double(); @@ -217,7 +217,8 @@ static void _sql(Request& r, const Strin r.connection(&method_name)->query( statement_cstr, offset, limit, - handlers); + handlers, + statement_string); } static void keys_collector(const Hash::Key& key, Hash::Val *value, void *info) { @@ -271,17 +272,17 @@ static void one_foreach_cycle(const Hash Foreach_info& i=*static_cast(info); i.vkey->set_string(akey); - i.r->root->put_element(*i.key_var_name, i.vkey); - i.r->root->put_element(*i.value_var_name, static_cast(avalue)); + i.r->method_frame->put_element(*i.key_var_name, i.vkey, false); + i.r->method_frame->put_element(*i.value_var_name, static_cast(avalue), false); - StringOrValue processed_body=i.r->process(*i.body_code); - if(i.delim_maybe_code) { // delimiter set? - const String *string=processed_body.get_string(); - if(i.need_delim && string && string->size()) // need delim & iteration produced string? + StringOrValue sv_processed=i.r->process(*i.body_code); + const String *s_processed=sv_processed.get_string(); + if(i.delim_maybe_code && s_processed && s_processed->size()) { // delimiter set and we have body + if(i.need_delim) // need delim & iteration produced string? i.r->write_pass_lang(i.r->process(*i.delim_maybe_code)); i.need_delim=true; } - i.r->write_pass_lang(processed_body); + i.r->write_pass_lang(sv_processed); } static void _foreach(Request& r, const String& method_name, MethodParams *params) { Pool& pool=r.pool();