Re: Issue while calling new PostgreSQL command from a Java Application

From: Ashoke <s(dot)ashoke(at)gmail(dot)com>
To: Ashutosh Bapat <ashutosh(dot)bapat(at)enterprisedb(dot)com>
Cc: pgsql-hackers <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: Issue while calling new PostgreSQL command from a Java Application
Date: 2014-07-04 07:00:48
Message-ID: CALpszJPfm8jAOez8AEU17bQKGbBJGeqLtC3PVLyqN_x9em1BdA@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

Thank you Ashutosh*.* That was the issue. But, could you please explain why
it worked from command line?

On Fri, Jul 4, 2014 at 11:49 AM, Ashutosh Bapat <
ashutosh(dot)bapat(at)enterprisedb(dot)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(dot)ashoke(at)gmail(dot)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

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Vik Fearing 2014-07-04 07:43:12 Re: Cluster name in ps output
Previous Message Fujii Masao 2014-07-04 06:50:32 Re: Cluster name in ps output