[JBoss JIRA] (TEIID-4192) If a column is blank the TEXTAGG function excludes it from the output
by Steven Hawkins (JIRA)
[ https://issues.jboss.org/browse/TEIID-4192?page=com.atlassian.jira.plugin... ]
Steven Hawkins closed TEIID-4192.
---------------------------------
> If a column is blank the TEXTAGG function excludes it from the output
> ----------------------------------------------------------------------
>
> Key: TEIID-4192
> URL: https://issues.jboss.org/browse/TEIID-4192
> Project: Teiid
> Issue Type: Bug
> Components: Query Engine
> Affects Versions: 8.7.5.6_2
> Reporter: Debbie Steigner
> Assignee: Steven Hawkins
> Fix For: 9.0, 8.12.5, 8.7.7.6_2, 8.13.5
>
>
> If a column value is blank, it is excluding it in the result, causing incorrect output.
> TEXTAGG(FOR Last_Name,
> First_Name,
> Middle_initial,
> Currency_Code
> DELIMITER '|' QUOTE '"'
> )
> In the above example, if middle name is blank, then it should still show one empty column with "|" delimiter as shown below.
> Steigner|Debbie||USD
> But it returns output as excluding middle name since it is blank.
> Steigner|Debbie|USD
--
This message was sent by Atlassian JIRA
(v6.4.11#64026)
8 years
[JBoss JIRA] (TEIID-3685) org.teiid.padSpace does not affect to the "IN" operator
by Steven Hawkins (JIRA)
[ https://issues.jboss.org/browse/TEIID-3685?page=com.atlassian.jira.plugin... ]
Steven Hawkins closed TEIID-3685.
---------------------------------
> org.teiid.padSpace does not affect to the "IN" operator
> -------------------------------------------------------
>
> Key: TEIID-3685
> URL: https://issues.jboss.org/browse/TEIID-3685
> Project: Teiid
> Issue Type: Bug
> Components: Query Engine
> Affects Versions: 8.7.1
> Environment: JBoss DV 6.1.2
> Reporter: hisao furuichi
> Assignee: Steven Hawkins
> Priority: Critical
> Fix For: 9.0, 8.12.5, 8.7.7.6_2, 8.13.6, 9.0.1
>
> Attachments: datasert.csv, INTERNAL_TEST.zip, test.vdb
>
>
> org.teiid.padSpace does affect to "=" operator. But does not affect to "IN" operator.
> [data for a column named "id"]
> {noformat}
> "test1 "
> {noformat}
> ["=" operator] I can get a result
> {noformat}
> SELECT * FROM ViewModel.originalViewTable WHERE ViewModel.originalViewTable.id ='TEST1';
> {noformat}
> ["IN" operator] I can not get a result
> {noformat}
> SELECT * FROM ViewModel.originalViewTable WHERE ViewModel.originalViewTable.id IN ('TEST1', 'TEST2');
> {noformat}
--
This message was sent by Atlassian JIRA
(v6.4.11#64026)
8 years
[JBoss JIRA] (TEIID-4265) Performance issue
by Steven Hawkins (JIRA)
[ https://issues.jboss.org/browse/TEIID-4265?page=com.atlassian.jira.plugin... ]
Steven Hawkins commented on TEIID-4265:
---------------------------------------
Given that the plans are the same, this now becomes harder to look at. Is there a way to have access to the machines or a representative environment? Or would it be possible to provide the final query plan (showing node times) or the command logs from representative runs from each version?
> Performance issue
> -----------------
>
> Key: TEIID-4265
> URL: https://issues.jboss.org/browse/TEIID-4265
> Project: Teiid
> Issue Type: Bug
> Components: Query Engine
> Reporter: Juraj Duráni
> Assignee: Steven Hawkins
> Attachments: dv-tpch-2.zip, metadata_ddl.zip, plans_metadata.zip
>
>
> I can see reduce of performance for some kind of queries (see attachment).
--
This message was sent by Atlassian JIRA
(v6.4.11#64026)
8 years
[JBoss JIRA] (TEIID-4000) Better handling for large bulk inserts
by Steven Hawkins (JIRA)
[ https://issues.jboss.org/browse/TEIID-4000?page=com.atlassian.jira.plugin... ]
Steven Hawkins resolved TEIID-4000.
-----------------------------------
Resolution: Done
Resolved with client side changes only to detect large parameter value sets and to split the batches into multiple executions.
> Better handling for large bulk inserts
> --------------------------------------
>
> Key: TEIID-4000
> URL: https://issues.jboss.org/browse/TEIID-4000
> Project: Teiid
> Issue Type: Enhancement
> Components: JDBC Driver
> Affects Versions: 8.7.1.6_2
> Environment: Red Hat JBoss Data Virtualization 6.2 patched to 6.2.2 on EAP6.4.0 patched to version 6.4.3,
> JBoss Developer Studio 8.1.0GA with Teiid Designer plugin 9.0.3.Final.v20150810-1438-B1157
> 64-bit Windows 7 environment
> Reporter: Steve Tran
> Assignee: Steven Hawkins
> Fix For: 9.1
>
>
> I'm running a JDBC batch insert statement with Teiid. Here's the error I'm getting when trying to insert 45000 records.
> {code}
> Exception in thread "main" org.teiid.jdbc.TeiidSQLException: Adjusted frame length exceeds 2097152: 6242128 - discarded
> at org.teiid.jdbc.TeiidSQLException.create(TeiidSQLException.java:135)
> at org.teiid.jdbc.TeiidSQLException.create(TeiidSQLException.java:71)
> at org.teiid.jdbc.StatementImpl.executeSql(StatementImpl.java:532)
> at org.teiid.jdbc.StatementImpl.executeSql(StatementImpl.java:393)
> at org.teiid.jdbc.PreparedStatementImpl.executeBatch(PreparedStatementImpl.java:252)
> at com.imshealth.common.Tuning.JdbcDriver.writeData(JdbcDriver.java:166)
> at com.imshealth.common.Tuning.JdbcDriver.main(JdbcDriver.java:78)
> Caused by: org.jboss.netty.handler.codec.frame.TooLongFrameException: Adjusted frame length exceeds 2097152: 6242128 - discarded
> at org.jboss.netty.handler.codec.frame.LengthFieldBasedFrameDecoder.fail(LengthFieldBasedFrameDecoder.java:417)
> at org.jboss.netty.handler.codec.frame.LengthFieldBasedFrameDecoder.failIfNecessary(LengthFieldBasedFrameDecoder.java:405)
> at org.jboss.netty.handler.codec.frame.LengthFieldBasedFrameDecoder.decode(LengthFieldBasedFrameDecoder.java:320)
> at org.teiid.transport.ObjectDecoder.decode(ObjectDecoder.java:108)
> at org.jboss.netty.handler.codec.frame.FrameDecoder.callDecode(FrameDecoder.java:425)
> at org.jboss.netty.handler.codec.frame.FrameDecoder.messageReceived(FrameDecoder.java:303)
> at org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:268)
> at org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:255)
> at org.jboss.netty.channel.socket.nio.NioWorker.read(NioWorker.java:88)
> at org.jboss.netty.channel.socket.nio.AbstractNioWorker.process(AbstractNioWorker.java:109)
> at org.jboss.netty.channel.socket.nio.AbstractNioSelector.run(AbstractNioSelector.java:328)
> at org.jboss.netty.channel.socket.nio.AbstractNioWorker.run(AbstractNioWorker.java:90)
> at org.jboss.netty.channel.socket.nio.NioWorker.run(NioWorker.java:178)
> at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
> at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
> at java.lang.Thread.run(Thread.java:745)
> {code}
> Here's the Java method that creates the batch. Please ignore the lack of Java best practices. This is just test harness code to reproduce the error.
> {code}
> private static final String INSERT_TEIID = "insert into ...<tableA> values(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
> private static final String INSERT_ORACLE = "insert into ...<tableA> values(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
> private static void writeData(List<List<Object>> records) throws SQLException {
> PreparedStatement ps = connection.prepareStatement(USE_TEIID? INSERT_TEIID : INSERT_ORACLE)
>
> long start = System.currentTimeMillis();
> System.out.println("Building batch PreparedStatement");
> for(List<Object> o : records) {
> ps.setObject(1, o.get(0));
> ps.setObject(2, o.get(1));
> ps.setObject(3, o.get(2));
> ps.setObject(4, o.get(3));
> ps.setObject(5, o.get(4));
> ps.setObject(6, o.get(5));
> ps.setObject(7, o.get(6));
> ps.setObject(8, o.get(7));
> ps.setObject(9, o.get(8));
> ps.setObject(10, o.get(9));
> ps.setObject(11, o.get(10));
> ps.setObject(12, o.get(11));
> ps.setObject(13, o.get(12));
> ps.setObject(14, o.get(13));
> ps.setObject(15, o.get(14));
> ps.setObject(16, o.get(15));
> ps.setObject(17, o.get(16));
> ps.setString(18, o.get(17).toString().replace("]", ""));
> ps.addBatch();
> }
> System.out.println(String.format("Finished building batch PreparedStatement in %d milliseconds", System.currentTimeMillis() - start));
> start = System.currentTimeMillis();
> System.out.println("Executing batch");
> ps.executeBatch();
> System.out.println(String.format("Batch executed in %d milliseconds", System.currentTimeMillis() - start));
> ps.close();
> }
> {code}
> The protocol or the driver should be enhanced to prevent this exception.
--
This message was sent by Atlassian JIRA
(v6.4.11#64026)
8 years
[JBoss JIRA] (TEIID-4000) Better handling for large bulk inserts
by Steven Hawkins (JIRA)
[ https://issues.jboss.org/browse/TEIID-4000?page=com.atlassian.jira.plugin... ]
Steven Hawkins updated TEIID-4000:
----------------------------------
Component/s: (was: Server)
> Better handling for large bulk inserts
> --------------------------------------
>
> Key: TEIID-4000
> URL: https://issues.jboss.org/browse/TEIID-4000
> Project: Teiid
> Issue Type: Enhancement
> Components: JDBC Driver
> Affects Versions: 8.7.1.6_2
> Environment: Red Hat JBoss Data Virtualization 6.2 patched to 6.2.2 on EAP6.4.0 patched to version 6.4.3,
> JBoss Developer Studio 8.1.0GA with Teiid Designer plugin 9.0.3.Final.v20150810-1438-B1157
> 64-bit Windows 7 environment
> Reporter: Steve Tran
> Assignee: Steven Hawkins
> Fix For: 9.1
>
>
> I'm running a JDBC batch insert statement with Teiid. Here's the error I'm getting when trying to insert 45000 records.
> {code}
> Exception in thread "main" org.teiid.jdbc.TeiidSQLException: Adjusted frame length exceeds 2097152: 6242128 - discarded
> at org.teiid.jdbc.TeiidSQLException.create(TeiidSQLException.java:135)
> at org.teiid.jdbc.TeiidSQLException.create(TeiidSQLException.java:71)
> at org.teiid.jdbc.StatementImpl.executeSql(StatementImpl.java:532)
> at org.teiid.jdbc.StatementImpl.executeSql(StatementImpl.java:393)
> at org.teiid.jdbc.PreparedStatementImpl.executeBatch(PreparedStatementImpl.java:252)
> at com.imshealth.common.Tuning.JdbcDriver.writeData(JdbcDriver.java:166)
> at com.imshealth.common.Tuning.JdbcDriver.main(JdbcDriver.java:78)
> Caused by: org.jboss.netty.handler.codec.frame.TooLongFrameException: Adjusted frame length exceeds 2097152: 6242128 - discarded
> at org.jboss.netty.handler.codec.frame.LengthFieldBasedFrameDecoder.fail(LengthFieldBasedFrameDecoder.java:417)
> at org.jboss.netty.handler.codec.frame.LengthFieldBasedFrameDecoder.failIfNecessary(LengthFieldBasedFrameDecoder.java:405)
> at org.jboss.netty.handler.codec.frame.LengthFieldBasedFrameDecoder.decode(LengthFieldBasedFrameDecoder.java:320)
> at org.teiid.transport.ObjectDecoder.decode(ObjectDecoder.java:108)
> at org.jboss.netty.handler.codec.frame.FrameDecoder.callDecode(FrameDecoder.java:425)
> at org.jboss.netty.handler.codec.frame.FrameDecoder.messageReceived(FrameDecoder.java:303)
> at org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:268)
> at org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:255)
> at org.jboss.netty.channel.socket.nio.NioWorker.read(NioWorker.java:88)
> at org.jboss.netty.channel.socket.nio.AbstractNioWorker.process(AbstractNioWorker.java:109)
> at org.jboss.netty.channel.socket.nio.AbstractNioSelector.run(AbstractNioSelector.java:328)
> at org.jboss.netty.channel.socket.nio.AbstractNioWorker.run(AbstractNioWorker.java:90)
> at org.jboss.netty.channel.socket.nio.NioWorker.run(NioWorker.java:178)
> at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
> at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
> at java.lang.Thread.run(Thread.java:745)
> {code}
> Here's the Java method that creates the batch. Please ignore the lack of Java best practices. This is just test harness code to reproduce the error.
> {code}
> private static final String INSERT_TEIID = "insert into ...<tableA> values(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
> private static final String INSERT_ORACLE = "insert into ...<tableA> values(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
> private static void writeData(List<List<Object>> records) throws SQLException {
> PreparedStatement ps = connection.prepareStatement(USE_TEIID? INSERT_TEIID : INSERT_ORACLE)
>
> long start = System.currentTimeMillis();
> System.out.println("Building batch PreparedStatement");
> for(List<Object> o : records) {
> ps.setObject(1, o.get(0));
> ps.setObject(2, o.get(1));
> ps.setObject(3, o.get(2));
> ps.setObject(4, o.get(3));
> ps.setObject(5, o.get(4));
> ps.setObject(6, o.get(5));
> ps.setObject(7, o.get(6));
> ps.setObject(8, o.get(7));
> ps.setObject(9, o.get(8));
> ps.setObject(10, o.get(9));
> ps.setObject(11, o.get(10));
> ps.setObject(12, o.get(11));
> ps.setObject(13, o.get(12));
> ps.setObject(14, o.get(13));
> ps.setObject(15, o.get(14));
> ps.setObject(16, o.get(15));
> ps.setObject(17, o.get(16));
> ps.setString(18, o.get(17).toString().replace("]", ""));
> ps.addBatch();
> }
> System.out.println(String.format("Finished building batch PreparedStatement in %d milliseconds", System.currentTimeMillis() - start));
> start = System.currentTimeMillis();
> System.out.println("Executing batch");
> ps.executeBatch();
> System.out.println(String.format("Batch executed in %d milliseconds", System.currentTimeMillis() - start));
> ps.close();
> }
> {code}
> The protocol or the driver should be enhanced to prevent this exception.
--
This message was sent by Atlassian JIRA
(v6.4.11#64026)
8 years
[JBoss JIRA] (TEIID-4297) Add UDF functions based on OSDQ for POC
by Ramesh Reddy (JIRA)
[ https://issues.jboss.org/browse/TEIID-4297?page=com.atlassian.jira.plugin... ]
Ramesh Reddy commented on TEIID-4297:
-------------------------------------
I think these will be better designed as System functions on second thought. Take look at class "TeiidFunction" annotation and its references for an example.
> Add UDF functions based on OSDQ for POC
> ---------------------------------------
>
> Key: TEIID-4297
> URL: https://issues.jboss.org/browse/TEIID-4297
> Project: Teiid
> Issue Type: Enhancement
> Components: Query Engine
> Reporter: Ramesh Reddy
> Assignee: JieRen JieRen
> Fix For: 9.1
>
>
> Please add following UDF functions to Teiid library based on maven module
> http://search.maven.org/#search%7Cga%7C1%7Carrahtec
> The UDF functions needs to from this class below
> {code}
> public class Maskutil {
> /**
> * @param a
> * The string that need to randomize
> * vivek singh' will become 'ihg vkeivh'
> */
> public static String toRandomValue(String a) {
> return ShuffleRTM.shuffleString(a);
> }
> /**
> * @param a
> * This function will retrun MD5 hashcode of the string
> * @return String
> */
> public static String toHashValue(String a) {
> if (a == null)
> return "d41d8cd98f00b204e9800998ecf8427e"; // null MD5 value
> return ResultsetToRTM.getMD5(a).toString();
> }
> /**
> * @param a
> * This function will return digit characters of the string
> * @return
> *
> */
> public static String toDigitValue(String a) {
> return StringCaseFormatUtil.digitString(a);
> }
> }
> {code}
> for example Teiid should have UDF functions like
> {code}
> string random(string)
> string hash(string)
> string digit(string)
> {code}
--
This message was sent by Atlassian JIRA
(v6.4.11#64026)
8 years