--- parser3/src/classes/table.C 2011/11/19 04:15:31 1.282 +++ parser3/src/classes/table.C 2012/03/16 09:24:08 1.286 @@ -1,12 +1,10 @@ /** @file Parser: @b table parser class. - Copyright (c) 2001-2009 ArtLebedev Group (http://www.artlebedev.com) + Copyright (c) 2001-2012 Art. Lebedev Studio (http://www.artlebedev.com) Author: Alexandr Petrosian (http://paf.design.ru) */ -static const char * const IDENT_TABLE_C="$Date: 2011/11/19 04:15:31 $"; - #if (!defined(NO_STRINGSTREAM) && !defined(FREEBSD4)) #include #endif @@ -23,6 +21,8 @@ static const char * const IDENT_TABLE_C= #include "pa_vbool.h" #include "pa_array.h" +volatile const char * IDENT_TABLE_C="$Id: table.C,v 1.286 2012/03/16 09:24:08 moko Exp $"; + // class class MTable: public Methoded { @@ -209,7 +209,10 @@ static void _create(Request& r, MethodPa data.split(head, raw_pos_after, "\n", String::L_AS_IS, 1); if(head.count()) { size_t col_pos_after=0; - head[0]->split(*columns, col_pos_after, *separators.scolumn, String::L_AS_IS); + if(head[0]->is_empty()) + *columns += new String(); + else + head[0]->split(*columns, col_pos_after, *separators.scolumn, String::L_AS_IS); } } @@ -1275,7 +1278,10 @@ static void _select(Request& r, MethodPa Table& result_table=*new Table(source_table.columns()); - if(size_t size=source_table.count() && limit>0){ + size_t size=source_table.count(); + if(offset<0) + offset+=size; + if(size && limit>0 && offset>=0 && (size_t)offset