--- parser3/src/classes/table.C 2007/08/20 10:07:36 1.232 +++ parser3/src/classes/table.C 2007/08/28 10:34:49 1.234 @@ -5,7 +5,7 @@ Author: Alexandr Petrosian (http://paf.design.ru) */ -static const char * const IDENT_TABLE_C="$Date: 2007/08/20 10:07:36 $"; +static const char * const IDENT_TABLE_C="$Date: 2007/08/28 10:34:49 $"; #include using namespace std; @@ -750,10 +750,10 @@ static void _hash(Request& r, MethodPara distinct=vdistinct_value.as_bool()?D_FIRST:D_ILLEGAL; } if(Value* vvalue_type_code=options->get(sql_value_type_name)) { - if(value_type==C_TABLE){ // $.distinct[tables] was specified + if(value_type==C_TABLE){ // $.distinct[tables] was specified already throw Exception(PARSER_RUNTIME, 0, - "you can't specify $.distinct[tables] and $.values[] together."); + "you can't specify $.distinct[tables] and $.type[] together."); } else { valid_options++; Value& vvalue_type_value=r.process_to_value(*vvalue_type_code); @@ -812,7 +812,7 @@ static void _hash(Request& r, MethodPara if(value_type==C_STRING) throw Exception(PARSER_RUNTIME, 0, - "with $.values[string] you must specify one value field(s)"); + "with $.type[string] you must specify one value field(s)"); // if(!(distinct!=D_ILLEGAL && distinct!=D_FIRST)) for(size_t i=0; icount(); i++) value_fields+=i; @@ -1194,10 +1194,15 @@ static void _sql(Request& r, MethodParam GET_SELF(r, VTable).set_table(result); } -static void _columns(Request& r, MethodParams&) { +static void _columns(Request& r, MethodParams& params) { + const String* column_column_name; + if(params.count()>0) + column_column_name=¶ms.as_string(0, COLUMN_NAME_MUST_BE_STRING); + else + column_column_name=new String("column"); Table::columns_type result_columns(new ArrayString); - *result_columns+=new String("column"); + *result_columns+=column_column_name; Table& result_table=*new Table(result_columns); Table& source_table=GET_SELF(r, VTable).table(); @@ -1294,8 +1299,8 @@ MTable::MTable(): Methoded("table") { // ^table:sql[query][$.limit(1) $.offset(2)] add_native_method("sql", Method::CT_DYNAMIC, _sql, 1, 2); - // ^table:columns[] - add_native_method("columns", Method::CT_DYNAMIC, _columns, 0, 0); + // ^table:columns[[column name]] + add_native_method("columns", Method::CT_DYNAMIC, _columns, 0, 1); // ^table.select(expression) = table add_native_method("select", Method::CT_DYNAMIC, _select, 1, 1);