vBulletin Search Engine Optimization
| |||||||
| Register | FAQ | Members List | Calendar | Search | Today's Posts | Mark Forums Read |
| ||||
| hello I am playing with methods. It's +/- function with first hidden arguments. example: sin(10) ~ (10).sin() is equivalent. legal is substring('aaaa',1,3).upper() too etc I spent some time with bison (without success). indirection_el: '.' attr_name { $$ = (Node *) makeString($2); } | '.' attr_name '(' ')' { $$ = (Node *) makeString($2); } | '.' attr_name '(' expr_list ')' { $$ = (Node *) makeString($2); } | '.' '*' { $$ = (Node *) makeString("*"); } this is correct but doesn't work postgres=# select (10).aaa.aaaa.bbbb.procedure(10); ERROR: syntax error at or near "(" LINE 1: select (10).aaa.aaaa.bbbb.procedure(10); ^ postgres=# select (10).aaa.aaaa.bbbb.procedure(); ERROR: syntax error at or near "(" LINE 1: select (10).aaa.aaaa.bbbb.procedure(); correct is indirection_el: '.' attr_name { $$ = (Node *) makeString($2); } | '.' type_function_name '(' ')' { $$ = (Node *) makeString($2); } | '.' type_function_name '(' expr_list ')' { $$ = (Node *) makeString($2); } | '.' '*' { $$ = (Node *) makeString("*"); } It works postgres=# select (10).aaa(10).ajjaja(10).qqq(); ERROR: column notation .aaa applied to type integer, which is not a composite type but there are bison gram.y gram.y: conflicts: 3 reduce/reduce state 1160 1436 type_function_name: IDENT . 1439 ColLabel: IDENT . '(' reduce using rule 1436 (type_function_name) '(' [reduce using rule 1439 (ColLabel)] $default reduce using rule 1439 (ColLabel) state 1165 1437 type_function_name: unreserved_keyword . 1440 ColLabel: unreserved_keyword . '(' reduce using rule 1437 (type_function_name) '(' [reduce using rule 1440 (ColLabel)] $default reduce using rule 1440 (ColLabel) state 1167 1438 type_function_name: type_func_name_keyword . 1442 ColLabel: type_func_name_keyword . '(' reduce using rule 1438 (type_function_name) '(' [reduce using rule 1442 (ColLabel)] $default reduce using rule 1442 (ColLabel) Any ideas? Regards Pavel ---------------------------(end of broadcast)--------------------------- TIP 9: In versions below 8.0, the planner will ignore your desire to choose an index scan if your joining column's datatypes do not match |
| |||
| Pavel Stehule wrote: > I am playing with methods. It's +/- function with first hidden arguments. > > example: sin(10) ~ (10).sin() is equivalent. > legal is substring('aaaa',1,3).upper() too etc > > I spent some time with bison (without success). I don't think you can actually resolve this in the parser. For example a.b(x) could be, call function b(x) in schema a, or call function b(a, x). You need to resolve this later, with catalog access, it appears. -- Peter Eisentraut http://developer.postgresql.org/~petere/ ---------------------------(end of broadcast)--------------------------- TIP 3: Have you checked our extensive FAQ? http://www.postgresql.org/docs/faq |
| ||||
| On 22/11/2007, Peter Eisentraut <peter_e@gmx.net> wrote: > Pavel Stehule wrote: > > I am playing with methods. It's +/- function with first hidden arguments. > > > > example: sin(10) ~ (10).sin() is equivalent. > > legal is substring('aaaa',1,3).upper() too etc > > > > I spent some time with bison (without success). > > I don't think you can actually resolve this in the parser. For example > > a.b(x) > > could be, call function b(x) in schema a, or call function b(a, x). > > You need to resolve this later, with catalog access, it appears. > yes, I know, but I have to go across parser first Pavel > -- > Peter Eisentraut > http://developer.postgresql.org/~petere/ > ---------------------------(end of broadcast)--------------------------- TIP 4: Have you searched our list archives? http://archives.postgresql.org |