Hi Suresh,
Good thought, I actually did exactly what you said:
1000 -> 1.8 sec compile
2000: 6.8 sec
4000: 28.3 sec.

All plan generate tuple list, and not unpack nodes. Suspecting some recursive 
call, non linear scalable linked with tuple list handling, and associated stack 
overflow common problems with recursive calls?
Anu found core dumps associated with 10000 runs. And these are happening from 
trafci or sqlci…

the above query is not generating nested join plan because my table d is empty 
still. I am hoping it will do NJ as soon as I have some real data and updated 
stats…

I wish I could force the plan manually as generated by:

select x.a, d.a from (values (?[10000],?[10000],?[10000],?[10000])) as 
x(a,b,c,d)

join directories d on

x.b = d.b and x.c= d.c and x.d = d.d;
beautifully generating unpack node …
Eric




From: Suresh Subbiah [mailto:suresh.subbia...@gmail.com]
Sent: Tuesday, January 17, 2017 7:17 PM
To: user@trafodion.incubator.apache.org
Subject: Re: question on using Batch for a select statement with jdbc

Hi Eric,

I don't there is a generic CQD here. If there was a core file and we analyzed 
it we might be able to find something specific to this situation. Can we please 
try with say 1000 values and 4000 parameters?

Thanks
Suresh

On Tue, Jan 17, 2017 at 4:53 PM, Eric Owhadi 
<eric.owh...@esgyn.com<mailto:eric.owh...@esgyn.com>> wrote:
Trying this workaround but hitting a timeout exception at prepare time:
final static String missingVal1 = "select x.a, d.a from (values ";
final static String missingValVar = "(?,?,?,?)";
final static String missingIVal2 = ") as x(a,b,c,d) join d on x.b = d.b and x.c 
= d.c and x.d = d.d where x.a is not null";

StringBuilder missingVals = new StringBuilder(101000);
                     missingVals.append(missingVal1);
                     missingVals.append(missingValVar);
                     for(int i=1; i< rowsetSize; i++){
                                 missingVals.append(',').append(missingValVar);
                     }
                     missingVals.append(missingVal2);
                     PreparedStatement missingValsstsmt= 
conn2.prepareStatement(missingVals.toString());


Exception in thread "main" org.trafodion.jdbc.t4.TrafT4Exception: Server 
aborted abnormally or Connection timed out
                at 
org.trafodion.jdbc.t4.TrafT4Messages.createSQLException(TrafT4Messages.java:284)
                at org.trafodion.jdbc.t4.InputOutput.doIO(InputOutput.java:376)
                at 
org.trafodion.jdbc.t4.T4Connection.getReadBuffer(T4Connection.java:157)
                at 
org.trafodion.jdbc.t4.T4Statement.getReadBuffer(T4Statement.java:196)
                at 
org.trafodion.jdbc.t4.T4Statement.Prepare(T4Statement.java:129)
                at 
org.trafodion.jdbc.t4.InterfaceStatement.prepare(InterfaceStatement.java:1126)
                at 
org.trafodion.jdbc.t4.TrafT4PreparedStatement.prepare(TrafT4PreparedStatement.java:2209)
                at 
org.trafodion.jdbc.t4.TrafT4Connection.prepareStatement(TrafT4Connection.java:775)
                at DirectoriesHelper.main(DirectoriesHelper.java:45)

Am I doing something crazy? Or is there a CQD/param that would help prepare 
that statement containing 10 000 (?,?,?,?) , so 40 000 parameters in it?

Eric



From: Eric Owhadi
Sent: Tuesday, January 17, 2017 2:47 PM
To: 
user@trafodion.incubator.apache.org<mailto:user@trafodion.incubator.apache.org>
Subject: RE: question on using Batch for a select statement with jdbc

Hi Selva
I came across this to and believe that setArray is to support SQL Array type 
that we don’t support anyway.
Eric

From: Selva Govindarajan [mailto:selva.govindara...@esgyn.com]
Sent: Tuesday, January 17, 2017 2:46 PM
To: 
user@trafodion.incubator.apache.org<mailto:user@trafodion.incubator.apache.org>
Subject: Re: question on using Batch for a select statement with jdbc


Hi Eric,



Looking at the JDBC specification,  I am guessing preparedStatement.setArray 
and using Array interface can do the trick. But,  setArray is unsupported 
feature in Trafodion jdbc drivers.



Selva

________________________________
From: Eric Owhadi <eric.owh...@esgyn.com<mailto:eric.owh...@esgyn.com>>
Sent: Tuesday, January 17, 2017 12:08 PM
To: 
user@trafodion.incubator.apache.org<mailto:user@trafodion.incubator.apache.org>
Subject: question on using Batch for a select statement with jdbc


Hi Trafodioneers,

Have following jdbc question:



select x.a, d.a from (values (?,?,?,?)) as x(a,b,c,d)

join directories d on

x.b = d.b and x.c= d.c and x.d = d.d;



I was thinking of using Batch to fill the list of values, but then I struggle 
with how to invoke the query. executeBatch does not return a resultSet, as I 
guess it is used for upsert or inserts?

Can I use executeQuery(), and that will do the trick as long as I use 
addBacth()?



Or it is not possible to use addBatch for this use model?

Thanks in advance for the help,

Eric

Reply via email to