[
https://issues.jboss.org/browse/TEIID-5658?page=com.atlassian.jira.plugin...
]
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@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@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@d875495 sendResultSetDescription
[[org.teiid.odbc.PGUtil$PgColInfo@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@d875495 sendResults [null,
org.teiid.jdbc.ResultSetImpl@1e1aed1a, [org.teiid.odbc.PGUtil$PgColInfo@1086babd],
org.teiid.client.util.ResultsFuture@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@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@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@1a79693d, [org.teiid.odbc.PGUtil$PgColInfo@79f0f194],
org.teiid.client.util.ResultsFuture@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@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@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@d875495 sendResultSetDescription
[[org.teiid.odbc.PGUtil$PgColInfo@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@d875495 sendResults [null,
org.teiid.jdbc.ResultSetImpl@1e1aed1a, [org.teiid.odbc.PGUtil$PgColInfo@1086babd],
org.teiid.client.util.ResultsFuture@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@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@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)