--- parser3/src/classes/table.C 2009/11/09 00:31:07 1.269 +++ parser3/src/classes/table.C 2010/07/05 05:54:46 1.272 @@ -5,7 +5,7 @@ Author: Alexandr Petrosian (http://paf.design.ru) */ -static const char * const IDENT_TABLE_C="$Date: 2009/11/09 00:31:07 $"; +static const char * const IDENT_TABLE_C="$Date: 2010/07/05 05:54:46 $"; #if (!defined(NO_STRINGSTREAM) && !defined(FREEBSD4)) #include @@ -106,9 +106,7 @@ static Table::Action_options get_action_ } if(valid_options!=options->count()) - throw Exception(PARSER_RUNTIME, - 0, - "called with invalid option"); + throw Exception(PARSER_RUNTIME, 0, CALLED_WITH_INVALID_OPTION); return result; } @@ -464,9 +462,7 @@ static void _save(Request& r, MethodPara if(HashStringValue* options=voptions.get_hash()) { int valid_options=separators.load(*options); if(valid_options!=options->count()) - throw Exception(PARSER_RUNTIME, - 0, - INVALID_OPTION_PASSED); + throw Exception(PARSER_RUNTIME, 0, CALLED_WITH_INVALID_OPTION); } else { throw Exception(PARSER_RUNTIME, 0, @@ -685,7 +681,8 @@ static void table_row_to_hash(Table::ele bool exist=false; switch(info->value_type) { case C_STRING: { - exist=info->hash->put_dont_replace(*key, new VString(*row->get(info->value_fields->get(0)))); + size_t index=info->value_fields->get(0); + exist=info->hash->put_dont_replace(*key, (index < row->count()) ? new VString(*row->get(index)) : new VString()); break; } case C_HASH: { @@ -788,16 +785,12 @@ static void _hash(Request& r, MethodPara } if(valid_options!=options->count()) - throw Exception(PARSER_RUNTIME, - 0, - "called with invalid option"); + throw Exception(PARSER_RUNTIME, 0, CALLED_WITH_INVALID_OPTION); } } if(param_index==2) // options was specified but not as hash - throw Exception(PARSER_RUNTIME, - 0, - "options must be hash"); + throw Exception(PARSER_RUNTIME, 0, OPTIONS_MUST_BE_HASH); Array value_fields; if(param_index==0){ // list of columns wasn't specified @@ -979,7 +972,7 @@ static void _flip(Request& r, MethodPara Table& old_table=GET_SELF(r, VTable).table(); Table& new_table=*new Table(0); if(size_t old_count=old_table.count()) - if(size_t old_cols=old_table[0]->count()) + if(size_t old_cols=old_table.columns()?old_table.columns()->count():old_table[0]->count()) for(size_t column=0; columncount()) - throw Exception(PARSER_RUNTIME, - 0, - "called with invalid option"); + throw Exception(PARSER_RUNTIME, 0, CALLED_WITH_INVALID_OPTION); } else - throw Exception(PARSER_RUNTIME, - 0, - "options must be hash"); + throw Exception(PARSER_RUNTIME, 0, OPTIONS_MUST_BE_HASH); } SQL_Driver::Placeholder* placeholders=0;