--- parser3/src/classes/table.C 2009/07/29 05:01:33 1.263 +++ parser3/src/classes/table.C 2009/09/08 09:11:51 1.267 @@ -5,7 +5,7 @@ Author: Alexandr Petrosian (http://paf.design.ru) */ -static const char * const IDENT_TABLE_C="$Date: 2009/07/29 05:01:33 $"; +static const char * const IDENT_TABLE_C="$Date: 2009/09/08 09:11:51 $"; #if (!defined(NO_STRINGSTREAM) && !defined(FREEBSD4)) #include @@ -17,6 +17,7 @@ using namespace std; #include "pa_common.h" #include "pa_request.h" +#include "pa_charsets.h" #include "pa_vtable.h" #include "pa_vint.h" #include "pa_sql_connection.h" @@ -26,7 +27,7 @@ using namespace std; class MTable: public Methoded { public: // VStateless_class - Value* create_new_value(Pool&, HashStringValue*) { return new VTable(); } + Value* create_new_value(Pool&) { return new VTable(); } public: MTable(); @@ -461,7 +462,7 @@ static void _save(Request& r, MethodPara if(valid_options!=options->count()) throw Exception(PARSER_RUNTIME, 0, - "invalid option passed"); + INVALID_OPTION_PASSED); } else { throw Exception(PARSER_RUNTIME, 0, @@ -523,7 +524,7 @@ static void _save(Request& r, MethodPara string data=ost.str(); const char* data_cstr=data.c_str(); - file_write(file_spec, data_cstr, data.length(), true /* as text */, do_append); + file_write(r.charsets, file_spec, data_cstr, data.length(), true /* as text */, do_append); } #else @@ -565,8 +566,7 @@ static void _save(Request& r, MethodPara // write { const char* data_cstr=sdata.cstr(); - file_write(file_spec, - data_cstr, sdata.length(), true, do_append); + file_write(r.charsets, file_spec, data_cstr, sdata.length(), true, do_append); if(*data_cstr) // not empty (when empty it's not heap memory) pa_free((void*)data_cstr); // not needed anymore } @@ -911,6 +911,14 @@ static void _sort(Request& r, MethodPara else seq[i].value.d=value.as_double(); } + + // @todo: handle this elsewhere + if(r.charsets.source().NAME()=="KOI8-R" && key_values_are_strings) { + for(i=0; i