> On Jun 7, 2018, at 1:14 PM, Adrian Klaver <adrian.kla...@aklaver.com> wrote:
> 
> On 06/07/2018 11:55 AM, Robert Creager wrote:
>>> On Jun 7, 2018, at 12:40 PM, Adrian Klaver <adrian.kla...@aklaver.com 
>>> <mailto:adrian.kla...@aklaver.com>> wrote:
>>> 
>>> On 06/07/2018 11:17 AM, Robert Creager wrote:
>>>> I have a system running FreeBSD 11.1-STABLE, PostgreSQL 9.6.8,Java OpenJDK 
>>>> 1.8.0_131, jdbc 9.3-1104-jdbc41 which is exhibiting very bizarre behavior. 
>>>>  A query is executing against a couple of tables that have 1 and 0 records 
>>>> in them.  ds3.job_entry has 0 rows, ds3.blob has 1 row.   If I execute the 
>>>> query manually via command line, it executes fine.   There are no other 
>>>> active queries, no locks.  The system is idle, in our Dev Test group, so I 
>>>> can leave it this way for a bit of time.  The general software setup is in 
>>>> production and I’ve seen nothing like this before.  Even a system with 
>>>> 300M ds3.blob entries executes this query fine.
>>> 
>>> So I am assuming the problem query is being run through Java/jdbc, correct?
>> Yes.
>>> 
>>> There is also the below in the log:
>>> 
>>> " ... execute fetch from S_2037436/C_2037437 …"
>> So, that means nothing to me.  Something to you?
> 
> Just that the query being run from the code is going through a different path 
> then the version you ran at the command line. Just trying to get to apples to 
> apples if possible.
> 
>>> 
>>> My guess is that we will need to see the Java code that sets up and runs 
>>> the query. Is that possible?
>> OMG, you had to ask ;-)  Not really, for two reasons.  It’s an actual 
>> shipping product, and I’d have to send you so much code to get from the 
>> source of the query down through the execute…. Now, the execute, on it’s 
>> own, is below.  m_statement is a java.sql.PreparedStatement.  Keep in mind 
>> this code is literally executing millions of times a day on a busy system.  
>> Except for this special snowflake system...
> 
> I am not a Java programmer(hence the 'we' in my previous post), so someone 
> who is will need to comment on the below. Though I have to believe the:
> 
> m_statement.setFetchSize( 10000 );
> 
> has got to do with:
> 
> " ... execute fetch from S_2037436/C_2037437 …"
> 
> In your OP you said the tables involved have 1 and 0 rows in them.

Yes.

> 
> Is that from count(*) on each table?

Yes.

> Or is it for for job_id = 'b51357cd-e07a-4c87-a50b-999c347a5c71’?

There is no job_id entry, that table is empty.

Best,
Robert

> 
>> private Executor executeQuery()
>> {
>>     final MonitoredWork monitoredWork = new MonitoredWork(
>>             StackTraceLogging.NONE, 
>> m_readableSql.getLogMessagePreExecution() );
>>     try
>>     {
>>         m_closeTransactionUponClose = ( null == m_transactionNumber );
>>         m_statement.setFetchSize( 10000 );
>>         final Duration duration = new Duration();
>>         m_resultSet = m_statement.executeQuery();
>>         m_readableSql.log( duration, null );
>>         return this;
>>     }
>>     catch ( final SQLException ex )
>>     {
>>         throw new DaoException(
>>                 "Failed to execute: " + 
>> m_readableSql.getLogMessagePreExecution(),
>>                 ex );
>>     }
>>     finally
>>     {
>>         monitoredWork.completed();
>>     }
>> }
>>> 
> 
>>> -- 
>>> Adrian Klaver
>>> adrian.kla...@aklaver.com <mailto:adrian.kla...@aklaver.com>
> 
> 
> -- 
> Adrian Klaver
> adrian.kla...@aklaver.com


Reply via email to