Обсуждение: Issue while calling new PostgreSQL command from a Java Application

Поиск
Список
Период
Сортировка

Issue while calling new PostgreSQL command from a Java Application

От
Ashoke
Дата:
<div dir="ltr"><p style="margin:0px 0px
1em;padding:0px;border:0px;font-size:14px;vertical-align:baseline;clear:both;color:rgb(0,0,0);font-family:Arial,'Liberation
Sans','DejaVuSans',sans-serif;line-height:17.804800033569336px"> Hi,<p style="margin:0px 0px
1em;padding:0px;border:0px;font-size:14px;vertical-align:baseline;clear:both;color:rgb(0,0,0);font-family:Arial,'Liberation
Sans','DejaVuSans',sans-serif;line-height:17.804800033569336px"> ------------------------------<p style="margin:0px 0px
1em;padding:0px;border:0px;font-size:14px;vertical-align:baseline;clear:both;color:rgb(0,0,0);font-family:Arial,'Liberation
Sans','DejaVuSans',sans-serif;line-height:17.804800033569336px"> I have defined a new command <code
style="margin:0px;padding:1px
5px;border:0px;vertical-align:baseline;background-color:rgb(238,238,238);font-family:Consolas,Menlo,Monaco,'Lucida
Console','LiberationMono','DejaVu Sans Mono','Bitstream Vera Sans Mono','Courier
New',monospace,serif;white-space:pre-wrap">my_command</code> inPostgreSQL. This command takes the path of <code
style="margin:0px;padding:1px
5px;border:0px;vertical-align:baseline;background-color:rgb(238,238,238);font-family:Consolas,Menlo,Monaco,'Lucida
Console','LiberationMono','DejaVu Sans Mono','Bitstream Vera Sans Mono','Courier
New',monospace,serif;white-space:pre-wrap">ANALYZE</code> andinside <code style="margin:0px;padding:1px
5px;border:0px;vertical-align:baseline;background-color:rgb(238,238,238);font-family:Consolas,Menlo,Monaco,'Lucida
Console','LiberationMono','DejaVu Sans Mono','Bitstream Vera Sans Mono','Courier
New',monospace,serif;white-space:pre-wrap">analyze.c</code>,I have a function to do some operations if its <code
style="margin:0px;padding:1px
5px;border:0px;vertical-align:baseline;background-color:rgb(238,238,238);font-family:Consolas,Menlo,Monaco,'Lucida
Console','LiberationMono','DejaVu Sans Mono','Bitstream Vera Sans Mono','Courier
New',monospace,serif;white-space:pre-wrap">my_command</code>.Thiscommand takes the input arguments: table name, column
nameand an input string.<p style="margin:0px 0px
1em;padding:0px;border:0px;font-size:14px;vertical-align:baseline;clear:both;color:rgb(0,0,0);font-family:Arial,'Liberation
Sans','DejaVuSans',sans-serif;line-height:17.804800033569336px"><span style="font-family:Consolas,Menlo,Monaco,'Lucida
Console','LiberationMono','DejaVu Sans Mono','Bitstream Vera Sans Mono','Courier
New',monospace,serif;white-space:pre-wrap;background-color:rgb(238,238,238)">my_commandnation (n_nationkey) 'input
string';</span><br/><p style="margin:0px 0px
1em;padding:0px;border:0px;font-size:14px;vertical-align:baseline;clear:both;color:rgb(0,0,0);font-family:Arial,'Liberation
Sans','DejaVuSans',sans-serif;line-height:17.804800033569336px"> When I run this command from command line <code
style="margin:0px;padding:1px
5px;border:0px;vertical-align:baseline;background-color:rgb(238,238,238);font-family:Consolas,Menlo,Monaco,'Lucida
Console','LiberationMono','DejaVu Sans Mono','Bitstream Vera Sans Mono','Courier
New',monospace,serif;white-space:pre-wrap">psql</code>,it works as expected. But when I call the same command from a
javaapplication, the variable that stores the input string is NULL.<p style="margin:0px 0px
1em;padding:0px;border:0px;font-size:14px;vertical-align:baseline;clear:both;color:rgb(0,0,0);font-family:Arial,'Liberation
Sans','DejaVuSans',sans-serif;line-height:17.804800033569336px"> I printed the value of the input string in gram.y file
whereI have defined <code style="margin:0px;padding:1px
5px;border:0px;vertical-align:baseline;background-color:rgb(238,238,238);font-family:Consolas,Menlo,Monaco,'Lucida
Console','LiberationMono','DejaVu Sans Mono','Bitstream Vera Sans Mono','Courier
New',monospace,serif;white-space:pre-wrap">my_command</code>.<br/><code style="margin:0px;padding:1px
5px;border:0px;vertical-align:baseline;background-color:rgb(238,238,238);font-family:Consolas,Menlo,Monaco,'Lucida
Console','LiberationMono','DejaVu Sans Mono','Bitstream Vera Sans Mono','Courier
New',monospace,serif;white-space:pre-wrap">fprintf(stderr, "I am inside gram.y %s\n",n->inp_str);</code> and the
inputstring is printed correctly.<p style="margin:0px 0px
1em;padding:0px;border:0px;font-size:14px;vertical-align:baseline;clear:both;color:rgb(0,0,0);font-family:Arial,'Liberation
Sans','DejaVuSans',sans-serif;line-height:17.804800033569336px"> But when I print <code style="margin:0px;padding:1px
5px;border:0px;vertical-align:baseline;background-color:rgb(238,238,238);font-family:Consolas,Menlo,Monaco,'Lucida
Console','LiberationMono','DejaVu Sans Mono','Bitstream Vera Sans Mono','Courier
New',monospace,serif;white-space:pre-wrap">stmt->inp_str</code> inthe function <code style="margin:0px;padding:1px
5px;border:0px;vertical-align:baseline;background-color:rgb(238,238,238);font-family:Consolas,Menlo,Monaco,'Lucida
Console','LiberationMono','DejaVu Sans Mono','Bitstream Vera Sans Mono','Courier
New',monospace,serif;white-space:pre-wrap">standard_ProcessUtility()</code> of <codestyle="margin:0px;padding:1px
5px;border:0px;vertical-align:baseline;background-color:rgb(238,238,238);font-family:Consolas,Menlo,Monaco,'Lucida
Console','LiberationMono','DejaVu Sans Mono','Bitstream Vera Sans Mono','Courier
New',monospace,serif;white-space:pre-wrap">utility.c</code> forthe case <code style="margin:0px;padding:1px
5px;border:0px;vertical-align:baseline;background-color:rgb(238,238,238);font-family:Consolas,Menlo,Monaco,'Lucida
Console','LiberationMono','DejaVu Sans Mono','Bitstream Vera Sans Mono','Courier
New',monospace,serif;white-space:pre-wrap">T_VacuumStmt</code>,I get the value as NULL. This is as far as I could trace
backfrom <code style="margin:0px;padding:1px
5px;border:0px;vertical-align:baseline;background-color:rgb(238,238,238);font-family:Consolas,Menlo,Monaco,'Lucida
Console','LiberationMono','DejaVu Sans Mono','Bitstream Vera Sans Mono','Courier
New',monospace,serif;white-space:pre-wrap">analyze.c</code>.<pstyle="margin:0px 0px
1em;padding:0px;border:0px;font-size:14px;vertical-align:baseline;clear:both;color:rgb(0,0,0);font-family:Arial,'Liberation
Sans','DejaVuSans',sans-serif;line-height:17.804800033569336px"> I am not sure how executing the same command from an
applicationcan make a difference.<p style="margin:0px 0px
1em;padding:0px;border:0px;font-size:14px;vertical-align:baseline;clear:both;color:rgb(0,0,0);font-family:Arial,'Liberation
Sans','DejaVuSans',sans-serif;line-height:17.804800033569336px"> gram.y content gist:<hr
style="border:0px;color:rgb(221,221,221);background-color:rgb(221,221,221);height:1px;margin-bottom:20px;font-family:Arial,'Liberation
Sans','DejaVuSans',sans-serif;font-size:14px;line-height:17.804800033569336px" /><pre class=""
style="margin-top:0px;margin-bottom:10px;padding:5px;border:0px;font-size:14px;vertical-align:baseline;background-color:rgb(238,238,238);font-family:Consolas,Menlo,Monaco,'Lucida
Console','LiberationMono','DejaVu Sans Mono','Bitstream Vera Sans Mono','Courier
New',monospace,serif;overflow:auto;width:auto;max-height:600px;word-wrap:normal;color:rgb(0,0,0);line-height:17.804800033569336px">
<code style="margin:0px;padding:0px;border:0px;vertical-align:baseline;font-family:Consolas,Menlo,Monaco,'Lucida
Console','LiberationMono','DejaVu Sans Mono','Bitstream Vera Sans Mono','Courier
New',monospace,serif;white-space:inherit"><spanclass=""
style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent;color:rgb(43,145,175)">MyStmt</span><span
class=""style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">:</span><span
class=""style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">
my_keywordqualified_name name_list my_inp_str           </span><span class=""
style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">{</span><spanclass=""
style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">
</span><spanclass=""
style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent;color:rgb(43,145,175)">VacuumStmt</span><span
class=""style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent"> </span><span
class=""style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">*</span><span
class=""style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">n </span><span
class=""style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">=</span><span
class=""style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">
makeNode</span><spanclass=""
style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">(</span><spanclass=""
style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent;color:rgb(43,145,175)">VacuumStmt</span><span
class=""style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">);</span><span
class=""style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">
n</span><spanclass=""
style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">-></span><span
class=""style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">options
</span><spanclass=""
style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">=</span><spanclass=""
style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">
VACOPT_ANALYZE</span><spanclass=""
style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">;</span><spanclass=""
style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">
n</span><spanclass=""
style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">-></span><span
class=""style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">freeze_min_age
</span><spanclass=""
style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">=</span><spanclass=""
style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent"></span><span class=""
style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">-</span><spanclass=""
style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent;color:rgb(128,0,0)">1</span><span
class=""style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">;</span><span
class=""style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">
n</span><spanclass=""
style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">-></span><span
class=""style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">freeze_table_age
</span><spanclass=""
style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">=</span><spanclass=""
style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent"></span><span class=""
style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">-</span><spanclass=""
style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent;color:rgb(128,0,0)">1</span><span
class=""style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">;</span><span
class=""style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">
n</span><spanclass=""
style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">-></span><span
class=""style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">relation
</span><spanclass=""
style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">=</span><spanclass=""
style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">$2</span><span class=""
style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">;</span><spanclass=""
style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">
n</span><spanclass=""
style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">-></span><span
class=""style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">va_cols
</span><spanclass=""
style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">=</span><spanclass=""
style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">$3</span><span class=""
style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">;</span><spanclass=""
style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">
n</span><spanclass=""
style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">-></span><span
class=""style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">inp_str
</span><spanclass=""
style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">=</span><spanclass=""
style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">$4</span><span class=""
style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">;</span><spanclass=""
style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">              fprintf
</span><spanclass=""
style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">(</span><spanclass=""
style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">stderr</span><span
class=""style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">,</span><span
class=""style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent"> </span><span
class=""
style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent;color:rgb(128,0,0)">"Iam
insidegram.y %s\n"</span><span class=""
style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">,</span><spanclass=""
style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">n</span><spanclass=""
style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">-></span><span
class=""
style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">inp_str</span><span
class=""style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">);</span><span
class=""style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent"> 
               $$ </span><span class=""
style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">=</span><spanclass=""
style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent"></span><span class=""
style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">(</span><spanclass=""
style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent;color:rgb(43,145,175)">Node</span><span
class=""style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent"> </span><span
class=""style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">*)</span><span
class=""style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">n</span><span
class=""style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">;</span><span
class=""style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">
</span><spanclass=""
style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">}</span><spanclass=""
style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">
</span><span class=""
style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">;</span></code></pre><p
style="margin:0px0px
1em;padding:0px;border:0px;font-size:14px;vertical-align:baseline;clear:both;color:rgb(0,0,0);font-family:Arial,'Liberation
Sans','DejaVuSans',sans-serif;line-height:17.804800033569336px"><code style="margin:0px;padding:1px
5px;border:0px;vertical-align:baseline;background-color:rgb(238,238,238);font-family:Consolas,Menlo,Monaco,'Lucida
Console','LiberationMono','DejaVu Sans Mono','Bitstream Vera Sans Mono','Courier
New',monospace,serif;white-space:pre-wrap">char*inp_str</code> is added to the <code style="margin:0px;padding:1px
5px;border:0px;vertical-align:baseline;background-color:rgb(238,238,238);font-family:Consolas,Menlo,Monaco,'Lucida
Console','LiberationMono','DejaVu Sans Mono','Bitstream Vera Sans Mono','Courier
New',monospace,serif;white-space:pre-wrap">structVacuumStmt</code> in <code style="margin:0px;padding:1px
5px;border:0px;vertical-align:baseline;background-color:rgb(238,238,238);font-family:Consolas,Menlo,Monaco,'Lucida
Console','LiberationMono','DejaVu Sans Mono','Bitstream Vera Sans Mono','Courier
New',monospace,serif;white-space:pre-wrap">parsenodes.h</code><pstyle="margin:0px 0px
1em;padding:0px;border:0px;font-size:14px;vertical-align:baseline;clear:both;color:rgb(0,0,0);font-family:Arial,'Liberation
Sans','DejaVuSans',sans-serif;line-height:17.804800033569336px"> ---------------------------<p style="margin:0px 0px
1em;padding:0px;border:0px;font-size:14px;vertical-align:baseline;clear:both;color:rgb(0,0,0);font-family:Arial,'Liberation
Sans','DejaVuSans',sans-serif;line-height:17.804800033569336px"> Only the newly added <code
style="margin:0px;padding:1px
5px;border:0px;vertical-align:baseline;background-color:rgb(238,238,238);font-family:Consolas,Menlo,Monaco,'Lucida
Console','LiberationMono','DejaVu Sans Mono','Bitstream Vera Sans Mono','Courier
New',monospace,serif;white-space:pre-wrap">char*inp_str</code>(that is different from <code
style="margin:0px;padding:1px
5px;border:0px;vertical-align:baseline;background-color:rgb(238,238,238);font-family:Consolas,Menlo,Monaco,'Lucida
Console','LiberationMono','DejaVu Sans Mono','Bitstream Vera Sans Mono','Courier
New',monospace,serif;white-space:pre-wrap">ANALYZE</code>)value is NULL. I was able to retrieve the column name
from <codestyle="margin:0px;padding:1px
5px;border:0px;vertical-align:baseline;background-color:rgb(238,238,238);font-family:Consolas,Menlo,Monaco,'Lucida
Console','LiberationMono','DejaVu Sans Mono','Bitstream Vera Sans Mono','Courier
New',monospace,serif;white-space:pre-wrap">va_cols.</code><pstyle="margin:0px 0px
1em;padding:0px;border:0px;font-size:14px;vertical-align:baseline;clear:both;color:rgb(0,0,0);font-family:Arial,'Liberation
Sans','DejaVuSans',sans-serif;line-height:17.804800033569336px"> Any help is appreciated. Thanks!-- <br />Regards,<br
/>Ashoke<br/><br /><br /></div> 

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

От
Abhijit Menon-Sen
Дата:
At 2014-07-04 10:43:12 +0530, s.ashoke@gmail.com wrote:
>
> I am not sure how executing the same command from an application can
> make a difference.

It shouldn't make any difference, of course.

But since you're seeing the problem with new code, the overwhelming
probability is that there's an error in the new code. That being the
case, speculating about what might be going wrong without looking at
the code in question is a waste of time.

-- Abhijit



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

От
Ashutosh Bapat
Дата:
<div dir="ltr">You may have to add code to copy inp_str to _copyVacuumStmt(). See how a character array being copied
fromother _copy* functions.<br /></div><div class="gmail_extra"><br /><br /><div class="gmail_quote">On Fri, Jul 4,
2014at 10:43 AM, Ashoke <span dir="ltr"><<a href="mailto:s.ashoke@gmail.com"
target="_blank">s.ashoke@gmail.com</a>></span>wrote:<br /><blockquote class="gmail_quote" style="margin:0 0 0
.8ex;border-left:1px#ccc solid;padding-left:1ex"><div dir="ltr"><p style="margin:0px 0px
1em;padding:0px;border:0px;font-size:14px;vertical-align:baseline;clear:both;color:rgb(0,0,0);font-family:Arial,'Liberation
Sans','DejaVuSans',sans-serif;line-height:17.804800033569336px"> Hi,<p style="margin:0px 0px
1em;padding:0px;border:0px;font-size:14px;vertical-align:baseline;clear:both;color:rgb(0,0,0);font-family:Arial,'Liberation
Sans','DejaVuSans',sans-serif;line-height:17.804800033569336px"> ------------------------------<p style="margin:0px 0px
1em;padding:0px;border:0px;font-size:14px;vertical-align:baseline;clear:both;color:rgb(0,0,0);font-family:Arial,'Liberation
Sans','DejaVuSans',sans-serif;line-height:17.804800033569336px"> I have defined a new command <code
style="margin:0px;padding:1px
5px;border:0px;vertical-align:baseline;background-color:rgb(238,238,238);font-family:Consolas,Menlo,Monaco,'Lucida
Console','LiberationMono','DejaVu Sans Mono','Bitstream Vera Sans Mono','Courier
New',monospace,serif;white-space:pre-wrap">my_command</code> inPostgreSQL. This command takes the path of <code
style="margin:0px;padding:1px
5px;border:0px;vertical-align:baseline;background-color:rgb(238,238,238);font-family:Consolas,Menlo,Monaco,'Lucida
Console','LiberationMono','DejaVu Sans Mono','Bitstream Vera Sans Mono','Courier
New',monospace,serif;white-space:pre-wrap">ANALYZE</code> andinside <code style="margin:0px;padding:1px
5px;border:0px;vertical-align:baseline;background-color:rgb(238,238,238);font-family:Consolas,Menlo,Monaco,'Lucida
Console','LiberationMono','DejaVu Sans Mono','Bitstream Vera Sans Mono','Courier
New',monospace,serif;white-space:pre-wrap">analyze.c</code>,I have a function to do some operations if its <code
style="margin:0px;padding:1px
5px;border:0px;vertical-align:baseline;background-color:rgb(238,238,238);font-family:Consolas,Menlo,Monaco,'Lucida
Console','LiberationMono','DejaVu Sans Mono','Bitstream Vera Sans Mono','Courier
New',monospace,serif;white-space:pre-wrap">my_command</code>.Thiscommand takes the input arguments: table name, column
nameand an input string.<p style="margin:0px 0px
1em;padding:0px;border:0px;font-size:14px;vertical-align:baseline;clear:both;color:rgb(0,0,0);font-family:Arial,'Liberation
Sans','DejaVuSans',sans-serif;line-height:17.804800033569336px"><span style="font-family:Consolas,Menlo,Monaco,'Lucida
Console','LiberationMono','DejaVu Sans Mono','Bitstream Vera Sans Mono','Courier
New',monospace,serif;white-space:pre-wrap;background-color:rgb(238,238,238)">my_commandnation (n_nationkey) 'input
string';</span><br/><p style="margin:0px 0px
1em;padding:0px;border:0px;font-size:14px;vertical-align:baseline;clear:both;color:rgb(0,0,0);font-family:Arial,'Liberation
Sans','DejaVuSans',sans-serif;line-height:17.804800033569336px"> When I run this command from command line <code
style="margin:0px;padding:1px
5px;border:0px;vertical-align:baseline;background-color:rgb(238,238,238);font-family:Consolas,Menlo,Monaco,'Lucida
Console','LiberationMono','DejaVu Sans Mono','Bitstream Vera Sans Mono','Courier
New',monospace,serif;white-space:pre-wrap">psql</code>,it works as expected. But when I call the same command from a
javaapplication, the variable that stores the input string is NULL.<p style="margin:0px 0px
1em;padding:0px;border:0px;font-size:14px;vertical-align:baseline;clear:both;color:rgb(0,0,0);font-family:Arial,'Liberation
Sans','DejaVuSans',sans-serif;line-height:17.804800033569336px"> I printed the value of the input string in gram.y file
whereI have defined <code style="margin:0px;padding:1px
5px;border:0px;vertical-align:baseline;background-color:rgb(238,238,238);font-family:Consolas,Menlo,Monaco,'Lucida
Console','LiberationMono','DejaVu Sans Mono','Bitstream Vera Sans Mono','Courier
New',monospace,serif;white-space:pre-wrap">my_command</code>.<br/><code style="margin:0px;padding:1px
5px;border:0px;vertical-align:baseline;background-color:rgb(238,238,238);font-family:Consolas,Menlo,Monaco,'Lucida
Console','LiberationMono','DejaVu Sans Mono','Bitstream Vera Sans Mono','Courier
New',monospace,serif;white-space:pre-wrap">fprintf(stderr, "I am inside gram.y %s\n",n->inp_str);</code> and the
inputstring is printed correctly.<p style="margin:0px 0px
1em;padding:0px;border:0px;font-size:14px;vertical-align:baseline;clear:both;color:rgb(0,0,0);font-family:Arial,'Liberation
Sans','DejaVuSans',sans-serif;line-height:17.804800033569336px"> But when I print <code style="margin:0px;padding:1px
5px;border:0px;vertical-align:baseline;background-color:rgb(238,238,238);font-family:Consolas,Menlo,Monaco,'Lucida
Console','LiberationMono','DejaVu Sans Mono','Bitstream Vera Sans Mono','Courier
New',monospace,serif;white-space:pre-wrap">stmt->inp_str</code> inthe function <code style="margin:0px;padding:1px
5px;border:0px;vertical-align:baseline;background-color:rgb(238,238,238);font-family:Consolas,Menlo,Monaco,'Lucida
Console','LiberationMono','DejaVu Sans Mono','Bitstream Vera Sans Mono','Courier
New',monospace,serif;white-space:pre-wrap">standard_ProcessUtility()</code> of <codestyle="margin:0px;padding:1px
5px;border:0px;vertical-align:baseline;background-color:rgb(238,238,238);font-family:Consolas,Menlo,Monaco,'Lucida
Console','LiberationMono','DejaVu Sans Mono','Bitstream Vera Sans Mono','Courier
New',monospace,serif;white-space:pre-wrap">utility.c</code> forthe case <code style="margin:0px;padding:1px
5px;border:0px;vertical-align:baseline;background-color:rgb(238,238,238);font-family:Consolas,Menlo,Monaco,'Lucida
Console','LiberationMono','DejaVu Sans Mono','Bitstream Vera Sans Mono','Courier
New',monospace,serif;white-space:pre-wrap">T_VacuumStmt</code>,I get the value as NULL. This is as far as I could trace
backfrom <code style="margin:0px;padding:1px
5px;border:0px;vertical-align:baseline;background-color:rgb(238,238,238);font-family:Consolas,Menlo,Monaco,'Lucida
Console','LiberationMono','DejaVu Sans Mono','Bitstream Vera Sans Mono','Courier
New',monospace,serif;white-space:pre-wrap">analyze.c</code>.<pstyle="margin:0px 0px
1em;padding:0px;border:0px;font-size:14px;vertical-align:baseline;clear:both;color:rgb(0,0,0);font-family:Arial,'Liberation
Sans','DejaVuSans',sans-serif;line-height:17.804800033569336px"> I am not sure how executing the same command from an
applicationcan make a difference.<p style="margin:0px 0px
1em;padding:0px;border:0px;font-size:14px;vertical-align:baseline;clear:both;color:rgb(0,0,0);font-family:Arial,'Liberation
Sans','DejaVuSans',sans-serif;line-height:17.804800033569336px"> gram.y content gist:<hr
style="border:0px;color:rgb(221,221,221);background-color:rgb(221,221,221);min-height:1px;margin-bottom:20px;font-family:Arial,'Liberation
Sans','DejaVuSans',sans-serif;font-size:14px;line-height:17.804800033569336px" /><pre
style="margin-top:0px;margin-bottom:10px;padding:5px;border:0px;font-size:14px;vertical-align:baseline;background-color:rgb(238,238,238);font-family:Consolas,Menlo,Monaco,'Lucida
Console','LiberationMono','DejaVu Sans Mono','Bitstream Vera Sans Mono','Courier
New',monospace,serif;overflow:auto;width:auto;max-height:600px;word-wrap:normal;color:rgb(0,0,0);line-height:17.804800033569336px">
<code style="margin:0px;padding:0px;border:0px;vertical-align:baseline;font-family:Consolas,Menlo,Monaco,'Lucida
Console','LiberationMono','DejaVu Sans Mono','Bitstream Vera Sans Mono','Courier
New',monospace,serif;white-space:inherit"><span
style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent;color:rgb(43,145,175)">MyStmt</span><span
style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">:</span><span
style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">      my_keyword
qualified_namename_list my_inp_str           </span><span
style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">{</span><span
style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">
</span><span
style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent;color:rgb(43,145,175)">VacuumStmt</span><span
style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent"></span><span
style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">*</span><span
style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">n</span><span
style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">=</span><span
style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">makeNode</span><span
style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">(</span><span
style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent;color:rgb(43,145,175)">VacuumStmt</span><span
style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">);</span><span
style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">
n</span><span
style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">-></span><span
style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">options</span><span
style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">=</span><span
style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">
VACOPT_ANALYZE</span><span
style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">;</span><span
style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">
n</span><span
style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">-></span><span
style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">freeze_min_age
</span><span
style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">=</span><span
style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent"></span><span
style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">-</span><span
style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent;color:rgb(128,0,0)">1</span><span
style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">;</span><span
style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">
n</span><span
style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">-></span><span
style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">freeze_table_age
</span><span
style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">=</span><span
style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent"></span><span
style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">-</span><span
style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent;color:rgb(128,0,0)">1</span><span
style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">;</span><span
style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">
n</span><span
style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">-></span><span
style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">relation</span><span
style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">=</span><span
style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">$2</span><span
style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">;</span><span
style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">
n</span><span
style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">-></span><span
style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">va_cols</span><span
style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">=</span><span
style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">$3</span><span
style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">;</span><span
style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">
n</span><span
style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">-></span><span
style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">inp_str</span><span
style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">=</span><span
style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">$4</span><span
style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">;</span><span
style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">              fprintf
</span><span
style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">(</span><span
style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">stderr</span><span
style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">,</span><span
style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent"></span><span
style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent;color:rgb(128,0,0)">"Iam
insidegram.y %s\n"</span><span
style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">,</span><span
style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">n</span><span
style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">-></span><span
style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">inp_str</span><span
style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">);</span><span
style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">
               $$ </span><span
style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">=</span><span
style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent"></span><span
style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">(</span><span
style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent;color:rgb(43,145,175)">Node</span><span
style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent"></span><span
style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">*)</span><span
style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">n</span><span
style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">;</span><span
style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">          </span><span
style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">}</span><span
style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">
</span><span
style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">;</span></code></pre><p
style="margin:0px0px
1em;padding:0px;border:0px;font-size:14px;vertical-align:baseline;clear:both;color:rgb(0,0,0);font-family:Arial,'Liberation
Sans','DejaVuSans',sans-serif;line-height:17.804800033569336px"><code style="margin:0px;padding:1px
5px;border:0px;vertical-align:baseline;background-color:rgb(238,238,238);font-family:Consolas,Menlo,Monaco,'Lucida
Console','LiberationMono','DejaVu Sans Mono','Bitstream Vera Sans Mono','Courier
New',monospace,serif;white-space:pre-wrap">char*inp_str</code> is added to the <code style="margin:0px;padding:1px
5px;border:0px;vertical-align:baseline;background-color:rgb(238,238,238);font-family:Consolas,Menlo,Monaco,'Lucida
Console','LiberationMono','DejaVu Sans Mono','Bitstream Vera Sans Mono','Courier
New',monospace,serif;white-space:pre-wrap">structVacuumStmt</code> in <code style="margin:0px;padding:1px
5px;border:0px;vertical-align:baseline;background-color:rgb(238,238,238);font-family:Consolas,Menlo,Monaco,'Lucida
Console','LiberationMono','DejaVu Sans Mono','Bitstream Vera Sans Mono','Courier
New',monospace,serif;white-space:pre-wrap">parsenodes.h</code><pstyle="margin:0px 0px
1em;padding:0px;border:0px;font-size:14px;vertical-align:baseline;clear:both;color:rgb(0,0,0);font-family:Arial,'Liberation
Sans','DejaVuSans',sans-serif;line-height:17.804800033569336px"> ---------------------------<p style="margin:0px 0px
1em;padding:0px;border:0px;font-size:14px;vertical-align:baseline;clear:both;color:rgb(0,0,0);font-family:Arial,'Liberation
Sans','DejaVuSans',sans-serif;line-height:17.804800033569336px"> Only the newly added <code
style="margin:0px;padding:1px
5px;border:0px;vertical-align:baseline;background-color:rgb(238,238,238);font-family:Consolas,Menlo,Monaco,'Lucida
Console','LiberationMono','DejaVu Sans Mono','Bitstream Vera Sans Mono','Courier
New',monospace,serif;white-space:pre-wrap">char*inp_str</code>(that is different from <code
style="margin:0px;padding:1px
5px;border:0px;vertical-align:baseline;background-color:rgb(238,238,238);font-family:Consolas,Menlo,Monaco,'Lucida
Console','LiberationMono','DejaVu Sans Mono','Bitstream Vera Sans Mono','Courier
New',monospace,serif;white-space:pre-wrap">ANALYZE</code>)value is NULL. I was able to retrieve the column name
from <codestyle="margin:0px;padding:1px
5px;border:0px;vertical-align:baseline;background-color:rgb(238,238,238);font-family:Consolas,Menlo,Monaco,'Lucida
Console','LiberationMono','DejaVu Sans Mono','Bitstream Vera Sans Mono','Courier
New',monospace,serif;white-space:pre-wrap">va_cols.</code><pstyle="margin:0px 0px
1em;padding:0px;border:0px;font-size:14px;vertical-align:baseline;clear:both;color:rgb(0,0,0);font-family:Arial,'Liberation
Sans','DejaVuSans',sans-serif;line-height:17.804800033569336px"> Any help is appreciated. Thanks!<span
class="HOEnZb"><fontcolor="#888888">-- <br />Regards,<br />Ashoke<br /><br /><br
/></font></span></div></blockquote></div><br/><br clear="all" /><br />-- <br /><div dir="ltr">Best Wishes,<br
/>AshutoshBapat<br />EnterpriseDB Corporation<br />The Postgres Database Company<br /></div></div> 

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

От
Ashoke
Дата:
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.bapat@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.ashoke@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




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

От
Ashutosh Bapat
Дата:



On Fri, Jul 4, 2014 at 12:30 PM, Ashoke <s.ashoke@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.bapat@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.ashoke@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

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

От
Tom Lane
Дата:
Ashoke <s.ashoke@gmail.com> writes:
> Thank you Ashutosh*.* That was the issue. But, could you please explain why
> it worked from command line?

Simple vs extended query protocol, probably --- the former avoids copying
the constructed parsetree, but I think the latter doesn't.  Or maybe the
JDBC driver tried to prepare the query; a prepared statement is most
certainly going to copy the parsetree.

In general, if you add a field to any node type, you'd better go through
backend/nodes/ and teach all the relevant functions about it.  What I tend
to do is grep for one of the existing fields in the struct and see which
functions that reference it need additions.
        regards, tom lane