[JBoss JIRA] (TEIID-2605) Optimization substitutes wrong column in where clause
by Steven Hawkins (JIRA)
[ https://issues.jboss.org/browse/TEIID-2605?page=com.atlassian.jira.plugin... ]
Steven Hawkins closed TEIID-2605.
---------------------------------
> Optimization substitutes wrong column in where clause
> -----------------------------------------------------
>
> Key: TEIID-2605
> URL: https://issues.jboss.org/browse/TEIID-2605
> Project: Teiid
> Issue Type: Bug
> Components: Query Engine
> Affects Versions: 8.1
> Environment: z/OS
> Reporter: Jeff Hayes
> Assignee: Steven Hawkins
> Attachments: query_plan.txt, views.xml
>
>
> Optimization results in a query with a different column in the WHERE clause producing an empty result set.
> Full query plan is attached but the beginning and ending queries are shown below. Note that the subject column of the IN clause is SCOPEID but optimization changes it to AUTHID for some reason.
> USER COMMAND:
> SELECT * FROM SECURITY.SCPXREF AS CHORUS_B WHERE (CHORUS_B.SYSID = 'DE29') AND ((CHORUS_B.SCOPEID IN (SELECT SN5.SCOPEID FROM SECURI
> TY.SCPNEXT AS SN5 WHERE (SYSID = 'DE29') AND (NEXTREC IN (SELECT SN4.SCOPEID FROM SECURITY.SCPNEXT AS SN4 WHERE (SYSID = 'DE29') AND
> (NEXTREC IN (SELECT SN3.SCOPEID FROM SECURITY.SCPNEXT AS SN3 WHERE (SYSID = 'DE29') AND (NEXTREC IN (SELECT SN2.SCOPEID FROM SECURI
> TY.SCPNEXT AS SN2 WHERE (SYSID = 'DE29') AND (NEXTREC = 'CHRDEPT1'))))))))) OR (CHORUS_B.SCOPEID IN (SELECT SN4.SCOPEID FROM SECURIT
> Y.SCPNEXT AS SN4 WHERE (SYSID = 'DE29') AND (NEXTREC IN (SELECT SN3.SCOPEID FROM SECURITY.SCPNEXT AS SN3 WHERE (SYSID = 'DE29') AND
> (NEXTREC IN (SELECT SN2.SCOPEID FROM SECURITY.SCPNEXT AS SN2 WHERE (SYSID = 'DE29') AND (NEXTREC = 'CHRDEPT1'))))))) OR (CHORUS_B.SC
> OPEID IN (SELECT SN3.SCOPEID FROM SECURITY.SCPNEXT AS SN3 WHERE (SYSID = 'DE29') AND (NEXTREC IN (SELECT SN2.SCOPEID FROM SECURITY.S
> CPNEXT AS SN2 WHERE (SYSID = 'DE29') AND (NEXTREC = 'CHRDEPT1'))))) OR (CHORUS_B.SCOPEID IN (SELECT SN2.SCOPEID FROM SECURITY.SCPNEX
> T AS SN2 WHERE (SYSID = 'DE29') AND (NEXTREC = 'CHRDEPT1'))) OR (CHORUS_B.SCOPEID = 'CHRDEPT1'))
> OPTIMIZATION COMPLETE:
> PROCESSOR PLAN:
> AccessNode(10) output=[x.sysid AS sysid, x.scopeid AS authid, x.authid AS scopeid, x.authtype AS authtype] SELECT g_0.SYSID, g_0.SCO
> PEID, g_0.AUTHID, g_0.AUTHTYPE FROM SECURITY_CIA_DB2_D91BPTIB_CIADB01.SCPXREF AS g_0 WHERE (g_0.SYSID = 'DE29') AND ((g_0.AUTHID IN
> (SELECT g_1.SCOPEID FROM SECURITY_CIA_DB2_D91BPTIB_CIADB01.SCPNEXT AS g_1 WHERE (g_1.SYSID = 'DE29') AND (g_1.NEXTREC IN (SELECT g_2
> .SCOPEID FROM SECURITY_CIA_DB2_D91BPTIB_CIADB01.SCPNEXT AS g_2 WHERE (g_2.SYSID = 'DE29') AND (g_2.NEXTREC IN (SELECT g_3.SCOPEID FR
> OM SECURITY_CIA_DB2_D91BPTIB_CIADB01.SCPNEXT AS g_3 WHERE (g_3.SYSID = 'DE29') AND (g_3.NEXTREC IN (SELECT g_4.SCOPEID FROM SECURITY
> _CIA_DB2_D91BPTIB_CIADB01.SCPNEXT AS g_4 WHERE (g_4.SYSID = 'DE29') AND (g_4.NEXTREC = 'CHRDEPT1'))))))))) OR (g_0.AUTHID IN (SELECT
> g_5.SCOPEID FROM SECURITY_CIA_DB2_D91BPTIB_CIADB01.SCPNEXT AS g_5 WHERE (g_5.SYSID = 'DE29') AND (g_5.NEXTREC IN (SELECT g_6.SCOPEI
> D FROM SECURITY_CIA_DB2_D91BPTIB_CIADB01.SCPNEXT AS g_6 WHERE (g_6.SYSID = 'DE29') AND (g_6.NEXTREC IN (SELECT g_7.SCOPEID FROM SECU
> RITY_CIA_DB2_D91BPTIB_CIADB01.SCPNEXT AS g_7 WHERE (g_7.SYSID = 'DE29') AND (g_7.NEXTREC = 'CHRDEPT1'))))))) OR (g_0.AUTHID IN (SELE
> CT g_8.SCOPEID FROM SECURITY_CIA_DB2_D91BPTIB_CIADB01.SCPNEXT AS g_8 WHERE (g_8.SYSID = 'DE29') AND (g_8.NEXTREC IN (SELECT g_9.SCOP
> EID FROM SECURITY_CIA_DB2_D91BPTIB_CIADB01.SCPNEXT AS g_9 WHERE (g_9.SYSID = 'DE29') AND (g_9.NEXTREC = 'CHRDEPT1'))))) OR (g_0.AUTH
> ID IN (SELECT g_10.SCOPEID FROM SECURITY_CIA_DB2_D91BPTIB_CIADB01.SCPNEXT AS g_10 WHERE (g_10.SYSID = 'DE29') AND (g_10.NEXTREC = 'C
> HRDEPT1'))) OR (g_0.AUTHID = 'CHRDEPT1'))
> The view definitions are shown below:
> <view name="SCPNEXT">
> <columns>
> <column name="sysid" type="varchar"/>
> <column name="scopeid" type="varchar"/>
> <column name="nextrec" type="varchar"/>
> </columns>
> <definition>
> #if ($db.count("select count(*) from sys.tables where Name='config' and SchemaName = 'security_db'") > 0)
> #set ($count = 0)
> #foreach($t in $db.query("select DB_TYPE, DB_LOC, DB_QUAL from security_db.config WHERE TYPE = 'CIA'"))
> #if ($db.count("select count(*) from sys.tables where SchemaName = 'SECURITY_CIA_${t.DB_TYPE}_${t.DB_LOC}_${t.DB_QUAL}'") == 0)
> #set ($count = $count + 1)
> #end
> #end
> #if ($count == 0)
> SELECT t.sysid, t.scopeid, t.nextrec
> FROM (
> #foreach($t in $db.query("select DB_TYPE, DB_LOC, DB_QUAL from security_db.config WHERE TYPE = 'CIA'"))
> SELECT n.sysid, n.scopeid, n.nextrec
> FROM SECURITY_CIA_${t.DB_TYPE}_${t.DB_LOC}_${t.DB_QUAL}.SCPNEXT n
> #if( $velocityHasNext ) UNION #end
> #end
> ) AS t
> #end
> #end
> </definition>
> </view>
> <view name="SCPXREF">
> <columns>
> <column name="sysid" type="varchar"/>
> <column name="authid" type="varchar"/>
> <column name="scopeid" type="varchar"/>
> <column name="authtype" type="varchar"/>
> </columns>
> <definition>
> #if ($db.count("select count(*) from sys.tables where Name='config' and SchemaName = 'security_db'") > 0)
> #set ($count = 0)
> #foreach($t in $db.query("select DB_TYPE, DB_LOC, DB_QUAL from security_db.config WHERE TYPE = 'CIA'"))
> #if ($db.count("select count(*) from sys.tables where SchemaName = 'SECURITY_CIA_${t.DB_TYPE}_${t.DB_LOC}_${t.DB_QUAL}'") == 0)
> #set ($count = $count + 1)
> #end
> #end
> #if ($count == 0)
> SELECT sysid, scopeid, authid, authtype
> FROM (
> #foreach($t in $db.query("select DB_TYPE, DB_LOC, DB_QUAL from security_db.config WHERE TYPE = 'CIA'"))
> SELECT x.sysid, x.scopeid, x.authid, x.authtype
> FROM SECURITY_CIA_${t.DB_TYPE}_${t.DB_LOC}_${t.DB_QUAL}.SCPXREF x
> #if( $velocityHasNext ) UNION #end
> #end
> ) AS t
> #end
> #end
> </definition>
> </view>
> I guess the best way to test this is to define these views and run the input query with SHOWPLAN=DEBUG and see if the AUTHID substitution is occurring.
> Thanks!
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira
20 hours, 12 minutes
[JBoss JIRA] (TEIID-3557) Can't reload VDB in domain mode
by Steven Hawkins (JIRA)
[ https://issues.jboss.org/browse/TEIID-3557?page=com.atlassian.jira.plugin... ]
Steven Hawkins closed TEIID-3557.
---------------------------------
> Can't reload VDB in domain mode
> -------------------------------
>
> Key: TEIID-3557
> URL: https://issues.jboss.org/browse/TEIID-3557
> Project: Teiid
> Issue Type: Bug
> Components: Server
> Affects Versions: 8.0
> Reporter: Van Halbert
> Assignee: Ramesh Reddy
> Priority: Critical
> Fix For: 8.7.1.6_2, 8.12, 8.11.1
>
>
> Can't reload VDB in domain mode, get the following error:
> Server throws the following exception:
> [Server:server-one] 12:26:45,678 ERROR [org.teiid.RUNTIME] (teiid-async-threads - 1) TEIID40088 Could not replicate object org.teiid.query.tempdata.GlobalTableStoreImpl@4e6c9a30: java.lang.IllegalStateException: cluster 'ModeShape.1' is already connected to singleton transport: [dummy-1435055090515, loopback.1, ModeShape.1, loopback-dynamic.1, $TEIID_BM$, dummy-1435055090188, dummy-1435055205654, $TEIID_ED$, teiid-cache, ddl2-vdb.1]
> [Server:server-one] at org.jgroups.stack.ProtocolStack.startStack(ProtocolStack.java:919) [jgroups-3.2.13.Final-redhat-1.jar:3.2.13.Final-redhat-1]
> [Server:server-one] at org.jgroups.JChannel.startStack(JChannel.java:827) [jgroups-3.2.13.Final-redhat-1.jar:3.2.13.Final-redhat-1]
> [Server:server-one] at org.jgroups.JChannel._preConnect(JChannel.java:525) [jgroups-3.2.13.Final-redhat-1.jar:3.2.13.Final-redhat-1]
> [Server:server-one] at org.jgroups.JChannel.connect(JChannel.java:277) [jgroups-3.2.13.Final-redhat-1.jar:3.2.13.Final-redhat-1]
> [Server:server-one] at org.jgroups.JChannel.connect(JChannel.java:268) [jgroups-3.2.13.Final-redhat-1.jar:3.2.13.Final-redhat-1]
> [Server:server-one] at org.teiid.replication.jgroups.JGroupsObjectReplicator.replicate(JGroupsObjectReplicator.java:563) [teiid-runtime-8.7.1.6_2-redhat-2.jar:8.7.1.6_2-redhat-2]
> [Server:server-one] at org.teiid.deployers.CompositeGlobalTableStore.createInstance(CompositeGlobalTableStore.java:57) [teiid-runtime-8.7.1.6_2-redhat-2.jar:8.7.1.6_2-redhat-2]
> [Server:server-one] at org.teiid.jboss.VDBService$1.finishedDeployment(VDBService.java:156) [teiid-jboss-integration-8.7.1.6_2-redhat-2.jar:8.7.1.6_2-redhat-2]
> [Server:server-one] at org.teiid.deployers.VDBRepository.notifyFinished(VDBRepository.java:352) [teiid-runtime-8.7.1.6_2-redhat-2.jar:8.7.1.6_2-redhat-2]
> [Server:server-one] at org.teiid.deployers.VDBRepository.finishDeployment(VDBRepository.java:308) [teiid-runtime-8.7.1.6_2-redhat-2.jar:8.7.1.6_2-redhat-2]
> [Server:server-one] at org.teiid.runtime.AbstractVDBDeployer.metadataLoaded(AbstractVDBDeployer.java:202) [teiid-runtime-8.7.1.6_2-redhat-2.jar:8.7.1.6_2-redhat-2]
> [Server:server-one] at org.teiid.jboss.VDBService.access$1100(VDBService.java:85) [teiid-jboss-integration-8.7.1.6_2-redhat-2.jar:8.7.1.6_2-redhat-2]
> [Server:server-one] at org.teiid.jboss.VDBService$6.run(VDBService.java:411) [teiid-jboss-integration-8.7.1.6_2-redhat-2.jar:8.7.1.6_2-redhat-2]
> [Server:server-one] at org.teiid.jboss.VDBService$7.run(VDBService.java:442) [teiid-jboss-integration-8.7.1.6_2-redhat-2.jar:8.7.1.6_2-redhat-2]
> [Server:server-one] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [rt.jar:1.7.0_25]
> [Server:server-one] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) [rt.jar:1.7.0_25]
> [Server:server-one] at java.lang.Thread.run(Thread.java:724) [rt.jar:1.7.0_25]
> [Server:server-one] at org.jboss.threads.JBossThread.run(JBossThread.java:122)
> VDB reload works fine in standalone mode.
--
This message was sent by Atlassian JIRA
(v7.2.2#72004)
8 years, 11 months
[JBoss JIRA] (TEIID-4424) Error when factory overrides initCapabilities due WrappedConnection is what Teiid is passing
by Steven Hawkins (JIRA)
[ https://issues.jboss.org/browse/TEIID-4424?page=com.atlassian.jira.plugin... ]
Steven Hawkins closed TEIID-4424.
---------------------------------
> Error when factory overrides initCapabilities due WrappedConnection is what Teiid is passing
> --------------------------------------------------------------------------------------------
>
> Key: TEIID-4424
> URL: https://issues.jboss.org/browse/TEIID-4424
> Project: Teiid
> Issue Type: Bug
> Components: Server
> Affects Versions: 8.4
> Reporter: Van Halbert
> Assignee: Steven Hawkins
> Priority: Critical
> Fix For: 9.1, 9.0.4
>
>
> The infinispan hotrod translator factory class is trying to override initCapabililties(Connection) but is seeing the following error on the server:
> 20:34:22,861 ERROR [org.teiid.PROCESSOR] (Worker0_QueryProcessorQueue5) zLiKTbTSLJkH TEIID30019 Unexpected exception for request zLiKTbTSLJkH.0: java.lang.ClassCastException: org.teiid.resource.spi.WrappedConnection cannot be cast to org.teiid.translator.object.ObjectConnection
> at org.teiid.translator.infinispan.hotrod.InfinispanHotRodExecutionFactory.initCapabilities(InfinispanHotRodExecutionFactory.java:53)
> at org.teiid.dqp.internal.datamgr.ConnectorManager.buildCapabilities(ConnectorManager.java:186)
> at org.teiid.dqp.internal.datamgr.ConnectorManager.getCapabilities(ConnectorManager.java:163)
> at org.teiid.dqp.internal.process.CachedFinder.findCapabilities(CachedFinder.java:108)
--
This message was sent by Atlassian JIRA
(v7.2.2#72004)
8 years, 11 months
[JBoss JIRA] (TEIID-3818) Issues with ODBC metadata foreign key queries
by Steven Hawkins (JIRA)
[ https://issues.jboss.org/browse/TEIID-3818?page=com.atlassian.jira.plugin... ]
Steven Hawkins closed TEIID-3818.
---------------------------------
> Issues with ODBC metadata foreign key queries
> ---------------------------------------------
>
> Key: TEIID-3818
> URL: https://issues.jboss.org/browse/TEIID-3818
> Project: Teiid
> Issue Type: Bug
> Components: ODBC
> Affects Versions: 8.4
> Environment: Most likely not OS / hardware dependent.
> Reporter: Dave Nicodemus
> Assignee: Steven Hawkins
> Priority: Critical
> Fix For: 8.7.2.6_2, 8.12.2, 8.13, 8.7.6
>
>
> The current foreign key handling should return imported key, but instead returns exported keys.
> When exported keys are asked for an exception is thrown:
> While attempting to use Client Microsoft's Power BI desktop using ODBC connecting to Teiid Embedded server using VDB with metadata tags.
> Received the following errors :
> {code}
> [36.864]ERROR from backend during send_query: 'SERROR'
> [36.865]ERROR from backend during send_query: 'C50000'
> [36.869]ERROR from backend during send_query: 'MTEIID31100 Parsing error: Encountered "('ScottTestMart' AS [*]name[*]) as" at line 1, column 33.
> Was expecting: "string" | "varbinary" | "varchar" | "boolean" | "byte" | "tinyint" | "short" | "smallint" | "char" | "integer" ...'
> [36.875]ERROR from backend during send_query: 'Dorg.teiid.jdbc.TeiidSQLException: TEIID31100 Parsing error: Encountered "('ScottTestMart' AS [*]name[*]) as" at line 1, column 33.
> Was expecting: "string" | "varbinary" | "varchar" | "boolean" | "byte" | "tinyint" | "short" | "smallint" | "char" | "integer" ...'
> [37.397]STATEMENT ERROR: func=PGAPI_ForeignKeys, desc='', errnum=1, errmsg='PGAPI_ForeignKeys query error'
> {code}
> Due to this query being generated by the BI tool :
> {code}
> 'select 'ScottTestMart'::name as PKTABLE_CAT,
> n2.nspname as PKTABLE_SCHEM,
> c2.relname as PKTABLE_NAME,
> a2.attname as PKCOLUMN_NAME,
> 'ScottTestMart'::name as FKTABLE_CAT,
> n1.nspname as FKTABLE_SCHEM,
> c1.relname as FKTABLE_NAME,
> a1.attname as FKCOLUMN_NAME,
> i::int2 as KEY_SEQ,
> case ref.confupdtype
> when 'c' then 0::int2
> when 'n' then 2::int2
> when 'd' then 4::int2
> when 'r' then 1::int2
> else 3::int2
> end as UPDATE_RULE,
> case ref.confdeltype
> when 'c' then 0::int2
> when 'n' then 2::int2
> when 'd' then 4::int2
> when 'r' then 1::int2
> else 3::int2
> end as DELETE_RULE,
> ref.conname as FK_NAME,
> cn.conname as PK_NAME,
> case
> when ref.condeferrable then
> case
> when ref.condeferred then 5::int2
> else 6::int2
> end
> else 7::int2
> end as DEFERRABLITY
> from
> ((((((( (select cn.oid, conrelid, conkey, confrelid, confkey,
> generate_series(array_lower(conkey, 1), array_upper(conkey, 1)) as i,
> confupdtype, confdeltype, conname,
> condeferrable, condeferred
> from pg_catalog.pg_constraint cn,
> pg_catalog.pg_class c,
> pg_catalog.pg_namespace n
> where contype = 'f'
> and confrelid = c.oid
> and relname = 'Categories'
> and n.oid = c.relnamespace
> and n.nspname = 'ScottTestMart'
> ) ref
> inner join pg_catalog.pg_class c1
> on c1.oid = ref.conrelid)
> inner join pg_catalog.pg_namespace n1
> on n1.oid = c1.relnamespace)
> inner join pg_catalog.pg_attribute a1
> on a1.attrelid = c1.oid
> and a1.attnum = conkey[i])
> inner join pg_catalog.pg_class c2
> on c2.oid = ref.confrelid)
> inner join pg_catalog.pg_namespace n2
> on n2.oid = c2.relnamespace)
> inner join pg_catalog.pg_attribute a2
> on a2.attrelid = c2.oid
> and a2.attnum = confkey[i])
> left outer join pg_catalog.pg_constraint cn
> on cn.conrelid = ref.confrelid
> and cn.contype = 'p')
> order by ref.oid, ref.i'
> {code}
--
This message was sent by Atlassian JIRA
(v7.2.2#72004)
8 years, 11 months
[JBoss JIRA] (TEIID-3978) Remove AddressWrapper
by Steven Hawkins (JIRA)
[ https://issues.jboss.org/browse/TEIID-3978?page=com.atlassian.jira.plugin... ]
Steven Hawkins closed TEIID-3978.
---------------------------------
> Remove AddressWrapper
> ---------------------
>
> Key: TEIID-3978
> URL: https://issues.jboss.org/browse/TEIID-3978
> Project: Teiid
> Issue Type: Bug
> Components: Server
> Affects Versions: 8.4
> Reporter: Steven Hawkins
> Assignee: Steven Hawkins
> Priority: Critical
> Fix For: 9.0, 8.12.5, 8.13.2, 8.7.5.6_2
>
>
> AddressWrapper was introduced to handle an earlier jgroups version where address objects were not directly serializable. However the deserialization code is using the thread context class loader which is not guaranteed to have the JGroups classes in the classpath. The resulting exception (where the original exception is simply swallowed) looks like:
> {code}
> 2016-02-16 08:45:30,140 ERROR [Incoming-1,shared=tcp-teiid-1] org.teiid.replication.jgroups.JGroupsObjectReplicator$ReplicatorRpcDispatcher - exception marshalling object
> java.lang.IllegalStateException: unread block data
> at java.io.ObjectInputStream$BlockDataInputStream.setBlockDataMode(ObjectInputStream.java:2421)
> at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1382)
> at java.io.ObjectInputStream.readArray(ObjectInputStream.java:1706)
> at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1344)
> at java.io.ObjectInputStream.readObject(ObjectInputStream.java:370)
> at org.jgroups.blocks.MethodCall.readExternal(MethodCall.java:430)
> at java.io.ObjectInputStream.readExternalData(ObjectInputStream.java:1837)
> at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1796)
> at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350)
> at java.io.ObjectInputStream.readObject(ObjectInputStream.java:370)
> at org.teiid.replication.jgroups.JGroupsObjectReplicator$ContextAwareMarshaller.objectFromBuffer(JGroupsObjectReplicator.java:611)
> at org.teiid.replication.jgroups.JGroupsObjectReplicator$ReplicatorRpcDispatcher.handle(JGroupsObjectReplicator.java:106)
> at org.jgroups.blocks.RequestCorrelator.handleRequest(RequestCorrelator.java:484)
> at org.jgroups.blocks.RequestCorrelator.receiveMessage(RequestCorrelator.java:391)
> at org.jgroups.blocks.RequestCorrelator.receive(RequestCorrelator.java:249)
> at org.jgroups.blocks.MessageDispatcher$ProtocolAdapter.up(MessageDispatcher.java:600)
> at org.jgroups.JChannel.up(JChannel.java:707)
> {code}
--
This message was sent by Atlassian JIRA
(v7.2.2#72004)
8 years, 11 months