--- parser3/src/classes/hash.C 2001/10/11 12:43:28 1.22 +++ parser3/src/classes/hash.C 2001/10/23 14:43:44 1.24 @@ -4,7 +4,7 @@ Copyright (c) 2001 ArtLebedev Group (http://www.artlebedev.com) Author: Alexander Petrosyan (http://design.ru/paf) - $Id: hash.C,v 1.22 2001/10/11 12:43:28 parser Exp $ + $Id: hash.C,v 1.24 2001/10/23 14:43:44 parser Exp $ */ #include "classes.h" @@ -56,7 +56,7 @@ public: } void before_rows() { if(columns.size()<=1) - PTHROW(0, 0, + throw Exception(0, 0, &method_name, "column count must be more than 1 to create a hash"); } @@ -71,7 +71,7 @@ public: statement_cstr, row_index++); if(column_index==0) { VHash *row_vhash=new(pool) VHash(pool); - row_hash=row_vhash->get_hash(); + row_hash=row_vhash->get_hash(0); rows_hash.put(*cell, row_vhash); } else row_hash->put(*columns.get_string(column_index), new(pool) VString(*cell)); @@ -100,7 +100,7 @@ static void _create_or_add(Request& r, c if(params->size()) { Value& vb=params->as_no_junction(0, "param must be hash"); - if(Hash *b=vb.get_hash()) + if(Hash *b=vb.get_hash(&method_name)) b->for_each(copy_all_overwrite_to, &static_cast(r.self)->hash()); } } @@ -114,7 +114,7 @@ static void _sub(Request& r, const Strin Pool& pool=r.pool(); Value& vb=params->as_no_junction(0, "param must be hash"); - if(Hash *b=vb.get_hash()) + if(Hash *b=vb.get_hash(&method_name)) b->for_each(remove_key_from, &static_cast(r.self)->hash()); } @@ -130,7 +130,7 @@ static void _union(Request& r, const Str Hash& dest=*new(pool) Hash(static_cast(r.self)->hash()); // dest += b Value& vb=params->as_no_junction(0, "param must be hash"); - if(Hash *b=vb.get_hash()) + if(Hash *b=vb.get_hash(&method_name)) b->for_each(copy_all_dontoverwrite_to, &dest); // return result @@ -160,7 +160,7 @@ static void _intersection(Request& r, co Hash& dest=*new(pool) Hash(pool); // dest += b Value& vb=params->as_no_junction(0, "param must be hash"); - if(Hash *b=vb.get_hash()) { + if(Hash *b=vb.get_hash(&method_name)) { Copy_intersection_to_info info={ b, &dest @@ -187,7 +187,7 @@ static void _intersects(Request& r, cons Hash& dest=*new(pool) Hash(pool); // dest += b Value& vb=params->as_no_junction(0, "param must be hash"); - if(Hash *b=vb.get_hash()) + if(Hash *b=vb.get_hash(&method_name)) yes=static_cast(r.self)->hash().first_that(intersects, b)!=0; // return result @@ -201,7 +201,7 @@ static void _sql(Request& r, const Strin Pool& pool=r.pool(); if(!r.connection) - PTHROW(0, 0, + throw Exception(0, 0, &method_name, "without connect"); @@ -227,20 +227,10 @@ static void _sql(Request& r, const Strin hash.clear(); Hash_sql_event_handlers handlers(pool, method_name, statement_string, statement_cstr, hash); - bool need_rethrow=false; Exception rethrow_me; - PTRY { - r.connection->query( - statement_cstr, offset, limit, - handlers); - } - PCATCH(e) { // query problem - rethrow_me=e; need_rethrow=true; - } - PEND_CATCH - if(need_rethrow) - PTHROW(rethrow_me.type(), rethrow_me.code(), - &statement_string, // setting more specific source [were url] - rethrow_me.comment()); + + r.connection->query( + statement_cstr, offset, limit, + handlers); } static void keys_collector(const Hash::Key& key, Hash::Val *value, void *info) {