Обсуждение: Issue while calling new PostgreSQL command from a Java Application
<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>
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
<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>
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 ofANALYZE
and insideanalyze.c
, I have a function to do some operations if itsmy_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 functionstandard_ProcessUtility()
ofutility.c
for the caseT_VacuumStmt
, I get the value as NULL. This is as far as I could trace back fromanalyze.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 thestruct VacuumStmt
inparsenodes.h
---------------------------
Only the newly added
char *inp_str
(that is different fromANALYZE
) value is NULL. I was able to retrieve the column name fromva_cols.
Any help is appreciated. Thanks!--
Regards,
AshokeBest Wishes,
Ashutosh Bapat
EnterpriseDB Corporation
The Postgres Database Company
Regards,
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 ofANALYZE
and insideanalyze.c
, I have a function to do some operations if itsmy_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 functionstandard_ProcessUtility()
ofutility.c
for the caseT_VacuumStmt
, I get the value as NULL. This is as far as I could trace back fromanalyze.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 thestruct VacuumStmt
inparsenodes.h
---------------------------
Only the newly added
char *inp_str
(that is different fromANALYZE
) value is NULL. I was able to retrieve the column name fromva_cols.
Any help is appreciated. Thanks!--
Regards,
AshokeBest Wishes,
Ashutosh Bapat
EnterpriseDB Corporation
The Postgres Database Company
Regards,
Ashoke
--
Ashutosh Bapat
EnterpriseDB Corporation
The Postgres Database Company
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