[JBoss JIRA] (TEIID-2876) Order of DataTypeManager type names affects order of functions in FunctionLibrary
by Steven Hawkins (JIRA)
[ https://issues.jboss.org/browse/TEIID-2876?page=com.atlassian.jira.plugin... ]
Steven Hawkins closed TEIID-2876.
---------------------------------
> Order of DataTypeManager type names affects order of functions in FunctionLibrary
> ---------------------------------------------------------------------------------
>
> Key: TEIID-2876
> URL: https://issues.jboss.org/browse/TEIID-2876
> Project: Teiid
> Issue Type: Bug
> Components: Query Engine
> Affects Versions: 7.7, 8.4, 8.7
> Reporter: Paul Richardson
> Assignee: Steven Hawkins
> Priority: Minor
> Fix For: 8.7
>
>
> This may be by design but the source code does not document this to be the case and appears brittle and open to future regressions.
> Executing the unit tests in TestFunctionResolving class, 'testResolveCoalesce4', the designer version of the teiid runtime client failed with the following error:
> {code}
> java.lang.AssertionError: expected:<class java.lang.String> but was:<class java.lang.Object>
> {code}
> The unit test passes in Teiid so I needed to determine the reason for the difference. Turns out the difference was the use of a LinkedHashSet rather than a HashSet.
> Tracing this back showed the following:
> # In FunctionLibrary.determineNecessaryConversions, the functionMethods are iterated through. In the case of teiid, the String version of 'coalesce' appears before the Object version and despite both versions of the function being scored the same, the String version is preferred. In the case of designer's runtime client, the Object version appeared before the String version hence the former was chosen and the unit test failed.
> # The functionMethods originate from the FunctionTree and are added into a TreeMap which is only ordered on the function name, ie. coalesce. The typed versions of this function are added to an ArrayList which is not sorted (halfway down addFunction()).
> # The coalesce functions originate from the SystemSource class and are added by iterating over dataTypeManager.getAllDataTypeNames(). Since the latter are in a LinkedHashSet (in teiid) then ordering is preserved and the String datatype happens to precede the Object datatype. In the designer runtime client, this was a HashSet hence the difference in ordering and failing of the test.
> The consequence of this is that determineNecessaryConversions in the FunctionLibrary gets the correct answer for the unit test but seems rather brittle in that a small change to the DataTypeManager's order of DataTypeName additions could have an indirect and non-obvious effect on which typed version of a function is returned by the resolver.
> Suggestions:
> * Ensure that the ArrayLists of functions in the FunctionTree's functionByName map are sorted based upon a narrow to broad ordering of types, ie. Object as the most broad will always be at the end. This will ensure that the scoring in FunctionLibrary.determineNecessaryConversions() will in the event of a tie always pick the narrowest of typed function.
> * Change the scoring in determineNecessaryConversions() to account for 'equal to' as well as 'less than' since String and Object functions get the same score.
> * Document that the ordering of DataTypeManager data type names should not be changed without consideration of this scenario.
--
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
11 years, 11 months
[JBoss JIRA] (TEIID-2800) Teiid Login Issue with special characters
by Steven Hawkins (JIRA)
[ https://issues.jboss.org/browse/TEIID-2800?page=com.atlassian.jira.plugin... ]
Steven Hawkins closed TEIID-2800.
---------------------------------
> Teiid Login Issue with special characters
> -----------------------------------------
>
> Key: TEIID-2800
> URL: https://issues.jboss.org/browse/TEIID-2800
> Project: Teiid
> Issue Type: Bug
> Components: JDBC Driver
> Affects Versions: 8.1
> Environment: Mainframe Jboss 7.1.1
> Reporter: Gautam Banerjee
> Assignee: Steven Hawkins
> Priority: Blocker
> Fix For: 8.4.2, 8.7
>
>
> When we try to login to teiid programmatically through datasource, we are having problem with username having special characters.
> We are encoding the special character as per url encoding
> eg : username %xyz is encoded as %25xyz but teiid does not decode the special character while passing username. So the username passed by teiid is %25xyz which fails authentication as the actual username is %xyz
--
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
11 years, 11 months
[JBoss JIRA] (TEIID-2769) BLOB as virtual procedure parameter is getting closed
by Steven Hawkins (JIRA)
[ https://issues.jboss.org/browse/TEIID-2769?page=com.atlassian.jira.plugin... ]
Steven Hawkins closed TEIID-2769.
---------------------------------
> BLOB as virtual procedure parameter is getting closed
> -----------------------------------------------------
>
> Key: TEIID-2769
> URL: https://issues.jboss.org/browse/TEIID-2769
> Project: Teiid
> Issue Type: Bug
> Components: Server
> Affects Versions: 8.4.1
> Reporter: Van Halbert
> Assignee: Steven Hawkins
> Fix For: 8.7
>
>
> Not sure what is the cause.
> I have two virtual procedures [1][2]. [2] has a XMLLiteral parameter. I call [2] inside [1]. However I get exception [3] because the response.result blob stream is apparently closed.
> [1] CREATE VIRTUAL PROCEDURE
> BEGIN
> SELECT t.* FROM (EXEC PeopleRestXmlSource.invokeHttp('GET', null, null, TRUE)) AS response, TABLE(EXEC PeopleRestXmlView.getPeople_response(XMLPARSE(DOCUMENT response.result))) AS t;
> END
> [2] CREATE VIRTUAL PROCEDURE
> BEGIN
> SELECT t.* FROM XMLTABLE('//return' PASSING PeopleJaxwsView.getPeopleByName_response.xml_in COLUMNS name string PATH 'text()') AS t;
> END
> [3]
> org.teiid.jdbc.TeiidSQLException: TEIID30328 Unable to evaluate XMLPARSE(DOCUMENT response.result): TEIID30331 java.sql.SQLException: Already Freed.
> at org.teiid.jdbc.TeiidSQLException.create(TeiidSQLException.java:135)
> at org.teiid.jdbc.TeiidSQLException.create(TeiidSQLException.java:71)
> at org.teiid.jdbc.StatementImpl.postReceiveResults(StatementImpl.java:668)
> at org.teiid.jdbc.StatementImpl.access$100(StatementImpl.java:63)
> at org.teiid.jdbc.StatementImpl$2.onCompletion(StatementImpl.java:516)
> at org.teiid.client.util.ResultsFuture.done(ResultsFuture.java:135)
> at org.teiid.client.util.ResultsFuture.access$200(ResultsFuture.java:40)
> at org.teiid.client.util.ResultsFuture$1.receiveResults(ResultsFuture.java:79)
> at org.teiid.net.socket.SocketServerInstanceImpl.receivedMessage(SocketServerInstanceImpl.java:242)
> at org.teiid.net.socket.SocketServerInstanceImpl.read(SocketServerInstanceImpl.java:278)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
> at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> at java.lang.reflect.Method.invoke(Method.java:601)
> at org.teiid.net.socket.SocketServerConnectionFactory$ShutdownHandler.invoke(SocketServerConnectionFactory.java:102)
> at $Proxy1.read(Unknown Source)
> at org.teiid.net.socket.SocketServerInstanceImpl$RemoteInvocationHandler$1.get(SocketServerInstanceImpl.java:377)
> at org.teiid.jdbc.StatementImpl.executeSql(StatementImpl.java:525)
> at org.teiid.jdbc.StatementImpl.executeSql(StatementImpl.java:393)
> at org.teiid.jdbc.StatementImpl.executeQuery(StatementImpl.java:327)
> at JDBCClient.execute(JDBCClient.java:81)
> at JDBCClient.main(JDBCClient.java:48)
> Caused by: org.teiid.api.exception.query.ExpressionEvaluationException: TEIID30328 Unable to evaluate XMLPARSE(DOCUMENT response.result): TEIID30331 java.sql.SQLException: Already Freed.
> at org.teiid.query.eval.Evaluator.evaluate(Evaluator.java:608)
> at org.teiid.query.processor.proc.ProcedurePlan.evaluateExpression(ProcedurePlan.java:804)
> at org.teiid.query.processor.proc.ProcedurePlan.open(ProcedurePlan.java:211)
> at org.teiid.query.processor.relational.PlanExecutionNode.open(PlanExecutionNode.java:82)
> at org.teiid.query.processor.relational.RelationalNode.open(RelationalNode.java:254)
> at org.teiid.query.processor.relational.JoinStrategy.openRight(JoinStrategy.java:105)
> at org.teiid.query.processor.relational.NestedTableJoinStrategy.process(NestedTableJoinStrategy.java:114)
> at org.teiid.query.processor.relational.JoinNode.nextBatchDirect(JoinNode.java:211)
> at org.teiid.query.processor.relational.RelationalNode.nextBatch(RelationalNode.java:278)
> at org.teiid.query.processor.relational.ProjectNode.nextBatchDirect(ProjectNode.java:146)
> at org.teiid.query.processor.relational.RelationalNode.nextBatch(RelationalNode.java:278)
> at org.teiid.query.processor.relational.RelationalPlan.nextBatch(RelationalPlan.java:149)
> at org.teiid.query.processor.QueryProcessor.nextBatchDirect(QueryProcessor.java:149)
> at org.teiid.query.processor.QueryProcessor.nextBatch(QueryProcessor.java:112)
> at org.teiid.query.processor.BatchIterator.finalRow(BatchIterator.java:69)
> at org.teiid.common.buffer.AbstractTupleSource.getCurrentTuple(AbstractTupleSource.java:70)
> at org.teiid.query.processor.BatchIterator.getCurrentTuple(BatchIterator.java:84)
> at org.teiid.common.buffer.AbstractTupleSource.hasNext(AbstractTupleSource.java:92)
> at org.teiid.query.processor.proc.ProcedurePlan.executePlan(ProcedurePlan.java:563)
> at org.teiid.query.processor.proc.CreateCursorResultSetInstruction.process(CreateCursorResultSetInstruction.java:68)
> at org.teiid.query.processor.proc.ProcedurePlan.processProcedure(ProcedurePlan.java:356)
> at org.teiid.query.processor.proc.ProcedurePlan.nextBatchDirect(ProcedurePlan.java:283)
> at org.teiid.query.processor.proc.ProcedurePlan.nextBatch(ProcedurePlan.java:257)
> at org.teiid.query.processor.relational.PlanExecutionNode.nextBatchDirect(PlanExecutionNode.java:118)
> at org.teiid.query.processor.relational.RelationalNode.nextBatch(RelationalNode.java:278)
> at org.teiid.query.processor.relational.ProjectNode.nextBatchDirect(ProjectNode.java:146)
> at org.teiid.query.processor.relational.RelationalNode.nextBatch(RelationalNode.java:278)
> at org.teiid.query.processor.relational.ProjectNode.nextBatchDirect(ProjectNode.java:146)
> at org.teiid.query.processor.relational.RelationalNode.nextBatch(RelationalNode.java:278)
> at org.teiid.query.processor.relational.ProjectNode.nextBatchDirect(ProjectNode.java:146)
> at org.teiid.query.processor.relational.RelationalNode.nextBatch(RelationalNode.java:278)
> at org.teiid.query.processor.relational.RelationalPlan.nextBatch(RelationalPlan.java:149)
> at org.teiid.query.processor.QueryProcessor.nextBatchDirect(QueryProcessor.java:149)
> at org.teiid.query.processor.QueryProcessor.nextBatch(QueryProcessor.java:112)
> at org.teiid.query.processor.BatchCollector.collectTuples(BatchCollector.java:157)
> at org.teiid.query.processor.BatchCollector.collectTuples(BatchCollector.java:139)
> at org.teiid.dqp.internal.process.RequestWorkItem.processMore(RequestWorkItem.java:435)
> at org.teiid.dqp.internal.process.RequestWorkItem.process(RequestWorkItem.java:320)
> at org.teiid.dqp.internal.process.AbstractWorkItem.run(AbstractWorkItem.java:51)
> at org.teiid.dqp.internal.process.RequestWorkItem.run(RequestWorkItem.java:248)
> at org.teiid.dqp.internal.process.DQPWorkContext.runInContext(DQPWorkContext.java:269)
> at org.teiid.dqp.internal.process.ThreadReuseExecutor$RunnableWrapper.run(ThreadReuseExecutor.java:119)
> at org.teiid.dqp.internal.process.ThreadReuseExecutor$3.run(ThreadReuseExecutor.java:214)
> at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
> at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
> at java.lang.Thread.run(Thread.java:722)
> Caused by: org.teiid.api.exception.query.ExpressionEvaluationException: TEIID30331 java.sql.SQLException: Already Freed.
> at org.teiid.query.eval.Evaluator.evaluateXMLParse(Evaluator.java:734)
> at org.teiid.query.eval.Evaluator.internalEvaluate(Evaluator.java:668)
> at org.teiid.query.eval.Evaluator.evaluate(Evaluator.java:606)
> ... 45 more
> Caused by: java.sql.SQLException: java.sql.SQLException: Already Freed.
> at org.teiid.core.types.BaseLob.getBinaryStream(BaseLob.java:105)
> at org.teiid.core.types.BaseLob.getCharacterStream(BaseLob.java:98)
> at org.teiid.query.eval.Evaluator.evaluateXMLParse(Evaluator.java:727)
> ... 47 more
> Caused by: java.io.IOException: java.sql.SQLException: Already Freed.
> at org.teiid.core.types.InputStreamFactory$BlobInputStreamFactory.getInputStream(InputStreamFactory.java:205)
> at org.teiid.core.types.BaseLob.getBinaryStream(BaseLob.java:103)
> ... 49 more
> Caused by: java.sql.SQLException: Already Freed.
> at org.teiid.translator.ws.BinaryWSProcedureExecution$StreamingBlob.getBinaryStream(BinaryWSProcedureExecution.java:72)
> at org.teiid.core.types.InputStreamFactory$BlobInputStreamFactory.getInputStream(InputStreamFactory.java:203)
> ... 50 more
--
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
11 years, 11 months
[JBoss JIRA] (TEIID-2871) Incorrect datatype conversion for java.lang.Byte
by Steven Hawkins (JIRA)
[ https://issues.jboss.org/browse/TEIID-2871?page=com.atlassian.jira.plugin... ]
Steven Hawkins closed TEIID-2871.
---------------------------------
> Incorrect datatype conversion for java.lang.Byte
> ------------------------------------------------
>
> Key: TEIID-2871
> URL: https://issues.jboss.org/browse/TEIID-2871
> Project: Teiid
> Issue Type: Bug
> Components: OData
> Affects Versions: 8.3
> Environment: On windows 7 with JBoss DV 6 GA
> Reporter: Patrick Deenen
> Assignee: Steven Hawkins
> Priority: Critical
> Fix For: 8.7
>
>
> When doing a simple odata query on a view which contains a column with a data type of byte the following exception is thrown:
> {quote}
> 10:37:46,642 WARN [org.teiid.ODATA] (http-localhost/127.0.0.1:8080-1) TEIID16012 Could not produce a sucessful OData response. Returning status ServerErrorException with message java.lang.Byte cannot be cast to org.odata4j.core.UnsignedByte.: org.odata4j.exceptions.ServerErrorException: java.lang.Byte cannot be cast to org.odata4j.core.UnsignedByte
> at org.teiid.odata.LocalClient.executeSQL(LocalClient.java:238) [classes:]
> at org.teiid.odata.TeiidProducer.getNavProperty(TeiidProducer.java:90) [classes:]
> at org.teiid.odata.TeiidProducer.getEntities(TeiidProducer.java:79) [classes:]
> at org.odata4j.producer.resources.EntitiesRequestResource.getEntitiesImpl(EntitiesRequestResource.java:371) [odata4j-core-0.8.0-SNAPSHOT-redhat.jar:]
> at org.odata4j.producer.resources.EntitiesRequestResource.getEntities(EntitiesRequestResource.java:266) [odata4j-core-0.8.0-SNAPSHOT-redhat.jar:]
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [rt.jar:1.6.0_45]
> at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) [rt.jar:1.6.0_45]
> at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) [rt.jar:1.6.0_45]
> at java.lang.reflect.Method.invoke(Method.java:597) [rt.jar:1.6.0_45]
> at org.jboss.resteasy.core.MethodInjectorImpl.invoke(MethodInjectorImpl.java:167) [resteasy-jaxrs-2.3.6.Final-redhat-1.jar:2.3.6.Final-redhat-1]
> at org.jboss.resteasy.core.ResourceMethod.invokeOnTarget(ResourceMethod.java:269) [resteasy-jaxrs-2.3.6.Final-redhat-1.jar:2.3.6.Final-redhat-1]
> at org.jboss.resteasy.core.ResourceMethod.invoke(ResourceMethod.java:227) [resteasy-jaxrs-2.3.6.Final-redhat-1.jar:2.3.6.Final-redhat-1]
> at org.jboss.resteasy.core.ResourceMethod.invoke(ResourceMethod.java:216) [resteasy-jaxrs-2.3.6.Final-redhat-1.jar:2.3.6.Final-redhat-1]
> at org.jboss.resteasy.core.SynchronousDispatcher.getResponse(SynchronousDispatcher.java:542) [resteasy-jaxrs-2.3.6.Final-redhat-1.jar:2.3.6.Final-redhat-1]
> at org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:524) [resteasy-jaxrs-2.3.6.Final-redhat-1.jar:2.3.6.Final-redhat-1]
> at org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:126) [resteasy-jaxrs-2.3.6.Final-redhat-1.jar:2.3.6.Final-redhat-1]
> at org.teiid.odata.ODataServletContainerDispatcher.service(ODataServletContainerDispatcher.java:97) [classes:]
> at org.teiid.odata.ODataServlet.service(ODataServlet.java:61) [classes:]
> at org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:50) [resteasy-jaxrs-2.3.6.Final-redhat-1.jar:2.3.6.Final-redhat-1]
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:847) [jboss-servlet-api_3.0_spec-1.0.2.Final-redhat-1.jar:1.0.2.Final-redhat-1]
> at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:295) [jbossweb-7.2.2.Final-redhat-1.jar:7.2.2.Final-redhat-1]
> at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:214) [jbossweb-7.2.2.Final-redhat-1.jar:7.2.2.Final-redhat-1]
> at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230) [jbossweb-7.2.2.Final-redhat-1.jar:7.2.2.Final-redhat-1]
> at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:149) [jbossweb-7.2.2.Final-redhat-1.jar:7.2.2.Final-redhat-1]
> at org.jboss.modcluster.container.jbossweb.JBossWebContext$RequestListenerValve.event(JBossWebContext.java:91)
> at org.jboss.modcluster.container.jbossweb.JBossWebContext$RequestListenerValve.invoke(JBossWebContext.java:72)
> at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:499) [jbossweb-7.2.2.Final-redhat-1.jar:7.2.2.Final-redhat-1]
> at org.jboss.as.web.security.SecurityContextAssociationValve.invoke(SecurityContextAssociationValve.java:169) [jboss-as-web-7.2.1.Final-redhat-10.jar:7.2.1.Final-redhat-10]
> at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:145) [jbossweb-7.2.2.Final-redhat-1.jar:7.2.2.Final-redhat-1]
> at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:97) [jbossweb-7.2.2.Final-redhat-1.jar:7.2.2.Final-redhat-1]
> at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:102) [jbossweb-7.2.2.Final-redhat-1.jar:7.2.2.Final-redhat-1]
> at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:336) [jbossweb-7.2.2.Final-redhat-1.jar:7.2.2.Final-redhat-1]
> at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:856) [jbossweb-7.2.2.Final-redhat-1.jar:7.2.2.Final-redhat-1]
> at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:653) [jbossweb-7.2.2.Final-redhat-1.jar:7.2.2.Final-redhat-1]
> at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:920) [jbossweb-7.2.2.Final-redhat-1.jar:7.2.2.Final-redhat-1]
> at java.lang.Thread.run(Thread.java:662) [rt.jar:1.6.0_45]
> Caused by: java.lang.ClassCastException: java.lang.Byte cannot be cast to org.odata4j.core.UnsignedByte
> at org.odata4j.core.OSimpleObjects.create(OSimpleObjects.java:47) [odata4j-core-0.8.0-SNAPSHOT-redhat.jar:]
> at org.odata4j.core.OProperties.simple(OProperties.java:54) [odata4j-core-0.8.0-SNAPSHOT-redhat.jar:]
> at org.teiid.odata.EntityList.buildPropery(EntityList.java:105) [classes:]
> at org.teiid.odata.EntityList.getEntity(EntityList.java:114) [classes:]
> at org.teiid.odata.EntityList.<init>(EntityList.java:85) [classes:]
> at org.teiid.odata.LocalClient.executeSQL(LocalClient.java:236) [classes:]
> ... 35 more
> {quote}
> This is probably due to the fact that in class org.teiid.translator.odata.ODataTypeManager the following is defined:
> {code}
> teiidkeyed.put(DataTypeManager.DefaultDataTypes.BYTE, EdmSimpleType.BYTE);
> {code}
> instead of
> {code}
> teiidkeyed.put(DataTypeManager.DefaultDataTypes.BYTE, EdmSimpleType.SBYTE);
> {code}
> The EdmSimpleType.BYTE tries to cast to the build in org.odata4j.core.UnsignedByte type which is not possible for a java.lang.Byte.
--
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
11 years, 11 months
[JBoss JIRA] (TEIID-2878) Push ORDER/LIMIT for UNION query
by Steven Hawkins (JIRA)
[ https://issues.jboss.org/browse/TEIID-2878?page=com.atlassian.jira.plugin... ]
Steven Hawkins closed TEIID-2878.
---------------------------------
> Push ORDER/LIMIT for UNION query
> --------------------------------
>
> Key: TEIID-2878
> URL: https://issues.jboss.org/browse/TEIID-2878
> Project: Teiid
> Issue Type: Enhancement
> Components: Query Engine
> Affects Versions: 8.7
> Reporter: Tom Arnold
> Assignee: Steven Hawkins
> Priority: Minor
> Fix For: 8.7
>
>
> Better support for queries on unions between different sources. ORDER BY is necessary on the inner queries because otherwise the result set will be truncated too early. ORDER BY can be hardcoded on the inner queries but this limits flexibility. Currently in 8.6 if LIMIT is not hardcoded on inner queries, ORDER BY will be stripped from query.
> {code:sql}
> create view v_items (...) as
> select * from (
> (select item_id, created_at, 'Foo' source from foo.items)
> union all
> (select item_id, created_at, 'Bar' source from bar.items)
> ) x;
> -- Page 1.
> select * from v_items order by created_at desc limit 0, 500;
> -- Page 2.
> select * from v_items order by created_at desc limit 500, 500;
> {code}
--
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
11 years, 11 months