[JBoss JIRA] (TEIID-4868) formats in timestampformat functions on sybase are ignored.
by Steven Hawkins (JIRA)
[ https://issues.jboss.org/browse/TEIID-4868?page=com.atlassian.jira.plugin... ]
Steven Hawkins updated TEIID-4868:
----------------------------------
Component/s: JDBC Connector
> formats in timestampformat functions on sybase are ignored.
> -----------------------------------------------------------
>
> Key: TEIID-4868
> URL: https://issues.jboss.org/browse/TEIID-4868
> Project: Teiid
> Issue Type: Bug
> Components: JDBC Connector
> Affects Versions: 9.2.2
> Reporter: Bram Gadeyne
> Assignee: Steven Hawkins
> Priority: Blocker
> Fix For: 9.3, 9.2.3
>
>
> Hi,
> For this query
> {code:sql}
> select formattimestamp(gd.AdmissionTime, 'yyyy') as admtime
> from prod_P_GeneralData gd
> where gd.status = 1
> {code}
> The dates returned look like this: Mar 8 2017 5:55PM
> So the format parameter is completely ignored (also for other formats).
> Here is the debug log:
> ============================================================================
> USER COMMAND:
> SELECT formattimestamp(gd.AdmissionTime, 'yyyy') AS admtime FROM izisprod.prod_P_GeneralData AS gd WHERE gd.Status = 1 LIMIT 100
> ----------------------------------------------------------------------------
> OPTIMIZE:
> SELECT formattimestamp(gd.AdmissionTime, 'yyyy') AS admtime FROM izisprod.prod_P_GeneralData AS gd WHERE gd.Status = 1 LIMIT 100
> ----------------------------------------------------------------------------
> GENERATE CANONICAL:
> SELECT formattimestamp(gd.AdmissionTime, 'yyyy') AS admtime FROM izisprod.prod_P_GeneralData AS gd WHERE gd.Status = 1 LIMIT 100
> CANONICAL PLAN:
> TupleLimit(groups=[], props={MAX_TUPLE_LIMIT=100})
> Project(groups=[izisprod.prod_P_GeneralData AS gd], props={PROJECT_COLS=[formattimestamp(gd.AdmissionTime, 'yyyy') AS admtime]})
> Select(groups=[izisprod.prod_P_GeneralData AS gd], props={SELECT_CRITERIA=gd.Status = 1})
> Source(groups=[izisprod.prod_P_GeneralData AS gd])
> ============================================================================
> EXECUTING PlaceAccess
> AFTER:
> TupleLimit(groups=[], props={MAX_TUPLE_LIMIT=100})
> Project(groups=[izisprod.prod_P_GeneralData AS gd], props={PROJECT_COLS=[formattimestamp(gd.AdmissionTime, 'yyyy') AS admtime]})
> Select(groups=[izisprod.prod_P_GeneralData AS gd], props={SELECT_CRITERIA=gd.Status = 1})
> Access(groups=[izisprod.prod_P_GeneralData AS gd], props={SOURCE_HINT=null, MODEL_ID=Schema name=izisprod, nameInSource=null, uuid=mmuuid:095c2821-e16b-4f9d-9c78-0d2d20018d04})
> Source(groups=[izisprod.prod_P_GeneralData AS gd])
> ============================================================================
> EXECUTING PushSelectCriteria
> AFTER:
> TupleLimit(groups=[])
> Project(groups=[izisprod.prod_P_GeneralData AS gd], props={PROJECT_COLS=[formattimestamp(gd.AdmissionTime, 'yyyy') AS admtime]})
> Access(groups=[izisprod.prod_P_GeneralData AS gd], props={SOURCE_HINT=null, MODEL_ID=Schema name=izisprod, nameInSource=null, uuid=mmuuid:095c2821-e16b-4f9d-9c78-0d2d20018d04})
> Select(groups=[izisprod.prod_P_GeneralData AS gd], props={SELECT_CRITERIA=gd.Status = 1})
> Source(groups=[izisprod.prod_P_GeneralData AS gd])
> ============================================================================
> EXECUTING CleanCriteria
> AFTER:
> TupleLimit(groups=[], props={MAX_TUPLE_LIMIT=100, OUTPUT_COLS=null})
> Project(groups=[izisprod.prod_P_GeneralData AS gd], props={PROJECT_COLS=[formattimestamp(gd.AdmissionTime, 'yyyy') AS admtime], OUTPUT_COLS=null})
> Access(groups=[izisprod.prod_P_GeneralData AS gd], props={SOURCE_HINT=null, MODEL_ID=Schema name=izisprod, nameInSource=null, uuid=mmuuid:095c2821-e16b-4f9d-9c78-0d2d20018d04, OUTPUT_COLS=null})
> Select(groups=[izisprod.prod_P_GeneralData AS gd], props={SELECT_CRITERIA=gd.Status = 1, OUTPUT_COLS=null})
> Source(groups=[izisprod.prod_P_GeneralData AS gd], props={OUTPUT_COLS=null})
> ============================================================================
> EXECUTING RaiseAccess
> AFTER:
> Access(groups=[izisprod.prod_P_GeneralData AS gd], props={SOURCE_HINT=null, MODEL_ID=Schema name=izisprod, nameInSource=null, uuid=mmuuid:095c2821-e16b-4f9d-9c78-0d2d20018d04, OUTPUT_COLS=null})
> TupleLimit(groups=[], props={MAX_TUPLE_LIMIT=100, OUTPUT_COLS=null})
> Project(groups=[izisprod.prod_P_GeneralData AS gd], props={PROJECT_COLS=[formattimestamp(gd.AdmissionTime, 'yyyy') AS admtime], OUTPUT_COLS=null})
> Select(groups=[izisprod.prod_P_GeneralData AS gd], props={SELECT_CRITERIA=gd.Status = 1, OUTPUT_COLS=null})
> Source(groups=[izisprod.prod_P_GeneralData AS gd])
> ============================================================================
> EXECUTING AssignOutputElements
> AFTER:
> Access(groups=[izisprod.prod_P_GeneralData AS gd], props={SOURCE_HINT=null, MODEL_ID=Schema name=izisprod, nameInSource=null, uuid=mmuuid:095c2821-e16b-4f9d-9c78-0d2d20018d04, OUTPUT_COLS=[formattimestamp(gd.AdmissionTime, 'yyyy') AS admtime]})
> TupleLimit(groups=[], props={MAX_TUPLE_LIMIT=100, OUTPUT_COLS=[formattimestamp(gd.AdmissionTime, 'yyyy') AS admtime]})
> Project(groups=[izisprod.prod_P_GeneralData AS gd], props={PROJECT_COLS=[formattimestamp(gd.AdmissionTime, 'yyyy') AS admtime], OUTPUT_COLS=[formattimestamp(gd.AdmissionTime, 'yyyy') AS admtime]})
> Select(groups=[izisprod.prod_P_GeneralData AS gd], props={SELECT_CRITERIA=gd.Status = 1, OUTPUT_COLS=[gd.AdmissionTime]})
> Source(groups=[izisprod.prod_P_GeneralData AS gd], props={OUTPUT_COLS=[gd.Status, gd.AdmissionTime]})
> ============================================================================
> EXECUTING PushLimit
> AFTER:
> Access(groups=[izisprod.prod_P_GeneralData AS gd])
> TupleLimit(groups=[])
> Project(groups=[izisprod.prod_P_GeneralData AS gd])
> Select(groups=[izisprod.prod_P_GeneralData AS gd])
> Source(groups=[izisprod.prod_P_GeneralData AS gd])
> ============================================================================
> EXECUTING CalculateCost
> AFTER:
> Access(groups=[izisprod.prod_P_GeneralData AS gd], props={SOURCE_HINT=null, MODEL_ID=Schema name=izisprod, nameInSource=null, uuid=mmuuid:095c2821-e16b-4f9d-9c78-0d2d20018d04, OUTPUT_COLS=[formattimestamp(gd.AdmissionTime, 'yyyy') AS admtime], EST_CARDINALITY=20.0, EST_COL_STATS={formattimestamp(gd.AdmissionTime, 'yyyy')=[1.0, 10.0, -1.0]}})
> TupleLimit(groups=[], props={MAX_TUPLE_LIMIT=100, OUTPUT_COLS=[formattimestamp(gd.AdmissionTime, 'yyyy') AS admtime], EST_CARDINALITY=20.0, EST_COL_STATS={formattimestamp(gd.AdmissionTime, 'yyyy')=[1.0, 10.0, -1.0]}})
> Project(groups=[izisprod.prod_P_GeneralData AS gd], props={PROJECT_COLS=[formattimestamp(gd.AdmissionTime, 'yyyy') AS admtime], OUTPUT_COLS=[formattimestamp(gd.AdmissionTime, 'yyyy') AS admtime], EST_CARDINALITY=20.0, EST_COL_STATS={formattimestamp(gd.AdmissionTime, 'yyyy')=[1.0, 10.0, -1.0]}})
> Select(groups=[izisprod.prod_P_GeneralData AS gd], props={SELECT_CRITERIA=gd.Status = 1, OUTPUT_COLS=[gd.AdmissionTime], EST_CARDINALITY=20.0, EST_COL_STATS={gd.AdmissionTime=[1.0, 10.0, -1.0]}})
> Source(groups=[izisprod.prod_P_GeneralData AS gd], props={OUTPUT_COLS=[gd.Status, gd.AdmissionTime], EST_COL_STATS={gd.Status=[20.0, 200.0, -1.0], gd.AdmissionTime=[20.0, 200.0, -1.0]}, EST_CARDINALITY=400.0})
> ============================================================================
> EXECUTING MergeCriteria
> AFTER:
> Access(groups=[izisprod.prod_P_GeneralData AS gd])
> TupleLimit(groups=[])
> Project(groups=[izisprod.prod_P_GeneralData AS gd])
> Select(groups=[izisprod.prod_P_GeneralData AS gd])
> Source(groups=[izisprod.prod_P_GeneralData AS gd])
> ============================================================================
> EXECUTING PlanSorts
> AFTER:
> Access(groups=[izisprod.prod_P_GeneralData AS gd])
> TupleLimit(groups=[])
> Project(groups=[izisprod.prod_P_GeneralData AS gd])
> Select(groups=[izisprod.prod_P_GeneralData AS gd])
> Source(groups=[izisprod.prod_P_GeneralData AS gd])
> ============================================================================
> EXECUTING CollapseSource
> AFTER:
> Access(groups=[izisprod.prod_P_GeneralData AS gd], props={SOURCE_HINT=null, MODEL_ID=Schema name=izisprod, nameInSource=null, uuid=mmuuid:095c2821-e16b-4f9d-9c78-0d2d20018d04, OUTPUT_COLS=[formattimestamp(gd.AdmissionTime, 'yyyy') AS admtime], EST_CARDINALITY=20.0, EST_COL_STATS={formattimestamp(gd.AdmissionTime, 'yyyy')=[1.0, 10.0, -1.0]}, ATOMIC_REQUEST=SELECT formattimestamp(gd.AdmissionTime, 'yyyy') AS admtime FROM izisprod.prod_P_GeneralData AS gd WHERE gd.Status = 1 LIMIT 100})
> ============================================================================
> CONVERTING PLAN TREE TO PROCESS TREE
> PROCESS PLAN =
> AccessNode(0) output=[formattimestamp(gd.AdmissionTime, 'yyyy') AS admtime] SELECT formattimestamp(g_0.AdmissionTime, 'yyyy') AS c_0 FROM izisprod.prod_P_GeneralData AS g_0 WHERE g_0.Status = 1 LIMIT 100
> ============================================================================
> ----------------------------------------------------------------------------
> OPTIMIZATION COMPLETE:
> PROCESSOR PLAN:
> AccessNode(0) output=[formattimestamp(gd.AdmissionTime, 'yyyy') AS admtime] SELECT formattimestamp(g_0.AdmissionTime, 'yyyy') AS c_0 FROM izisprod.prod_P_GeneralData AS g_0 WHERE g_0.Status = 1 LIMIT 100
> ============================================================================
> In the server logs I can see these statements:
> 2017-04-19 15:16:27,305 DEBUG [org.teiid.COMMAND_LOG] (Worker31_QueryProcessorQueue461) jcAY0lvWhF3d START DATA SRC COMMAND: startTime=2017-04-19 15:16:27.305 requestID=jcAY0lvWhF3d.55 sourceCommandID=0 executionID=83 txID=null modelName=izisprod translatorName=sybase-override sessionID=jcAY0lvWhF3d principal=bram sql=SELECT formattimestamp(g_0.AdmissionTime, 'yyyy') AS c_0 FROM izisprod.prod_P_GeneralData AS g_0 WHERE g_0.Status = 1 LIMIT 100
> 2017-04-19 15:16:27,305 DEBUG [org.teiid.COMMAND_LOG] (Worker31_QueryProcessorQueue461) jcAY0lvWhF3d SOURCE SRC COMMAND: endTime=2017-04-19 15:16:27.305 requestID=jcAY0lvWhF3d.55 sourceCommandID=0 executionID=83 txID=null modelName=izisprod translatorName=sybase-override sessionID=jcAY0lvWhF3d principal=bram sourceCommand=[SELECT TOP 100 CONVERT(VARCHAR, g_0."AdmissionTime", null) AS c_0 FROM "Patient"."dbo"."P_GeneralData" g_0 WHERE g_0."Status" = 1]
> 2017-04-19 15:16:27,308 DEBUG [org.teiid.COMMAND_LOG] (Worker32_QueryProcessorQueue462) jcAY0lvWhF3d END SRC COMMAND: endTime=2017-04-19 15:16:27.308 requestID=jcAY0lvWhF3d.55 sourceCommandID=0 executionID=83 txID=null modelName=izisprod translatorName=sybase-override sessionID=jcAY0lvWhF3d principal=bram finalRowCount=48 cpuTime(ns)=845787
> 2017-04-19 15:16:27,313 INFO [org.teiid.COMMAND_LOG] (Worker32_QueryProcessorQueue463) jcAY0lvWhF3d END USER COMMAND: endTime=2017-04-19 15:16:27.313 requestID=jcAY0lvWhF3d.55 txID=null sessionID=jcAY0lvWhF3d principal=bram vdbName=vdb3 vdbVersion=25 finalRowCount=48
--
This message was sent by Atlassian JIRA
(v7.2.3#72005)
8 years, 11 months
[JBoss JIRA] (TEIID-4808) Infinispan Cache Resource Adapter: NullPointerException
by Van Halbert (JIRA)
[ https://issues.jboss.org/browse/TEIID-4808?page=com.atlassian.jira.plugin... ]
Van Halbert resolved TEIID-4808.
--------------------------------
Resolution: Done
> Infinispan Cache Resource Adapter: NullPointerException
> -------------------------------------------------------
>
> Key: TEIID-4808
> URL: https://issues.jboss.org/browse/TEIID-4808
> Project: Teiid
> Issue Type: Bug
> Components: JDG Connector
> Affects Versions: 8.12.10.6_3
> Reporter: Jan Stastny
> Assignee: Van Halbert
> Fix For: 9.3, 8.12.x-6.4
>
>
> There is a NPE when trying to query a local cache via Infinispan Cache translator.
> {code}
> [31m10:27:43,186 ERROR [org.teiid.CONNECTOR] (Worker1_QueryProcessorQueue1) Connector worker process failed for atomic-request=6chGAXrxul8Z.0.3.0: java.lang.NullPointerException
> at org.teiid.resource.adapter.infinispan.InfinispanCacheWrapper.getClassRegistry(InfinispanCacheWrapper.java:128)
> at org.teiid.resource.adapter.infinispan.InfinispanCacheRAConnection.getClassRegistry(InfinispanCacheRAConnection.java:137)
> at org.teiid.translator.object.ObjectExecution.<init>(ObjectExecution.java:195) [translator-object-8.12.10.6_3-redhat-1.jar:8.12.10.6_3-redhat-1]
> at org.teiid.translator.infinispan.cache.InfinispanCacheExecutionFactory$1.<init>(InfinispanCacheExecutionFactory.java:93) [translator-infinispan-cache-8.12.10.6_3-redhat-1.jar:8.12.10.6_3-redhat-1]
> at org.teiid.translator.infinispan.cache.InfinispanCacheExecutionFactory.createResultSetExecution(InfinispanCacheExecutionFactory.java:93) [translator-infinispan-cache-8.12.10.6_3-redhat-1.jar:8.12.10.6_3-redhat-1]
> at org.teiid.translator.infinispan.cache.InfinispanCacheExecutionFactory.createResultSetExecution(InfinispanCacheExecutionFactory.java:51) [translator-infinispan-cache-8.12.10.6_3-redhat-1.jar:8.12.10.6_3-redhat-1]
> at org.teiid.translator.ExecutionFactory.createExecution(ExecutionFactory.java:316) [teiid-api-8.12.10.6_3-redhat-1.jar:8.12.10.6_3-redhat-1]
> at org.teiid.dqp.internal.datamgr.ConnectorWorkItem.execute(ConnectorWorkItem.java:354) [teiid-engine-8.12.10.6_3-redhat-1.jar:8.12.10.6_3-redhat-1]
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [rt.jar:1.8.0_111]
> at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) [rt.jar:1.8.0_111]
> at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) [rt.jar:1.8.0_111]
> at java.lang.reflect.Method.invoke(Method.java:498) [rt.jar:1.8.0_111]
> at org.teiid.dqp.internal.datamgr.ConnectorManager$1.invoke(ConnectorManager.java:211) [teiid-engine-8.12.10.6_3-redhat-1.jar:8.12.10.6_3-redhat-1]
> at com.sun.proxy.$Proxy103.execute(Unknown Source)
> at org.teiid.dqp.internal.process.DataTierTupleSource.getResults(DataTierTupleSource.java:306) [teiid-engine-8.12.10.6_3-redhat-1.jar:8.12.10.6_3-redhat-1]
> at org.teiid.dqp.internal.process.DataTierTupleSource$1.call(DataTierTupleSource.java:112) [teiid-engine-8.12.10.6_3-redhat-1.jar:8.12.10.6_3-redhat-1]
> at org.teiid.dqp.internal.process.DataTierTupleSource$1.call(DataTierTupleSource.java:108) [teiid-engine-8.12.10.6_3-redhat-1.jar:8.12.10.6_3-redhat-1]
> at java.util.concurrent.FutureTask.run(FutureTask.java:266) [rt.jar:1.8.0_111]
> at org.teiid.dqp.internal.process.FutureWork.run(FutureWork.java:65) [teiid-engine-8.12.10.6_3-redhat-1.jar:8.12.10.6_3-redhat-1]
> at org.teiid.dqp.internal.process.DQPWorkContext.runInContext(DQPWorkContext.java:280) [teiid-engine-8.12.10.6_3-redhat-1.jar:8.12.10.6_3-redhat-1]
> at org.teiid.dqp.internal.process.ThreadReuseExecutor$RunnableWrapper.run(ThreadReuseExecutor.java:119) [teiid-engine-8.12.10.6_3-redhat-1.jar:8.12.10.6_3-redhat-1]
> at org.teiid.dqp.internal.process.ThreadReuseExecutor$3.run(ThreadReuseExecutor.java:210) [teiid-engine-8.12.10.6_3-redhat-1.jar:8.12.10.6_3-redhat-1]
> at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [rt.jar:1.8.0_111]
> at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [rt.jar:1.8.0_111]
> at java.lang.Thread.run(Thread.java:745) [rt.jar:1.8.0_111]
> {code}
> POJO's module.xml:
> {code:xml}
> <module xmlns="urn:jboss:module:1.1" name="org.jboss.qe.jdg.pojos">
> <resources>
> <resource-root path="jdg-pojos-1.2.jar"/>
> <!-- Insert resources here -->
> </resources>
> <dependencies>
> <!-- local -->
> <module name="org.jboss.teiid.resource-adapter.infinispan" slot="6" />
> <!--remote-->
> <module name="org.infinispan.client.hotrod" slot="jdg-6.4" optional="true" export="true" />
> <module name="org.infinispan.protostream" slot="jdg-6.4" optional="true" export="true" />
> <module name="org.infinispan.client.hotrod" slot="jdg-6.5" optional="true" export="true" />
> <module name="org.infinispan.protostream" slot="jdg-6.5" optional="true" export="true" />
> <module name="org.infinispan.client.hotrod" slot="jdg-6.6" optional="true" export="true" />
> <module name="org.infinispan.protostream" slot="jdg-6.6" optional="true" export="true" />
> </dependencies>
> </module>
> {code}
> Resource-adapter configuration:
> {code:xml}
> <resource-adapter id="jdg-ra-ds">
> <module slot="6" id="org.jboss.teiid.resource-adapter.infinispan"/>
> <transaction-support>LocalTransaction</transaction-support>
> <connection-definitions>
> <connection-definition class-name="org.teiid.resource.adapter.infinispan.InfinispanManagedConnectionFactory" jndi-name="java:/infinispanTest" enabled="true" use-java-context="true" pool-name="jdg-ra-ds">
> <config-property name="CacheJndiName">
> java:jboss/infinispan/container/teiid-infinispan-quickstart
> </config-property>
> <config-property name="Module">
> org.jboss.qe.jdg.pojos
> </config-property>
> <config-property name="CacheTypeMap">
> local-quickstart-cache:org.jboss.qe.jdg.pojo.SmallA;intKey
> </config-property>
> </connection-definition>
> </connection-definitions>
> </resource-adapter>
> {code}
> Translator:
> {code:xml}
> <translator name="infinispan-cache" module="org.jboss.teiid.translator.infinispan.cache"/>
> {code}
--
This message was sent by Atlassian JIRA
(v7.2.3#72005)
8 years, 11 months
[JBoss JIRA] (TEIID-4793) Change of class loading no longer requires module dependencies
by Van Halbert (JIRA)
[ https://issues.jboss.org/browse/TEIID-4793?page=com.atlassian.jira.plugin... ]
Van Halbert resolved TEIID-4793.
--------------------------------
Resolution: Done
> Change of class loading no longer requires module dependencies
> --------------------------------------------------------------
>
> Key: TEIID-4793
> URL: https://issues.jboss.org/browse/TEIID-4793
> Project: Teiid
> Issue Type: Enhancement
> Components: JDG Connector
> Affects Versions: 9.3, 8.12.10.6_3
> Reporter: Van Halbert
> Assignee: Van Halbert
> Priority: Critical
> Fix For: 8.12.10.6_3, 9.3.1
>
>
> With the latest changes to support username/password required code refactoring so that a new remoteCacheManager is configured for each connection. And with that, it appears that, with 1 more small change, the resource-adapter module dependency in the pojo is no longer needed for either use case: using pojo annotations or protobuf files.
--
This message was sent by Atlassian JIRA
(v7.2.3#72005)
8 years, 11 months
[JBoss JIRA] (TEIID-4793) Change of class loading no longer requires module dependencies
by Van Halbert (JIRA)
[ https://issues.jboss.org/browse/TEIID-4793?page=com.atlassian.jira.plugin... ]
Van Halbert closed TEIID-4793.
------------------------------
> Change of class loading no longer requires module dependencies
> --------------------------------------------------------------
>
> Key: TEIID-4793
> URL: https://issues.jboss.org/browse/TEIID-4793
> Project: Teiid
> Issue Type: Enhancement
> Components: JDG Connector
> Affects Versions: 9.3, 8.12.10.6_3
> Reporter: Van Halbert
> Assignee: Van Halbert
> Priority: Critical
> Fix For: 8.12.10.6_3, 9.3.1
>
>
> With the latest changes to support username/password required code refactoring so that a new remoteCacheManager is configured for each connection. And with that, it appears that, with 1 more small change, the resource-adapter module dependency in the pojo is no longer needed for either use case: using pojo annotations or protobuf files.
--
This message was sent by Atlassian JIRA
(v7.2.3#72005)
8 years, 11 months
[JBoss JIRA] (TEIID-4867) Loosen up OData4 URL validation or parsing
by Ramesh Reddy (JIRA)
[ https://issues.jboss.org/browse/TEIID-4867?page=com.atlassian.jira.plugin... ]
Ramesh Reddy commented on TEIID-4867:
-------------------------------------
Reference issues from Olingo community
https://issues.apache.org/jira/browse/OLINGO-846
https://issues.apache.org/jira/browse/OLINGO-1076
https://issues.apache.org/jira/browse/OLINGO-1046
> Loosen up OData4 URL validation or parsing
> ------------------------------------------
>
> Key: TEIID-4867
> URL: https://issues.jboss.org/browse/TEIID-4867
> Project: Teiid
> Issue Type: Bug
> Components: OData
> Affects Versions: 8.12.8.6_3
> Environment: JDV 6.3.2
> Windows 7
> Reporter: Steve Tran
> Assignee: Steven Hawkins
>
> I'm accessing my JDV table via OData4 through Salesforce's UI builder. The salesforce engine itself is creating the OData calls, and whenever a $filter is needed with multiple columns, it looks like salesforce pads the column name with a space in front and behind. That'll make the URL look like ...$filter={color:red}%20{color}ColumnA{color:red}%20{color}eq%20123%20and{color:red}%20{color}ColumnB{color:red}%20{color}eq...
> The first space right after the $filter= throws off the JDV engine as it thinks it's a malformed URL - which I guess it is. The thing is when I tested it via the OData2 interface, it accepted it just fine. I'm not sure if the OData4 specifications explicitly state in terms of the URL, so it could be anybody's bug. Perhaps we could make JDV a little more forgiving and trim the spaces after un-URL-encoding the URI.
--
This message was sent by Atlassian JIRA
(v7.2.3#72005)
8 years, 11 months
[JBoss JIRA] (TEIID-4867) Loosen up OData4 URL validation or parsing
by Steve Tran (JIRA)
[ https://issues.jboss.org/browse/TEIID-4867?page=com.atlassian.jira.plugin... ]
Steve Tran updated TEIID-4867:
------------------------------
> Loosen up OData4 URL validation or parsing
> ------------------------------------------
>
> Key: TEIID-4867
> URL: https://issues.jboss.org/browse/TEIID-4867
> Project: Teiid
> Issue Type: Bug
> Components: OData
> Affects Versions: 8.12.8.6_3
> Environment: JDV 6.3.2
> Windows 7
> Reporter: Steve Tran
> Assignee: Steven Hawkins
>
> I'm accessing my JDV table via OData4 through Salesforce's UI builder. The salesforce engine itself is creating the OData calls, and whenever a $filter is needed with multiple columns, it looks like salesforce pads the column name with a space in front and behind. That'll make the URL look like ...$filter={color:red}%20{color}ColumnA{color:red}%20{color}eq%20123%20and{color:red}%20{color}ColumnB{color:red}%20{color}eq...
> The first space right after the $filter= throws off the JDV engine as it thinks it's a malformed URL - which I guess it is. The thing is when I tested it via the OData2 interface, it accepted it just fine. I'm not sure if the OData4 specifications explicitly state in terms of the URL, so it could be anybody's bug. Perhaps we could make JDV a little more forgiving and trim the spaces after un-URL-encoding the URI.
--
This message was sent by Atlassian JIRA
(v7.2.3#72005)
8 years, 11 months
[JBoss JIRA] (TEIID-4867) Loosen up OData4 URL validation or parsing
by Ramesh Reddy (JIRA)
[ https://issues.jboss.org/browse/TEIID-4867?page=com.atlassian.jira.plugin... ]
Ramesh Reddy commented on TEIID-4867:
-------------------------------------
The library Teiid uses for OData "Olingo" is designed to be strict in parsing the URLs, thus the issue. There were few requests also in Olingo community to be relaxing on this front, but no resolution yet. I will see if I can follow up there.
> Loosen up OData4 URL validation or parsing
> ------------------------------------------
>
> Key: TEIID-4867
> URL: https://issues.jboss.org/browse/TEIID-4867
> Project: Teiid
> Issue Type: Bug
> Components: OData
> Affects Versions: 8.12.8.6_3
> Environment: JDV 6.3.2
> Windows 7
> Reporter: Steve Tran
> Assignee: Steven Hawkins
>
> I'm accessing my JDV table via OData4 through Salesforce's UI builder. The salesforce engine itself is creating the OData calls, and whenever a $filter is needed with multiple columns, it looks like salesforce pads the column name with a space in front and behind. That'll make the URL look like ...$filter={color:red}%20{color}ColumnA{color:red}%20{color}eq%20123%20and{color:red}%20{color}ColumnB{color:red}%20{color}eq...
> The first space right after the $filter= throws off the JDV engine as it thinks it's a malformed URL - which I guess it is. The thing is when I tested it via the OData2 interface, it accepted it just fine. I'm not sure if the OData4 specifications explicitly state in terms of the URL, so it could be anybody's bug. Perhaps we could make JDV a little more forgiving and trim the spaces after un-URL-encoding the URI.
--
This message was sent by Atlassian JIRA
(v7.2.3#72005)
8 years, 11 months