[JBoss JIRA] (TEIID-2965) wrong rewriting on "insert into ... select" statement - Teiid 8.8.0.Alpha1
by Steven Hawkins (JIRA)
[ https://issues.jboss.org/browse/TEIID-2965?page=com.atlassian.jira.plugin... ]
Steven Hawkins closed TEIID-2965.
---------------------------------
> wrong rewriting on "insert into ... select" statement - Teiid 8.8.0.Alpha1
> --------------------------------------------------------------------------
>
> Key: TEIID-2965
> URL: https://issues.jboss.org/browse/TEIID-2965
> Project: Teiid
> Issue Type: Bug
> Security Level: Public(Everyone can see)
> Components: Query Engine
> Affects Versions: 8.4
> Reporter: Alex K.
> Assignee: Steven Hawkins
> Priority: Critical
> Fix For: 8.8, 8.7.1
>
>
> Having created a PostgreSQL Table like:
>
> {code:sql}
> CREATE TABLE Test_Insert
> (
> status character varying(4000)
> )
> {code}
> And then running this statement
> {code:sql}
> INSERT INTO test_tables_pg.Test_Insert
> SELECT
> CASE WHEN (status = '0') AND (cnt > 0) THEN '4' ELSE status END AS status
> FROM
> (SELECT
> (SELECT COUNT(*) FROM test_tables_pg.test_a AS smh2) AS cnt,
> a AS status
> FROM test_tables_pg.test_a AS smh
> ) AS a
> {code}
>
> I get the following exception:
> {code}
> 16:18:34,427 WARN [org.teiid.PROCESSOR] (Worker4_QueryProcessorQueue16) ii4bbeYlV1WF TEIID30020 Processing exception for request ii4bbeYlV1WF.4 'TEIID30504 test_tables_pg: 0 TEIID11013:TEIID11004 Error executing statement(s): [Prepared Values: [] SQL: INSERT INTO "public"."test_insert" ("status") SELECT smh."a" AS status, (SELECT COUNT(*) FROM "public"."test_a" AS g_0) AS cnt FROM "public"."test_a" AS smh]'. Originally TeiidProcessingException 'ERROR: INSERT has more expressions than target columns
> Position: 74' QueryExecutorImpl.java:2157. Enable more detailed logging to see the entire stacktrace.
> 16:20:12,498 WARN [org.teiid.CONNECTOR] (Worker5_QueryProcessorQueue22) ii4bbeYlV1WF Connector worker process failed for atomic-request=ii4bbeYlV1WF.6.2.6: org.teiid.translator.jdbc.JDBCExecutionException: 0 TEIID11013:TEIID11004 Error executing statement(s): [Prepared Values: [] SQL: INSERT INTO "public"."test_insert" ("status") SELECT
> smh."a" AS status, (SELECT COUNT(*) FROM "public"."test_a" AS g_0) AS cnt FROM "public"."test_a" AS smh]
> at org.teiid.translator.jdbc.JDBCUpdateExecution.executeTranslatedCommand(JDBCUpdateExecution.java:247)
> at org.teiid.translator.jdbc.JDBCUpdateExecution.execute(JDBCUpdateExecution.java:79)
> at org.teiid.dqp.internal.datamgr.ConnectorWorkItem$1.execute(ConnectorWorkItem.java:359) [teiid-engine-8.8.0.Alpha1.jar:8.8.0.Alpha1]
> at org.teiid.dqp.internal.datamgr.ConnectorWorkItem.execute(ConnectorWorkItem.java:326) [teiid-engine-8.8.0.Alpha1.jar:8.8.0.Alpha1]
> at org.teiid.dqp.internal.process.DataTierTupleSource.getResults(DataTierTupleSource.java:298) [teiid-engine-8.8.0.Alpha1.jar:8.8.0.Alpha1]
> at org.teiid.dqp.internal.process.DataTierTupleSource$1.call(DataTierTupleSource.java:110) [teiid-engine-8.8.0.Alpha1.jar:8.8.0.Alpha1]
> at org.teiid.dqp.internal.process.DataTierTupleSource$1.call(DataTierTupleSource.java:107) [teiid-engine-8.8.0.Alpha1.jar:8.8.0.Alpha1]
> at java.util.concurrent.FutureTask.run(FutureTask.java:262) [rt.jar:1.7.0_51]
> at org.teiid.dqp.internal.process.FutureWork.run(FutureWork.java:58) [teiid-engine-8.8.0.Alpha1.jar:8.8.0.Alpha1]
> at org.teiid.dqp.internal.process.DQPWorkContext.runInContext(DQPWorkContext.java:274) [teiid-engine-8.8.0.Alpha1.jar:8.8.0.Alpha1]
> at org.teiid.dqp.internal.process.ThreadReuseExecutor$RunnableWrapper.run(ThreadReuseExecutor.java:119) [teiid-engine-8.8.0.Alpha1.jar:8.8.0.Alpha1]
> at org.teiid.dqp.internal.process.ThreadReuseExecutor$3.run(ThreadReuseExecutor.java:214) [teiid-engine-8.8.0.Alpha1.jar:8.8.0.Alpha1]
> at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [rt.jar:1.7.0_51]
> at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) [rt.jar:1.7.0_51]
> at java.lang.Thread.run(Thread.java:744) [rt.jar:1.7.0_51]
> Caused by: org.postgresql.util.PSQLException: ERROR: INSERT has more expressions than target columns
> Position: 74
> at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2157)
> at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1886)
> at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:255)
> at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:555)
> at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:417)
> at org.postgresql.jdbc2.AbstractJdbc2Statement.executeUpdate(AbstractJdbc2Statement.java:363)
> at org.jboss.jca.adapters.jdbc.WrappedPreparedStatement.executeUpdate(WrappedPreparedStatement.java:493)
> at org.teiid.translator.jdbc.JDBCUpdateExecution.executeTranslatedCommand(JDBCUpdateExecution.java:218)
> ... 14 more
> {code}
> It looks like the rewriting is completely wrong, since Teiid is trying to insert 2 fields into a single one.
>
> In order to reproduce the bug, it is necessary that test_a and the Test_Insert tables are both in the same schema, so that the full command can be pushed down. Moreover, the bug can be reproduced in PostgreSQL, Oracle, MS SQL Server, but it correctly works in MySQL.
--
This message was sent by Atlassian JIRA
(v6.2.6#6264)
11 years, 8 months
[JBoss JIRA] (TEIID-2999) ModeShape translator functions UpperCase/LowerCase should be UPPER/LOWER
by Steven Hawkins (JIRA)
[ https://issues.jboss.org/browse/TEIID-2999?page=com.atlassian.jira.plugin... ]
Steven Hawkins closed TEIID-2999.
---------------------------------
> ModeShape translator functions UpperCase/LowerCase should be UPPER/LOWER
> ------------------------------------------------------------------------
>
> Key: TEIID-2999
> URL: https://issues.jboss.org/browse/TEIID-2999
> Project: Teiid
> Issue Type: Bug
> Security Level: Public(Everyone can see)
> Components: Misc. Connectors
> Affects Versions: 7.7
> Reporter: Van Halbert
> Assignee: Van Halbert
> Priority: Critical
> Fix For: 8.8, 8.7.1
>
>
> Error:
> {code}
> 14:27:48,921 WARN [org.teiid.CONNECTOR] (Worker39_QueryProcessorQueue1816) Connector worker process failed for atomic-request=WpidMF9SD0dt.4.0.367: org.teiid.translator.jdbc.JDBCExecutionException: 0 TEIID11008:TEIID11004 Error executing statement(s): [SQL: SELECT g_0."jcr:name", g_0."jcr:path", g_0."jcr:score", g_0."mode:depth", g_0."mode:localName", g_0."transform:deleteAllowed", g_0."transform:deleteSql", g_0."transform:deleteSqlDefault", g_0."transform:insertAllowed", g_0."transform:insertSql", g_0."transform:insertSqlDefault", g_0."transform:outputLocked", g_0."transform:selectSql", g_0."transform:updateAllowed", g_0."transform:updateSql", g_0."transform:updateSqlDefault" FROM "transform:withSql" AS g_0 WHERE UpperCase(g_0."transform:selectSql") LIKE '%ORDER_EPPO_PUBKEY%']
> at org.teiid.translator.jdbc.JDBCQueryExecution.execute(JDBCQueryExecution.java:88)
> at org.teiid.dqp.internal.datamgr.ConnectorWorkItem.execute(ConnectorWorkItem.java:312) [teiid-engine-8.4.1-redhat-7.jar:8.4.1-redhat-7]
> at org.teiid.dqp.internal.process.DataTierTupleSource.getResults(DataTierTupleSource.java:301) [teiid-engine-8.4.1-redhat-7.jar:8.4.1-redhat-7]
> at org.teiid.dqp.internal.process.DataTierTupleSource$1.call(DataTierTupleSource.java:113) [teiid-engine-8.4.1-redhat-7.jar:8.4.1-redhat-7]
> at org.teiid.dqp.internal.process.DataTierTupleSource$1.call(DataTierTupleSource.java:110) [teiid-engine-8.4.1-redhat-7.jar:8.4.1-redhat-7]
> at java.util.concurrent.FutureTask.run(FutureTask.java:262) [rt.jar:1.7.0_60]
> at org.teiid.dqp.internal.process.FutureWork.run(FutureWork.java:58) [teiid-engine-8.4.1-redhat-7.jar:8.4.1-redhat-7]
> at org.teiid.dqp.internal.process.DQPWorkContext.runInContext(DQPWorkContext.java:269) [teiid-engine-8.4.1-redhat-7.jar:8.4.1-redhat-7]
> at org.teiid.dqp.internal.process.ThreadReuseExecutor$RunnableWrapper.run(ThreadReuseExecutor.java:119) [teiid-engine-8.4.1-redhat-7.jar:8.4.1-redhat-7]
> at org.teiid.dqp.internal.process.ThreadReuseExecutor$3.run(ThreadReuseExecutor.java:214) [teiid-engine-8.4.1-redhat-7.jar:8.4.1-redhat-7]
> at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [rt.jar:1.7.0_60]
> at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) [rt.jar:1.7.0_60]
> at java.lang.Thread.run(Thread.java:745) [rt.jar:1.7.0_60]
> Caused by: java.sql.SQLException: The JCR-SQL2 query "SELECT g_0."jcr:name", g_0."jcr:path", g_0."jcr:score", g_0."mode:depth", g_0."mode:localName", g_0."transform:deleteAllowed", g_0."transform:deleteSql", g_0."transform:deleteSqlDefault", g_0."transform:insertAllowed", g_0."transform:insertSql", g_0."transform:insertSqlDefault", g_0."transform:outputLocked", g_0."transform:selectSql", g_0."transform:updateAllowed", g_0."transform:updateSql", g_0."transform:updateSqlDefault" FROM "transform:withSql" AS g_0 WHERE UpperCase(g_0."transform:selectSql") LIKE '%ORDER_EPPO_PUBKEY%'" is not well-formed: Expecting a constraint, but found 'UpperCase' at line 1, column 467
> at org.modeshape.jdbc.JcrStatement.execute(JcrStatement.java:433)
> at org.modeshape.jdbc.JcrStatement.executeQuery(JcrStatement.java:479)
> at org.jboss.jca.adapters.jdbc.WrappedStatement.executeQuery(WrappedStatement.java:344)
> at org.teiid.translator.jdbc.JDBCQueryExecution.execute(JDBCQueryExecution.java:80)
> ... 12 more
> Caused by: javax.jcr.query.InvalidQueryException: The JCR-SQL2 query "SELECT g_0."jcr:name", g_0."jcr:path", g_0."jcr:score", g_0."mode:depth", g_0."mode:localName", g_0."transform:deleteAllowed", g_0."transform:deleteSql", g_0."transform:deleteSqlDefault", g_0."transform:insertAllowed", g_0."transform:insertSql", g_0."transform:insertSqlDefault", g_0."transform:outputLocked", g_0."transform:selectSql", g_0."transform:updateAllowed", g_0."transform:updateSql", g_0."transform:updateSqlDefault" FROM "transform:withSql" AS g_0 WHERE UpperCase(g_0."transform:selectSql") LIKE '%ORDER_EPPO_PUBKEY%'" is not well-formed: Expecting a constraint, but found 'UpperCase' at line 1, column 467
> at org.modeshape.jcr.JcrQueryManager.createQuery(JcrQueryManager.java:146)
> at org.modeshape.jcr.JcrQueryManager.createQuery(JcrQueryManager.java:101)
> at org.modeshape.jdbc.delegate.LocalRepositoryDelegate.execute(LocalRepositoryDelegate.java:139)
> at org.modeshape.jdbc.JcrStatement.execute(JcrStatement.java:429)
> ... 15 more
--
This message was sent by Atlassian JIRA
(v6.2.6#6264)
11 years, 8 months
[JBoss JIRA] (TEIID-3022) refine removed vdb handling
by Steven Hawkins (JIRA)
[ https://issues.jboss.org/browse/TEIID-3022?page=com.atlassian.jira.plugin... ]
Steven Hawkins closed TEIID-3022.
---------------------------------
> refine removed vdb handling
> ---------------------------
>
> Key: TEIID-3022
> URL: https://issues.jboss.org/browse/TEIID-3022
> Project: Teiid
> Issue Type: Quality Risk
> Security Level: Public(Everyone can see)
> Components: Server
> Affects Versions: 8.1
> Reporter: Steven Hawkins
> Assignee: Steven Hawkins
> Fix For: 8.8
>
>
> With TEIID-2105 the server will reject requests against a non-active vdb, which includes a removed vdb. This is against the original intent of allowing for lazy cleanup. We should either have a vdb remove proactively terminate all sessions and fully cleanup or we should reinstate the lazy logic. At this point it probably makes the most sense to go the first route as there is other logic (materialization management for one) now checking the vdb state and assuming that removal will invalidate the vdb.
--
This message was sent by Atlassian JIRA
(v6.2.6#6264)
11 years, 8 months
[JBoss JIRA] (TEIID-3031) Database Logging: Problems with Oracle
by Steven Hawkins (JIRA)
[ https://issues.jboss.org/browse/TEIID-3031?page=com.atlassian.jira.plugin... ]
Steven Hawkins closed TEIID-3031.
---------------------------------
> Database Logging: Problems with Oracle
> --------------------------------------
>
> Key: TEIID-3031
> URL: https://issues.jboss.org/browse/TEIID-3031
> Project: Teiid
> Issue Type: Bug
> Security Level: Public(Everyone can see)
> Affects Versions: 8.7.1
> Reporter: Van Halbert
> Assignee: Ramesh Reddy
> Fix For: 8.7.1
>
>
> Installed the teiid extension: database logging to use oracle, and get the following exception at startup:
> Unable to build EntityManagerFactory
> at org.jboss.as.jpa.service.PersistenceUnitServiceImpl$1.run(PersistenceUnitServiceImpl.java:103)
> at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [rt.jar:1.7.0_55]
> at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) [rt.jar:1.7.0_55]
> at java.lang.Thread.run(Thread.java:744) [rt.jar:1.7.0_55]
> at org.jboss.threads.JBossThread.run(JBossThread.java:122) [jboss-threads-2.1.1.Final-redhat-1.jar:2.1.1.Final-redhat-1]
> Caused by: javax.persistence.PersistenceException: [PersistenceUnit: teiid-logger] Unable to build EntityManagerFactory
> at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:924)
> at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:899)
> at org.hibernate.ejb.HibernatePersistence.createContainerEntityManagerFactory(HibernatePersistence.java:76)
> at org.jboss.as.jpa.service.PersistenceUnitServiceImpl.createContainerEntityManagerFactory(PersistenceUnitServiceImpl.java:200)
> at org.jboss.as.jpa.service.PersistenceUnitServiceImpl.access$600(PersistenceUnitServiceImpl.java:57)
> at org.jboss.as.jpa.service.PersistenceUnitServiceImpl$1.run(PersistenceUnitServiceImpl.java:99)
> ... 4 more
> Caused by: org.hibernate.MappingException: org.hibernate.dialect.Oracle10gDialect does not support identity key generation
> at org.hibernate.dialect.Dialect.getIdentityColumnString(Dialect.java:772)
> at org.hibernate.dialect.Dialect.getIdentityColumnString(Dialect.java:762)
> at org.hibernate.mapping.Table.sqlCreateString(Table.java:505)
> at org.hibernate.cfg.Configuration.generateSchemaCreationScript(Configuration.java:1038)
> at org.hibernate.tool.hbm2ddl.SchemaExport.<init>(SchemaExport.java:125)
> at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:504)
> at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1797)
> at org.hibernate.ejb.EntityManagerFactoryImpl.<init>(EntityManagerFactoryImpl.java:96)
> at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:914)
> ... 9 more
--
This message was sent by Atlassian JIRA
(v6.2.6#6264)
11 years, 8 months
[JBoss JIRA] (TEIID-2977) class cast exception with odata json format function results
by Steven Hawkins (JIRA)
[ https://issues.jboss.org/browse/TEIID-2977?page=com.atlassian.jira.plugin... ]
Steven Hawkins closed TEIID-2977.
---------------------------------
> class cast exception with odata json format function results
> ------------------------------------------------------------
>
> Key: TEIID-2977
> URL: https://issues.jboss.org/browse/TEIID-2977
> Project: Teiid
> Issue Type: Bug
> Security Level: Public(Everyone can see)
> Components: OData
> Affects Versions: 8.4
> Reporter: Steven Hawkins
> Assignee: Steven Hawkins
> Fix For: 8.4.3, 8.8, 8.7.1
>
>
> If the json format is requested for function/stored procedure results, the json formatting logic will through a class cast:
> 14:56:38,642 ERROR [org.teiid.ODATA] (http-localhost/127.0.0.1:8080-1) TEIID16013 Error occured producing OData result.: java.lang.ClassCastException: org.odata4j.core.OComplexObjects$OComplexObjectImpl cannot be cast to org.odata4j.core.OCollection at org.odata4j.format.json.JsonFormatWriter.writeValue(JsonFormatWriter.java:145) [odata4j-core-0.8.0-SNAPSHOT-redhat.jar:] at org.odata4j.format.json.JsonCollectionFormatWriter.writeContent(JsonCollectionFormatWriter.java:38) [odata4j-core-0.8.0-SNAPSHOT-redhat.jar:] at org.odata4j.format.json.JsonCollectionFormatWriter.writeContent(JsonCollectionFormatWriter.java:14) [odata4j-core-0.8.0-SNAPSHOT-redhat.jar:] at
--
This message was sent by Atlassian JIRA
(v6.2.6#6264)
11 years, 8 months
[JBoss JIRA] (TEIID-3038) Add spatial query support to the Teiid MongoDB translator
by Michael Farwell (JIRA)
[ https://issues.jboss.org/browse/TEIID-3038?page=com.atlassian.jira.plugin... ]
Michael Farwell commented on TEIID-3038:
----------------------------------------
We've taken a stab at implementing spatial support in the MongoDB translator, but we'd like to see it supported in a released version. We've implemented a basic geoIntersects and geoWithin that works with a bounding box.
We added the following code to org.teiid.translator.mongodb.MongoDBSelectVisitor:
@Override
public void visit(Comparison obj) {
// this for $cond in the select statement, and formatting of command for $cond vs $match is different
if (this.processingDerivedColumn) {
visitDerivedExpression(obj);
return;
}
// NEW CODE
if (obj.getLeftExpression() instanceof Function) {
Function function = (Function)obj.getLeftExpression();
String fname = function.getName();
if (fname.equals("geoIntersects") || fname.equals("geoWithin")) {
handleGeospatial(function);
return;
}
}
// this for the normal where clause
ColumnAlias exprAlias = getExpressionAlias(obj.getLeftExpression());
...
And the following method:
private void handleGeospatial(Function function) {
List<Expression> args = function.getParameters();
String fname = function.getName();
if (args.size() == 5 && args.get(0) instanceof ColumnReference) {
ColumnReference cr = (ColumnReference) args.get(0);
String loc = cr.getName();
double north = Double.parseDouble(args.get(1).toString());
double east = Double.parseDouble(args.get(2).toString());
double west = Double.parseDouble(args.get(3).toString());
double south = Double.parseDouble(args.get(4).toString());
BasicDBList points = new BasicDBList();
points.add(new double[]{west, north});
points.add(new double[]{east, north});
points.add(new double[]{east, south});
points.add(new double[]{west, south});
points.add(new double[]{west, north});
BasicDBList parentList = new BasicDBList();
parentList.add(points);
DBObject search = BasicDBObjectBuilder.start()
.push(loc)
.push("$" + fname)
.push("$geometry")
.add("type", "Polygon")
.add("coordinates", parentList)
.get();
this.onGoingExpression.push(search);
this.onGoingPullCriteria.push(search);
}
}
We declared the following foreign functions in our Dynamic VDB:
CREATE FOREIGN FUNCTION geoIntersects (ref object, north double, east double, west double, south double) RETURNS boolean;
CREATE FOREIGN FUNCTION geoWithin (ref object, north double, east double, west double, south double) RETURNS boolean;
This allows us to make the following queries:
SELECT * FROM features WHERE geoIntersects(loc, 43.0, 11.0, 10.0, 42.0)
> Add spatial query support to the Teiid MongoDB translator
> ---------------------------------------------------------
>
> Key: TEIID-3038
> URL: https://issues.jboss.org/browse/TEIID-3038
> Project: Teiid
> Issue Type: Feature Request
> Security Level: Public(Everyone can see)
> Components: Misc. Connectors
> Affects Versions: 8.8
> Reporter: Michael Farwell
> Assignee: Steven Hawkins
> Fix For: 8.8
>
>
--
This message was sent by Atlassian JIRA
(v6.2.6#6264)
11 years, 8 months
[JBoss JIRA] (TEIID-3039) Add support for odata expand
by Steven Hawkins (JIRA)
Steven Hawkins created TEIID-3039:
-------------------------------------
Summary: Add support for odata expand
Key: TEIID-3039
URL: https://issues.jboss.org/browse/TEIID-3039
Project: Teiid
Issue Type: Enhancement
Security Level: Public (Everyone can see)
Components: OData
Reporter: Steven Hawkins
We should add support for odata expand. This can be done with logic similar to the xml document model.
--
This message was sent by Atlassian JIRA
(v6.2.6#6264)
11 years, 8 months