[teiid-issues] [JBoss JIRA] (TEIID-5658) PG transport can sendResults before sync

Steven Hawkins (Jira) issues at jboss.org
Wed Feb 13 14:31:00 EST 2019


     [ https://issues.jboss.org/browse/TEIID-5658?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Steven Hawkins updated TEIID-5658:
----------------------------------
    Description: 
The code is allowing for a sequence of events such as:

2019-02-13 14:07:47.613 org.teiid.ODBC TRACE NIO4 invoking server method: prepare [, select oid from pg_class where relname='pg_class', []]
2019-02-13 14:07:47.615 org.teiid.ODBC TRACE NIO4 invoking client method: org.teiid.transport.ODBCClientInstance$1 at d875495 prepareCompleted []
2019-02-13 14:07:47.615 org.teiid.ODBC TRACE NIO4 invoking server method: bindParameters [, , [], 0, null, UTF-8]
2019-02-13 14:07:47.615 org.teiid.ODBC TRACE NIO4 invoking client method: org.teiid.transport.ODBCClientInstance$1 at d875495 bindComplete null
2019-02-13 14:07:47.617 org.teiid.ODBC TRACE NIO4 invoking server method: getResultSetMetaDataDescription []
2019-02-13 14:07:47.617 org.teiid.ODBC TRACE NIO4 invoking client method: org.teiid.transport.ODBCClientInstance$1 at d875495 sendResultSetDescription [[org.teiid.odbc.PGUtil$PgColInfo at 1086babd], null]
2019-02-13 14:07:47.617 org.teiid.ODBC TRACE NIO4 invoking server method: execute [, 0]
2019-02-13 14:07:47.618 org.teiid.ODBC TRACE NIO4 invoking client method: org.teiid.transport.ODBCClientInstance$1 at d875495 sendResults [null, org.teiid.jdbc.ResultSetImpl at 1e1aed1a, [org.teiid.odbc.PGUtil$PgColInfo at 1086babd], org.teiid.client.util.ResultsFuture at 3b6cff36, FORWARD, -1, false, null]
2019-02-13 14:07:47.619 org.teiid.ODBC TRACE NIO4 invoking server method: sync null
2019-02-13 14:07:47.619 org.teiid.ODBC TRACE Worker0_QueryProcessorQueue368 invoking client method: org.teiid.transport.ODBCClientInstance$1 at d875495 sendCommandComplete [select oid from pg_class where relname='pg_class', [1]]
2019-02-13 14:07:47.619 org.teiid.ODBC TRACE NIO4 invoking client method: org.teiid.transport.ODBCClientInstance$1 at d875495 ready [false, false]

That is after execute we are immediately responding with results.  That response ahead of the sync causes issues in the pg jdbc driver such as reporting that there is no result set.  See TEIID-5425

This does not appear to be a requirement of the flow: https://www.postgresql.org/docs/9.3/protocol-flow.html#AEN99807

  was:
The code is allowing for a sequence of events such as:

2019-02-13 12:26:55.159 org.teiid.ODBC TRACE NIO1 invoking server method: execute [, 0]
2019-02-13 12:26:55.163 org.teiid.ODBC TRACE NIO1 invoking client method: sendResults [null, org.teiid.jdbc.ResultSetImpl at 1a79693d, [org.teiid.odbc.PGUtil$PgColInfo at 79f0f194], org.teiid.client.util.ResultsFuture at 64fb47b7, FORWARD, -1, false, null]
2019-02-13 12:26:55.163 org.teiid.ODBC TRACE Worker5_QueryProcessorQueue533 invoking client method: sendCommandComplete [select oid from pg_class where relname='pg_class', [1]]
2019-02-13 12:26:55.163 org.teiid.ODBC TRACE Worker5_QueryProcessorQueue533 invoking client method: ready [false, false]
2019-02-13 12:26:55.163 org.teiid.ODBC TRACE NIO1 invoking server method: sync null
2019-02-13 12:26:55.163 org.teiid.ODBC TRACE NIO1 invoking client method: ready [false, false]

That is after execute we are immediately responding with results, command complete, and ready.  Then we see a sync and respond with ready again.

The first ready is not expected - it should not be issued until after the sync.

The causes issues in the pg jdbc driver such as reporting that there is no result set.  See TEIID-5425



> PG transport can sendResults before sync
> ----------------------------------------
>
>                 Key: TEIID-5658
>                 URL: https://issues.jboss.org/browse/TEIID-5658
>             Project: Teiid
>          Issue Type: Bug
>          Components: ODBC
>            Reporter: Steven Hawkins
>            Assignee: Steven Hawkins
>            Priority: Major
>             Fix For: 12.1, 12.0.1, 11.2.3
>
>
> The code is allowing for a sequence of events such as:
> 2019-02-13 14:07:47.613 org.teiid.ODBC TRACE NIO4 invoking server method: prepare [, select oid from pg_class where relname='pg_class', []]
> 2019-02-13 14:07:47.615 org.teiid.ODBC TRACE NIO4 invoking client method: org.teiid.transport.ODBCClientInstance$1 at d875495 prepareCompleted []
> 2019-02-13 14:07:47.615 org.teiid.ODBC TRACE NIO4 invoking server method: bindParameters [, , [], 0, null, UTF-8]
> 2019-02-13 14:07:47.615 org.teiid.ODBC TRACE NIO4 invoking client method: org.teiid.transport.ODBCClientInstance$1 at d875495 bindComplete null
> 2019-02-13 14:07:47.617 org.teiid.ODBC TRACE NIO4 invoking server method: getResultSetMetaDataDescription []
> 2019-02-13 14:07:47.617 org.teiid.ODBC TRACE NIO4 invoking client method: org.teiid.transport.ODBCClientInstance$1 at d875495 sendResultSetDescription [[org.teiid.odbc.PGUtil$PgColInfo at 1086babd], null]
> 2019-02-13 14:07:47.617 org.teiid.ODBC TRACE NIO4 invoking server method: execute [, 0]
> 2019-02-13 14:07:47.618 org.teiid.ODBC TRACE NIO4 invoking client method: org.teiid.transport.ODBCClientInstance$1 at d875495 sendResults [null, org.teiid.jdbc.ResultSetImpl at 1e1aed1a, [org.teiid.odbc.PGUtil$PgColInfo at 1086babd], org.teiid.client.util.ResultsFuture at 3b6cff36, FORWARD, -1, false, null]
> 2019-02-13 14:07:47.619 org.teiid.ODBC TRACE NIO4 invoking server method: sync null
> 2019-02-13 14:07:47.619 org.teiid.ODBC TRACE Worker0_QueryProcessorQueue368 invoking client method: org.teiid.transport.ODBCClientInstance$1 at d875495 sendCommandComplete [select oid from pg_class where relname='pg_class', [1]]
> 2019-02-13 14:07:47.619 org.teiid.ODBC TRACE NIO4 invoking client method: org.teiid.transport.ODBCClientInstance$1 at d875495 ready [false, false]
> That is after execute we are immediately responding with results.  That response ahead of the sync causes issues in the pg jdbc driver such as reporting that there is no result set.  See TEIID-5425
> This does not appear to be a requirement of the flow: https://www.postgresql.org/docs/9.3/protocol-flow.html#AEN99807



--
This message was sent by Atlassian Jira
(v7.12.1#712002)


More information about the teiid-issues mailing list