[
https://issues.jboss.org/browse/TEIIDDES-1502?page=com.atlassian.jira.plu...
]
Barry LaFond edited comment on TEIIDDES-1502 at 7/31/13 1:50 PM:
-----------------------------------------------------------------
Because the PK/FK/Index creation methods use NameInSource as the key to the column name
map, these column references are not being set during processing. This is regression.
The following code change seems to work. Not sure why the NIS was being used as the key
first (if exists) and column name if NIS doesn't exist. The change is to use column
name all the time.
{code:title=RelationalModelProcessorImpl.java}
protected Map createColumnMapKeyedByNames( final Table table ) {
// Build a map of the columns by their name so they can be found much more quickly
...
final Map columnsByName = new HashMap();
final Iterator iter = table.getColumns().iterator();
while (iter.hasNext()) {
final Column column = (Column)iter.next();
String columnName = column.getName();
// String columnName = column.getNameInSource();
// if (columnName == null || columnName.trim().length() == 0) {
// columnName = column.getName();
// }
columnsByName.put(columnName, column);
}
return columnsByName;
}
{code}
was (Author: blafond):
Because the PK/FK/Index creation methods use NameInSource as the key to the column
name map, these column references are not being set during processing. This is
regression.
Failure to access Oracle data source with column names enclosed in
double quotes
--------------------------------------------------------------------------------
Key: TEIIDDES-1502
URL:
https://issues.jboss.org/browse/TEIIDDES-1502
Project: Teiid Designer
Issue Type: Bug
Components: Import/Export
Affects Versions: 7.7
Reporter: Hisanobu Okuda
Assignee: Mark Drilling
Priority: Minor
Fix For: 8.2
EDS is throwing an error when accessing Oracle data source with column names enclosed in
double quotes. I am able to import the metadata, test through Datasource explorer but when
I run the query against VDB, it is not interpreting correctly to send double-quotes to the
column name in this case, causing below error.
{code}
java.sql.SQLSyntaxErrorException: ORA-00922: missing or invalid option
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:445)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:396)
at oracle.jdbc.driver.T4C8Oall.processError(T4C8Oall.java:879)
at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:450)
at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:192)
at oracle.jdbc.driver.T4C8Oall.doOALL(T4C8Oall.java:531)
at oracle.jdbc.driver.T4CStatement.doOall8(T4CStatement.java:193)
at oracle.jdbc.driver.T4CStatement.executeForRows(T4CStatement.java:1033)
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1329)
at oracle.jdbc.driver.OracleStatement.executeInternal(OracleStatement.java:1909)
at oracle.jdbc.driver.OracleStatement.execute(OracleStatement.java:1871)
at oracle.jdbc.driver.OracleStatementWrapper.execute(OracleStatementWrapper.java:318)
at
org.jboss.resource.adapter.jdbc.CheckValidConnectionSQL.isValidConnection(CheckValidConnectionSQL.java:58)
at
org.jboss.resource.adapter.jdbc.BaseWrapperManagedConnectionFactory.isValidConnection(BaseWrapperManagedConnectionFactory.java:560)
at
org.jboss.resource.adapter.jdbc.BaseWrapperManagedConnection.checkValid(BaseWrapperManagedConnection.java:364)
at
org.jboss.resource.adapter.jdbc.local.LocalManagedConnectionFactory.matchManagedConnections(LocalManagedConnectionFactory.java:402)
at
org.jboss.resource.connectionmanager.InternalManagedConnectionPool.getConnection(InternalManagedConnectionPool.java:225)
at
org.jboss.resource.connectionmanager.JBossManagedConnectionPool$BasePool.getConnection(JBossManagedConnectionPool.java:689)
at
org.jboss.resource.connectionmanager.BaseConnectionManager2.getManagedConnection(BaseConnectionManager2.java:404)
at
org.jboss.resource.connectionmanager.TxConnectionManager.getManagedConnection(TxConnectionManager.java:424)
at
org.jboss.resource.connectionmanager.BaseConnectionManager2.allocateConnection(BaseConnectionManager2.java:496)
at
org.jboss.resource.connectionmanager.BaseConnectionManager2$ConnectionManagerProxy.allocateConnection(BaseConnectionManager2.java:941)
at
org.jboss.resource.adapter.jdbc.WrapperDataSource.getConnection(WrapperDataSource.java:89)
at
org.teiid.translator.jdbc.JDBCExecutionFactory.getConnection(JDBCExecutionFactory.java:228)
at
org.teiid.translator.jdbc.JDBCExecutionFactory.getConnection(JDBCExecutionFactory.java:56)
at org.teiid.translator.ExecutionFactory.getConnection(ExecutionFactory.java:184)
at org.teiid.dqp.internal.datamgr.ConnectorWorkItem.execute(ConnectorWorkItem.java:207)
at
org.teiid.dqp.internal.process.DataTierTupleSource.getResults(DataTierTupleSource.java:354)
at
org.teiid.dqp.internal.process.DataTierTupleSource$1.call(DataTierTupleSource.java:143)
at
org.teiid.dqp.internal.process.DataTierTupleSource$1.call(DataTierTupleSource.java:140)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
at java.util.concurrent.FutureTask.run(FutureTask.java:138)
at org.teiid.dqp.internal.process.DQPCore$FutureWork.run(DQPCore.java:120)
at org.teiid.dqp.internal.process.DQPWorkContext.runInContext(DQPWorkContext.java:240)
at
org.teiid.dqp.internal.process.ThreadReuseExecutor$RunnableWrapper.run(ThreadReuseExecutor.java:122)
at
org.teiid.dqp.internal.process.ThreadReuseExecutor$3.run(ThreadReuseExecutor.java:292)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
{code}
JDBC Importer should be identify this scenario and automatically enclose in double
quotes, instead of we manually add double-quotes for these type of scenarios.
--
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