Hi, all,

I am trying to get the text string in the parser for product 
'value_experssion', but I cannot find a good way to do it for a long time 
without success.
Does anyone know how to do that?

Example, here is a production for function firstdayofyear:

     | TOK_FIRSTDAYOFYEAR '(' value_expression ')'
        {
                  $$ = new (PARSERHEAP()) ZZZBinderFunction(ITM_FIRSTDAYOFYEAR, 
$3);
                }

if the user input string for this production is "firstdayofyear ( tbl1.col1 )"
I want to get the full string as "firstdayofyear (tbl1.col1)"

So here is the code I tried but failed:
     | TOK_FIRSTDAYOFYEAR '(' value_expression ')'
        {
                                 NAString *utf8Str3 = unicodeToChar
                                   (ToTokvalPlusYYText(&$3)->yytext,
                                    ToTokvalPlusYYText(&$3)->yyleng,
                                    (CharInfo::CharSet) (
                                      ComGetNameInterfaceCharSet() // 
CharInfo::UTF8
                                    ),
                                    PARSERHEAP());
                NAString fullstr = "firstdayofyear ( " + *utf8Str3 + ")";
                  $$ = new (PARSERHEAP()) ZZZBinderFunction(ITM_FIRSTDAYOFYEAR, 
$3);
                }

utf8Str3 is a NULL pointer for "firstdayofyear (tbl1.col1) ", because a column 
will be parsed as an ItemExpr pointer, and ToTokvalPlusYYText failed to convert 
it and get correct yytext. I cannot find an example in the sqlparser.y for 
this, so ask help in the mail list.

The alternative way I now use is checking if utf8Str3 is NULL, if yes, then 
this is not what I need, since luckily in my case, the value_expression must be 
a function name which can always get the correct yytext. But I hope there is a 
better way to do this.

thanks,
Ming

Reply via email to