[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
1 week, 4 days
[JBoss JIRA] (TEIID-5521) Add build plugins used by basepom to help with dependency handling
by Ramesh Reddy (Jira)
[ https://issues.jboss.org/browse/TEIID-5521?page=com.atlassian.jira.plugin... ]
Ramesh Reddy commented on TEIID-5521:
-------------------------------------
I think with WildFly modules in the mix this would be hard proposition to solve. Let's leave as is for master, I think places like "teiid-komodo" is where we need to start to fix more issues like this IMO.
Another crazy idea I been thinking is moving the "teiid-jboss-integration" and connector projects out into "teiid-wildfly" project that will be all this based on jboss-parent-pom and then we have a clean Teiid engine based on basepom, where on which spring-boot, thorntail, hangout off. With all the complexity of featurepacks, modules etc it has really becoming unmanagable dependencies wise.
> Add build plugins used by basepom to help with dependency handling
> ------------------------------------------------------------------
>
> Key: TEIID-5521
> URL: https://issues.jboss.org/browse/TEIID-5521
> Project: Teiid
> Issue Type: Task
> Components: Build/Kits
> Affects Versions: 12.x
> Reporter: Van Halbert
> Assignee: Van Halbert
> Priority: Major
> Fix For: 12.0
>
>
> Utilize plugins that basebom uses, which will help reduce half the headaches you go though during the productization with versions.
> plugins:
> * duplicate-finder-maven-plugin
> * maven-dependency-plugin
> * maven-dependency-versions-check-plugin
--
This message was sent by Atlassian Jira
(v7.12.1#712002)
6 years, 11 months
[JBoss JIRA] (TEIID-5521) Add build plugins used by basepom to help with dependency handling
by Steven Hawkins (Jira)
[ https://issues.jboss.org/browse/TEIID-5521?page=com.atlassian.jira.plugin... ]
Steven Hawkins commented on TEIID-5521:
---------------------------------------
There are some other issues with the dependency analysis. Something that we need transitively for embedded like jboss-vfs, basepom does not like that it is explicitly declared as a dependency. If we remove the explicit dependency on xerces we see the issue mentioned in TEIID-5225.
So I committed what I could of the initial cleanup to master. We should probably at least pull back the kitting change to remove unneeded stuff from dataquality.
With the jboss-parent we also just inherit the warnings:
[WARNING] Rule 0: org.apache.maven.plugins.enforcer.RequirePluginVersions warned with message:
Some plugins are missing valid versions:(LATEST RELEASE SNAPSHOT are not allowed )
org.apache.maven.plugins:maven-clean-plugin. The version currently in use is 3.1.0
org.codehaus.mojo:buildnumber-maven-plugin. The version currently in use is 1.4
org.apache.maven.plugins:maven-install-plugin. The version currently in use is 2.5.2
org.apache.maven.plugins:maven-source-plugin. The version currently in use is 3.0.1
org.apache.maven.plugins:maven-site-plugin. The version currently in use is 3.7.1
org.apache.maven.plugins:maven-deploy-plugin. The version currently in use is 2.8.2
org.apache.maven.plugins:maven-enforcer-plugin. The version currently in use is 3.0.0-M2
Which seems odd at first glance as those plugin version are defined in the parent...
[~van.halbert] or [~rareddy] do either of you want to pursue this further in 12.0, or are you good with picking this back up later?
> Add build plugins used by basepom to help with dependency handling
> ------------------------------------------------------------------
>
> Key: TEIID-5521
> URL: https://issues.jboss.org/browse/TEIID-5521
> Project: Teiid
> Issue Type: Task
> Components: Build/Kits
> Affects Versions: 12.x
> Reporter: Van Halbert
> Assignee: Van Halbert
> Priority: Major
> Fix For: 12.0
>
>
> Utilize plugins that basebom uses, which will help reduce half the headaches you go though during the productization with versions.
> plugins:
> * duplicate-finder-maven-plugin
> * maven-dependency-plugin
> * maven-dependency-versions-check-plugin
--
This message was sent by Atlassian Jira
(v7.12.1#712002)
6 years, 11 months
[JBoss JIRA] (TEIID-5521) Add build plugins used by basepom to help with dependency handling
by Steven Hawkins (Jira)
[ https://issues.jboss.org/browse/TEIID-5521?page=com.atlassian.jira.plugin... ]
Steven Hawkins commented on TEIID-5521:
---------------------------------------
I have worked through this up to the connector. The connectors will be a pain to correct as we declare lots of dependencies in the connector parent pom.
I'll see how much of a hassle it would be to bring over just the corrects, but no usage yet of basepom.
> Add build plugins used by basepom to help with dependency handling
> ------------------------------------------------------------------
>
> Key: TEIID-5521
> URL: https://issues.jboss.org/browse/TEIID-5521
> Project: Teiid
> Issue Type: Task
> Components: Build/Kits
> Affects Versions: 12.x
> Reporter: Van Halbert
> Assignee: Van Halbert
> Priority: Major
> Fix For: 12.0
>
>
> Utilize plugins that basebom uses, which will help reduce half the headaches you go though during the productization with versions.
> plugins:
> * duplicate-finder-maven-plugin
> * maven-dependency-plugin
> * maven-dependency-versions-check-plugin
--
This message was sent by Atlassian Jira
(v7.12.1#712002)
6 years, 11 months
[JBoss JIRA] (TEIID-5556) Re-resolving a query with common tables breaks projection minimization
by Steven Hawkins (Jira)
[ https://issues.jboss.org/browse/TEIID-5556?page=com.atlassian.jira.plugin... ]
Steven Hawkins resolved TEIID-5556.
-----------------------------------
Resolution: Done
Updated the resolving logic to reuse the id if already resolved.
> Re-resolving a query with common tables breaks projection minimization
> ----------------------------------------------------------------------
>
> Key: TEIID-5556
> URL: https://issues.jboss.org/browse/TEIID-5556
> Project: Teiid
> Issue Type: Bug
> Components: Query Engine
> Reporter: Steven Hawkins
> Assignee: Steven Hawkins
> Priority: Major
> Fix For: 12.0
>
>
> While I don't see a case where this would happen in practice we should guard against it.
> The issue is that we create a new temp group for the with clause, but then reuse the old metadata ids where referenced. The projection logic works off of equality, so it needs the references to be updated or the original to stay in use.
--
This message was sent by Atlassian Jira
(v7.12.1#712002)
6 years, 11 months
[JBoss JIRA] (TEIID-5556) Re-resolving a query with common tables breaks projection minimization
by Steven Hawkins (Jira)
[ https://issues.jboss.org/browse/TEIID-5556?page=com.atlassian.jira.plugin... ]
Steven Hawkins updated TEIID-5556:
----------------------------------
Description:
While I don't see a case where this would happen in practice we should guard against it.
The issue is that we create a new temp group for the with clause, but then reuse the old metadata ids where referenced. The projection logic works off of equality, so it needs the references to be updated or the original to stay in use.
was:While I don't see a case where this would happen in practice we should guard against it.
> Re-resolving a query with common tables breaks projection minimization
> ----------------------------------------------------------------------
>
> Key: TEIID-5556
> URL: https://issues.jboss.org/browse/TEIID-5556
> Project: Teiid
> Issue Type: Bug
> Components: Query Engine
> Reporter: Steven Hawkins
> Assignee: Steven Hawkins
> Priority: Major
> Fix For: 12.0
>
>
> While I don't see a case where this would happen in practice we should guard against it.
> The issue is that we create a new temp group for the with clause, but then reuse the old metadata ids where referenced. The projection logic works off of equality, so it needs the references to be updated or the original to stay in use.
--
This message was sent by Atlassian Jira
(v7.12.1#712002)
6 years, 11 months