On Fri, Jul 4, 2014 at 12:30 PM, Ashoke <s.ash...@gmail.com> wrote: > Thank you Ashutosh*.* That was the issue. But, could you please explain > why it worked from command line? > > I do not know. Any time we add a member to a node and find it's value coming out NULL or 0 instead of the one set, corresponding _copy* is the first suspect. You may be able find why it worked in command line and why not through the connector by breaking on copyObject() in either cases.
> > On Fri, Jul 4, 2014 at 11:49 AM, Ashutosh Bapat < > ashutosh.ba...@enterprisedb.com> wrote: > >> You may have to add code to copy inp_str to _copyVacuumStmt(). See how a >> character array being copied from other _copy* functions. >> >> >> On Fri, Jul 4, 2014 at 10:43 AM, Ashoke <s.ash...@gmail.com> wrote: >> >>> Hi, >>> >>> ------------------------------ >>> >>> I have defined a new command my_command in PostgreSQL. This command >>> takes the path of ANALYZE and inside analyze.c, I have a function to do >>> some operations if its my_command.This command takes the input >>> arguments: table name, column name and an input string. >>> >>> my_command nation (n_nationkey) 'input string'; >>> >>> When I run this command from command line psql, it works as expected. >>> But when I call the same command from a java application, the variable that >>> stores the input string is NULL. >>> >>> I printed the value of the input string in gram.y file where I have >>> defined my_command. >>> fprintf (stderr, "I am inside gram.y %s\n",n->inp_str); and the input >>> string is printed correctly. >>> >>> But when I print stmt->inp_str in the function standard_ProcessUtility() >>> of utility.c for the case T_VacuumStmt, I get the value as NULL. This >>> is as far as I could trace back from analyze.c. >>> >>> I am not sure how executing the same command from an application can >>> make a difference. >>> >>> gram.y content gist: >>> ------------------------------ >>> >>> MyStmt: >>> my_keyword qualified_name name_list my_inp_str >>> { >>> VacuumStmt *n = makeNode(VacuumStmt); >>> n->options = VACOPT_ANALYZE; >>> n->freeze_min_age = -1; >>> n->freeze_table_age = -1; >>> n->relation = $2; >>> n->va_cols = $3; >>> n->inp_str = $4; >>> fprintf (stderr, "I am inside gram.y %s\n",n->inp_str); >>> >>> $$ = (Node *)n; >>> }; >>> >>> char *inp_str is added to the struct VacuumStmt in parsenodes.h >>> >>> --------------------------- >>> >>> Only the newly added char *inp_str(that is different from ANALYZE) >>> value is NULL. I was able to retrieve the column name from va_cols. >>> >>> Any help is appreciated. Thanks! >>> -- >>> Regards, >>> Ashoke >>> >>> >>> >> >> >> -- >> Best Wishes, >> Ashutosh Bapat >> EnterpriseDB Corporation >> The Postgres Database Company >> > > > > -- > Regards, > Ashoke > > > > > -- Best Wishes, Ashutosh Bapat EnterpriseDB Corporation The Postgres Database Company