[JBoss JIRA] (TEIID-5643) When querying a larger dataset, teiid answers with 504 Gateway Time-out and throws exception
by Steven Hawkins (Jira)
[ https://issues.jboss.org/browse/TEIID-5643?page=com.atlassian.jira.plugin... ]
Steven Hawkins commented on TEIID-5643:
---------------------------------------
> I hope the result set was just cut for display purposes.
More than likely it is adding a top/limit and only showing the first 100 or so rows. Knowing now that the query completes normally it may not matter to further try to reproduce with using JDBC as it's likely to succeed.
> Currently I proceed with development efforts based on a dataset of just 100 rows. I hope I find a solution on this soon Might there be some other issues involved when I run teiid in a docker container? By default in Docker there are no resource constraints set, hence at least this should be fine. Is there some way to get more usable information out of the Wildfly Server on what is happening there?
Starting with more detailed Teiid logging would probably be the first step (see below).
> So if I understood your answer correct, this means the query from Teiid to the mysql database was correctly finished ? Than this would mean that Teiid messes up something internally
Probably not core Teiid, but something to do with olingo or some environmental factor.
> not sure what you mean, but I did not add anything extra regarding tracing, just the DEBUG flag in the standalone-teiid.xml
That is only the command log category/context. You can get more information from the other contexts, such as:
<logger category="org.teiid">
<level name="DEBUG"/>
</logger>
> END USER COMMAND : I am not sure what you mean with it
That is the start of a log entry shown above that denotes when the engine is done processing the user query, which in this case the your odata query.
> When querying a larger dataset, teiid answers with 504 Gateway Time-out and throws exception
> --------------------------------------------------------------------------------------------
>
> Key: TEIID-5643
> URL: https://issues.jboss.org/browse/TEIID-5643
> Project: Teiid
> Issue Type: Bug
> Affects Versions: 11.2.1
> Reporter: Christoph John
> Assignee: Steven Hawkins
> Priority: Major
> Attachments: Heap Dump analysis tool.pdf
>
>
> Please note, I am using Teiid 11.2.0 and not 11.2.1 as specified above in this ticket. I was not able to select a version 11.2.0.
> The issue: I tried to query a table with a larger amount of records (about 600.000 records in the table). Teiid responds with
> 504 Gateway Time-out. The server didn't respond in time.
> If Teiid tries to respond with 600.000 entries to such a request, it is reasonable that it runs out of memory or other weird things happen. However, I would expect that in such a case Teiid just answers with a fixed amount of records, say for example 1000, and provides a kind of curser to enable subsequent requests to retrieve more data.
> I am currently trying to find a workaround for the issue, as the issue blocks my work. Is there maybe a kind of configuration option that I have to set explicitly for such a kind of behavior I previously sketched?
> Further note: When I send such a kind of select * request on the table to Teiid, I am also not able for a certain time interval, about a minute, to get a responds to different queries which select a single element on the mentioned table. Such a request then also results in a 504 Gateway Time-out.
> Attached error log:
> 2019-02-01 22:33:36,126 WARN [org.jboss.jca.core.connectionmanager.pool.strategy.OnePool] (Worker2_QueryProcessorQueue5) eayVFuq9y7OY IJ000407: No lazy enlistment available for my_nutri_diary
> 2019-02-01 22:33:36,135 INFO [org.teiid.CONNECTOR] (Worker2_QueryProcessorQueue5) eayVFuq9y7OY MySQLExecutionFactory Commit=true;DatabaseProductName=MySQL;DatabaseProductVersion=8.0.13;DriverMajorVersion=8;DriverMajorVersion=0;DriverName=MySQL Connector/J;DriverVersion=mysql-connector-java-8.0.13 (Revision: 66459e9d39c8fd09767992bc592acd2053279be6);IsolationLevel=2
> 2019-02-01 22:36:56,959 WARN [org.teiid.CONNECTOR] (Worker2_QueryProcessorQueue5) eayVFuq9y7OY Connector worker process failed for atomic-request=eayVFuq9y7OY.0.0.0: org.teiid.translator.jdbc.JDBCExecutionException: 0 TEIID11008:TEIID11004 Error executing statement(s): [Prepared Values: [] SQL: SELECT g_0.`idCode` AS c_0, g_0.`lc` AS c_1, g_0.`product_name` AS c_2, g_0.`origins` AS c_3, g_0.`brands` AS c_4, g_0.`quantity` AS c_5, g_0.`nova_group` AS c_6, g_0.`nutrition_grade_fr` AS c_7, g_0.`ingredients_text_with_allergens` AS c_8, g_0.`energy_100g` AS c_9, g_0.`carbohydrates_100g` AS c_10, g_0.`sugars_100g` AS c_11, g_0.`proteins_100g` AS c_12, g_0.`fat_100g` AS c_13, g_0.`saturated_fat_100g` AS c_14, g_0.`saturated_fat_modifier` AS c_15, g_0.`salt_100g` AS c_16, g_0.`sodium_100g` AS c_17 FROM `FDBProducts` AS g_0 ORDER BY c_0]
> at org.teiid.translator.jdbc.JDBCQueryExecution.execute(JDBCQueryExecution.java:127)
> at org.teiid.dqp.internal.datamgr.ConnectorWorkItem.execute(ConnectorWorkItem.java:393)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
> at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> at java.lang.reflect.Method.invoke(Method.java:498)
> at org.teiid.dqp.internal.datamgr.ConnectorManager$1.invoke(ConnectorManager.java:229)
> at com.sun.proxy.$Proxy51.execute(Unknown Source)
> at org.teiid.dqp.internal.process.DataTierTupleSource.getResults(DataTierTupleSource.java:302)
> at org.teiid.dqp.internal.process.DataTierTupleSource$1.call(DataTierTupleSource.java:108)
> at org.teiid.dqp.internal.process.DataTierTupleSource$1.call(DataTierTupleSource.java:104)
> at java.util.concurrent.FutureTask.run(FutureTask.java:266)
> at org.teiid.dqp.internal.process.FutureWork.run(FutureWork.java:61)
> at org.teiid.dqp.internal.process.DQPWorkContext.runInContext(DQPWorkContext.java:278)
> at org.teiid.dqp.internal.process.ThreadReuseExecutor$RunnableWrapper.run(ThreadReuseExecutor.java:115)
> at org.teiid.dqp.internal.process.ThreadReuseExecutor$3.run(ThreadReuseExecutor.java:206)
> at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
> at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
> at java.lang.Thread.run(Thread.java:748)
> Caused by: java.sql.SQLException: Java heap space
> at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:129)
> at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:97)
> at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:122)
> at com.mysql.cj.jdbc.ClientPreparedStatement.executeInternal(ClientPreparedStatement.java:974)
> at com.mysql.cj.jdbc.ClientPreparedStatement.executeQuery(ClientPreparedStatement.java:1024)
> at org.jboss.jca.adapters.jdbc.WrappedPreparedStatement.executeQuery(WrappedPreparedStatement.java:504)
> at org.teiid.translator.jdbc.JDBCQueryExecution.execute(JDBCQueryExecution.java:119)
> ... 18 more
> 2019-02-01 22:36:56,977 WARN [org.teiid.PROCESSOR] (default task-4) eayVFuq9y7OY TEIID30020 Processing exception for request eayVFuq9y7OY.0 'TEIID30504 my_nutri_diary: 0 TEIID11008:TEIID11004 Error executing statement(s): [Prepared Values: [] SQL: SELECT g_0.`idCode` AS c_0, g_0.`lc` AS c_1, g_0.`product_name` AS c_2, g_0.`origins` AS c_3, g_0.`brands` AS c_4, g_0.`quantity` AS c_5, g_0.`nova_group` AS c_6, g_0.`nutrition_grade_fr` AS c_7, g_0.`ingredients_text_with_allergens` AS c_8, g_0.`energy_100g` AS c_9, g_0.`carbohydrates_100g` AS c_10, g_0.`sugars_100g` AS c_11, g_0.`proteins_100g` AS c_12, g_0.`fat_100g` AS c_13, g_0.`saturated_fat_100g` AS c_14, g_0.`saturated_fat_modifier` AS c_15, g_0.`salt_100g` AS c_16, g_0.`sodium_100g` AS c_17 FROM `FDBProducts` AS g_0 ORDER BY c_0]'. Originally TeiidProcessingException 'Java heap space' SQLError.java:129. Enable more detailed logging to see the entire stacktrace.
> 2019-02-01 22:36:56,987 WARN [org.teiid.PROCESSOR] (default task-4) TEIID16053 Unable to process odata request due to: TEIID30504 my_nutri_diary: 0 TEIID11008:TEIID11004 Error executing statement(s): [Prepared Values: [] SQL: SELECT g_0.`idCode` AS c_0, g_0.`lc` AS c_1, g_0.`product_name` AS c_2, g_0.`origins` AS c_3, g_0.`brands` AS c_4, g_0.`quantity` AS c_5, g_0.`nova_group` AS c_6, g_0.`nutrition_grade_fr` AS c_7, g_0.`ingredients_text_with_allergens` AS c_8, g_0.`energy_100g` AS c_9, g_0.`carbohydrates_100g` AS c_10, g_0.`sugars_100g` AS c_11, g_0.`proteins_100g` AS c_12, g_0.`fat_100g` AS c_13, g_0.`saturated_fat_100g` AS c_14, g_0.`saturated_fat_modifier` AS c_15, g_0.`salt_100g` AS c_16, g_0.`sodium_100g` AS c_17 FROM `FDBProducts` AS g_0 ORDER BY c_0] Increase the log level to see the entire stack trace.
> 2019-02-01 22:36:57,213 WARN [org.teiid.CONNECTOR] (Worker2_QueryProcessorQueue6) NdaDihMR2Vlt Connector worker process failed for atomic-request=NdaDihMR2Vlt.0.0.1: org.teiid.translator.jdbc.JDBCExecutionException: 0 TEIID11008:TEIID11004 Error executing statement(s): [Prepared Values: [] SQL: SELECT g_0.`idCode` AS c_0, g_0.`lc` AS c_1, g_0.`product_name` AS c_2, g_0.`origins` AS c_3, g_0.`brands` AS c_4, g_0.`quantity` AS c_5, g_0.`nova_group` AS c_6, g_0.`nutrition_grade_fr` AS c_7, g_0.`ingredients_text_with_allergens` AS c_8, g_0.`energy_100g` AS c_9, g_0.`carbohydrates_100g` AS c_10, g_0.`sugars_100g` AS c_11, g_0.`proteins_100g` AS c_12, g_0.`fat_100g` AS c_13, g_0.`saturated_fat_100g` AS c_14, g_0.`saturated_fat_modifier` AS c_15, g_0.`salt_100g` AS c_16, g_0.`sodium_100g` AS c_17 FROM `FDBProducts` AS g_0 ORDER BY c_0]
> at org.teiid.translator.jdbc.JDBCQueryExecution.execute(JDBCQueryExecution.java:127)
> at org.teiid.dqp.internal.datamgr.ConnectorWorkItem.execute(ConnectorWorkItem.java:393)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
> at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> at java.lang.reflect.Method.invoke(Method.java:498)
> at org.teiid.dqp.internal.datamgr.ConnectorManager$1.invoke(ConnectorManager.java:229)
> at com.sun.proxy.$Proxy51.execute(Unknown Source)
> at org.teiid.dqp.internal.process.DataTierTupleSource.getResults(DataTierTupleSource.java:302)
> at org.teiid.dqp.internal.process.DataTierTupleSource$1.call(DataTierTupleSource.java:108)
> at org.teiid.dqp.internal.process.DataTierTupleSource$1.call(DataTierTupleSource.java:104)
> at java.util.concurrent.FutureTask.run(FutureTask.java:266)
> at org.teiid.dqp.internal.process.FutureWork.run(FutureWork.java:61)
> at org.teiid.dqp.internal.process.DQPWorkContext.runInContext(DQPWorkContext.java:278)
> at org.teiid.dqp.internal.process.ThreadReuseExecutor$RunnableWrapper.run(ThreadReuseExecutor.java:115)
> at org.teiid.dqp.internal.process.ThreadReuseExecutor$3.run(ThreadReuseExecutor.java:206)
> at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
> at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
> at java.lang.Thread.run(Thread.java:748)
> Caused by: com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure
--
This message was sent by Atlassian Jira
(v7.12.1#712002)
7 years, 1 month
[JBoss JIRA] (TEIID-5672) When using DateTime datatype with millisecond fractions, i.e DateTime(3) the resulting urls for the records are invalid
by Christoph John (Jira)
[ https://issues.jboss.org/browse/TEIID-5672?page=com.atlassian.jira.plugin... ]
Christoph John edited comment on TEIID-5672 at 3/4/19 3:24 PM:
---------------------------------------------------------------
Yes, the encoding is done on client side. This is not the problem at that point.
OK, I will give two examples which make it clear that it is not a client side error. The first one is without DateTime fractions and everything is working as expected
Example 1:
If I query the collection https://morpheus.fritz.box/odata4/svc/my_nutri_diary/Diary
I get the list with entities. A single entity is looking as follows:
{noformat}
<a:entry>
<a:id>
https://morpheus.fritz.box/odata4/svc/my_nutri_diary/Diary(fkProfile=2,Ad...
</a:id>
<a:title/>
<a:summary/>
<a:updated>2019-03-04T15:07:44Z</a:updated>
<a:author>
<a:name/>
</a:author>
<a:link rel="edit" href="https://morpheus.fritz.box/odata4/svc/my_nutri_diary/Diary(fkProfile=2,Ad..."/>
<a:link rel="http://docs.oasis-open.org/odata/ns/related/fkDiaryToAccount" title="fkDiaryToAccount" href="https://morpheus.fritz.box/odata4/svc/my_nutri_diary/Diary(fkProfile=2,Ad..."/>
<a:link rel="http://docs.oasis-open.org/odata/ns/related/fkDiaryToFDBProducts" title="fkDiaryToFDBProducts" href="https://morpheus.fritz.box/odata4/svc/my_nutri_diary/Diary(fkProfile=2,Ad..."/>
<a:link rel="http://docs.oasis-open.org/odata/ns/relatedlinks/fkDiaryToAccount" title="fkDiaryToAccount" href="https://morpheus.fritz.box/odata4/svc/my_nutri_diary/Diary(fkProfile=2,Ad..."/>
<a:link rel="http://docs.oasis-open.org/odata/ns/relatedlinks/fkDiaryToFDBProducts" title="fkDiaryToFDBProducts" href="https://morpheus.fritz.box/odata4/svc/my_nutri_diary/Diary(fkProfile=2,Ad..."/>
<a:category scheme="http://docs.oasis-open.org/odata/ns/scheme" term="#svc.1.my_nutri_diary.Diary"/>
<a:content type="application/xml">
<m:properties>
<d:fkProfile m:type="Int64">2</d:fkProfile>
<d:AddedDateTime m:type="DateTimeOffset">2019-03-03T18:46:39Z</d:AddedDateTime>
<d:fkIdCode m:type="Int64">17</d:fkIdCode>
<d:product_name>Vitória crackers</d:product_name>
<d:brands>n/a</d:brands>
<d:DatabaseID m:type="Int16">0</d:DatabaseID>
<d:MealNumber>0</d:MealNumber>
<d:AmountInG m:type="Double">200.0</d:AmountInG>
<d:Calories m:type="Double">375.0</d:Calories>
<d:ProteinsInG m:type="Double">7.8</d:ProteinsInG>
<d:CarbohydratesInG m:type="Double">70.1</d:CarbohydratesInG>
<d:SugarsInG m:type="Double">15.0</d:SugarsInG>
<d:FatsInG m:type="Double">7.0</d:FatsInG>
<d:SaturatedFatsInG m:type="Double">3.08</d:SaturatedFatsInG>
<d:SaltsInG m:type="Double">1.4</d:SaltsInG>
<d:Diarycol m:null="true"/>
</m:properties>
</a:content>
</a:entry>
{noformat}
--------------------
When I select this entity via the following url, I get the entity as response as I expect.
https://morpheus.fritz.box/odata4/svc/my_nutri_diary/Diary(fkProfile=2,Ad...
-----------------------------------------------------------------------
Example 2: Now using millisecond format
Again, when I query the collection via
https://morpheus.fritz.box/odata4/svc/my_nutri_diary/Diary
I get a list with the entities. Here an example item with millisecond key
{noformat}
<a:entry>
<a:id>
https://morpheus.fritz.box/odata4/svc/my_nutri_diary/Diary(fkProfile=2,Ad...
</a:id>
<a:title/>
<a:summary/>
<a:updated>2019-03-04T19:43:08Z</a:updated>
<a:author>
<a:name/>
</a:author>
<a:link rel="edit" href="https://morpheus.fritz.box/odata4/svc/my_nutri_diary/Diary(fkProfile=2,Ad..."/>
<a:link rel="http://docs.oasis-open.org/odata/ns/related/fkDiaryToAccount" title="fkDiaryToAccount" href="https://morpheus.fritz.box/odata4/svc/my_nutri_diary/Diary(fkProfile=2,Ad..."/>
<a:link rel="http://docs.oasis-open.org/odata/ns/related/fkDiaryToFDBProducts" title="fkDiaryToFDBProducts" href="https://morpheus.fritz.box/odata4/svc/my_nutri_diary/Diary(fkProfile=2,Ad..."/>
<a:link rel="http://docs.oasis-open.org/odata/ns/relatedlinks/fkDiaryToAccount" title="fkDiaryToAccount" href="https://morpheus.fritz.box/odata4/svc/my_nutri_diary/Diary(fkProfile=2,Ad..."/>
<a:link rel="http://docs.oasis-open.org/odata/ns/relatedlinks/fkDiaryToFDBProducts" title="fkDiaryToFDBProducts" href="https://morpheus.fritz.box/odata4/svc/my_nutri_diary/Diary(fkProfile=2,Ad..."/>
<a:category scheme="http://docs.oasis-open.org/odata/ns/scheme" term="#svc.1.my_nutri_diary.Diary"/>
<a:content type="application/xml">
<m:properties>
<d:fkProfile m:type="Int64">2</d:fkProfile>
<d:AddedDateTime m:type="DateTimeOffset">2019-03-04T19:42:53.148Z</d:AddedDateTime>
<d:fkIdCode m:type="Int64">1772</d:fkIdCode>
<d:product_name>Mélange fruits secs</d:product_name>
<d:brands>Agrosourcing</d:brands>
<d:DatabaseID m:type="Int16">0</d:DatabaseID>
<d:MealNumber>4</d:MealNumber>
<d:AmountInG m:type="Double">100.0</d:AmountInG>
<d:Calories m:null="true"/>
<d:ProteinsInG m:null="true"/>
<d:CarbohydratesInG m:null="true"/>
<d:SugarsInG m:null="true"/>
<d:FatsInG m:null="true"/>
<d:SaturatedFatsInG m:null="true"/>
<d:SaltsInG m:null="true"/>
<d:Diarycol m:null="true"/>
</m:properties>
</a:content>
</a:entry>
{noformat}
--------------------------------------------------------------
If I now query this sincle entity via the given url
https://morpheus.fritz.box/odata4/svc/my_nutri_diary/Diary(fkProfile=2,Ad...
I do not get the entity but the following error message:
Diese morpheus.fritz.box-Seite wurde nicht gefunden Für folgende Webadresse wurde keine Webseite gefunden: https://morpheus.fritz.box/odata4/svc/my_nutri_diary/Diary(fkProfile=2,Ad....
HTTP ERROR 404
I should also mention, the entity is correctly stored in the underlaying mysql database
!Bildschirmfoto 2019-03-04 um 20.47.19.png|thumbnail!
You see it does not depend on the format of the odata query. The urls were directly taken from the generated responses of the teiid server. Is my description sufficient ?
Here is the vdb code that was generated for the key including milliseconds:
{noformat}
CREATE FOREIGN TABLE Account (
idProfile long NOT NULL AUTO_INCREMENT OPTIONS (ANNOTATION '', NAMEINSOURCE '`idProfile`', NATIVE_TYPE 'BIGINT UNSIGNED'),
uuidUser string(36) NOT NULL OPTIONS (ANNOTATION '', NAMEINSOURCE '`uuidUser`', NATIVE_TYPE 'CHAR'),
CONSTRAINT "PRIMARY" PRIMARY KEY(idProfile),
CONSTRAINT idProfile_UNIQUE UNIQUE(idProfile),
CONSTRAINT uuidUser_UNIQUE UNIQUE(uuidUser)
) OPTIONS (ANNOTATION '', NAMEINSOURCE '`Account`', UPDATABLE TRUE);
CREATE FOREIGN TABLE Avatar (
fkProfile long NOT NULL OPTIONS (ANNOTATION '', NAMEINSOURCE '`fkProfile`', NATIVE_TYPE 'BIGINT UNSIGNED'),
AvatarImg blob(65535) OPTIONS (ANNOTATION '', NAMEINSOURCE '`AvatarImg`', NATIVE_TYPE 'BLOB'),
CONSTRAINT "PRIMARY" PRIMARY KEY(fkProfile),
CONSTRAINT fkProfile_UNIQUE UNIQUE(fkProfile),
CONSTRAINT fkAvatarToAccount FOREIGN KEY(fkProfile) REFERENCES Account (idProfile)
) OPTIONS (ANNOTATION '', NAMEINSOURCE '`Avatar`', UPDATABLE TRUE);
CREATE FOREIGN TABLE BodyWeight (
idBodyWeight long NOT NULL AUTO_INCREMENT OPTIONS (ANNOTATION 'We need a surrogate key here as Teiid requires a primary key on each table. fkProfile is not unique here as we can will have multiple weight measurements per person. Moreover, combining it with WeightMeasurementDateTime makes the index to compute intensive.', NAMEINSOURCE '`idBodyWeight`', NATIVE_TYPE 'BIGINT UNSIGNED'),
fkProfile long NOT NULL OPTIONS (ANNOTATION '', NAMEINSOURCE '`fkProfile`', NATIVE_TYPE 'BIGINT UNSIGNED'),
WeightMeasurementDateTime timestamp NOT NULL OPTIONS (ANNOTATION '', NAMEINSOURCE '`WeightMeasurementDateTime`', NATIVE_TYPE 'DATETIME'),
Weight float NOT NULL OPTIONS (ANNOTATION '', NAMEINSOURCE '`Weight`', NATIVE_TYPE 'FLOAT UNSIGNED'),
CONSTRAINT "PRIMARY" PRIMARY KEY(idBodyWeight),
CONSTRAINT idBodyWeight_UNIQUE UNIQUE(idBodyWeight),
CONSTRAINT fkBodyWeightToAccount FOREIGN KEY(fkProfile) REFERENCES Account (idProfile)
) OPTIONS (ANNOTATION '', NAMEINSOURCE '`BodyWeight`', UPDATABLE TRUE);
CREATE FOREIGN TABLE ConfigOptions (
fkProfile long NOT NULL OPTIONS (ANNOTATION '', NAMEINSOURCE '`fkProfile`', NATIVE_TYPE 'BIGINT UNSIGNED'),
MUnitWeight string(2) DEFAULT 'kg' OPTIONS (ANNOTATION '', NAMEINSOURCE '`MUnitWeight`', CHAR_OCTET_LENGTH 8, NATIVE_TYPE 'ENUM'),
MUnitLength string(2) DEFAULT 'cm' OPTIONS (ANNOTATION '', NAMEINSOURCE '`MUnitLength`', CHAR_OCTET_LENGTH 8, NATIVE_TYPE 'ENUM'),
MUnitEnergy string(4) DEFAULT 'kcal' OPTIONS (ANNOTATION '', NAMEINSOURCE '`MUnitEnergy`', CHAR_OCTET_LENGTH 16, NATIVE_TYPE 'ENUM'),
MUnitLiquids string(2) DEFAULT 'ml' OPTIONS (ANNOTATION '', NAMEINSOURCE '`MUnitLiquids`', CHAR_OCTET_LENGTH 8, NATIVE_TYPE 'ENUM'),
MUnitTime string(3) DEFAULT '24h' OPTIONS (ANNOTATION '', NAMEINSOURCE '`MUnitTime`', CHAR_OCTET_LENGTH 12, NATIVE_TYPE 'ENUM'),
EnableDrinkReminder boolean DEFAULT '0' OPTIONS (ANNOTATION '', NAMEINSOURCE '`EnableDrinkReminder`', NATIVE_TYPE 'BIT'),
PreferredCountryCodeForSearch string(2) DEFAULT 'de' OPTIONS (ANNOTATION '', NAMEINSOURCE '`PreferredCountryCodeForSearch`', CHAR_OCTET_LENGTH 8, NATIVE_TYPE 'VARCHAR'),
EnableInternationalSearch boolean DEFAULT '1' OPTIONS (ANNOTATION '', NAMEINSOURCE '`EnableInternationalSearch`', NATIVE_TYPE 'BIT'),
DaySpecificDietConfig boolean DEFAULT '0' OPTIONS (ANNOTATION '', NAMEINSOURCE '`DaySpecificDietConfig`', NATIVE_TYPE 'BIT'),
CONSTRAINT "PRIMARY" PRIMARY KEY(fkProfile),
CONSTRAINT fkProfile_UNIQUE UNIQUE(fkProfile),
CONSTRAINT fkConfigOptionsToAccount FOREIGN KEY(fkProfile) REFERENCES Account (idProfile)
) OPTIONS (ANNOTATION '', NAMEINSOURCE '`ConfigOptions`', UPDATABLE TRUE);
CREATE FOREIGN TABLE Diary (
fkProfile long NOT NULL OPTIONS (ANNOTATION '', NAMEINSOURCE '`fkProfile`', NATIVE_TYPE 'BIGINT UNSIGNED'),
AddedDateTime timestamp NOT NULL OPTIONS (ANNOTATION '', NAMEINSOURCE '`AddedDateTime`', NATIVE_TYPE 'DATETIME'),
fkIdCode long NOT NULL OPTIONS (ANNOTATION '', NAMEINSOURCE '`fkIdCode`', NATIVE_TYPE 'BIGINT UNSIGNED'),
product_name string(256) OPTIONS (ANNOTATION '', NAMEINSOURCE '`product_name`', CHAR_OCTET_LENGTH 1024, NATIVE_TYPE 'VARCHAR'),
brands string(384) OPTIONS (ANNOTATION '', NAMEINSOURCE '`brands`', CHAR_OCTET_LENGTH 1536, NATIVE_TYPE 'VARCHAR'),
DatabaseID short NOT NULL OPTIONS (ANNOTATION '', NAMEINSOURCE '`DatabaseID`', NATIVE_TYPE 'TINYINT UNSIGNED'),
MealNumber string(1) NOT NULL OPTIONS (ANNOTATION '', NAMEINSOURCE '`MealNumber`', CHAR_OCTET_LENGTH 4, NATIVE_TYPE 'ENUM'),
AmountInG double OPTIONS (ANNOTATION '', NAMEINSOURCE '`AmountInG`', NATIVE_TYPE 'DOUBLE'),
Calories double OPTIONS (ANNOTATION '', NAMEINSOURCE '`Calories`', NATIVE_TYPE 'DOUBLE'),
ProteinsInG double OPTIONS (ANNOTATION '', NAMEINSOURCE '`ProteinsInG`', NATIVE_TYPE 'DOUBLE'),
CarbohydratesInG double OPTIONS (ANNOTATION '', NAMEINSOURCE '`CarbohydratesInG`', NATIVE_TYPE 'DOUBLE'),
SugarsInG double OPTIONS (ANNOTATION '', NAMEINSOURCE '`SugarsInG`', NATIVE_TYPE 'DOUBLE'),
FatsInG double OPTIONS (ANNOTATION '', NAMEINSOURCE '`FatsInG`', NATIVE_TYPE 'DOUBLE'),
SaturatedFatsInG double OPTIONS (ANNOTATION '', NAMEINSOURCE '`SaturatedFatsInG`', NATIVE_TYPE 'DOUBLE'),
SaltsInG double OPTIONS (ANNOTATION '', NAMEINSOURCE '`SaltsInG`', NATIVE_TYPE 'DOUBLE'),
Diarycol string(45) OPTIONS (ANNOTATION '', NAMEINSOURCE '`Diarycol`', CHAR_OCTET_LENGTH 180, NATIVE_TYPE 'VARCHAR'),
CONSTRAINT "PRIMARY" PRIMARY KEY(fkProfile, AddedDateTime),
CONSTRAINT fkDiaryToFDBProducts FOREIGN KEY(fkIdCode) REFERENCES FDBProducts (idCode),
CONSTRAINT fkDiaryToAccount FOREIGN KEY(fkProfile) REFERENCES Account (idProfile)
) OPTIONS (ANNOTATION '', NAMEINSOURCE '`Diary`', UPDATABLE TRUE);
CREATE FOREIGN TABLE FDBProducts (
idCode long NOT NULL OPTIONS (ANNOTATION '', NAMEINSOURCE '`idCode`', NATIVE_TYPE 'BIGINT UNSIGNED'),
lc string(5) OPTIONS (ANNOTATION '', NAMEINSOURCE '`lc`', CHAR_OCTET_LENGTH 20, NATIVE_TYPE 'CHAR'),
product_name string(256) OPTIONS (ANNOTATION '', NAMEINSOURCE '`product_name`', CHAR_OCTET_LENGTH 1024, NATIVE_TYPE 'VARCHAR'),
origins string(512) OPTIONS (ANNOTATION '', NAMEINSOURCE '`origins`', CHAR_OCTET_LENGTH 2048, NATIVE_TYPE 'VARCHAR'),
brands string(384) OPTIONS (ANNOTATION '', NAMEINSOURCE '`brands`', CHAR_OCTET_LENGTH 1536, NATIVE_TYPE 'VARCHAR'),
quantity string(256) OPTIONS (ANNOTATION '', NAMEINSOURCE '`quantity`', CHAR_OCTET_LENGTH 1024, NATIVE_TYPE 'VARCHAR'),
nova_group string(1) OPTIONS (ANNOTATION '', NAMEINSOURCE '`nova_group`', CHAR_OCTET_LENGTH 4, NATIVE_TYPE 'CHAR'),
nutrition_grade_fr string(1) OPTIONS (ANNOTATION '', NAMEINSOURCE '`nutrition_grade_fr`', CHAR_OCTET_LENGTH 4, NATIVE_TYPE 'CHAR'),
energy_100g double OPTIONS (ANNOTATION '', NAMEINSOURCE '`energy_100g`', NATIVE_TYPE 'DOUBLE'),
carbohydrates_100g double OPTIONS (ANNOTATION '', NAMEINSOURCE '`carbohydrates_100g`', NATIVE_TYPE 'DOUBLE'),
sugars_100g double OPTIONS (ANNOTATION '', NAMEINSOURCE '`sugars_100g`', NATIVE_TYPE 'DOUBLE'),
proteins_100g double OPTIONS (ANNOTATION '', NAMEINSOURCE '`proteins_100g`', NATIVE_TYPE 'DOUBLE'),
fat_100g double OPTIONS (ANNOTATION '', NAMEINSOURCE '`fat_100g`', NATIVE_TYPE 'DOUBLE'),
saturated_fat_100g double OPTIONS (ANNOTATION '', NAMEINSOURCE '`saturated_fat_100g`', NATIVE_TYPE 'DOUBLE'),
saturated_fat_modifier string(3) OPTIONS (ANNOTATION '', NAMEINSOURCE '`saturated_fat_modifier`', CHAR_OCTET_LENGTH 12, NATIVE_TYPE 'CHAR'),
salt_100g double OPTIONS (ANNOTATION '', NAMEINSOURCE '`salt_100g`', NATIVE_TYPE 'DOUBLE'),
sodium_100g double OPTIONS (ANNOTATION '', NAMEINSOURCE '`sodium_100g`', NATIVE_TYPE 'DOUBLE'),
CONSTRAINT "PRIMARY" PRIMARY KEY(idCode),
CONSTRAINT code_UNIQUE UNIQUE(idCode)
) OPTIONS (ANNOTATION '', NAMEINSOURCE '`FDBProducts`', UPDATABLE TRUE);
CREATE FOREIGN TABLE MealConfigs (
fkProfile long NOT NULL OPTIONS (ANNOTATION '', NAMEINSOURCE '`fkProfile`', NATIVE_TYPE 'BIGINT UNSIGNED'),
Weekday string(1) NOT NULL OPTIONS (ANNOTATION '', NAMEINSOURCE '`Weekday`', CHAR_OCTET_LENGTH 4, NATIVE_TYPE 'ENUM'),
MealNumber string(1) NOT NULL OPTIONS (ANNOTATION '', NAMEINSOURCE '`MealNumber`', CHAR_OCTET_LENGTH 4, NATIVE_TYPE 'ENUM'),
WeekdaySortOrder long NOT NULL OPTIONS (ANNOTATION '', NAMEINSOURCE '`WeekdaySortOrder`', NATIVE_TYPE 'INT UNSIGNED'),
MealName string(45) DEFAULT 'strMeal' OPTIONS (ANNOTATION '', NAMEINSOURCE '`MealName`', CHAR_OCTET_LENGTH 180, NATIVE_TYPE 'VARCHAR'),
MealEnabled boolean OPTIONS (ANNOTATION '', NAMEINSOURCE '`MealEnabled`', NATIVE_TYPE 'BIT'),
MealStartTime time OPTIONS (ANNOTATION '', NAMEINSOURCE '`MealStartTime`', NATIVE_TYPE 'TIME'),
CONSTRAINT "PRIMARY" PRIMARY KEY(fkProfile, Weekday, MealNumber),
CONSTRAINT fkMealConfigToAccount FOREIGN KEY(fkProfile) REFERENCES Account (idProfile)
) OPTIONS (ANNOTATION '', NAMEINSOURCE '`MealConfigs`', UPDATABLE TRUE);
CREATE FOREIGN TABLE Profile (
fkProfile long NOT NULL OPTIONS (ANNOTATION '', NAMEINSOURCE '`fkProfile`', NATIVE_TYPE 'BIGINT UNSIGNED'),
BodyHeight float DEFAULT '0.000' OPTIONS (ANNOTATION '', NAMEINSOURCE '`BodyHeight`', NATIVE_TYPE 'FLOAT UNSIGNED'),
GoalWeight float DEFAULT '0.000' OPTIONS (ANNOTATION '', NAMEINSOURCE '`GoalWeight`', NATIVE_TYPE 'FLOAT UNSIGNED'),
Gender string(1) DEFAULT 'm' OPTIONS (ANNOTATION '', NAMEINSOURCE '`Gender`', CHAR_OCTET_LENGTH 4, NATIVE_TYPE 'ENUM'),
BirthDate date OPTIONS (ANNOTATION '', NAMEINSOURCE '`BirthDate`', NATIVE_TYPE 'DATE'),
ActivityLevel string(17) DEFAULT 'strActive' OPTIONS (ANNOTATION '', NAMEINSOURCE '`ActivityLevel`', CHAR_OCTET_LENGTH 68, NATIVE_TYPE 'ENUM'),
CONSTRAINT "PRIMARY" PRIMARY KEY(fkProfile),
CONSTRAINT fkProfile_UNIQUE UNIQUE(fkProfile),
CONSTRAINT fkProfileToAccount FOREIGN KEY(fkProfile) REFERENCES Account (idProfile)
) OPTIONS (ANNOTATION '', NAMEINSOURCE '`Profile`', UPDATABLE TRUE);
{noformat}
--------------------------
I do have one further note. After your description I also checked out if DateTime(6) would be an option which works. It results in mostly the same behaviour as for DateTime(3). There is one minor difference. I use Javascript Date object to create the DateTime(6) this has just millisecond resolution and adds 000 for the microsecond fractions. the DateTime(6) is correctly written to the mysql database afterwards.
Now to the difference. When Teiid generates links for DateTime(6) it skips the 000 in the generated url, hence the links look exactely like for DateTime(3).
was (Author: cjohn001):
Yes, the encoding is done on client side. This is not the problem at that point.
OK, I will give two examples which make it clear that it is not a client side error. The first one is without DateTime fractions and everything is working as expected
Example 1:
If I query the collection https://morpheus.fritz.box/odata4/svc/my_nutri_diary/Diary
I get the list with entities. A single entity is looking as follows:
{noformat}
<a:entry>
<a:id>
https://morpheus.fritz.box/odata4/svc/my_nutri_diary/Diary(fkProfile=2,Ad...
</a:id>
<a:title/>
<a:summary/>
<a:updated>2019-03-04T15:07:44Z</a:updated>
<a:author>
<a:name/>
</a:author>
<a:link rel="edit" href="https://morpheus.fritz.box/odata4/svc/my_nutri_diary/Diary(fkProfile=2,Ad..."/>
<a:link rel="http://docs.oasis-open.org/odata/ns/related/fkDiaryToAccount" title="fkDiaryToAccount" href="https://morpheus.fritz.box/odata4/svc/my_nutri_diary/Diary(fkProfile=2,Ad..."/>
<a:link rel="http://docs.oasis-open.org/odata/ns/related/fkDiaryToFDBProducts" title="fkDiaryToFDBProducts" href="https://morpheus.fritz.box/odata4/svc/my_nutri_diary/Diary(fkProfile=2,Ad..."/>
<a:link rel="http://docs.oasis-open.org/odata/ns/relatedlinks/fkDiaryToAccount" title="fkDiaryToAccount" href="https://morpheus.fritz.box/odata4/svc/my_nutri_diary/Diary(fkProfile=2,Ad..."/>
<a:link rel="http://docs.oasis-open.org/odata/ns/relatedlinks/fkDiaryToFDBProducts" title="fkDiaryToFDBProducts" href="https://morpheus.fritz.box/odata4/svc/my_nutri_diary/Diary(fkProfile=2,Ad..."/>
<a:category scheme="http://docs.oasis-open.org/odata/ns/scheme" term="#svc.1.my_nutri_diary.Diary"/>
<a:content type="application/xml">
<m:properties>
<d:fkProfile m:type="Int64">2</d:fkProfile>
<d:AddedDateTime m:type="DateTimeOffset">2019-03-03T18:46:39Z</d:AddedDateTime>
<d:fkIdCode m:type="Int64">17</d:fkIdCode>
<d:product_name>Vitória crackers</d:product_name>
<d:brands>n/a</d:brands>
<d:DatabaseID m:type="Int16">0</d:DatabaseID>
<d:MealNumber>0</d:MealNumber>
<d:AmountInG m:type="Double">200.0</d:AmountInG>
<d:Calories m:type="Double">375.0</d:Calories>
<d:ProteinsInG m:type="Double">7.8</d:ProteinsInG>
<d:CarbohydratesInG m:type="Double">70.1</d:CarbohydratesInG>
<d:SugarsInG m:type="Double">15.0</d:SugarsInG>
<d:FatsInG m:type="Double">7.0</d:FatsInG>
<d:SaturatedFatsInG m:type="Double">3.08</d:SaturatedFatsInG>
<d:SaltsInG m:type="Double">1.4</d:SaltsInG>
<d:Diarycol m:null="true"/>
</m:properties>
</a:content>
</a:entry>
{noformat}
--------------------
When I select this entity via the following url, I get the entity as response as I expect.
https://morpheus.fritz.box/odata4/svc/my_nutri_diary/Diary(fkProfile=2,Ad...
-----------------------------------------------------------------------
Example 2: Now using millisecond format
Again, when I query the collection via
https://morpheus.fritz.box/odata4/svc/my_nutri_diary/Diary
I get a list with the entities. Here an example item with millisecond key
{noformat}
<a:entry>
<a:id>
https://morpheus.fritz.box/odata4/svc/my_nutri_diary/Diary(fkProfile=2,Ad...
</a:id>
<a:title/>
<a:summary/>
<a:updated>2019-03-04T19:43:08Z</a:updated>
<a:author>
<a:name/>
</a:author>
<a:link rel="edit" href="https://morpheus.fritz.box/odata4/svc/my_nutri_diary/Diary(fkProfile=2,Ad..."/>
<a:link rel="http://docs.oasis-open.org/odata/ns/related/fkDiaryToAccount" title="fkDiaryToAccount" href="https://morpheus.fritz.box/odata4/svc/my_nutri_diary/Diary(fkProfile=2,Ad..."/>
<a:link rel="http://docs.oasis-open.org/odata/ns/related/fkDiaryToFDBProducts" title="fkDiaryToFDBProducts" href="https://morpheus.fritz.box/odata4/svc/my_nutri_diary/Diary(fkProfile=2,Ad..."/>
<a:link rel="http://docs.oasis-open.org/odata/ns/relatedlinks/fkDiaryToAccount" title="fkDiaryToAccount" href="https://morpheus.fritz.box/odata4/svc/my_nutri_diary/Diary(fkProfile=2,Ad..."/>
<a:link rel="http://docs.oasis-open.org/odata/ns/relatedlinks/fkDiaryToFDBProducts" title="fkDiaryToFDBProducts" href="https://morpheus.fritz.box/odata4/svc/my_nutri_diary/Diary(fkProfile=2,Ad..."/>
<a:category scheme="http://docs.oasis-open.org/odata/ns/scheme" term="#svc.1.my_nutri_diary.Diary"/>
<a:content type="application/xml">
<m:properties>
<d:fkProfile m:type="Int64">2</d:fkProfile>
<d:AddedDateTime m:type="DateTimeOffset">2019-03-04T19:42:53.148Z</d:AddedDateTime>
<d:fkIdCode m:type="Int64">1772</d:fkIdCode>
<d:product_name>Mélange fruits secs</d:product_name>
<d:brands>Agrosourcing</d:brands>
<d:DatabaseID m:type="Int16">0</d:DatabaseID>
<d:MealNumber>4</d:MealNumber>
<d:AmountInG m:type="Double">100.0</d:AmountInG>
<d:Calories m:null="true"/>
<d:ProteinsInG m:null="true"/>
<d:CarbohydratesInG m:null="true"/>
<d:SugarsInG m:null="true"/>
<d:FatsInG m:null="true"/>
<d:SaturatedFatsInG m:null="true"/>
<d:SaltsInG m:null="true"/>
<d:Diarycol m:null="true"/>
</m:properties>
</a:content>
</a:entry>
{noformat}
--------------------------------------------------------------
If I now query this sincle entity via the given url
https://morpheus.fritz.box/odata4/svc/my_nutri_diary/Diary(fkProfile=2,Ad...
I do not get the entity but the following error message:
Diese morpheus.fritz.box-Seite wurde nicht gefunden Für folgende Webadresse wurde keine Webseite gefunden: https://morpheus.fritz.box/odata4/svc/my_nutri_diary/Diary(fkProfile=2,Ad....
HTTP ERROR 404
I should also mention, the entity is correctly stored in the underlaying mysql database
!Bildschirmfoto 2019-03-04 um 20.47.19.png|thumbnail!
You see it does not depend on the format of the odata query. The urls were directly taken from the generated responses of the teiid server. Is my description sufficient ?
Here is the vdb code that was generated for the key including milliseconds:
{noformat}
CREATE FOREIGN TABLE Account (
idProfile long NOT NULL AUTO_INCREMENT OPTIONS (ANNOTATION '', NAMEINSOURCE '`idProfile`', NATIVE_TYPE 'BIGINT UNSIGNED'),
uuidUser string(36) NOT NULL OPTIONS (ANNOTATION '', NAMEINSOURCE '`uuidUser`', NATIVE_TYPE 'CHAR'),
CONSTRAINT "PRIMARY" PRIMARY KEY(idProfile),
CONSTRAINT idProfile_UNIQUE UNIQUE(idProfile),
CONSTRAINT uuidUser_UNIQUE UNIQUE(uuidUser)
) OPTIONS (ANNOTATION '', NAMEINSOURCE '`Account`', UPDATABLE TRUE);
CREATE FOREIGN TABLE Avatar (
fkProfile long NOT NULL OPTIONS (ANNOTATION '', NAMEINSOURCE '`fkProfile`', NATIVE_TYPE 'BIGINT UNSIGNED'),
AvatarImg blob(65535) OPTIONS (ANNOTATION '', NAMEINSOURCE '`AvatarImg`', NATIVE_TYPE 'BLOB'),
CONSTRAINT "PRIMARY" PRIMARY KEY(fkProfile),
CONSTRAINT fkProfile_UNIQUE UNIQUE(fkProfile),
CONSTRAINT fkAvatarToAccount FOREIGN KEY(fkProfile) REFERENCES Account (idProfile)
) OPTIONS (ANNOTATION '', NAMEINSOURCE '`Avatar`', UPDATABLE TRUE);
CREATE FOREIGN TABLE BodyWeight (
idBodyWeight long NOT NULL AUTO_INCREMENT OPTIONS (ANNOTATION 'We need a surrogate key here as Teiid requires a primary key on each table. fkProfile is not unique here as we can will have multiple weight measurements per person. Moreover, combining it with WeightMeasurementDateTime makes the index to compute intensive.', NAMEINSOURCE '`idBodyWeight`', NATIVE_TYPE 'BIGINT UNSIGNED'),
fkProfile long NOT NULL OPTIONS (ANNOTATION '', NAMEINSOURCE '`fkProfile`', NATIVE_TYPE 'BIGINT UNSIGNED'),
WeightMeasurementDateTime timestamp NOT NULL OPTIONS (ANNOTATION '', NAMEINSOURCE '`WeightMeasurementDateTime`', NATIVE_TYPE 'DATETIME'),
Weight float NOT NULL OPTIONS (ANNOTATION '', NAMEINSOURCE '`Weight`', NATIVE_TYPE 'FLOAT UNSIGNED'),
CONSTRAINT "PRIMARY" PRIMARY KEY(idBodyWeight),
CONSTRAINT idBodyWeight_UNIQUE UNIQUE(idBodyWeight),
CONSTRAINT fkBodyWeightToAccount FOREIGN KEY(fkProfile) REFERENCES Account (idProfile)
) OPTIONS (ANNOTATION '', NAMEINSOURCE '`BodyWeight`', UPDATABLE TRUE);
CREATE FOREIGN TABLE ConfigOptions (
fkProfile long NOT NULL OPTIONS (ANNOTATION '', NAMEINSOURCE '`fkProfile`', NATIVE_TYPE 'BIGINT UNSIGNED'),
MUnitWeight string(2) DEFAULT 'kg' OPTIONS (ANNOTATION '', NAMEINSOURCE '`MUnitWeight`', CHAR_OCTET_LENGTH 8, NATIVE_TYPE 'ENUM'),
MUnitLength string(2) DEFAULT 'cm' OPTIONS (ANNOTATION '', NAMEINSOURCE '`MUnitLength`', CHAR_OCTET_LENGTH 8, NATIVE_TYPE 'ENUM'),
MUnitEnergy string(4) DEFAULT 'kcal' OPTIONS (ANNOTATION '', NAMEINSOURCE '`MUnitEnergy`', CHAR_OCTET_LENGTH 16, NATIVE_TYPE 'ENUM'),
MUnitLiquids string(2) DEFAULT 'ml' OPTIONS (ANNOTATION '', NAMEINSOURCE '`MUnitLiquids`', CHAR_OCTET_LENGTH 8, NATIVE_TYPE 'ENUM'),
MUnitTime string(3) DEFAULT '24h' OPTIONS (ANNOTATION '', NAMEINSOURCE '`MUnitTime`', CHAR_OCTET_LENGTH 12, NATIVE_TYPE 'ENUM'),
EnableDrinkReminder boolean DEFAULT '0' OPTIONS (ANNOTATION '', NAMEINSOURCE '`EnableDrinkReminder`', NATIVE_TYPE 'BIT'),
PreferredCountryCodeForSearch string(2) DEFAULT 'de' OPTIONS (ANNOTATION '', NAMEINSOURCE '`PreferredCountryCodeForSearch`', CHAR_OCTET_LENGTH 8, NATIVE_TYPE 'VARCHAR'),
EnableInternationalSearch boolean DEFAULT '1' OPTIONS (ANNOTATION '', NAMEINSOURCE '`EnableInternationalSearch`', NATIVE_TYPE 'BIT'),
DaySpecificDietConfig boolean DEFAULT '0' OPTIONS (ANNOTATION '', NAMEINSOURCE '`DaySpecificDietConfig`', NATIVE_TYPE 'BIT'),
CONSTRAINT "PRIMARY" PRIMARY KEY(fkProfile),
CONSTRAINT fkProfile_UNIQUE UNIQUE(fkProfile),
CONSTRAINT fkConfigOptionsToAccount FOREIGN KEY(fkProfile) REFERENCES Account (idProfile)
) OPTIONS (ANNOTATION '', NAMEINSOURCE '`ConfigOptions`', UPDATABLE TRUE);
CREATE FOREIGN TABLE Diary (
fkProfile long NOT NULL OPTIONS (ANNOTATION '', NAMEINSOURCE '`fkProfile`', NATIVE_TYPE 'BIGINT UNSIGNED'),
AddedDateTime timestamp NOT NULL OPTIONS (ANNOTATION '', NAMEINSOURCE '`AddedDateTime`', NATIVE_TYPE 'DATETIME'),
fkIdCode long NOT NULL OPTIONS (ANNOTATION '', NAMEINSOURCE '`fkIdCode`', NATIVE_TYPE 'BIGINT UNSIGNED'),
product_name string(256) OPTIONS (ANNOTATION '', NAMEINSOURCE '`product_name`', CHAR_OCTET_LENGTH 1024, NATIVE_TYPE 'VARCHAR'),
brands string(384) OPTIONS (ANNOTATION '', NAMEINSOURCE '`brands`', CHAR_OCTET_LENGTH 1536, NATIVE_TYPE 'VARCHAR'),
DatabaseID short NOT NULL OPTIONS (ANNOTATION '', NAMEINSOURCE '`DatabaseID`', NATIVE_TYPE 'TINYINT UNSIGNED'),
MealNumber string(1) NOT NULL OPTIONS (ANNOTATION '', NAMEINSOURCE '`MealNumber`', CHAR_OCTET_LENGTH 4, NATIVE_TYPE 'ENUM'),
AmountInG double OPTIONS (ANNOTATION '', NAMEINSOURCE '`AmountInG`', NATIVE_TYPE 'DOUBLE'),
Calories double OPTIONS (ANNOTATION '', NAMEINSOURCE '`Calories`', NATIVE_TYPE 'DOUBLE'),
ProteinsInG double OPTIONS (ANNOTATION '', NAMEINSOURCE '`ProteinsInG`', NATIVE_TYPE 'DOUBLE'),
CarbohydratesInG double OPTIONS (ANNOTATION '', NAMEINSOURCE '`CarbohydratesInG`', NATIVE_TYPE 'DOUBLE'),
SugarsInG double OPTIONS (ANNOTATION '', NAMEINSOURCE '`SugarsInG`', NATIVE_TYPE 'DOUBLE'),
FatsInG double OPTIONS (ANNOTATION '', NAMEINSOURCE '`FatsInG`', NATIVE_TYPE 'DOUBLE'),
SaturatedFatsInG double OPTIONS (ANNOTATION '', NAMEINSOURCE '`SaturatedFatsInG`', NATIVE_TYPE 'DOUBLE'),
SaltsInG double OPTIONS (ANNOTATION '', NAMEINSOURCE '`SaltsInG`', NATIVE_TYPE 'DOUBLE'),
Diarycol string(45) OPTIONS (ANNOTATION '', NAMEINSOURCE '`Diarycol`', CHAR_OCTET_LENGTH 180, NATIVE_TYPE 'VARCHAR'),
CONSTRAINT "PRIMARY" PRIMARY KEY(fkProfile, AddedDateTime),
CONSTRAINT fkDiaryToFDBProducts FOREIGN KEY(fkIdCode) REFERENCES FDBProducts (idCode),
CONSTRAINT fkDiaryToAccount FOREIGN KEY(fkProfile) REFERENCES Account (idProfile)
) OPTIONS (ANNOTATION '', NAMEINSOURCE '`Diary`', UPDATABLE TRUE);
CREATE FOREIGN TABLE FDBProducts (
idCode long NOT NULL OPTIONS (ANNOTATION '', NAMEINSOURCE '`idCode`', NATIVE_TYPE 'BIGINT UNSIGNED'),
lc string(5) OPTIONS (ANNOTATION '', NAMEINSOURCE '`lc`', CHAR_OCTET_LENGTH 20, NATIVE_TYPE 'CHAR'),
product_name string(256) OPTIONS (ANNOTATION '', NAMEINSOURCE '`product_name`', CHAR_OCTET_LENGTH 1024, NATIVE_TYPE 'VARCHAR'),
origins string(512) OPTIONS (ANNOTATION '', NAMEINSOURCE '`origins`', CHAR_OCTET_LENGTH 2048, NATIVE_TYPE 'VARCHAR'),
brands string(384) OPTIONS (ANNOTATION '', NAMEINSOURCE '`brands`', CHAR_OCTET_LENGTH 1536, NATIVE_TYPE 'VARCHAR'),
quantity string(256) OPTIONS (ANNOTATION '', NAMEINSOURCE '`quantity`', CHAR_OCTET_LENGTH 1024, NATIVE_TYPE 'VARCHAR'),
nova_group string(1) OPTIONS (ANNOTATION '', NAMEINSOURCE '`nova_group`', CHAR_OCTET_LENGTH 4, NATIVE_TYPE 'CHAR'),
nutrition_grade_fr string(1) OPTIONS (ANNOTATION '', NAMEINSOURCE '`nutrition_grade_fr`', CHAR_OCTET_LENGTH 4, NATIVE_TYPE 'CHAR'),
energy_100g double OPTIONS (ANNOTATION '', NAMEINSOURCE '`energy_100g`', NATIVE_TYPE 'DOUBLE'),
carbohydrates_100g double OPTIONS (ANNOTATION '', NAMEINSOURCE '`carbohydrates_100g`', NATIVE_TYPE 'DOUBLE'),
sugars_100g double OPTIONS (ANNOTATION '', NAMEINSOURCE '`sugars_100g`', NATIVE_TYPE 'DOUBLE'),
proteins_100g double OPTIONS (ANNOTATION '', NAMEINSOURCE '`proteins_100g`', NATIVE_TYPE 'DOUBLE'),
fat_100g double OPTIONS (ANNOTATION '', NAMEINSOURCE '`fat_100g`', NATIVE_TYPE 'DOUBLE'),
saturated_fat_100g double OPTIONS (ANNOTATION '', NAMEINSOURCE '`saturated_fat_100g`', NATIVE_TYPE 'DOUBLE'),
saturated_fat_modifier string(3) OPTIONS (ANNOTATION '', NAMEINSOURCE '`saturated_fat_modifier`', CHAR_OCTET_LENGTH 12, NATIVE_TYPE 'CHAR'),
salt_100g double OPTIONS (ANNOTATION '', NAMEINSOURCE '`salt_100g`', NATIVE_TYPE 'DOUBLE'),
sodium_100g double OPTIONS (ANNOTATION '', NAMEINSOURCE '`sodium_100g`', NATIVE_TYPE 'DOUBLE'),
CONSTRAINT "PRIMARY" PRIMARY KEY(idCode),
CONSTRAINT code_UNIQUE UNIQUE(idCode)
) OPTIONS (ANNOTATION '', NAMEINSOURCE '`FDBProducts`', UPDATABLE TRUE);
CREATE FOREIGN TABLE MealConfigs (
fkProfile long NOT NULL OPTIONS (ANNOTATION '', NAMEINSOURCE '`fkProfile`', NATIVE_TYPE 'BIGINT UNSIGNED'),
Weekday string(1) NOT NULL OPTIONS (ANNOTATION '', NAMEINSOURCE '`Weekday`', CHAR_OCTET_LENGTH 4, NATIVE_TYPE 'ENUM'),
MealNumber string(1) NOT NULL OPTIONS (ANNOTATION '', NAMEINSOURCE '`MealNumber`', CHAR_OCTET_LENGTH 4, NATIVE_TYPE 'ENUM'),
WeekdaySortOrder long NOT NULL OPTIONS (ANNOTATION '', NAMEINSOURCE '`WeekdaySortOrder`', NATIVE_TYPE 'INT UNSIGNED'),
MealName string(45) DEFAULT 'strMeal' OPTIONS (ANNOTATION '', NAMEINSOURCE '`MealName`', CHAR_OCTET_LENGTH 180, NATIVE_TYPE 'VARCHAR'),
MealEnabled boolean OPTIONS (ANNOTATION '', NAMEINSOURCE '`MealEnabled`', NATIVE_TYPE 'BIT'),
MealStartTime time OPTIONS (ANNOTATION '', NAMEINSOURCE '`MealStartTime`', NATIVE_TYPE 'TIME'),
CONSTRAINT "PRIMARY" PRIMARY KEY(fkProfile, Weekday, MealNumber),
CONSTRAINT fkMealConfigToAccount FOREIGN KEY(fkProfile) REFERENCES Account (idProfile)
) OPTIONS (ANNOTATION '', NAMEINSOURCE '`MealConfigs`', UPDATABLE TRUE);
CREATE FOREIGN TABLE Profile (
fkProfile long NOT NULL OPTIONS (ANNOTATION '', NAMEINSOURCE '`fkProfile`', NATIVE_TYPE 'BIGINT UNSIGNED'),
BodyHeight float DEFAULT '0.000' OPTIONS (ANNOTATION '', NAMEINSOURCE '`BodyHeight`', NATIVE_TYPE 'FLOAT UNSIGNED'),
GoalWeight float DEFAULT '0.000' OPTIONS (ANNOTATION '', NAMEINSOURCE '`GoalWeight`', NATIVE_TYPE 'FLOAT UNSIGNED'),
Gender string(1) DEFAULT 'm' OPTIONS (ANNOTATION '', NAMEINSOURCE '`Gender`', CHAR_OCTET_LENGTH 4, NATIVE_TYPE 'ENUM'),
BirthDate date OPTIONS (ANNOTATION '', NAMEINSOURCE '`BirthDate`', NATIVE_TYPE 'DATE'),
ActivityLevel string(17) DEFAULT 'strActive' OPTIONS (ANNOTATION '', NAMEINSOURCE '`ActivityLevel`', CHAR_OCTET_LENGTH 68, NATIVE_TYPE 'ENUM'),
CONSTRAINT "PRIMARY" PRIMARY KEY(fkProfile),
CONSTRAINT fkProfile_UNIQUE UNIQUE(fkProfile),
CONSTRAINT fkProfileToAccount FOREIGN KEY(fkProfile) REFERENCES Account (idProfile)
) OPTIONS (ANNOTATION '', NAMEINSOURCE '`Profile`', UPDATABLE TRUE);
{noformat}
--------------------------
I do have one further note. After your description I also checked out if DateTime(6) would be an option which works. It results in mostly the same behaviour as for DateTime(3). There is one minor difference. I use Javascript Date object to create the DateTime(6) this has just millisecond resolution and adds 000 for the microsecond fractions. the DateTime(6) is correctly written to the mysql database afterwards.
Now to the difference. When Teiid generates links for DateTime(6) it skips the 000 in the generated url, hence the links look like DateTime(3).
> When using DateTime datatype with millisecond fractions, i.e DateTime(3) the resulting urls for the records are invalid
> -----------------------------------------------------------------------------------------------------------------------
>
> Key: TEIID-5672
> URL: https://issues.jboss.org/browse/TEIID-5672
> Project: Teiid
> Issue Type: Bug
> Affects Versions: 11.2.1
> Environment: Docker Container
> Reporter: Christoph John
> Assignee: Steven Hawkins
> Priority: Major
> Attachments: Bildschirmfoto 2019-03-04 um 20.47.19.png
>
>
> I am using a composite key based on a BIGINT and a DATETIME(3) value. The URLs which Teiid generates are invalid in this case. When using DATETIME(0) the links or ok. Example of generated record structure
> {code:java}
> <a:feed xmlns:a="http://www.w3.org/2005/Atom" xmlns:m="http://docs.oasis-open.org/odata/ns/metadata" xmlns:d="http://docs.oasis-open.org/odata/ns/data" m:context="https://morpheus.fritz.box/odata4/svc/my_nutri_diary/$metadata#Diary">
> <a:id>
> https://morpheus.fritz.box/odata4/svc/my_nutri_diary/Diary
> </a:id>
> <a:entry>
> <a:id>
> https://morpheus.fritz.box/odata4/svc/my_nutri_diary/Diary(fkProfile=2,Ad...
> </a:id>
> <a:title/>
> <a:summary/>
> <a:updated>2019-03-03T17:53:52Z</a:updated>
> <a:author>
> <a:name/>
> </a:author>
> <a:link rel="edit" href="https://morpheus.fritz.box/odata4/svc/my_nutri_diary/Diary(fkProfile=2,Ad..."/>
> <a:link rel="http://docs.oasis-open.org/odata/ns/related/fkDiaryToAccount" title="fkDiaryToAccount" href="https://morpheus.fritz.box/odata4/svc/my_nutri_diary/Diary(fkProfile=2,Ad..."/>
> <a:link rel="http://docs.oasis-open.org/odata/ns/related/fkDiaryToFDBProducts" title="fkDiaryToFDBProducts" href="https://morpheus.fritz.box/odata4/svc/my_nutri_diary/Diary(fkProfile=2,Ad..."/>
> <a:link rel="http://docs.oasis-open.org/odata/ns/relatedlinks/fkDiaryToAccount" title="fkDiaryToAccount" href="https://morpheus.fritz.box/odata4/svc/my_nutri_diary/Diary(fkProfile=2,Ad..."/>
> <a:link rel="http://docs.oasis-open.org/odata/ns/relatedlinks/fkDiaryToFDBProducts" title="fkDiaryToFDBProducts" href="https://morpheus.fritz.box/odata4/svc/my_nutri_diary/Diary(fkProfile=2,Ad..."/>
> <a:category scheme="http://docs.oasis-open.org/odata/ns/scheme" term="#svc.1.my_nutri_diary.Diary"/>
> <a:content type="application/xml">
> <m:properties>
> <d:fkProfile m:type="Int64">2</d:fkProfile>
> <d:AddedDateTime m:type="DateTimeOffset">2019-03-03T17:53:12.676Z</d:AddedDateTime>
> <d:fkIdCode m:type="Int64">1772</d:fkIdCode>
> <d:product_name>Mélange fruits secs</d:product_name>
> <d:brands>Agrosourcing</d:brands>
> <d:DatabaseID m:type="Int16">0</d:DatabaseID>
> <d:MealNumber>5</d:MealNumber>
> <d:AmountInG m:type="Double">100.0</d:AmountInG>
> <d:Calories m:type="Double">0.0</d:Calories>
> <d:ProteinsInG m:type="Double">-1.0</d:ProteinsInG>
> <d:CarbohydratesInG m:type="Double">-1.0</d:CarbohydratesInG>
> <d:SugarsInG m:type="Double">-1.0</d:SugarsInG>
> <d:FatsInG m:type="Double">-1.0</d:FatsInG>
> <d:SaturatedFatsInG m:type="Double">-1.0</d:SaturatedFatsInG>
> <d:SaltsInG m:type="Double">-1.0</d:SaltsInG>
> <d:Diarycol m:null="true"/>
> </m:properties>
> </a:content>
> </a:entry>
> {code}
> When I navigate to
> https://morpheus.fritz.box/odata4/svc/my_nutri_diary/Diary(fkProfile=2,Ad...
> I get HTTP ERROR 404 page not found. Note: I replaced ":"with "%3A" (urlencode) in the url which was required to work with the DateTime(0) primary keys. But this did not help either.
--
This message was sent by Atlassian Jira
(v7.12.1#712002)
7 years, 1 month
[JBoss JIRA] (TEIID-5672) When using DateTime datatype with millisecond fractions, i.e DateTime(3) the resulting urls for the records are invalid
by Christoph John (Jira)
[ https://issues.jboss.org/browse/TEIID-5672?page=com.atlassian.jira.plugin... ]
Christoph John edited comment on TEIID-5672 at 3/4/19 3:23 PM:
---------------------------------------------------------------
Yes, the encoding is done on client side. This is not the problem at that point.
OK, I will give two examples which make it clear that it is not a client side error. The first one is without DateTime fractions and everything is working as expected
Example 1:
If I query the collection https://morpheus.fritz.box/odata4/svc/my_nutri_diary/Diary
I get the list with entities. A single entity is looking as follows:
{noformat}
<a:entry>
<a:id>
https://morpheus.fritz.box/odata4/svc/my_nutri_diary/Diary(fkProfile=2,Ad...
</a:id>
<a:title/>
<a:summary/>
<a:updated>2019-03-04T15:07:44Z</a:updated>
<a:author>
<a:name/>
</a:author>
<a:link rel="edit" href="https://morpheus.fritz.box/odata4/svc/my_nutri_diary/Diary(fkProfile=2,Ad..."/>
<a:link rel="http://docs.oasis-open.org/odata/ns/related/fkDiaryToAccount" title="fkDiaryToAccount" href="https://morpheus.fritz.box/odata4/svc/my_nutri_diary/Diary(fkProfile=2,Ad..."/>
<a:link rel="http://docs.oasis-open.org/odata/ns/related/fkDiaryToFDBProducts" title="fkDiaryToFDBProducts" href="https://morpheus.fritz.box/odata4/svc/my_nutri_diary/Diary(fkProfile=2,Ad..."/>
<a:link rel="http://docs.oasis-open.org/odata/ns/relatedlinks/fkDiaryToAccount" title="fkDiaryToAccount" href="https://morpheus.fritz.box/odata4/svc/my_nutri_diary/Diary(fkProfile=2,Ad..."/>
<a:link rel="http://docs.oasis-open.org/odata/ns/relatedlinks/fkDiaryToFDBProducts" title="fkDiaryToFDBProducts" href="https://morpheus.fritz.box/odata4/svc/my_nutri_diary/Diary(fkProfile=2,Ad..."/>
<a:category scheme="http://docs.oasis-open.org/odata/ns/scheme" term="#svc.1.my_nutri_diary.Diary"/>
<a:content type="application/xml">
<m:properties>
<d:fkProfile m:type="Int64">2</d:fkProfile>
<d:AddedDateTime m:type="DateTimeOffset">2019-03-03T18:46:39Z</d:AddedDateTime>
<d:fkIdCode m:type="Int64">17</d:fkIdCode>
<d:product_name>Vitória crackers</d:product_name>
<d:brands>n/a</d:brands>
<d:DatabaseID m:type="Int16">0</d:DatabaseID>
<d:MealNumber>0</d:MealNumber>
<d:AmountInG m:type="Double">200.0</d:AmountInG>
<d:Calories m:type="Double">375.0</d:Calories>
<d:ProteinsInG m:type="Double">7.8</d:ProteinsInG>
<d:CarbohydratesInG m:type="Double">70.1</d:CarbohydratesInG>
<d:SugarsInG m:type="Double">15.0</d:SugarsInG>
<d:FatsInG m:type="Double">7.0</d:FatsInG>
<d:SaturatedFatsInG m:type="Double">3.08</d:SaturatedFatsInG>
<d:SaltsInG m:type="Double">1.4</d:SaltsInG>
<d:Diarycol m:null="true"/>
</m:properties>
</a:content>
</a:entry>
{noformat}
--------------------
When I select this entity via the following url, I get the entity as response as I expect.
https://morpheus.fritz.box/odata4/svc/my_nutri_diary/Diary(fkProfile=2,Ad...
-----------------------------------------------------------------------
Example 2: Now using millisecond format
Again, when I query the collection via
https://morpheus.fritz.box/odata4/svc/my_nutri_diary/Diary
I get a list with the entities. Here an example item with millisecond key
{noformat}
<a:entry>
<a:id>
https://morpheus.fritz.box/odata4/svc/my_nutri_diary/Diary(fkProfile=2,Ad...
</a:id>
<a:title/>
<a:summary/>
<a:updated>2019-03-04T19:43:08Z</a:updated>
<a:author>
<a:name/>
</a:author>
<a:link rel="edit" href="https://morpheus.fritz.box/odata4/svc/my_nutri_diary/Diary(fkProfile=2,Ad..."/>
<a:link rel="http://docs.oasis-open.org/odata/ns/related/fkDiaryToAccount" title="fkDiaryToAccount" href="https://morpheus.fritz.box/odata4/svc/my_nutri_diary/Diary(fkProfile=2,Ad..."/>
<a:link rel="http://docs.oasis-open.org/odata/ns/related/fkDiaryToFDBProducts" title="fkDiaryToFDBProducts" href="https://morpheus.fritz.box/odata4/svc/my_nutri_diary/Diary(fkProfile=2,Ad..."/>
<a:link rel="http://docs.oasis-open.org/odata/ns/relatedlinks/fkDiaryToAccount" title="fkDiaryToAccount" href="https://morpheus.fritz.box/odata4/svc/my_nutri_diary/Diary(fkProfile=2,Ad..."/>
<a:link rel="http://docs.oasis-open.org/odata/ns/relatedlinks/fkDiaryToFDBProducts" title="fkDiaryToFDBProducts" href="https://morpheus.fritz.box/odata4/svc/my_nutri_diary/Diary(fkProfile=2,Ad..."/>
<a:category scheme="http://docs.oasis-open.org/odata/ns/scheme" term="#svc.1.my_nutri_diary.Diary"/>
<a:content type="application/xml">
<m:properties>
<d:fkProfile m:type="Int64">2</d:fkProfile>
<d:AddedDateTime m:type="DateTimeOffset">2019-03-04T19:42:53.148Z</d:AddedDateTime>
<d:fkIdCode m:type="Int64">1772</d:fkIdCode>
<d:product_name>Mélange fruits secs</d:product_name>
<d:brands>Agrosourcing</d:brands>
<d:DatabaseID m:type="Int16">0</d:DatabaseID>
<d:MealNumber>4</d:MealNumber>
<d:AmountInG m:type="Double">100.0</d:AmountInG>
<d:Calories m:null="true"/>
<d:ProteinsInG m:null="true"/>
<d:CarbohydratesInG m:null="true"/>
<d:SugarsInG m:null="true"/>
<d:FatsInG m:null="true"/>
<d:SaturatedFatsInG m:null="true"/>
<d:SaltsInG m:null="true"/>
<d:Diarycol m:null="true"/>
</m:properties>
</a:content>
</a:entry>
{noformat}
--------------------------------------------------------------
If I now query this sincle entity via the given url
https://morpheus.fritz.box/odata4/svc/my_nutri_diary/Diary(fkProfile=2,Ad...
I do not get the entity but the following error message:
Diese morpheus.fritz.box-Seite wurde nicht gefunden Für folgende Webadresse wurde keine Webseite gefunden: https://morpheus.fritz.box/odata4/svc/my_nutri_diary/Diary(fkProfile=2,Ad....
HTTP ERROR 404
I should also mention, the entity is correctly stored in the underlaying mysql database
!Bildschirmfoto 2019-03-04 um 20.47.19.png|thumbnail!
You see it does not depend on the format of the odata query. The urls were directly taken from the generated responses of the teiid server. Is my description sufficient ?
Here is the vdb code that was generated for the key including milliseconds:
{noformat}
CREATE FOREIGN TABLE Account (
idProfile long NOT NULL AUTO_INCREMENT OPTIONS (ANNOTATION '', NAMEINSOURCE '`idProfile`', NATIVE_TYPE 'BIGINT UNSIGNED'),
uuidUser string(36) NOT NULL OPTIONS (ANNOTATION '', NAMEINSOURCE '`uuidUser`', NATIVE_TYPE 'CHAR'),
CONSTRAINT "PRIMARY" PRIMARY KEY(idProfile),
CONSTRAINT idProfile_UNIQUE UNIQUE(idProfile),
CONSTRAINT uuidUser_UNIQUE UNIQUE(uuidUser)
) OPTIONS (ANNOTATION '', NAMEINSOURCE '`Account`', UPDATABLE TRUE);
CREATE FOREIGN TABLE Avatar (
fkProfile long NOT NULL OPTIONS (ANNOTATION '', NAMEINSOURCE '`fkProfile`', NATIVE_TYPE 'BIGINT UNSIGNED'),
AvatarImg blob(65535) OPTIONS (ANNOTATION '', NAMEINSOURCE '`AvatarImg`', NATIVE_TYPE 'BLOB'),
CONSTRAINT "PRIMARY" PRIMARY KEY(fkProfile),
CONSTRAINT fkProfile_UNIQUE UNIQUE(fkProfile),
CONSTRAINT fkAvatarToAccount FOREIGN KEY(fkProfile) REFERENCES Account (idProfile)
) OPTIONS (ANNOTATION '', NAMEINSOURCE '`Avatar`', UPDATABLE TRUE);
CREATE FOREIGN TABLE BodyWeight (
idBodyWeight long NOT NULL AUTO_INCREMENT OPTIONS (ANNOTATION 'We need a surrogate key here as Teiid requires a primary key on each table. fkProfile is not unique here as we can will have multiple weight measurements per person. Moreover, combining it with WeightMeasurementDateTime makes the index to compute intensive.', NAMEINSOURCE '`idBodyWeight`', NATIVE_TYPE 'BIGINT UNSIGNED'),
fkProfile long NOT NULL OPTIONS (ANNOTATION '', NAMEINSOURCE '`fkProfile`', NATIVE_TYPE 'BIGINT UNSIGNED'),
WeightMeasurementDateTime timestamp NOT NULL OPTIONS (ANNOTATION '', NAMEINSOURCE '`WeightMeasurementDateTime`', NATIVE_TYPE 'DATETIME'),
Weight float NOT NULL OPTIONS (ANNOTATION '', NAMEINSOURCE '`Weight`', NATIVE_TYPE 'FLOAT UNSIGNED'),
CONSTRAINT "PRIMARY" PRIMARY KEY(idBodyWeight),
CONSTRAINT idBodyWeight_UNIQUE UNIQUE(idBodyWeight),
CONSTRAINT fkBodyWeightToAccount FOREIGN KEY(fkProfile) REFERENCES Account (idProfile)
) OPTIONS (ANNOTATION '', NAMEINSOURCE '`BodyWeight`', UPDATABLE TRUE);
CREATE FOREIGN TABLE ConfigOptions (
fkProfile long NOT NULL OPTIONS (ANNOTATION '', NAMEINSOURCE '`fkProfile`', NATIVE_TYPE 'BIGINT UNSIGNED'),
MUnitWeight string(2) DEFAULT 'kg' OPTIONS (ANNOTATION '', NAMEINSOURCE '`MUnitWeight`', CHAR_OCTET_LENGTH 8, NATIVE_TYPE 'ENUM'),
MUnitLength string(2) DEFAULT 'cm' OPTIONS (ANNOTATION '', NAMEINSOURCE '`MUnitLength`', CHAR_OCTET_LENGTH 8, NATIVE_TYPE 'ENUM'),
MUnitEnergy string(4) DEFAULT 'kcal' OPTIONS (ANNOTATION '', NAMEINSOURCE '`MUnitEnergy`', CHAR_OCTET_LENGTH 16, NATIVE_TYPE 'ENUM'),
MUnitLiquids string(2) DEFAULT 'ml' OPTIONS (ANNOTATION '', NAMEINSOURCE '`MUnitLiquids`', CHAR_OCTET_LENGTH 8, NATIVE_TYPE 'ENUM'),
MUnitTime string(3) DEFAULT '24h' OPTIONS (ANNOTATION '', NAMEINSOURCE '`MUnitTime`', CHAR_OCTET_LENGTH 12, NATIVE_TYPE 'ENUM'),
EnableDrinkReminder boolean DEFAULT '0' OPTIONS (ANNOTATION '', NAMEINSOURCE '`EnableDrinkReminder`', NATIVE_TYPE 'BIT'),
PreferredCountryCodeForSearch string(2) DEFAULT 'de' OPTIONS (ANNOTATION '', NAMEINSOURCE '`PreferredCountryCodeForSearch`', CHAR_OCTET_LENGTH 8, NATIVE_TYPE 'VARCHAR'),
EnableInternationalSearch boolean DEFAULT '1' OPTIONS (ANNOTATION '', NAMEINSOURCE '`EnableInternationalSearch`', NATIVE_TYPE 'BIT'),
DaySpecificDietConfig boolean DEFAULT '0' OPTIONS (ANNOTATION '', NAMEINSOURCE '`DaySpecificDietConfig`', NATIVE_TYPE 'BIT'),
CONSTRAINT "PRIMARY" PRIMARY KEY(fkProfile),
CONSTRAINT fkProfile_UNIQUE UNIQUE(fkProfile),
CONSTRAINT fkConfigOptionsToAccount FOREIGN KEY(fkProfile) REFERENCES Account (idProfile)
) OPTIONS (ANNOTATION '', NAMEINSOURCE '`ConfigOptions`', UPDATABLE TRUE);
CREATE FOREIGN TABLE Diary (
fkProfile long NOT NULL OPTIONS (ANNOTATION '', NAMEINSOURCE '`fkProfile`', NATIVE_TYPE 'BIGINT UNSIGNED'),
AddedDateTime timestamp NOT NULL OPTIONS (ANNOTATION '', NAMEINSOURCE '`AddedDateTime`', NATIVE_TYPE 'DATETIME'),
fkIdCode long NOT NULL OPTIONS (ANNOTATION '', NAMEINSOURCE '`fkIdCode`', NATIVE_TYPE 'BIGINT UNSIGNED'),
product_name string(256) OPTIONS (ANNOTATION '', NAMEINSOURCE '`product_name`', CHAR_OCTET_LENGTH 1024, NATIVE_TYPE 'VARCHAR'),
brands string(384) OPTIONS (ANNOTATION '', NAMEINSOURCE '`brands`', CHAR_OCTET_LENGTH 1536, NATIVE_TYPE 'VARCHAR'),
DatabaseID short NOT NULL OPTIONS (ANNOTATION '', NAMEINSOURCE '`DatabaseID`', NATIVE_TYPE 'TINYINT UNSIGNED'),
MealNumber string(1) NOT NULL OPTIONS (ANNOTATION '', NAMEINSOURCE '`MealNumber`', CHAR_OCTET_LENGTH 4, NATIVE_TYPE 'ENUM'),
AmountInG double OPTIONS (ANNOTATION '', NAMEINSOURCE '`AmountInG`', NATIVE_TYPE 'DOUBLE'),
Calories double OPTIONS (ANNOTATION '', NAMEINSOURCE '`Calories`', NATIVE_TYPE 'DOUBLE'),
ProteinsInG double OPTIONS (ANNOTATION '', NAMEINSOURCE '`ProteinsInG`', NATIVE_TYPE 'DOUBLE'),
CarbohydratesInG double OPTIONS (ANNOTATION '', NAMEINSOURCE '`CarbohydratesInG`', NATIVE_TYPE 'DOUBLE'),
SugarsInG double OPTIONS (ANNOTATION '', NAMEINSOURCE '`SugarsInG`', NATIVE_TYPE 'DOUBLE'),
FatsInG double OPTIONS (ANNOTATION '', NAMEINSOURCE '`FatsInG`', NATIVE_TYPE 'DOUBLE'),
SaturatedFatsInG double OPTIONS (ANNOTATION '', NAMEINSOURCE '`SaturatedFatsInG`', NATIVE_TYPE 'DOUBLE'),
SaltsInG double OPTIONS (ANNOTATION '', NAMEINSOURCE '`SaltsInG`', NATIVE_TYPE 'DOUBLE'),
Diarycol string(45) OPTIONS (ANNOTATION '', NAMEINSOURCE '`Diarycol`', CHAR_OCTET_LENGTH 180, NATIVE_TYPE 'VARCHAR'),
CONSTRAINT "PRIMARY" PRIMARY KEY(fkProfile, AddedDateTime),
CONSTRAINT fkDiaryToFDBProducts FOREIGN KEY(fkIdCode) REFERENCES FDBProducts (idCode),
CONSTRAINT fkDiaryToAccount FOREIGN KEY(fkProfile) REFERENCES Account (idProfile)
) OPTIONS (ANNOTATION '', NAMEINSOURCE '`Diary`', UPDATABLE TRUE);
CREATE FOREIGN TABLE FDBProducts (
idCode long NOT NULL OPTIONS (ANNOTATION '', NAMEINSOURCE '`idCode`', NATIVE_TYPE 'BIGINT UNSIGNED'),
lc string(5) OPTIONS (ANNOTATION '', NAMEINSOURCE '`lc`', CHAR_OCTET_LENGTH 20, NATIVE_TYPE 'CHAR'),
product_name string(256) OPTIONS (ANNOTATION '', NAMEINSOURCE '`product_name`', CHAR_OCTET_LENGTH 1024, NATIVE_TYPE 'VARCHAR'),
origins string(512) OPTIONS (ANNOTATION '', NAMEINSOURCE '`origins`', CHAR_OCTET_LENGTH 2048, NATIVE_TYPE 'VARCHAR'),
brands string(384) OPTIONS (ANNOTATION '', NAMEINSOURCE '`brands`', CHAR_OCTET_LENGTH 1536, NATIVE_TYPE 'VARCHAR'),
quantity string(256) OPTIONS (ANNOTATION '', NAMEINSOURCE '`quantity`', CHAR_OCTET_LENGTH 1024, NATIVE_TYPE 'VARCHAR'),
nova_group string(1) OPTIONS (ANNOTATION '', NAMEINSOURCE '`nova_group`', CHAR_OCTET_LENGTH 4, NATIVE_TYPE 'CHAR'),
nutrition_grade_fr string(1) OPTIONS (ANNOTATION '', NAMEINSOURCE '`nutrition_grade_fr`', CHAR_OCTET_LENGTH 4, NATIVE_TYPE 'CHAR'),
energy_100g double OPTIONS (ANNOTATION '', NAMEINSOURCE '`energy_100g`', NATIVE_TYPE 'DOUBLE'),
carbohydrates_100g double OPTIONS (ANNOTATION '', NAMEINSOURCE '`carbohydrates_100g`', NATIVE_TYPE 'DOUBLE'),
sugars_100g double OPTIONS (ANNOTATION '', NAMEINSOURCE '`sugars_100g`', NATIVE_TYPE 'DOUBLE'),
proteins_100g double OPTIONS (ANNOTATION '', NAMEINSOURCE '`proteins_100g`', NATIVE_TYPE 'DOUBLE'),
fat_100g double OPTIONS (ANNOTATION '', NAMEINSOURCE '`fat_100g`', NATIVE_TYPE 'DOUBLE'),
saturated_fat_100g double OPTIONS (ANNOTATION '', NAMEINSOURCE '`saturated_fat_100g`', NATIVE_TYPE 'DOUBLE'),
saturated_fat_modifier string(3) OPTIONS (ANNOTATION '', NAMEINSOURCE '`saturated_fat_modifier`', CHAR_OCTET_LENGTH 12, NATIVE_TYPE 'CHAR'),
salt_100g double OPTIONS (ANNOTATION '', NAMEINSOURCE '`salt_100g`', NATIVE_TYPE 'DOUBLE'),
sodium_100g double OPTIONS (ANNOTATION '', NAMEINSOURCE '`sodium_100g`', NATIVE_TYPE 'DOUBLE'),
CONSTRAINT "PRIMARY" PRIMARY KEY(idCode),
CONSTRAINT code_UNIQUE UNIQUE(idCode)
) OPTIONS (ANNOTATION '', NAMEINSOURCE '`FDBProducts`', UPDATABLE TRUE);
CREATE FOREIGN TABLE MealConfigs (
fkProfile long NOT NULL OPTIONS (ANNOTATION '', NAMEINSOURCE '`fkProfile`', NATIVE_TYPE 'BIGINT UNSIGNED'),
Weekday string(1) NOT NULL OPTIONS (ANNOTATION '', NAMEINSOURCE '`Weekday`', CHAR_OCTET_LENGTH 4, NATIVE_TYPE 'ENUM'),
MealNumber string(1) NOT NULL OPTIONS (ANNOTATION '', NAMEINSOURCE '`MealNumber`', CHAR_OCTET_LENGTH 4, NATIVE_TYPE 'ENUM'),
WeekdaySortOrder long NOT NULL OPTIONS (ANNOTATION '', NAMEINSOURCE '`WeekdaySortOrder`', NATIVE_TYPE 'INT UNSIGNED'),
MealName string(45) DEFAULT 'strMeal' OPTIONS (ANNOTATION '', NAMEINSOURCE '`MealName`', CHAR_OCTET_LENGTH 180, NATIVE_TYPE 'VARCHAR'),
MealEnabled boolean OPTIONS (ANNOTATION '', NAMEINSOURCE '`MealEnabled`', NATIVE_TYPE 'BIT'),
MealStartTime time OPTIONS (ANNOTATION '', NAMEINSOURCE '`MealStartTime`', NATIVE_TYPE 'TIME'),
CONSTRAINT "PRIMARY" PRIMARY KEY(fkProfile, Weekday, MealNumber),
CONSTRAINT fkMealConfigToAccount FOREIGN KEY(fkProfile) REFERENCES Account (idProfile)
) OPTIONS (ANNOTATION '', NAMEINSOURCE '`MealConfigs`', UPDATABLE TRUE);
CREATE FOREIGN TABLE Profile (
fkProfile long NOT NULL OPTIONS (ANNOTATION '', NAMEINSOURCE '`fkProfile`', NATIVE_TYPE 'BIGINT UNSIGNED'),
BodyHeight float DEFAULT '0.000' OPTIONS (ANNOTATION '', NAMEINSOURCE '`BodyHeight`', NATIVE_TYPE 'FLOAT UNSIGNED'),
GoalWeight float DEFAULT '0.000' OPTIONS (ANNOTATION '', NAMEINSOURCE '`GoalWeight`', NATIVE_TYPE 'FLOAT UNSIGNED'),
Gender string(1) DEFAULT 'm' OPTIONS (ANNOTATION '', NAMEINSOURCE '`Gender`', CHAR_OCTET_LENGTH 4, NATIVE_TYPE 'ENUM'),
BirthDate date OPTIONS (ANNOTATION '', NAMEINSOURCE '`BirthDate`', NATIVE_TYPE 'DATE'),
ActivityLevel string(17) DEFAULT 'strActive' OPTIONS (ANNOTATION '', NAMEINSOURCE '`ActivityLevel`', CHAR_OCTET_LENGTH 68, NATIVE_TYPE 'ENUM'),
CONSTRAINT "PRIMARY" PRIMARY KEY(fkProfile),
CONSTRAINT fkProfile_UNIQUE UNIQUE(fkProfile),
CONSTRAINT fkProfileToAccount FOREIGN KEY(fkProfile) REFERENCES Account (idProfile)
) OPTIONS (ANNOTATION '', NAMEINSOURCE '`Profile`', UPDATABLE TRUE);
{noformat}
--------------------------
I do have one further note. After your description I also checked out if DateTime(6) would be an option which works. It results in mostly the same behaviour as for DateTime(3). There is one minor difference. I use Javascript Date object to create the DateTime(6) this has just millisecond resolution and adds 000 for the microsecond fractions. the DateTime(6) is correctly written to the mysql database afterwards.
Now to the difference. When Teiid generates links for DateTime(6) it skips the 000 in the generated url, hence the links look like DateTime(3).
was (Author: cjohn001):
Yes, the encoding is done on client side. This is not the problem at that point.
OK, I will give two examples which make it clear that it is not a client side error. The first one is without DateTime fractions and everything is working as expected
Example 1:
If I query the collection https://morpheus.fritz.box/odata4/svc/my_nutri_diary/Diary
I get the list with entities. A single entity is looking as follows:
{noformat}
<a:entry>
<a:id>
https://morpheus.fritz.box/odata4/svc/my_nutri_diary/Diary(fkProfile=2,Ad...
</a:id>
<a:title/>
<a:summary/>
<a:updated>2019-03-04T15:07:44Z</a:updated>
<a:author>
<a:name/>
</a:author>
<a:link rel="edit" href="https://morpheus.fritz.box/odata4/svc/my_nutri_diary/Diary(fkProfile=2,Ad..."/>
<a:link rel="http://docs.oasis-open.org/odata/ns/related/fkDiaryToAccount" title="fkDiaryToAccount" href="https://morpheus.fritz.box/odata4/svc/my_nutri_diary/Diary(fkProfile=2,Ad..."/>
<a:link rel="http://docs.oasis-open.org/odata/ns/related/fkDiaryToFDBProducts" title="fkDiaryToFDBProducts" href="https://morpheus.fritz.box/odata4/svc/my_nutri_diary/Diary(fkProfile=2,Ad..."/>
<a:link rel="http://docs.oasis-open.org/odata/ns/relatedlinks/fkDiaryToAccount" title="fkDiaryToAccount" href="https://morpheus.fritz.box/odata4/svc/my_nutri_diary/Diary(fkProfile=2,Ad..."/>
<a:link rel="http://docs.oasis-open.org/odata/ns/relatedlinks/fkDiaryToFDBProducts" title="fkDiaryToFDBProducts" href="https://morpheus.fritz.box/odata4/svc/my_nutri_diary/Diary(fkProfile=2,Ad..."/>
<a:category scheme="http://docs.oasis-open.org/odata/ns/scheme" term="#svc.1.my_nutri_diary.Diary"/>
<a:content type="application/xml">
<m:properties>
<d:fkProfile m:type="Int64">2</d:fkProfile>
<d:AddedDateTime m:type="DateTimeOffset">2019-03-03T18:46:39Z</d:AddedDateTime>
<d:fkIdCode m:type="Int64">17</d:fkIdCode>
<d:product_name>Vitória crackers</d:product_name>
<d:brands>n/a</d:brands>
<d:DatabaseID m:type="Int16">0</d:DatabaseID>
<d:MealNumber>0</d:MealNumber>
<d:AmountInG m:type="Double">200.0</d:AmountInG>
<d:Calories m:type="Double">375.0</d:Calories>
<d:ProteinsInG m:type="Double">7.8</d:ProteinsInG>
<d:CarbohydratesInG m:type="Double">70.1</d:CarbohydratesInG>
<d:SugarsInG m:type="Double">15.0</d:SugarsInG>
<d:FatsInG m:type="Double">7.0</d:FatsInG>
<d:SaturatedFatsInG m:type="Double">3.08</d:SaturatedFatsInG>
<d:SaltsInG m:type="Double">1.4</d:SaltsInG>
<d:Diarycol m:null="true"/>
</m:properties>
</a:content>
</a:entry>
{noformat}
--------------------
When I select this entity via the following url, I get the entity as response as I expect.
https://morpheus.fritz.box/odata4/svc/my_nutri_diary/Diary(fkProfile=2,Ad...
-----------------------------------------------------------------------
Example 2: Now using millisecond format
Again, when I query the collection via
https://morpheus.fritz.box/odata4/svc/my_nutri_diary/Diary
I get a list with the entities. Here an example item with millisecond key
{noformat}
<a:entry>
<a:id>
https://morpheus.fritz.box/odata4/svc/my_nutri_diary/Diary(fkProfile=2,Ad...
</a:id>
<a:title/>
<a:summary/>
<a:updated>2019-03-04T19:43:08Z</a:updated>
<a:author>
<a:name/>
</a:author>
<a:link rel="edit" href="https://morpheus.fritz.box/odata4/svc/my_nutri_diary/Diary(fkProfile=2,Ad..."/>
<a:link rel="http://docs.oasis-open.org/odata/ns/related/fkDiaryToAccount" title="fkDiaryToAccount" href="https://morpheus.fritz.box/odata4/svc/my_nutri_diary/Diary(fkProfile=2,Ad..."/>
<a:link rel="http://docs.oasis-open.org/odata/ns/related/fkDiaryToFDBProducts" title="fkDiaryToFDBProducts" href="https://morpheus.fritz.box/odata4/svc/my_nutri_diary/Diary(fkProfile=2,Ad..."/>
<a:link rel="http://docs.oasis-open.org/odata/ns/relatedlinks/fkDiaryToAccount" title="fkDiaryToAccount" href="https://morpheus.fritz.box/odata4/svc/my_nutri_diary/Diary(fkProfile=2,Ad..."/>
<a:link rel="http://docs.oasis-open.org/odata/ns/relatedlinks/fkDiaryToFDBProducts" title="fkDiaryToFDBProducts" href="https://morpheus.fritz.box/odata4/svc/my_nutri_diary/Diary(fkProfile=2,Ad..."/>
<a:category scheme="http://docs.oasis-open.org/odata/ns/scheme" term="#svc.1.my_nutri_diary.Diary"/>
<a:content type="application/xml">
<m:properties>
<d:fkProfile m:type="Int64">2</d:fkProfile>
<d:AddedDateTime m:type="DateTimeOffset">2019-03-04T19:42:53.148Z</d:AddedDateTime>
<d:fkIdCode m:type="Int64">1772</d:fkIdCode>
<d:product_name>Mélange fruits secs</d:product_name>
<d:brands>Agrosourcing</d:brands>
<d:DatabaseID m:type="Int16">0</d:DatabaseID>
<d:MealNumber>4</d:MealNumber>
<d:AmountInG m:type="Double">100.0</d:AmountInG>
<d:Calories m:null="true"/>
<d:ProteinsInG m:null="true"/>
<d:CarbohydratesInG m:null="true"/>
<d:SugarsInG m:null="true"/>
<d:FatsInG m:null="true"/>
<d:SaturatedFatsInG m:null="true"/>
<d:SaltsInG m:null="true"/>
<d:Diarycol m:null="true"/>
</m:properties>
</a:content>
</a:entry>
{noformat}
--------------------------------------------------------------
If I now query this sincle entity via the given url
https://morpheus.fritz.box/odata4/svc/my_nutri_diary/Diary(fkProfile=2,Ad...
I do not get the entity but the following error message:
Diese morpheus.fritz.box-Seite wurde nicht gefunden Für folgende Webadresse wurde keine Webseite gefunden: https://morpheus.fritz.box/odata4/svc/my_nutri_diary/Diary(fkProfile=2,Ad....
HTTP ERROR 404
I should also mention, the entity is correctly stored in the underlaying mysql database
!Bildschirmfoto 2019-03-04 um 20.47.19.png|thumbnail!
You see it does not depend on the format of the odata query. The urls were directly taken from the generated responses of the teiid server. Is my description sufficient ?
Here is the vdb code that was generated for the key including milliseconds:
{noformat}
CREATE FOREIGN TABLE Account (
idProfile long NOT NULL AUTO_INCREMENT OPTIONS (ANNOTATION '', NAMEINSOURCE '`idProfile`', NATIVE_TYPE 'BIGINT UNSIGNED'),
uuidUser string(36) NOT NULL OPTIONS (ANNOTATION '', NAMEINSOURCE '`uuidUser`', NATIVE_TYPE 'CHAR'),
CONSTRAINT "PRIMARY" PRIMARY KEY(idProfile),
CONSTRAINT idProfile_UNIQUE UNIQUE(idProfile),
CONSTRAINT uuidUser_UNIQUE UNIQUE(uuidUser)
) OPTIONS (ANNOTATION '', NAMEINSOURCE '`Account`', UPDATABLE TRUE);
CREATE FOREIGN TABLE Avatar (
fkProfile long NOT NULL OPTIONS (ANNOTATION '', NAMEINSOURCE '`fkProfile`', NATIVE_TYPE 'BIGINT UNSIGNED'),
AvatarImg blob(65535) OPTIONS (ANNOTATION '', NAMEINSOURCE '`AvatarImg`', NATIVE_TYPE 'BLOB'),
CONSTRAINT "PRIMARY" PRIMARY KEY(fkProfile),
CONSTRAINT fkProfile_UNIQUE UNIQUE(fkProfile),
CONSTRAINT fkAvatarToAccount FOREIGN KEY(fkProfile) REFERENCES Account (idProfile)
) OPTIONS (ANNOTATION '', NAMEINSOURCE '`Avatar`', UPDATABLE TRUE);
CREATE FOREIGN TABLE BodyWeight (
idBodyWeight long NOT NULL AUTO_INCREMENT OPTIONS (ANNOTATION 'We need a surrogate key here as Teiid requires a primary key on each table. fkProfile is not unique here as we can will have multiple weight measurements per person. Moreover, combining it with WeightMeasurementDateTime makes the index to compute intensive.', NAMEINSOURCE '`idBodyWeight`', NATIVE_TYPE 'BIGINT UNSIGNED'),
fkProfile long NOT NULL OPTIONS (ANNOTATION '', NAMEINSOURCE '`fkProfile`', NATIVE_TYPE 'BIGINT UNSIGNED'),
WeightMeasurementDateTime timestamp NOT NULL OPTIONS (ANNOTATION '', NAMEINSOURCE '`WeightMeasurementDateTime`', NATIVE_TYPE 'DATETIME'),
Weight float NOT NULL OPTIONS (ANNOTATION '', NAMEINSOURCE '`Weight`', NATIVE_TYPE 'FLOAT UNSIGNED'),
CONSTRAINT "PRIMARY" PRIMARY KEY(idBodyWeight),
CONSTRAINT idBodyWeight_UNIQUE UNIQUE(idBodyWeight),
CONSTRAINT fkBodyWeightToAccount FOREIGN KEY(fkProfile) REFERENCES Account (idProfile)
) OPTIONS (ANNOTATION '', NAMEINSOURCE '`BodyWeight`', UPDATABLE TRUE);
CREATE FOREIGN TABLE ConfigOptions (
fkProfile long NOT NULL OPTIONS (ANNOTATION '', NAMEINSOURCE '`fkProfile`', NATIVE_TYPE 'BIGINT UNSIGNED'),
MUnitWeight string(2) DEFAULT 'kg' OPTIONS (ANNOTATION '', NAMEINSOURCE '`MUnitWeight`', CHAR_OCTET_LENGTH 8, NATIVE_TYPE 'ENUM'),
MUnitLength string(2) DEFAULT 'cm' OPTIONS (ANNOTATION '', NAMEINSOURCE '`MUnitLength`', CHAR_OCTET_LENGTH 8, NATIVE_TYPE 'ENUM'),
MUnitEnergy string(4) DEFAULT 'kcal' OPTIONS (ANNOTATION '', NAMEINSOURCE '`MUnitEnergy`', CHAR_OCTET_LENGTH 16, NATIVE_TYPE 'ENUM'),
MUnitLiquids string(2) DEFAULT 'ml' OPTIONS (ANNOTATION '', NAMEINSOURCE '`MUnitLiquids`', CHAR_OCTET_LENGTH 8, NATIVE_TYPE 'ENUM'),
MUnitTime string(3) DEFAULT '24h' OPTIONS (ANNOTATION '', NAMEINSOURCE '`MUnitTime`', CHAR_OCTET_LENGTH 12, NATIVE_TYPE 'ENUM'),
EnableDrinkReminder boolean DEFAULT '0' OPTIONS (ANNOTATION '', NAMEINSOURCE '`EnableDrinkReminder`', NATIVE_TYPE 'BIT'),
PreferredCountryCodeForSearch string(2) DEFAULT 'de' OPTIONS (ANNOTATION '', NAMEINSOURCE '`PreferredCountryCodeForSearch`', CHAR_OCTET_LENGTH 8, NATIVE_TYPE 'VARCHAR'),
EnableInternationalSearch boolean DEFAULT '1' OPTIONS (ANNOTATION '', NAMEINSOURCE '`EnableInternationalSearch`', NATIVE_TYPE 'BIT'),
DaySpecificDietConfig boolean DEFAULT '0' OPTIONS (ANNOTATION '', NAMEINSOURCE '`DaySpecificDietConfig`', NATIVE_TYPE 'BIT'),
CONSTRAINT "PRIMARY" PRIMARY KEY(fkProfile),
CONSTRAINT fkProfile_UNIQUE UNIQUE(fkProfile),
CONSTRAINT fkConfigOptionsToAccount FOREIGN KEY(fkProfile) REFERENCES Account (idProfile)
) OPTIONS (ANNOTATION '', NAMEINSOURCE '`ConfigOptions`', UPDATABLE TRUE);
CREATE FOREIGN TABLE Diary (
fkProfile long NOT NULL OPTIONS (ANNOTATION '', NAMEINSOURCE '`fkProfile`', NATIVE_TYPE 'BIGINT UNSIGNED'),
AddedDateTime timestamp NOT NULL OPTIONS (ANNOTATION '', NAMEINSOURCE '`AddedDateTime`', NATIVE_TYPE 'DATETIME'),
fkIdCode long NOT NULL OPTIONS (ANNOTATION '', NAMEINSOURCE '`fkIdCode`', NATIVE_TYPE 'BIGINT UNSIGNED'),
product_name string(256) OPTIONS (ANNOTATION '', NAMEINSOURCE '`product_name`', CHAR_OCTET_LENGTH 1024, NATIVE_TYPE 'VARCHAR'),
brands string(384) OPTIONS (ANNOTATION '', NAMEINSOURCE '`brands`', CHAR_OCTET_LENGTH 1536, NATIVE_TYPE 'VARCHAR'),
DatabaseID short NOT NULL OPTIONS (ANNOTATION '', NAMEINSOURCE '`DatabaseID`', NATIVE_TYPE 'TINYINT UNSIGNED'),
MealNumber string(1) NOT NULL OPTIONS (ANNOTATION '', NAMEINSOURCE '`MealNumber`', CHAR_OCTET_LENGTH 4, NATIVE_TYPE 'ENUM'),
AmountInG double OPTIONS (ANNOTATION '', NAMEINSOURCE '`AmountInG`', NATIVE_TYPE 'DOUBLE'),
Calories double OPTIONS (ANNOTATION '', NAMEINSOURCE '`Calories`', NATIVE_TYPE 'DOUBLE'),
ProteinsInG double OPTIONS (ANNOTATION '', NAMEINSOURCE '`ProteinsInG`', NATIVE_TYPE 'DOUBLE'),
CarbohydratesInG double OPTIONS (ANNOTATION '', NAMEINSOURCE '`CarbohydratesInG`', NATIVE_TYPE 'DOUBLE'),
SugarsInG double OPTIONS (ANNOTATION '', NAMEINSOURCE '`SugarsInG`', NATIVE_TYPE 'DOUBLE'),
FatsInG double OPTIONS (ANNOTATION '', NAMEINSOURCE '`FatsInG`', NATIVE_TYPE 'DOUBLE'),
SaturatedFatsInG double OPTIONS (ANNOTATION '', NAMEINSOURCE '`SaturatedFatsInG`', NATIVE_TYPE 'DOUBLE'),
SaltsInG double OPTIONS (ANNOTATION '', NAMEINSOURCE '`SaltsInG`', NATIVE_TYPE 'DOUBLE'),
Diarycol string(45) OPTIONS (ANNOTATION '', NAMEINSOURCE '`Diarycol`', CHAR_OCTET_LENGTH 180, NATIVE_TYPE 'VARCHAR'),
CONSTRAINT "PRIMARY" PRIMARY KEY(fkProfile, AddedDateTime),
CONSTRAINT fkDiaryToFDBProducts FOREIGN KEY(fkIdCode) REFERENCES FDBProducts (idCode),
CONSTRAINT fkDiaryToAccount FOREIGN KEY(fkProfile) REFERENCES Account (idProfile)
) OPTIONS (ANNOTATION '', NAMEINSOURCE '`Diary`', UPDATABLE TRUE);
CREATE FOREIGN TABLE FDBProducts (
idCode long NOT NULL OPTIONS (ANNOTATION '', NAMEINSOURCE '`idCode`', NATIVE_TYPE 'BIGINT UNSIGNED'),
lc string(5) OPTIONS (ANNOTATION '', NAMEINSOURCE '`lc`', CHAR_OCTET_LENGTH 20, NATIVE_TYPE 'CHAR'),
product_name string(256) OPTIONS (ANNOTATION '', NAMEINSOURCE '`product_name`', CHAR_OCTET_LENGTH 1024, NATIVE_TYPE 'VARCHAR'),
origins string(512) OPTIONS (ANNOTATION '', NAMEINSOURCE '`origins`', CHAR_OCTET_LENGTH 2048, NATIVE_TYPE 'VARCHAR'),
brands string(384) OPTIONS (ANNOTATION '', NAMEINSOURCE '`brands`', CHAR_OCTET_LENGTH 1536, NATIVE_TYPE 'VARCHAR'),
quantity string(256) OPTIONS (ANNOTATION '', NAMEINSOURCE '`quantity`', CHAR_OCTET_LENGTH 1024, NATIVE_TYPE 'VARCHAR'),
nova_group string(1) OPTIONS (ANNOTATION '', NAMEINSOURCE '`nova_group`', CHAR_OCTET_LENGTH 4, NATIVE_TYPE 'CHAR'),
nutrition_grade_fr string(1) OPTIONS (ANNOTATION '', NAMEINSOURCE '`nutrition_grade_fr`', CHAR_OCTET_LENGTH 4, NATIVE_TYPE 'CHAR'),
energy_100g double OPTIONS (ANNOTATION '', NAMEINSOURCE '`energy_100g`', NATIVE_TYPE 'DOUBLE'),
carbohydrates_100g double OPTIONS (ANNOTATION '', NAMEINSOURCE '`carbohydrates_100g`', NATIVE_TYPE 'DOUBLE'),
sugars_100g double OPTIONS (ANNOTATION '', NAMEINSOURCE '`sugars_100g`', NATIVE_TYPE 'DOUBLE'),
proteins_100g double OPTIONS (ANNOTATION '', NAMEINSOURCE '`proteins_100g`', NATIVE_TYPE 'DOUBLE'),
fat_100g double OPTIONS (ANNOTATION '', NAMEINSOURCE '`fat_100g`', NATIVE_TYPE 'DOUBLE'),
saturated_fat_100g double OPTIONS (ANNOTATION '', NAMEINSOURCE '`saturated_fat_100g`', NATIVE_TYPE 'DOUBLE'),
saturated_fat_modifier string(3) OPTIONS (ANNOTATION '', NAMEINSOURCE '`saturated_fat_modifier`', CHAR_OCTET_LENGTH 12, NATIVE_TYPE 'CHAR'),
salt_100g double OPTIONS (ANNOTATION '', NAMEINSOURCE '`salt_100g`', NATIVE_TYPE 'DOUBLE'),
sodium_100g double OPTIONS (ANNOTATION '', NAMEINSOURCE '`sodium_100g`', NATIVE_TYPE 'DOUBLE'),
CONSTRAINT "PRIMARY" PRIMARY KEY(idCode),
CONSTRAINT code_UNIQUE UNIQUE(idCode)
) OPTIONS (ANNOTATION '', NAMEINSOURCE '`FDBProducts`', UPDATABLE TRUE);
CREATE FOREIGN TABLE MealConfigs (
fkProfile long NOT NULL OPTIONS (ANNOTATION '', NAMEINSOURCE '`fkProfile`', NATIVE_TYPE 'BIGINT UNSIGNED'),
Weekday string(1) NOT NULL OPTIONS (ANNOTATION '', NAMEINSOURCE '`Weekday`', CHAR_OCTET_LENGTH 4, NATIVE_TYPE 'ENUM'),
MealNumber string(1) NOT NULL OPTIONS (ANNOTATION '', NAMEINSOURCE '`MealNumber`', CHAR_OCTET_LENGTH 4, NATIVE_TYPE 'ENUM'),
WeekdaySortOrder long NOT NULL OPTIONS (ANNOTATION '', NAMEINSOURCE '`WeekdaySortOrder`', NATIVE_TYPE 'INT UNSIGNED'),
MealName string(45) DEFAULT 'strMeal' OPTIONS (ANNOTATION '', NAMEINSOURCE '`MealName`', CHAR_OCTET_LENGTH 180, NATIVE_TYPE 'VARCHAR'),
MealEnabled boolean OPTIONS (ANNOTATION '', NAMEINSOURCE '`MealEnabled`', NATIVE_TYPE 'BIT'),
MealStartTime time OPTIONS (ANNOTATION '', NAMEINSOURCE '`MealStartTime`', NATIVE_TYPE 'TIME'),
CONSTRAINT "PRIMARY" PRIMARY KEY(fkProfile, Weekday, MealNumber),
CONSTRAINT fkMealConfigToAccount FOREIGN KEY(fkProfile) REFERENCES Account (idProfile)
) OPTIONS (ANNOTATION '', NAMEINSOURCE '`MealConfigs`', UPDATABLE TRUE);
CREATE FOREIGN TABLE Profile (
fkProfile long NOT NULL OPTIONS (ANNOTATION '', NAMEINSOURCE '`fkProfile`', NATIVE_TYPE 'BIGINT UNSIGNED'),
BodyHeight float DEFAULT '0.000' OPTIONS (ANNOTATION '', NAMEINSOURCE '`BodyHeight`', NATIVE_TYPE 'FLOAT UNSIGNED'),
GoalWeight float DEFAULT '0.000' OPTIONS (ANNOTATION '', NAMEINSOURCE '`GoalWeight`', NATIVE_TYPE 'FLOAT UNSIGNED'),
Gender string(1) DEFAULT 'm' OPTIONS (ANNOTATION '', NAMEINSOURCE '`Gender`', CHAR_OCTET_LENGTH 4, NATIVE_TYPE 'ENUM'),
BirthDate date OPTIONS (ANNOTATION '', NAMEINSOURCE '`BirthDate`', NATIVE_TYPE 'DATE'),
ActivityLevel string(17) DEFAULT 'strActive' OPTIONS (ANNOTATION '', NAMEINSOURCE '`ActivityLevel`', CHAR_OCTET_LENGTH 68, NATIVE_TYPE 'ENUM'),
CONSTRAINT "PRIMARY" PRIMARY KEY(fkProfile),
CONSTRAINT fkProfile_UNIQUE UNIQUE(fkProfile),
CONSTRAINT fkProfileToAccount FOREIGN KEY(fkProfile) REFERENCES Account (idProfile)
) OPTIONS (ANNOTATION '', NAMEINSOURCE '`Profile`', UPDATABLE TRUE);
{noformat}
> When using DateTime datatype with millisecond fractions, i.e DateTime(3) the resulting urls for the records are invalid
> -----------------------------------------------------------------------------------------------------------------------
>
> Key: TEIID-5672
> URL: https://issues.jboss.org/browse/TEIID-5672
> Project: Teiid
> Issue Type: Bug
> Affects Versions: 11.2.1
> Environment: Docker Container
> Reporter: Christoph John
> Assignee: Steven Hawkins
> Priority: Major
> Attachments: Bildschirmfoto 2019-03-04 um 20.47.19.png
>
>
> I am using a composite key based on a BIGINT and a DATETIME(3) value. The URLs which Teiid generates are invalid in this case. When using DATETIME(0) the links or ok. Example of generated record structure
> {code:java}
> <a:feed xmlns:a="http://www.w3.org/2005/Atom" xmlns:m="http://docs.oasis-open.org/odata/ns/metadata" xmlns:d="http://docs.oasis-open.org/odata/ns/data" m:context="https://morpheus.fritz.box/odata4/svc/my_nutri_diary/$metadata#Diary">
> <a:id>
> https://morpheus.fritz.box/odata4/svc/my_nutri_diary/Diary
> </a:id>
> <a:entry>
> <a:id>
> https://morpheus.fritz.box/odata4/svc/my_nutri_diary/Diary(fkProfile=2,Ad...
> </a:id>
> <a:title/>
> <a:summary/>
> <a:updated>2019-03-03T17:53:52Z</a:updated>
> <a:author>
> <a:name/>
> </a:author>
> <a:link rel="edit" href="https://morpheus.fritz.box/odata4/svc/my_nutri_diary/Diary(fkProfile=2,Ad..."/>
> <a:link rel="http://docs.oasis-open.org/odata/ns/related/fkDiaryToAccount" title="fkDiaryToAccount" href="https://morpheus.fritz.box/odata4/svc/my_nutri_diary/Diary(fkProfile=2,Ad..."/>
> <a:link rel="http://docs.oasis-open.org/odata/ns/related/fkDiaryToFDBProducts" title="fkDiaryToFDBProducts" href="https://morpheus.fritz.box/odata4/svc/my_nutri_diary/Diary(fkProfile=2,Ad..."/>
> <a:link rel="http://docs.oasis-open.org/odata/ns/relatedlinks/fkDiaryToAccount" title="fkDiaryToAccount" href="https://morpheus.fritz.box/odata4/svc/my_nutri_diary/Diary(fkProfile=2,Ad..."/>
> <a:link rel="http://docs.oasis-open.org/odata/ns/relatedlinks/fkDiaryToFDBProducts" title="fkDiaryToFDBProducts" href="https://morpheus.fritz.box/odata4/svc/my_nutri_diary/Diary(fkProfile=2,Ad..."/>
> <a:category scheme="http://docs.oasis-open.org/odata/ns/scheme" term="#svc.1.my_nutri_diary.Diary"/>
> <a:content type="application/xml">
> <m:properties>
> <d:fkProfile m:type="Int64">2</d:fkProfile>
> <d:AddedDateTime m:type="DateTimeOffset">2019-03-03T17:53:12.676Z</d:AddedDateTime>
> <d:fkIdCode m:type="Int64">1772</d:fkIdCode>
> <d:product_name>Mélange fruits secs</d:product_name>
> <d:brands>Agrosourcing</d:brands>
> <d:DatabaseID m:type="Int16">0</d:DatabaseID>
> <d:MealNumber>5</d:MealNumber>
> <d:AmountInG m:type="Double">100.0</d:AmountInG>
> <d:Calories m:type="Double">0.0</d:Calories>
> <d:ProteinsInG m:type="Double">-1.0</d:ProteinsInG>
> <d:CarbohydratesInG m:type="Double">-1.0</d:CarbohydratesInG>
> <d:SugarsInG m:type="Double">-1.0</d:SugarsInG>
> <d:FatsInG m:type="Double">-1.0</d:FatsInG>
> <d:SaturatedFatsInG m:type="Double">-1.0</d:SaturatedFatsInG>
> <d:SaltsInG m:type="Double">-1.0</d:SaltsInG>
> <d:Diarycol m:null="true"/>
> </m:properties>
> </a:content>
> </a:entry>
> {code}
> When I navigate to
> https://morpheus.fritz.box/odata4/svc/my_nutri_diary/Diary(fkProfile=2,Ad...
> I get HTTP ERROR 404 page not found. Note: I replaced ":"with "%3A" (urlencode) in the url which was required to work with the DateTime(0) primary keys. But this did not help either.
--
This message was sent by Atlassian Jira
(v7.12.1#712002)
7 years, 1 month
[JBoss JIRA] (TEIID-5672) When using DateTime datatype with millisecond fractions, i.e DateTime(3) the resulting urls for the records are invalid
by Christoph John (Jira)
[ https://issues.jboss.org/browse/TEIID-5672?page=com.atlassian.jira.plugin... ]
Christoph John edited comment on TEIID-5672 at 3/4/19 3:03 PM:
---------------------------------------------------------------
Yes, the encoding is done on client side. This is not the problem at that point.
OK, I will give two examples which make it clear that it is not a client side error. The first one is without DateTime fractions and everything is working as expected
Example 1:
If I query the collection https://morpheus.fritz.box/odata4/svc/my_nutri_diary/Diary
I get the list with entities. A single entity is looking as follows:
{noformat}
<a:entry>
<a:id>
https://morpheus.fritz.box/odata4/svc/my_nutri_diary/Diary(fkProfile=2,Ad...
</a:id>
<a:title/>
<a:summary/>
<a:updated>2019-03-04T15:07:44Z</a:updated>
<a:author>
<a:name/>
</a:author>
<a:link rel="edit" href="https://morpheus.fritz.box/odata4/svc/my_nutri_diary/Diary(fkProfile=2,Ad..."/>
<a:link rel="http://docs.oasis-open.org/odata/ns/related/fkDiaryToAccount" title="fkDiaryToAccount" href="https://morpheus.fritz.box/odata4/svc/my_nutri_diary/Diary(fkProfile=2,Ad..."/>
<a:link rel="http://docs.oasis-open.org/odata/ns/related/fkDiaryToFDBProducts" title="fkDiaryToFDBProducts" href="https://morpheus.fritz.box/odata4/svc/my_nutri_diary/Diary(fkProfile=2,Ad..."/>
<a:link rel="http://docs.oasis-open.org/odata/ns/relatedlinks/fkDiaryToAccount" title="fkDiaryToAccount" href="https://morpheus.fritz.box/odata4/svc/my_nutri_diary/Diary(fkProfile=2,Ad..."/>
<a:link rel="http://docs.oasis-open.org/odata/ns/relatedlinks/fkDiaryToFDBProducts" title="fkDiaryToFDBProducts" href="https://morpheus.fritz.box/odata4/svc/my_nutri_diary/Diary(fkProfile=2,Ad..."/>
<a:category scheme="http://docs.oasis-open.org/odata/ns/scheme" term="#svc.1.my_nutri_diary.Diary"/>
<a:content type="application/xml">
<m:properties>
<d:fkProfile m:type="Int64">2</d:fkProfile>
<d:AddedDateTime m:type="DateTimeOffset">2019-03-03T18:46:39Z</d:AddedDateTime>
<d:fkIdCode m:type="Int64">17</d:fkIdCode>
<d:product_name>Vitória crackers</d:product_name>
<d:brands>n/a</d:brands>
<d:DatabaseID m:type="Int16">0</d:DatabaseID>
<d:MealNumber>0</d:MealNumber>
<d:AmountInG m:type="Double">200.0</d:AmountInG>
<d:Calories m:type="Double">375.0</d:Calories>
<d:ProteinsInG m:type="Double">7.8</d:ProteinsInG>
<d:CarbohydratesInG m:type="Double">70.1</d:CarbohydratesInG>
<d:SugarsInG m:type="Double">15.0</d:SugarsInG>
<d:FatsInG m:type="Double">7.0</d:FatsInG>
<d:SaturatedFatsInG m:type="Double">3.08</d:SaturatedFatsInG>
<d:SaltsInG m:type="Double">1.4</d:SaltsInG>
<d:Diarycol m:null="true"/>
</m:properties>
</a:content>
</a:entry>
{noformat}
--------------------
When I select this entity via the following url, I get the entity as response as I expect.
https://morpheus.fritz.box/odata4/svc/my_nutri_diary/Diary(fkProfile=2,Ad...
-----------------------------------------------------------------------
Example 2: Now using millisecond format
Again, when I query the collection via
https://morpheus.fritz.box/odata4/svc/my_nutri_diary/Diary
I get a list with the entities. Here an example item with millisecond key
{noformat}
<a:entry>
<a:id>
https://morpheus.fritz.box/odata4/svc/my_nutri_diary/Diary(fkProfile=2,Ad...
</a:id>
<a:title/>
<a:summary/>
<a:updated>2019-03-04T19:43:08Z</a:updated>
<a:author>
<a:name/>
</a:author>
<a:link rel="edit" href="https://morpheus.fritz.box/odata4/svc/my_nutri_diary/Diary(fkProfile=2,Ad..."/>
<a:link rel="http://docs.oasis-open.org/odata/ns/related/fkDiaryToAccount" title="fkDiaryToAccount" href="https://morpheus.fritz.box/odata4/svc/my_nutri_diary/Diary(fkProfile=2,Ad..."/>
<a:link rel="http://docs.oasis-open.org/odata/ns/related/fkDiaryToFDBProducts" title="fkDiaryToFDBProducts" href="https://morpheus.fritz.box/odata4/svc/my_nutri_diary/Diary(fkProfile=2,Ad..."/>
<a:link rel="http://docs.oasis-open.org/odata/ns/relatedlinks/fkDiaryToAccount" title="fkDiaryToAccount" href="https://morpheus.fritz.box/odata4/svc/my_nutri_diary/Diary(fkProfile=2,Ad..."/>
<a:link rel="http://docs.oasis-open.org/odata/ns/relatedlinks/fkDiaryToFDBProducts" title="fkDiaryToFDBProducts" href="https://morpheus.fritz.box/odata4/svc/my_nutri_diary/Diary(fkProfile=2,Ad..."/>
<a:category scheme="http://docs.oasis-open.org/odata/ns/scheme" term="#svc.1.my_nutri_diary.Diary"/>
<a:content type="application/xml">
<m:properties>
<d:fkProfile m:type="Int64">2</d:fkProfile>
<d:AddedDateTime m:type="DateTimeOffset">2019-03-04T19:42:53.148Z</d:AddedDateTime>
<d:fkIdCode m:type="Int64">1772</d:fkIdCode>
<d:product_name>Mélange fruits secs</d:product_name>
<d:brands>Agrosourcing</d:brands>
<d:DatabaseID m:type="Int16">0</d:DatabaseID>
<d:MealNumber>4</d:MealNumber>
<d:AmountInG m:type="Double">100.0</d:AmountInG>
<d:Calories m:null="true"/>
<d:ProteinsInG m:null="true"/>
<d:CarbohydratesInG m:null="true"/>
<d:SugarsInG m:null="true"/>
<d:FatsInG m:null="true"/>
<d:SaturatedFatsInG m:null="true"/>
<d:SaltsInG m:null="true"/>
<d:Diarycol m:null="true"/>
</m:properties>
</a:content>
</a:entry>
{noformat}
--------------------------------------------------------------
If I now query this sincle entity via the given url
https://morpheus.fritz.box/odata4/svc/my_nutri_diary/Diary(fkProfile=2,Ad...
I do not get the entity but the following error message:
Diese morpheus.fritz.box-Seite wurde nicht gefunden Für folgende Webadresse wurde keine Webseite gefunden: https://morpheus.fritz.box/odata4/svc/my_nutri_diary/Diary(fkProfile=2,Ad....
HTTP ERROR 404
I should also mention, the entity is correctly stored in the underlaying mysql database
!Bildschirmfoto 2019-03-04 um 20.47.19.png|thumbnail!
You see it does not depend on the format of the odata query. The urls were directly taken from the generated responses of the teiid server. Is my description sufficient ?
Here is the vdb code that was generated for the key including milliseconds:
{noformat}
CREATE FOREIGN TABLE Account (
idProfile long NOT NULL AUTO_INCREMENT OPTIONS (ANNOTATION '', NAMEINSOURCE '`idProfile`', NATIVE_TYPE 'BIGINT UNSIGNED'),
uuidUser string(36) NOT NULL OPTIONS (ANNOTATION '', NAMEINSOURCE '`uuidUser`', NATIVE_TYPE 'CHAR'),
CONSTRAINT "PRIMARY" PRIMARY KEY(idProfile),
CONSTRAINT idProfile_UNIQUE UNIQUE(idProfile),
CONSTRAINT uuidUser_UNIQUE UNIQUE(uuidUser)
) OPTIONS (ANNOTATION '', NAMEINSOURCE '`Account`', UPDATABLE TRUE);
CREATE FOREIGN TABLE Avatar (
fkProfile long NOT NULL OPTIONS (ANNOTATION '', NAMEINSOURCE '`fkProfile`', NATIVE_TYPE 'BIGINT UNSIGNED'),
AvatarImg blob(65535) OPTIONS (ANNOTATION '', NAMEINSOURCE '`AvatarImg`', NATIVE_TYPE 'BLOB'),
CONSTRAINT "PRIMARY" PRIMARY KEY(fkProfile),
CONSTRAINT fkProfile_UNIQUE UNIQUE(fkProfile),
CONSTRAINT fkAvatarToAccount FOREIGN KEY(fkProfile) REFERENCES Account (idProfile)
) OPTIONS (ANNOTATION '', NAMEINSOURCE '`Avatar`', UPDATABLE TRUE);
CREATE FOREIGN TABLE BodyWeight (
idBodyWeight long NOT NULL AUTO_INCREMENT OPTIONS (ANNOTATION 'We need a surrogate key here as Teiid requires a primary key on each table. fkProfile is not unique here as we can will have multiple weight measurements per person. Moreover, combining it with WeightMeasurementDateTime makes the index to compute intensive.', NAMEINSOURCE '`idBodyWeight`', NATIVE_TYPE 'BIGINT UNSIGNED'),
fkProfile long NOT NULL OPTIONS (ANNOTATION '', NAMEINSOURCE '`fkProfile`', NATIVE_TYPE 'BIGINT UNSIGNED'),
WeightMeasurementDateTime timestamp NOT NULL OPTIONS (ANNOTATION '', NAMEINSOURCE '`WeightMeasurementDateTime`', NATIVE_TYPE 'DATETIME'),
Weight float NOT NULL OPTIONS (ANNOTATION '', NAMEINSOURCE '`Weight`', NATIVE_TYPE 'FLOAT UNSIGNED'),
CONSTRAINT "PRIMARY" PRIMARY KEY(idBodyWeight),
CONSTRAINT idBodyWeight_UNIQUE UNIQUE(idBodyWeight),
CONSTRAINT fkBodyWeightToAccount FOREIGN KEY(fkProfile) REFERENCES Account (idProfile)
) OPTIONS (ANNOTATION '', NAMEINSOURCE '`BodyWeight`', UPDATABLE TRUE);
CREATE FOREIGN TABLE ConfigOptions (
fkProfile long NOT NULL OPTIONS (ANNOTATION '', NAMEINSOURCE '`fkProfile`', NATIVE_TYPE 'BIGINT UNSIGNED'),
MUnitWeight string(2) DEFAULT 'kg' OPTIONS (ANNOTATION '', NAMEINSOURCE '`MUnitWeight`', CHAR_OCTET_LENGTH 8, NATIVE_TYPE 'ENUM'),
MUnitLength string(2) DEFAULT 'cm' OPTIONS (ANNOTATION '', NAMEINSOURCE '`MUnitLength`', CHAR_OCTET_LENGTH 8, NATIVE_TYPE 'ENUM'),
MUnitEnergy string(4) DEFAULT 'kcal' OPTIONS (ANNOTATION '', NAMEINSOURCE '`MUnitEnergy`', CHAR_OCTET_LENGTH 16, NATIVE_TYPE 'ENUM'),
MUnitLiquids string(2) DEFAULT 'ml' OPTIONS (ANNOTATION '', NAMEINSOURCE '`MUnitLiquids`', CHAR_OCTET_LENGTH 8, NATIVE_TYPE 'ENUM'),
MUnitTime string(3) DEFAULT '24h' OPTIONS (ANNOTATION '', NAMEINSOURCE '`MUnitTime`', CHAR_OCTET_LENGTH 12, NATIVE_TYPE 'ENUM'),
EnableDrinkReminder boolean DEFAULT '0' OPTIONS (ANNOTATION '', NAMEINSOURCE '`EnableDrinkReminder`', NATIVE_TYPE 'BIT'),
PreferredCountryCodeForSearch string(2) DEFAULT 'de' OPTIONS (ANNOTATION '', NAMEINSOURCE '`PreferredCountryCodeForSearch`', CHAR_OCTET_LENGTH 8, NATIVE_TYPE 'VARCHAR'),
EnableInternationalSearch boolean DEFAULT '1' OPTIONS (ANNOTATION '', NAMEINSOURCE '`EnableInternationalSearch`', NATIVE_TYPE 'BIT'),
DaySpecificDietConfig boolean DEFAULT '0' OPTIONS (ANNOTATION '', NAMEINSOURCE '`DaySpecificDietConfig`', NATIVE_TYPE 'BIT'),
CONSTRAINT "PRIMARY" PRIMARY KEY(fkProfile),
CONSTRAINT fkProfile_UNIQUE UNIQUE(fkProfile),
CONSTRAINT fkConfigOptionsToAccount FOREIGN KEY(fkProfile) REFERENCES Account (idProfile)
) OPTIONS (ANNOTATION '', NAMEINSOURCE '`ConfigOptions`', UPDATABLE TRUE);
CREATE FOREIGN TABLE Diary (
fkProfile long NOT NULL OPTIONS (ANNOTATION '', NAMEINSOURCE '`fkProfile`', NATIVE_TYPE 'BIGINT UNSIGNED'),
AddedDateTime timestamp NOT NULL OPTIONS (ANNOTATION '', NAMEINSOURCE '`AddedDateTime`', NATIVE_TYPE 'DATETIME'),
fkIdCode long NOT NULL OPTIONS (ANNOTATION '', NAMEINSOURCE '`fkIdCode`', NATIVE_TYPE 'BIGINT UNSIGNED'),
product_name string(256) OPTIONS (ANNOTATION '', NAMEINSOURCE '`product_name`', CHAR_OCTET_LENGTH 1024, NATIVE_TYPE 'VARCHAR'),
brands string(384) OPTIONS (ANNOTATION '', NAMEINSOURCE '`brands`', CHAR_OCTET_LENGTH 1536, NATIVE_TYPE 'VARCHAR'),
DatabaseID short NOT NULL OPTIONS (ANNOTATION '', NAMEINSOURCE '`DatabaseID`', NATIVE_TYPE 'TINYINT UNSIGNED'),
MealNumber string(1) NOT NULL OPTIONS (ANNOTATION '', NAMEINSOURCE '`MealNumber`', CHAR_OCTET_LENGTH 4, NATIVE_TYPE 'ENUM'),
AmountInG double OPTIONS (ANNOTATION '', NAMEINSOURCE '`AmountInG`', NATIVE_TYPE 'DOUBLE'),
Calories double OPTIONS (ANNOTATION '', NAMEINSOURCE '`Calories`', NATIVE_TYPE 'DOUBLE'),
ProteinsInG double OPTIONS (ANNOTATION '', NAMEINSOURCE '`ProteinsInG`', NATIVE_TYPE 'DOUBLE'),
CarbohydratesInG double OPTIONS (ANNOTATION '', NAMEINSOURCE '`CarbohydratesInG`', NATIVE_TYPE 'DOUBLE'),
SugarsInG double OPTIONS (ANNOTATION '', NAMEINSOURCE '`SugarsInG`', NATIVE_TYPE 'DOUBLE'),
FatsInG double OPTIONS (ANNOTATION '', NAMEINSOURCE '`FatsInG`', NATIVE_TYPE 'DOUBLE'),
SaturatedFatsInG double OPTIONS (ANNOTATION '', NAMEINSOURCE '`SaturatedFatsInG`', NATIVE_TYPE 'DOUBLE'),
SaltsInG double OPTIONS (ANNOTATION '', NAMEINSOURCE '`SaltsInG`', NATIVE_TYPE 'DOUBLE'),
Diarycol string(45) OPTIONS (ANNOTATION '', NAMEINSOURCE '`Diarycol`', CHAR_OCTET_LENGTH 180, NATIVE_TYPE 'VARCHAR'),
CONSTRAINT "PRIMARY" PRIMARY KEY(fkProfile, AddedDateTime),
CONSTRAINT fkDiaryToFDBProducts FOREIGN KEY(fkIdCode) REFERENCES FDBProducts (idCode),
CONSTRAINT fkDiaryToAccount FOREIGN KEY(fkProfile) REFERENCES Account (idProfile)
) OPTIONS (ANNOTATION '', NAMEINSOURCE '`Diary`', UPDATABLE TRUE);
CREATE FOREIGN TABLE FDBProducts (
idCode long NOT NULL OPTIONS (ANNOTATION '', NAMEINSOURCE '`idCode`', NATIVE_TYPE 'BIGINT UNSIGNED'),
lc string(5) OPTIONS (ANNOTATION '', NAMEINSOURCE '`lc`', CHAR_OCTET_LENGTH 20, NATIVE_TYPE 'CHAR'),
product_name string(256) OPTIONS (ANNOTATION '', NAMEINSOURCE '`product_name`', CHAR_OCTET_LENGTH 1024, NATIVE_TYPE 'VARCHAR'),
origins string(512) OPTIONS (ANNOTATION '', NAMEINSOURCE '`origins`', CHAR_OCTET_LENGTH 2048, NATIVE_TYPE 'VARCHAR'),
brands string(384) OPTIONS (ANNOTATION '', NAMEINSOURCE '`brands`', CHAR_OCTET_LENGTH 1536, NATIVE_TYPE 'VARCHAR'),
quantity string(256) OPTIONS (ANNOTATION '', NAMEINSOURCE '`quantity`', CHAR_OCTET_LENGTH 1024, NATIVE_TYPE 'VARCHAR'),
nova_group string(1) OPTIONS (ANNOTATION '', NAMEINSOURCE '`nova_group`', CHAR_OCTET_LENGTH 4, NATIVE_TYPE 'CHAR'),
nutrition_grade_fr string(1) OPTIONS (ANNOTATION '', NAMEINSOURCE '`nutrition_grade_fr`', CHAR_OCTET_LENGTH 4, NATIVE_TYPE 'CHAR'),
energy_100g double OPTIONS (ANNOTATION '', NAMEINSOURCE '`energy_100g`', NATIVE_TYPE 'DOUBLE'),
carbohydrates_100g double OPTIONS (ANNOTATION '', NAMEINSOURCE '`carbohydrates_100g`', NATIVE_TYPE 'DOUBLE'),
sugars_100g double OPTIONS (ANNOTATION '', NAMEINSOURCE '`sugars_100g`', NATIVE_TYPE 'DOUBLE'),
proteins_100g double OPTIONS (ANNOTATION '', NAMEINSOURCE '`proteins_100g`', NATIVE_TYPE 'DOUBLE'),
fat_100g double OPTIONS (ANNOTATION '', NAMEINSOURCE '`fat_100g`', NATIVE_TYPE 'DOUBLE'),
saturated_fat_100g double OPTIONS (ANNOTATION '', NAMEINSOURCE '`saturated_fat_100g`', NATIVE_TYPE 'DOUBLE'),
saturated_fat_modifier string(3) OPTIONS (ANNOTATION '', NAMEINSOURCE '`saturated_fat_modifier`', CHAR_OCTET_LENGTH 12, NATIVE_TYPE 'CHAR'),
salt_100g double OPTIONS (ANNOTATION '', NAMEINSOURCE '`salt_100g`', NATIVE_TYPE 'DOUBLE'),
sodium_100g double OPTIONS (ANNOTATION '', NAMEINSOURCE '`sodium_100g`', NATIVE_TYPE 'DOUBLE'),
CONSTRAINT "PRIMARY" PRIMARY KEY(idCode),
CONSTRAINT code_UNIQUE UNIQUE(idCode)
) OPTIONS (ANNOTATION '', NAMEINSOURCE '`FDBProducts`', UPDATABLE TRUE);
CREATE FOREIGN TABLE MealConfigs (
fkProfile long NOT NULL OPTIONS (ANNOTATION '', NAMEINSOURCE '`fkProfile`', NATIVE_TYPE 'BIGINT UNSIGNED'),
Weekday string(1) NOT NULL OPTIONS (ANNOTATION '', NAMEINSOURCE '`Weekday`', CHAR_OCTET_LENGTH 4, NATIVE_TYPE 'ENUM'),
MealNumber string(1) NOT NULL OPTIONS (ANNOTATION '', NAMEINSOURCE '`MealNumber`', CHAR_OCTET_LENGTH 4, NATIVE_TYPE 'ENUM'),
WeekdaySortOrder long NOT NULL OPTIONS (ANNOTATION '', NAMEINSOURCE '`WeekdaySortOrder`', NATIVE_TYPE 'INT UNSIGNED'),
MealName string(45) DEFAULT 'strMeal' OPTIONS (ANNOTATION '', NAMEINSOURCE '`MealName`', CHAR_OCTET_LENGTH 180, NATIVE_TYPE 'VARCHAR'),
MealEnabled boolean OPTIONS (ANNOTATION '', NAMEINSOURCE '`MealEnabled`', NATIVE_TYPE 'BIT'),
MealStartTime time OPTIONS (ANNOTATION '', NAMEINSOURCE '`MealStartTime`', NATIVE_TYPE 'TIME'),
CONSTRAINT "PRIMARY" PRIMARY KEY(fkProfile, Weekday, MealNumber),
CONSTRAINT fkMealConfigToAccount FOREIGN KEY(fkProfile) REFERENCES Account (idProfile)
) OPTIONS (ANNOTATION '', NAMEINSOURCE '`MealConfigs`', UPDATABLE TRUE);
CREATE FOREIGN TABLE Profile (
fkProfile long NOT NULL OPTIONS (ANNOTATION '', NAMEINSOURCE '`fkProfile`', NATIVE_TYPE 'BIGINT UNSIGNED'),
BodyHeight float DEFAULT '0.000' OPTIONS (ANNOTATION '', NAMEINSOURCE '`BodyHeight`', NATIVE_TYPE 'FLOAT UNSIGNED'),
GoalWeight float DEFAULT '0.000' OPTIONS (ANNOTATION '', NAMEINSOURCE '`GoalWeight`', NATIVE_TYPE 'FLOAT UNSIGNED'),
Gender string(1) DEFAULT 'm' OPTIONS (ANNOTATION '', NAMEINSOURCE '`Gender`', CHAR_OCTET_LENGTH 4, NATIVE_TYPE 'ENUM'),
BirthDate date OPTIONS (ANNOTATION '', NAMEINSOURCE '`BirthDate`', NATIVE_TYPE 'DATE'),
ActivityLevel string(17) DEFAULT 'strActive' OPTIONS (ANNOTATION '', NAMEINSOURCE '`ActivityLevel`', CHAR_OCTET_LENGTH 68, NATIVE_TYPE 'ENUM'),
CONSTRAINT "PRIMARY" PRIMARY KEY(fkProfile),
CONSTRAINT fkProfile_UNIQUE UNIQUE(fkProfile),
CONSTRAINT fkProfileToAccount FOREIGN KEY(fkProfile) REFERENCES Account (idProfile)
) OPTIONS (ANNOTATION '', NAMEINSOURCE '`Profile`', UPDATABLE TRUE);
{noformat}
was (Author: cjohn001):
Yes, the encoding is done on client side. This is not the problem at that point.
OK, I will give two examples which make it clear that it is not a client side error. The first one is without DateTime fractions and everything is working as expected
Example 1:
If I query the collection https://morpheus.fritz.box/odata4/svc/my_nutri_diary/Diary
I get the list with entities. A single entity is looking as follows:
{noformat}
<a:entry>
<a:id>
https://morpheus.fritz.box/odata4/svc/my_nutri_diary/Diary(fkProfile=2,Ad...
</a:id>
<a:title/>
<a:summary/>
<a:updated>2019-03-04T15:07:44Z</a:updated>
<a:author>
<a:name/>
</a:author>
<a:link rel="edit" href="https://morpheus.fritz.box/odata4/svc/my_nutri_diary/Diary(fkProfile=2,Ad..."/>
<a:link rel="http://docs.oasis-open.org/odata/ns/related/fkDiaryToAccount" title="fkDiaryToAccount" href="https://morpheus.fritz.box/odata4/svc/my_nutri_diary/Diary(fkProfile=2,Ad..."/>
<a:link rel="http://docs.oasis-open.org/odata/ns/related/fkDiaryToFDBProducts" title="fkDiaryToFDBProducts" href="https://morpheus.fritz.box/odata4/svc/my_nutri_diary/Diary(fkProfile=2,Ad..."/>
<a:link rel="http://docs.oasis-open.org/odata/ns/relatedlinks/fkDiaryToAccount" title="fkDiaryToAccount" href="https://morpheus.fritz.box/odata4/svc/my_nutri_diary/Diary(fkProfile=2,Ad..."/>
<a:link rel="http://docs.oasis-open.org/odata/ns/relatedlinks/fkDiaryToFDBProducts" title="fkDiaryToFDBProducts" href="https://morpheus.fritz.box/odata4/svc/my_nutri_diary/Diary(fkProfile=2,Ad..."/>
<a:category scheme="http://docs.oasis-open.org/odata/ns/scheme" term="#svc.1.my_nutri_diary.Diary"/>
<a:content type="application/xml">
<m:properties>
<d:fkProfile m:type="Int64">2</d:fkProfile>
<d:AddedDateTime m:type="DateTimeOffset">2019-03-03T18:46:39Z</d:AddedDateTime>
<d:fkIdCode m:type="Int64">17</d:fkIdCode>
<d:product_name>Vitória crackers</d:product_name>
<d:brands>n/a</d:brands>
<d:DatabaseID m:type="Int16">0</d:DatabaseID>
<d:MealNumber>0</d:MealNumber>
<d:AmountInG m:type="Double">200.0</d:AmountInG>
<d:Calories m:type="Double">375.0</d:Calories>
<d:ProteinsInG m:type="Double">7.8</d:ProteinsInG>
<d:CarbohydratesInG m:type="Double">70.1</d:CarbohydratesInG>
<d:SugarsInG m:type="Double">15.0</d:SugarsInG>
<d:FatsInG m:type="Double">7.0</d:FatsInG>
<d:SaturatedFatsInG m:type="Double">3.08</d:SaturatedFatsInG>
<d:SaltsInG m:type="Double">1.4</d:SaltsInG>
<d:Diarycol m:null="true"/>
</m:properties>
</a:content>
</a:entry>
{noformat}
--------------------
When I select this entity via the following url, I get the entity as response as I expect.
https://morpheus.fritz.box/odata4/svc/my_nutri_diary/Diary(fkProfile=2,Ad...
-----------------------------------------------------------------------
Example 2: Now using millisecond format
Again, when I query the collection via
https://morpheus.fritz.box/odata4/svc/my_nutri_diary/Diary
I get a list with the entities. Here an example item with millisecond key
{noformat}
<a:entry>
<a:id>
https://morpheus.fritz.box/odata4/svc/my_nutri_diary/Diary(fkProfile=2,Ad...
</a:id>
<a:title/>
<a:summary/>
<a:updated>2019-03-04T19:43:08Z</a:updated>
<a:author>
<a:name/>
</a:author>
<a:link rel="edit" href="https://morpheus.fritz.box/odata4/svc/my_nutri_diary/Diary(fkProfile=2,Ad..."/>
<a:link rel="http://docs.oasis-open.org/odata/ns/related/fkDiaryToAccount" title="fkDiaryToAccount" href="https://morpheus.fritz.box/odata4/svc/my_nutri_diary/Diary(fkProfile=2,Ad..."/>
<a:link rel="http://docs.oasis-open.org/odata/ns/related/fkDiaryToFDBProducts" title="fkDiaryToFDBProducts" href="https://morpheus.fritz.box/odata4/svc/my_nutri_diary/Diary(fkProfile=2,Ad..."/>
<a:link rel="http://docs.oasis-open.org/odata/ns/relatedlinks/fkDiaryToAccount" title="fkDiaryToAccount" href="https://morpheus.fritz.box/odata4/svc/my_nutri_diary/Diary(fkProfile=2,Ad..."/>
<a:link rel="http://docs.oasis-open.org/odata/ns/relatedlinks/fkDiaryToFDBProducts" title="fkDiaryToFDBProducts" href="https://morpheus.fritz.box/odata4/svc/my_nutri_diary/Diary(fkProfile=2,Ad..."/>
<a:category scheme="http://docs.oasis-open.org/odata/ns/scheme" term="#svc.1.my_nutri_diary.Diary"/>
<a:content type="application/xml">
<m:properties>
<d:fkProfile m:type="Int64">2</d:fkProfile>
<d:AddedDateTime m:type="DateTimeOffset">2019-03-04T19:42:53.148Z</d:AddedDateTime>
<d:fkIdCode m:type="Int64">1772</d:fkIdCode>
<d:product_name>Mélange fruits secs</d:product_name>
<d:brands>Agrosourcing</d:brands>
<d:DatabaseID m:type="Int16">0</d:DatabaseID>
<d:MealNumber>4</d:MealNumber>
<d:AmountInG m:type="Double">100.0</d:AmountInG>
<d:Calories m:null="true"/>
<d:ProteinsInG m:null="true"/>
<d:CarbohydratesInG m:null="true"/>
<d:SugarsInG m:null="true"/>
<d:FatsInG m:null="true"/>
<d:SaturatedFatsInG m:null="true"/>
<d:SaltsInG m:null="true"/>
<d:Diarycol m:null="true"/>
</m:properties>
</a:content>
</a:entry>
{noformat}
--------------------------------------------------------------
If I now query this sincle entity via the given url
https://morpheus.fritz.box/odata4/svc/my_nutri_diary/Diary(fkProfile=2,Ad...
I do not get the entity but the following error message:
Diese morpheus.fritz.box-Seite wurde nicht gefunden Für folgende Webadresse wurde keine Webseite gefunden: https://morpheus.fritz.box/odata4/svc/my_nutri_diary/Diary(fkProfile=2,Ad....
HTTP ERROR 404
I should also mention, the entity is correctly stored in the underlaying mysql database
!Bildschirmfoto 2019-03-04 um 20.47.19.png|thumbnail!
You see it does not depend on the format of the odata query. The urls were directly taken from the generated responses of the teiid server. Is my description sufficient ?
Here is the vdb code that was generated for the key including milliseconds:
{noformat}
CREATE FOREIGN TABLE Account (
idProfile long NOT NULL AUTO_INCREMENT OPTIONS (ANNOTATION '', NAMEINSOURCE '`idProfile`', NATIVE_TYPE 'BIGINT UNSIGNED'),
uuidUser string(36) NOT NULL OPTIONS (ANNOTATION '', NAMEINSOURCE '`uuidUser`', NATIVE_TYPE 'CHAR'),
CONSTRAINT "PRIMARY" PRIMARY KEY(idProfile),
CONSTRAINT idProfile_UNIQUE UNIQUE(idProfile),
CONSTRAINT uuidUser_UNIQUE UNIQUE(uuidUser)
) OPTIONS (ANNOTATION '', NAMEINSOURCE '`Account`', UPDATABLE TRUE);
CREATE FOREIGN TABLE Avatar (
fkProfile long NOT NULL OPTIONS (ANNOTATION '', NAMEINSOURCE '`fkProfile`', NATIVE_TYPE 'BIGINT UNSIGNED'),
AvatarImg blob(65535) OPTIONS (ANNOTATION '', NAMEINSOURCE '`AvatarImg`', NATIVE_TYPE 'BLOB'),
CONSTRAINT "PRIMARY" PRIMARY KEY(fkProfile),
CONSTRAINT fkProfile_UNIQUE UNIQUE(fkProfile),
CONSTRAINT fkAvatarToAccount FOREIGN KEY(fkProfile) REFERENCES Account (idProfile)
) OPTIONS (ANNOTATION '', NAMEINSOURCE '`Avatar`', UPDATABLE TRUE);
CREATE FOREIGN TABLE BodyWeight (
idBodyWeight long NOT NULL AUTO_INCREMENT OPTIONS (ANNOTATION 'We need a surrogate key here as Teiid requires a primary key on each table. fkProfile is not unique here as we can will have multiple weight measurements per person. Moreover, combining it with WeightMeasurementDateTime makes the index to compute intensive.', NAMEINSOURCE '`idBodyWeight`', NATIVE_TYPE 'BIGINT UNSIGNED'),
fkProfile long NOT NULL OPTIONS (ANNOTATION '', NAMEINSOURCE '`fkProfile`', NATIVE_TYPE 'BIGINT UNSIGNED'),
WeightMeasurementDateTime timestamp NOT NULL OPTIONS (ANNOTATION '', NAMEINSOURCE '`WeightMeasurementDateTime`', NATIVE_TYPE 'DATETIME'),
Weight float NOT NULL OPTIONS (ANNOTATION '', NAMEINSOURCE '`Weight`', NATIVE_TYPE 'FLOAT UNSIGNED'),
CONSTRAINT "PRIMARY" PRIMARY KEY(idBodyWeight),
CONSTRAINT idBodyWeight_UNIQUE UNIQUE(idBodyWeight),
CONSTRAINT fkBodyWeightToAccount FOREIGN KEY(fkProfile) REFERENCES Account (idProfile)
) OPTIONS (ANNOTATION '', NAMEINSOURCE '`BodyWeight`', UPDATABLE TRUE);
CREATE FOREIGN TABLE ConfigOptions (
fkProfile long NOT NULL OPTIONS (ANNOTATION '', NAMEINSOURCE '`fkProfile`', NATIVE_TYPE 'BIGINT UNSIGNED'),
MUnitWeight string(2) DEFAULT 'kg' OPTIONS (ANNOTATION '', NAMEINSOURCE '`MUnitWeight`', CHAR_OCTET_LENGTH 8, NATIVE_TYPE 'ENUM'),
MUnitLength string(2) DEFAULT 'cm' OPTIONS (ANNOTATION '', NAMEINSOURCE '`MUnitLength`', CHAR_OCTET_LENGTH 8, NATIVE_TYPE 'ENUM'),
MUnitEnergy string(4) DEFAULT 'kcal' OPTIONS (ANNOTATION '', NAMEINSOURCE '`MUnitEnergy`', CHAR_OCTET_LENGTH 16, NATIVE_TYPE 'ENUM'),
MUnitLiquids string(2) DEFAULT 'ml' OPTIONS (ANNOTATION '', NAMEINSOURCE '`MUnitLiquids`', CHAR_OCTET_LENGTH 8, NATIVE_TYPE 'ENUM'),
MUnitTime string(3) DEFAULT '24h' OPTIONS (ANNOTATION '', NAMEINSOURCE '`MUnitTime`', CHAR_OCTET_LENGTH 12, NATIVE_TYPE 'ENUM'),
EnableDrinkReminder boolean DEFAULT '0' OPTIONS (ANNOTATION '', NAMEINSOURCE '`EnableDrinkReminder`', NATIVE_TYPE 'BIT'),
PreferredCountryCodeForSearch string(2) DEFAULT 'de' OPTIONS (ANNOTATION '', NAMEINSOURCE '`PreferredCountryCodeForSearch`', CHAR_OCTET_LENGTH 8, NATIVE_TYPE 'VARCHAR'),
EnableInternationalSearch boolean DEFAULT '1' OPTIONS (ANNOTATION '', NAMEINSOURCE '`EnableInternationalSearch`', NATIVE_TYPE 'BIT'),
DaySpecificDietConfig boolean DEFAULT '0' OPTIONS (ANNOTATION '', NAMEINSOURCE '`DaySpecificDietConfig`', NATIVE_TYPE 'BIT'),
CONSTRAINT "PRIMARY" PRIMARY KEY(fkProfile),
CONSTRAINT fkProfile_UNIQUE UNIQUE(fkProfile),
CONSTRAINT fkConfigOptionsToAccount FOREIGN KEY(fkProfile) REFERENCES Account (idProfile)
) OPTIONS (ANNOTATION '', NAMEINSOURCE '`ConfigOptions`', UPDATABLE TRUE);
CREATE FOREIGN TABLE Diary (
fkProfile long NOT NULL OPTIONS (ANNOTATION '', NAMEINSOURCE '`fkProfile`', NATIVE_TYPE 'BIGINT UNSIGNED'),
AddedDateTime timestamp NOT NULL OPTIONS (ANNOTATION '', NAMEINSOURCE '`AddedDateTime`', NATIVE_TYPE 'DATETIME'),
fkIdCode long NOT NULL OPTIONS (ANNOTATION '', NAMEINSOURCE '`fkIdCode`', NATIVE_TYPE 'BIGINT UNSIGNED'),
product_name string(256) OPTIONS (ANNOTATION '', NAMEINSOURCE '`product_name`', CHAR_OCTET_LENGTH 1024, NATIVE_TYPE 'VARCHAR'),
brands string(384) OPTIONS (ANNOTATION '', NAMEINSOURCE '`brands`', CHAR_OCTET_LENGTH 1536, NATIVE_TYPE 'VARCHAR'),
DatabaseID short NOT NULL OPTIONS (ANNOTATION '', NAMEINSOURCE '`DatabaseID`', NATIVE_TYPE 'TINYINT UNSIGNED'),
MealNumber string(1) NOT NULL OPTIONS (ANNOTATION '', NAMEINSOURCE '`MealNumber`', CHAR_OCTET_LENGTH 4, NATIVE_TYPE 'ENUM'),
AmountInG double OPTIONS (ANNOTATION '', NAMEINSOURCE '`AmountInG`', NATIVE_TYPE 'DOUBLE'),
Calories double OPTIONS (ANNOTATION '', NAMEINSOURCE '`Calories`', NATIVE_TYPE 'DOUBLE'),
ProteinsInG double OPTIONS (ANNOTATION '', NAMEINSOURCE '`ProteinsInG`', NATIVE_TYPE 'DOUBLE'),
CarbohydratesInG double OPTIONS (ANNOTATION '', NAMEINSOURCE '`CarbohydratesInG`', NATIVE_TYPE 'DOUBLE'),
SugarsInG double OPTIONS (ANNOTATION '', NAMEINSOURCE '`SugarsInG`', NATIVE_TYPE 'DOUBLE'),
FatsInG double OPTIONS (ANNOTATION '', NAMEINSOURCE '`FatsInG`', NATIVE_TYPE 'DOUBLE'),
SaturatedFatsInG double OPTIONS (ANNOTATION '', NAMEINSOURCE '`SaturatedFatsInG`', NATIVE_TYPE 'DOUBLE'),
SaltsInG double OPTIONS (ANNOTATION '', NAMEINSOURCE '`SaltsInG`', NATIVE_TYPE 'DOUBLE'),
Diarycol string(45) OPTIONS (ANNOTATION '', NAMEINSOURCE '`Diarycol`', CHAR_OCTET_LENGTH 180, NATIVE_TYPE 'VARCHAR'),
CONSTRAINT "PRIMARY" PRIMARY KEY(fkProfile, AddedDateTime),
CONSTRAINT fkDiaryToFDBProducts FOREIGN KEY(fkIdCode) REFERENCES FDBProducts (idCode),
CONSTRAINT fkDiaryToAccount FOREIGN KEY(fkProfile) REFERENCES Account (idProfile)
) OPTIONS (ANNOTATION '', NAMEINSOURCE '`Diary`', UPDATABLE TRUE);
CREATE FOREIGN TABLE FDBProducts (
idCode long NOT NULL OPTIONS (ANNOTATION '', NAMEINSOURCE '`idCode`', NATIVE_TYPE 'BIGINT UNSIGNED'),
lc string(5) OPTIONS (ANNOTATION '', NAMEINSOURCE '`lc`', CHAR_OCTET_LENGTH 20, NATIVE_TYPE 'CHAR'),
product_name string(256) OPTIONS (ANNOTATION '', NAMEINSOURCE '`product_name`', CHAR_OCTET_LENGTH 1024, NATIVE_TYPE 'VARCHAR'),
origins string(512) OPTIONS (ANNOTATION '', NAMEINSOURCE '`origins`', CHAR_OCTET_LENGTH 2048, NATIVE_TYPE 'VARCHAR'),
brands string(384) OPTIONS (ANNOTATION '', NAMEINSOURCE '`brands`', CHAR_OCTET_LENGTH 1536, NATIVE_TYPE 'VARCHAR'),
quantity string(256) OPTIONS (ANNOTATION '', NAMEINSOURCE '`quantity`', CHAR_OCTET_LENGTH 1024, NATIVE_TYPE 'VARCHAR'),
nova_group string(1) OPTIONS (ANNOTATION '', NAMEINSOURCE '`nova_group`', CHAR_OCTET_LENGTH 4, NATIVE_TYPE 'CHAR'),
nutrition_grade_fr string(1) OPTIONS (ANNOTATION '', NAMEINSOURCE '`nutrition_grade_fr`', CHAR_OCTET_LENGTH 4, NATIVE_TYPE 'CHAR'),
energy_100g double OPTIONS (ANNOTATION '', NAMEINSOURCE '`energy_100g`', NATIVE_TYPE 'DOUBLE'),
carbohydrates_100g double OPTIONS (ANNOTATION '', NAMEINSOURCE '`carbohydrates_100g`', NATIVE_TYPE 'DOUBLE'),
sugars_100g double OPTIONS (ANNOTATION '', NAMEINSOURCE '`sugars_100g`', NATIVE_TYPE 'DOUBLE'),
proteins_100g double OPTIONS (ANNOTATION '', NAMEINSOURCE '`proteins_100g`', NATIVE_TYPE 'DOUBLE'),
fat_100g double OPTIONS (ANNOTATION '', NAMEINSOURCE '`fat_100g`', NATIVE_TYPE 'DOUBLE'),
saturated_fat_100g double OPTIONS (ANNOTATION '', NAMEINSOURCE '`saturated_fat_100g`', NATIVE_TYPE 'DOUBLE'),
saturated_fat_modifier string(3) OPTIONS (ANNOTATION '', NAMEINSOURCE '`saturated_fat_modifier`', CHAR_OCTET_LENGTH 12, NATIVE_TYPE 'CHAR'),
salt_100g double OPTIONS (ANNOTATION '', NAMEINSOURCE '`salt_100g`', NATIVE_TYPE 'DOUBLE'),
sodium_100g double OPTIONS (ANNOTATION '', NAMEINSOURCE '`sodium_100g`', NATIVE_TYPE 'DOUBLE'),
CONSTRAINT "PRIMARY" PRIMARY KEY(idCode),
CONSTRAINT code_UNIQUE UNIQUE(idCode)
) OPTIONS (ANNOTATION '', NAMEINSOURCE '`FDBProducts`', UPDATABLE TRUE);
CREATE FOREIGN TABLE MealConfigs (
fkProfile long NOT NULL OPTIONS (ANNOTATION '', NAMEINSOURCE '`fkProfile`', NATIVE_TYPE 'BIGINT UNSIGNED'),
Weekday string(1) NOT NULL OPTIONS (ANNOTATION '', NAMEINSOURCE '`Weekday`', CHAR_OCTET_LENGTH 4, NATIVE_TYPE 'ENUM'),
MealNumber string(1) NOT NULL OPTIONS (ANNOTATION '', NAMEINSOURCE '`MealNumber`', CHAR_OCTET_LENGTH 4, NATIVE_TYPE 'ENUM'),
WeekdaySortOrder long NOT NULL OPTIONS (ANNOTATION '', NAMEINSOURCE '`WeekdaySortOrder`', NATIVE_TYPE 'INT UNSIGNED'),
MealName string(45) DEFAULT 'strMeal' OPTIONS (ANNOTATION '', NAMEINSOURCE '`MealName`', CHAR_OCTET_LENGTH 180, NATIVE_TYPE 'VARCHAR'),
MealEnabled boolean OPTIONS (ANNOTATION '', NAMEINSOURCE '`MealEnabled`', NATIVE_TYPE 'BIT'),
MealStartTime time OPTIONS (ANNOTATION '', NAMEINSOURCE '`MealStartTime`', NATIVE_TYPE 'TIME'),
CONSTRAINT "PRIMARY" PRIMARY KEY(fkProfile, Weekday, MealNumber),
CONSTRAINT fkMealConfigToAccount FOREIGN KEY(fkProfile) REFERENCES Account (idProfile)
) OPTIONS (ANNOTATION '', NAMEINSOURCE '`MealConfigs`', UPDATABLE TRUE);
CREATE FOREIGN TABLE Profile (
fkProfile long NOT NULL OPTIONS (ANNOTATION '', NAMEINSOURCE '`fkProfile`', NATIVE_TYPE 'BIGINT UNSIGNED'),
BodyHeight float DEFAULT '0.000' OPTIONS (ANNOTATION '', NAMEINSOURCE '`BodyHeight`', NATIVE_TYPE 'FLOAT UNSIGNED'),
GoalWeight float DEFAULT '0.000' OPTIONS (ANNOTATION '', NAMEINSOURCE '`GoalWeight`', NATIVE_TYPE 'FLOAT UNSIGNED'),
Gender string(1) DEFAULT 'm' OPTIONS (ANNOTATION '', NAMEINSOURCE '`Gender`', CHAR_OCTET_LENGTH 4, NATIVE_TYPE 'ENUM'),
BirthDate date OPTIONS (ANNOTATION '', NAMEINSOURCE '`BirthDate`', NATIVE_TYPE 'DATE'),
ActivityLevel string(17) DEFAULT 'strActive' OPTIONS (ANNOTATION '', NAMEINSOURCE '`ActivityLevel`', CHAR_OCTET_LENGTH 68, NATIVE_TYPE 'ENUM'),
CONSTRAINT "PRIMARY" PRIMARY KEY(fkProfile),
CONSTRAINT fkProfile_UNIQUE UNIQUE(fkProfile),
CONSTRAINT fkProfileToAccount FOREIGN KEY(fkProfile) REFERENCES Account (idProfile)
) OPTIONS (ANNOTATION '', NAMEINSOURCE '`Profile`', UPDATABLE TRUE);
{noformat}
> When using DateTime datatype with millisecond fractions, i.e DateTime(3) the resulting urls for the records are invalid
> -----------------------------------------------------------------------------------------------------------------------
>
> Key: TEIID-5672
> URL: https://issues.jboss.org/browse/TEIID-5672
> Project: Teiid
> Issue Type: Bug
> Affects Versions: 11.2.1
> Environment: Docker Container
> Reporter: Christoph John
> Assignee: Steven Hawkins
> Priority: Major
> Attachments: Bildschirmfoto 2019-03-04 um 20.47.19.png
>
>
> I am using a composite key based on a BIGINT and a DATETIME(3) value. The URLs which Teiid generates are invalid in this case. When using DATETIME(0) the links or ok. Example of generated record structure
> {code:java}
> <a:feed xmlns:a="http://www.w3.org/2005/Atom" xmlns:m="http://docs.oasis-open.org/odata/ns/metadata" xmlns:d="http://docs.oasis-open.org/odata/ns/data" m:context="https://morpheus.fritz.box/odata4/svc/my_nutri_diary/$metadata#Diary">
> <a:id>
> https://morpheus.fritz.box/odata4/svc/my_nutri_diary/Diary
> </a:id>
> <a:entry>
> <a:id>
> https://morpheus.fritz.box/odata4/svc/my_nutri_diary/Diary(fkProfile=2,Ad...
> </a:id>
> <a:title/>
> <a:summary/>
> <a:updated>2019-03-03T17:53:52Z</a:updated>
> <a:author>
> <a:name/>
> </a:author>
> <a:link rel="edit" href="https://morpheus.fritz.box/odata4/svc/my_nutri_diary/Diary(fkProfile=2,Ad..."/>
> <a:link rel="http://docs.oasis-open.org/odata/ns/related/fkDiaryToAccount" title="fkDiaryToAccount" href="https://morpheus.fritz.box/odata4/svc/my_nutri_diary/Diary(fkProfile=2,Ad..."/>
> <a:link rel="http://docs.oasis-open.org/odata/ns/related/fkDiaryToFDBProducts" title="fkDiaryToFDBProducts" href="https://morpheus.fritz.box/odata4/svc/my_nutri_diary/Diary(fkProfile=2,Ad..."/>
> <a:link rel="http://docs.oasis-open.org/odata/ns/relatedlinks/fkDiaryToAccount" title="fkDiaryToAccount" href="https://morpheus.fritz.box/odata4/svc/my_nutri_diary/Diary(fkProfile=2,Ad..."/>
> <a:link rel="http://docs.oasis-open.org/odata/ns/relatedlinks/fkDiaryToFDBProducts" title="fkDiaryToFDBProducts" href="https://morpheus.fritz.box/odata4/svc/my_nutri_diary/Diary(fkProfile=2,Ad..."/>
> <a:category scheme="http://docs.oasis-open.org/odata/ns/scheme" term="#svc.1.my_nutri_diary.Diary"/>
> <a:content type="application/xml">
> <m:properties>
> <d:fkProfile m:type="Int64">2</d:fkProfile>
> <d:AddedDateTime m:type="DateTimeOffset">2019-03-03T17:53:12.676Z</d:AddedDateTime>
> <d:fkIdCode m:type="Int64">1772</d:fkIdCode>
> <d:product_name>Mélange fruits secs</d:product_name>
> <d:brands>Agrosourcing</d:brands>
> <d:DatabaseID m:type="Int16">0</d:DatabaseID>
> <d:MealNumber>5</d:MealNumber>
> <d:AmountInG m:type="Double">100.0</d:AmountInG>
> <d:Calories m:type="Double">0.0</d:Calories>
> <d:ProteinsInG m:type="Double">-1.0</d:ProteinsInG>
> <d:CarbohydratesInG m:type="Double">-1.0</d:CarbohydratesInG>
> <d:SugarsInG m:type="Double">-1.0</d:SugarsInG>
> <d:FatsInG m:type="Double">-1.0</d:FatsInG>
> <d:SaturatedFatsInG m:type="Double">-1.0</d:SaturatedFatsInG>
> <d:SaltsInG m:type="Double">-1.0</d:SaltsInG>
> <d:Diarycol m:null="true"/>
> </m:properties>
> </a:content>
> </a:entry>
> {code}
> When I navigate to
> https://morpheus.fritz.box/odata4/svc/my_nutri_diary/Diary(fkProfile=2,Ad...
> I get HTTP ERROR 404 page not found. Note: I replaced ":"with "%3A" (urlencode) in the url which was required to work with the DateTime(0) primary keys. But this did not help either.
--
This message was sent by Atlassian Jira
(v7.12.1#712002)
7 years, 1 month
[JBoss JIRA] (TEIID-5672) When using DateTime datatype with millisecond fractions, i.e DateTime(3) the resulting urls for the records are invalid
by Christoph John (Jira)
[ https://issues.jboss.org/browse/TEIID-5672?page=com.atlassian.jira.plugin... ]
Christoph John edited comment on TEIID-5672 at 3/4/19 3:01 PM:
---------------------------------------------------------------
Yes, the encoding is done on client side. This is not the problem at that point.
OK, I will give two examples which make it clear that it is not a client side error. The first one is without DateTime fractions and everything is working as expected
Example 1:
If I query the collection https://morpheus.fritz.box/odata4/svc/my_nutri_diary/Diary
I get the list with entities. A single entity is looking as follows:
{noformat}
<a:entry>
<a:id>
https://morpheus.fritz.box/odata4/svc/my_nutri_diary/Diary(fkProfile=2,Ad...
</a:id>
<a:title/>
<a:summary/>
<a:updated>2019-03-04T15:07:44Z</a:updated>
<a:author>
<a:name/>
</a:author>
<a:link rel="edit" href="https://morpheus.fritz.box/odata4/svc/my_nutri_diary/Diary(fkProfile=2,Ad..."/>
<a:link rel="http://docs.oasis-open.org/odata/ns/related/fkDiaryToAccount" title="fkDiaryToAccount" href="https://morpheus.fritz.box/odata4/svc/my_nutri_diary/Diary(fkProfile=2,Ad..."/>
<a:link rel="http://docs.oasis-open.org/odata/ns/related/fkDiaryToFDBProducts" title="fkDiaryToFDBProducts" href="https://morpheus.fritz.box/odata4/svc/my_nutri_diary/Diary(fkProfile=2,Ad..."/>
<a:link rel="http://docs.oasis-open.org/odata/ns/relatedlinks/fkDiaryToAccount" title="fkDiaryToAccount" href="https://morpheus.fritz.box/odata4/svc/my_nutri_diary/Diary(fkProfile=2,Ad..."/>
<a:link rel="http://docs.oasis-open.org/odata/ns/relatedlinks/fkDiaryToFDBProducts" title="fkDiaryToFDBProducts" href="https://morpheus.fritz.box/odata4/svc/my_nutri_diary/Diary(fkProfile=2,Ad..."/>
<a:category scheme="http://docs.oasis-open.org/odata/ns/scheme" term="#svc.1.my_nutri_diary.Diary"/>
<a:content type="application/xml">
<m:properties>
<d:fkProfile m:type="Int64">2</d:fkProfile>
<d:AddedDateTime m:type="DateTimeOffset">2019-03-03T18:46:39Z</d:AddedDateTime>
<d:fkIdCode m:type="Int64">17</d:fkIdCode>
<d:product_name>Vitória crackers</d:product_name>
<d:brands>n/a</d:brands>
<d:DatabaseID m:type="Int16">0</d:DatabaseID>
<d:MealNumber>0</d:MealNumber>
<d:AmountInG m:type="Double">200.0</d:AmountInG>
<d:Calories m:type="Double">375.0</d:Calories>
<d:ProteinsInG m:type="Double">7.8</d:ProteinsInG>
<d:CarbohydratesInG m:type="Double">70.1</d:CarbohydratesInG>
<d:SugarsInG m:type="Double">15.0</d:SugarsInG>
<d:FatsInG m:type="Double">7.0</d:FatsInG>
<d:SaturatedFatsInG m:type="Double">3.08</d:SaturatedFatsInG>
<d:SaltsInG m:type="Double">1.4</d:SaltsInG>
<d:Diarycol m:null="true"/>
</m:properties>
</a:content>
</a:entry>
{noformat}
--------------------
When I select this entity via the following url, I get the entity as response as I expect.
https://morpheus.fritz.box/odata4/svc/my_nutri_diary/Diary(fkProfile=2,Ad...
-----------------------------------------------------------------------
Example 2: Now using millisecond format
Again, when I query the collection via
https://morpheus.fritz.box/odata4/svc/my_nutri_diary/Diary
I get a list with the entities. Here an example item with millisecond key
{noformat}
<a:entry>
<a:id>
https://morpheus.fritz.box/odata4/svc/my_nutri_diary/Diary(fkProfile=2,Ad...
</a:id>
<a:title/>
<a:summary/>
<a:updated>2019-03-04T19:43:08Z</a:updated>
<a:author>
<a:name/>
</a:author>
<a:link rel="edit" href="https://morpheus.fritz.box/odata4/svc/my_nutri_diary/Diary(fkProfile=2,Ad..."/>
<a:link rel="http://docs.oasis-open.org/odata/ns/related/fkDiaryToAccount" title="fkDiaryToAccount" href="https://morpheus.fritz.box/odata4/svc/my_nutri_diary/Diary(fkProfile=2,Ad..."/>
<a:link rel="http://docs.oasis-open.org/odata/ns/related/fkDiaryToFDBProducts" title="fkDiaryToFDBProducts" href="https://morpheus.fritz.box/odata4/svc/my_nutri_diary/Diary(fkProfile=2,Ad..."/>
<a:link rel="http://docs.oasis-open.org/odata/ns/relatedlinks/fkDiaryToAccount" title="fkDiaryToAccount" href="https://morpheus.fritz.box/odata4/svc/my_nutri_diary/Diary(fkProfile=2,Ad..."/>
<a:link rel="http://docs.oasis-open.org/odata/ns/relatedlinks/fkDiaryToFDBProducts" title="fkDiaryToFDBProducts" href="https://morpheus.fritz.box/odata4/svc/my_nutri_diary/Diary(fkProfile=2,Ad..."/>
<a:category scheme="http://docs.oasis-open.org/odata/ns/scheme" term="#svc.1.my_nutri_diary.Diary"/>
<a:content type="application/xml">
<m:properties>
<d:fkProfile m:type="Int64">2</d:fkProfile>
<d:AddedDateTime m:type="DateTimeOffset">2019-03-04T19:42:53.148Z</d:AddedDateTime>
<d:fkIdCode m:type="Int64">1772</d:fkIdCode>
<d:product_name>Mélange fruits secs</d:product_name>
<d:brands>Agrosourcing</d:brands>
<d:DatabaseID m:type="Int16">0</d:DatabaseID>
<d:MealNumber>4</d:MealNumber>
<d:AmountInG m:type="Double">100.0</d:AmountInG>
<d:Calories m:null="true"/>
<d:ProteinsInG m:null="true"/>
<d:CarbohydratesInG m:null="true"/>
<d:SugarsInG m:null="true"/>
<d:FatsInG m:null="true"/>
<d:SaturatedFatsInG m:null="true"/>
<d:SaltsInG m:null="true"/>
<d:Diarycol m:null="true"/>
</m:properties>
</a:content>
</a:entry>
{noformat}
--------------------------------------------------------------
If I now query this sincle entity via the given url
https://morpheus.fritz.box/odata4/svc/my_nutri_diary/Diary(fkProfile=2,Ad...
I do not get the entity but the following error message:
Diese morpheus.fritz.box-Seite wurde nicht gefunden Für folgende Webadresse wurde keine Webseite gefunden: https://morpheus.fritz.box/odata4/svc/my_nutri_diary/Diary(fkProfile=2,Ad....
HTTP ERROR 404
I should also mention, the entity is correctly stored in the underlaying mysql database
!Bildschirmfoto 2019-03-04 um 20.47.19.png|thumbnail!
You see it does not depend on the format of the odata query. The urls were directly taken from the generated responses of the teiid server. Is my description sufficient ?
Here is the vdb code that was generated for the key including milliseconds:
{noformat}
CREATE FOREIGN TABLE Account (
idProfile long NOT NULL AUTO_INCREMENT OPTIONS (ANNOTATION '', NAMEINSOURCE '`idProfile`', NATIVE_TYPE 'BIGINT UNSIGNED'),
uuidUser string(36) NOT NULL OPTIONS (ANNOTATION '', NAMEINSOURCE '`uuidUser`', NATIVE_TYPE 'CHAR'),
CONSTRAINT "PRIMARY" PRIMARY KEY(idProfile),
CONSTRAINT idProfile_UNIQUE UNIQUE(idProfile),
CONSTRAINT uuidUser_UNIQUE UNIQUE(uuidUser)
) OPTIONS (ANNOTATION '', NAMEINSOURCE '`Account`', UPDATABLE TRUE);
CREATE FOREIGN TABLE Avatar (
fkProfile long NOT NULL OPTIONS (ANNOTATION '', NAMEINSOURCE '`fkProfile`', NATIVE_TYPE 'BIGINT UNSIGNED'),
AvatarImg blob(65535) OPTIONS (ANNOTATION '', NAMEINSOURCE '`AvatarImg`', NATIVE_TYPE 'BLOB'),
CONSTRAINT "PRIMARY" PRIMARY KEY(fkProfile),
CONSTRAINT fkProfile_UNIQUE UNIQUE(fkProfile),
CONSTRAINT fkAvatarToAccount FOREIGN KEY(fkProfile) REFERENCES Account (idProfile)
) OPTIONS (ANNOTATION '', NAMEINSOURCE '`Avatar`', UPDATABLE TRUE);
CREATE FOREIGN TABLE BodyWeight (
idBodyWeight long NOT NULL AUTO_INCREMENT OPTIONS (ANNOTATION 'We need a surrogate key here as Teiid requires a primary key on each table. fkProfile is not unique here as we can will have multiple weight measurements per person. Moreover, combining it with WeightMeasurementDateTime makes the index to compute intensive.', NAMEINSOURCE '`idBodyWeight`', NATIVE_TYPE 'BIGINT UNSIGNED'),
fkProfile long NOT NULL OPTIONS (ANNOTATION '', NAMEINSOURCE '`fkProfile`', NATIVE_TYPE 'BIGINT UNSIGNED'),
WeightMeasurementDateTime timestamp NOT NULL OPTIONS (ANNOTATION '', NAMEINSOURCE '`WeightMeasurementDateTime`', NATIVE_TYPE 'DATETIME'),
Weight float NOT NULL OPTIONS (ANNOTATION '', NAMEINSOURCE '`Weight`', NATIVE_TYPE 'FLOAT UNSIGNED'),
CONSTRAINT "PRIMARY" PRIMARY KEY(idBodyWeight),
CONSTRAINT idBodyWeight_UNIQUE UNIQUE(idBodyWeight),
CONSTRAINT fkBodyWeightToAccount FOREIGN KEY(fkProfile) REFERENCES Account (idProfile)
) OPTIONS (ANNOTATION '', NAMEINSOURCE '`BodyWeight`', UPDATABLE TRUE);
CREATE FOREIGN TABLE ConfigOptions (
fkProfile long NOT NULL OPTIONS (ANNOTATION '', NAMEINSOURCE '`fkProfile`', NATIVE_TYPE 'BIGINT UNSIGNED'),
MUnitWeight string(2) DEFAULT 'kg' OPTIONS (ANNOTATION '', NAMEINSOURCE '`MUnitWeight`', CHAR_OCTET_LENGTH 8, NATIVE_TYPE 'ENUM'),
MUnitLength string(2) DEFAULT 'cm' OPTIONS (ANNOTATION '', NAMEINSOURCE '`MUnitLength`', CHAR_OCTET_LENGTH 8, NATIVE_TYPE 'ENUM'),
MUnitEnergy string(4) DEFAULT 'kcal' OPTIONS (ANNOTATION '', NAMEINSOURCE '`MUnitEnergy`', CHAR_OCTET_LENGTH 16, NATIVE_TYPE 'ENUM'),
MUnitLiquids string(2) DEFAULT 'ml' OPTIONS (ANNOTATION '', NAMEINSOURCE '`MUnitLiquids`', CHAR_OCTET_LENGTH 8, NATIVE_TYPE 'ENUM'),
MUnitTime string(3) DEFAULT '24h' OPTIONS (ANNOTATION '', NAMEINSOURCE '`MUnitTime`', CHAR_OCTET_LENGTH 12, NATIVE_TYPE 'ENUM'),
EnableDrinkReminder boolean DEFAULT '0' OPTIONS (ANNOTATION '', NAMEINSOURCE '`EnableDrinkReminder`', NATIVE_TYPE 'BIT'),
PreferredCountryCodeForSearch string(2) DEFAULT 'de' OPTIONS (ANNOTATION '', NAMEINSOURCE '`PreferredCountryCodeForSearch`', CHAR_OCTET_LENGTH 8, NATIVE_TYPE 'VARCHAR'),
EnableInternationalSearch boolean DEFAULT '1' OPTIONS (ANNOTATION '', NAMEINSOURCE '`EnableInternationalSearch`', NATIVE_TYPE 'BIT'),
DaySpecificDietConfig boolean DEFAULT '0' OPTIONS (ANNOTATION '', NAMEINSOURCE '`DaySpecificDietConfig`', NATIVE_TYPE 'BIT'),
CONSTRAINT "PRIMARY" PRIMARY KEY(fkProfile),
CONSTRAINT fkProfile_UNIQUE UNIQUE(fkProfile),
CONSTRAINT fkConfigOptionsToAccount FOREIGN KEY(fkProfile) REFERENCES Account (idProfile)
) OPTIONS (ANNOTATION '', NAMEINSOURCE '`ConfigOptions`', UPDATABLE TRUE);
CREATE FOREIGN TABLE Diary (
fkProfile long NOT NULL OPTIONS (ANNOTATION '', NAMEINSOURCE '`fkProfile`', NATIVE_TYPE 'BIGINT UNSIGNED'),
AddedDateTime timestamp NOT NULL OPTIONS (ANNOTATION '', NAMEINSOURCE '`AddedDateTime`', NATIVE_TYPE 'DATETIME'),
fkIdCode long NOT NULL OPTIONS (ANNOTATION '', NAMEINSOURCE '`fkIdCode`', NATIVE_TYPE 'BIGINT UNSIGNED'),
product_name string(256) OPTIONS (ANNOTATION '', NAMEINSOURCE '`product_name`', CHAR_OCTET_LENGTH 1024, NATIVE_TYPE 'VARCHAR'),
brands string(384) OPTIONS (ANNOTATION '', NAMEINSOURCE '`brands`', CHAR_OCTET_LENGTH 1536, NATIVE_TYPE 'VARCHAR'),
DatabaseID short NOT NULL OPTIONS (ANNOTATION '', NAMEINSOURCE '`DatabaseID`', NATIVE_TYPE 'TINYINT UNSIGNED'),
MealNumber string(1) NOT NULL OPTIONS (ANNOTATION '', NAMEINSOURCE '`MealNumber`', CHAR_OCTET_LENGTH 4, NATIVE_TYPE 'ENUM'),
AmountInG double OPTIONS (ANNOTATION '', NAMEINSOURCE '`AmountInG`', NATIVE_TYPE 'DOUBLE'),
Calories double OPTIONS (ANNOTATION '', NAMEINSOURCE '`Calories`', NATIVE_TYPE 'DOUBLE'),
ProteinsInG double OPTIONS (ANNOTATION '', NAMEINSOURCE '`ProteinsInG`', NATIVE_TYPE 'DOUBLE'),
CarbohydratesInG double OPTIONS (ANNOTATION '', NAMEINSOURCE '`CarbohydratesInG`', NATIVE_TYPE 'DOUBLE'),
SugarsInG double OPTIONS (ANNOTATION '', NAMEINSOURCE '`SugarsInG`', NATIVE_TYPE 'DOUBLE'),
FatsInG double OPTIONS (ANNOTATION '', NAMEINSOURCE '`FatsInG`', NATIVE_TYPE 'DOUBLE'),
SaturatedFatsInG double OPTIONS (ANNOTATION '', NAMEINSOURCE '`SaturatedFatsInG`', NATIVE_TYPE 'DOUBLE'),
SaltsInG double OPTIONS (ANNOTATION '', NAMEINSOURCE '`SaltsInG`', NATIVE_TYPE 'DOUBLE'),
Diarycol string(45) OPTIONS (ANNOTATION '', NAMEINSOURCE '`Diarycol`', CHAR_OCTET_LENGTH 180, NATIVE_TYPE 'VARCHAR'),
CONSTRAINT "PRIMARY" PRIMARY KEY(fkProfile, AddedDateTime),
CONSTRAINT fkDiaryToFDBProducts FOREIGN KEY(fkIdCode) REFERENCES FDBProducts (idCode),
CONSTRAINT fkDiaryToAccount FOREIGN KEY(fkProfile) REFERENCES Account (idProfile)
) OPTIONS (ANNOTATION '', NAMEINSOURCE '`Diary`', UPDATABLE TRUE);
CREATE FOREIGN TABLE FDBProducts (
idCode long NOT NULL OPTIONS (ANNOTATION '', NAMEINSOURCE '`idCode`', NATIVE_TYPE 'BIGINT UNSIGNED'),
lc string(5) OPTIONS (ANNOTATION '', NAMEINSOURCE '`lc`', CHAR_OCTET_LENGTH 20, NATIVE_TYPE 'CHAR'),
product_name string(256) OPTIONS (ANNOTATION '', NAMEINSOURCE '`product_name`', CHAR_OCTET_LENGTH 1024, NATIVE_TYPE 'VARCHAR'),
origins string(512) OPTIONS (ANNOTATION '', NAMEINSOURCE '`origins`', CHAR_OCTET_LENGTH 2048, NATIVE_TYPE 'VARCHAR'),
brands string(384) OPTIONS (ANNOTATION '', NAMEINSOURCE '`brands`', CHAR_OCTET_LENGTH 1536, NATIVE_TYPE 'VARCHAR'),
quantity string(256) OPTIONS (ANNOTATION '', NAMEINSOURCE '`quantity`', CHAR_OCTET_LENGTH 1024, NATIVE_TYPE 'VARCHAR'),
nova_group string(1) OPTIONS (ANNOTATION '', NAMEINSOURCE '`nova_group`', CHAR_OCTET_LENGTH 4, NATIVE_TYPE 'CHAR'),
nutrition_grade_fr string(1) OPTIONS (ANNOTATION '', NAMEINSOURCE '`nutrition_grade_fr`', CHAR_OCTET_LENGTH 4, NATIVE_TYPE 'CHAR'),
energy_100g double OPTIONS (ANNOTATION '', NAMEINSOURCE '`energy_100g`', NATIVE_TYPE 'DOUBLE'),
carbohydrates_100g double OPTIONS (ANNOTATION '', NAMEINSOURCE '`carbohydrates_100g`', NATIVE_TYPE 'DOUBLE'),
sugars_100g double OPTIONS (ANNOTATION '', NAMEINSOURCE '`sugars_100g`', NATIVE_TYPE 'DOUBLE'),
proteins_100g double OPTIONS (ANNOTATION '', NAMEINSOURCE '`proteins_100g`', NATIVE_TYPE 'DOUBLE'),
fat_100g double OPTIONS (ANNOTATION '', NAMEINSOURCE '`fat_100g`', NATIVE_TYPE 'DOUBLE'),
saturated_fat_100g double OPTIONS (ANNOTATION '', NAMEINSOURCE '`saturated_fat_100g`', NATIVE_TYPE 'DOUBLE'),
saturated_fat_modifier string(3) OPTIONS (ANNOTATION '', NAMEINSOURCE '`saturated_fat_modifier`', CHAR_OCTET_LENGTH 12, NATIVE_TYPE 'CHAR'),
salt_100g double OPTIONS (ANNOTATION '', NAMEINSOURCE '`salt_100g`', NATIVE_TYPE 'DOUBLE'),
sodium_100g double OPTIONS (ANNOTATION '', NAMEINSOURCE '`sodium_100g`', NATIVE_TYPE 'DOUBLE'),
CONSTRAINT "PRIMARY" PRIMARY KEY(idCode),
CONSTRAINT code_UNIQUE UNIQUE(idCode)
) OPTIONS (ANNOTATION '', NAMEINSOURCE '`FDBProducts`', UPDATABLE TRUE);
CREATE FOREIGN TABLE MealConfigs (
fkProfile long NOT NULL OPTIONS (ANNOTATION '', NAMEINSOURCE '`fkProfile`', NATIVE_TYPE 'BIGINT UNSIGNED'),
Weekday string(1) NOT NULL OPTIONS (ANNOTATION '', NAMEINSOURCE '`Weekday`', CHAR_OCTET_LENGTH 4, NATIVE_TYPE 'ENUM'),
MealNumber string(1) NOT NULL OPTIONS (ANNOTATION '', NAMEINSOURCE '`MealNumber`', CHAR_OCTET_LENGTH 4, NATIVE_TYPE 'ENUM'),
WeekdaySortOrder long NOT NULL OPTIONS (ANNOTATION '', NAMEINSOURCE '`WeekdaySortOrder`', NATIVE_TYPE 'INT UNSIGNED'),
MealName string(45) DEFAULT 'strMeal' OPTIONS (ANNOTATION '', NAMEINSOURCE '`MealName`', CHAR_OCTET_LENGTH 180, NATIVE_TYPE 'VARCHAR'),
MealEnabled boolean OPTIONS (ANNOTATION '', NAMEINSOURCE '`MealEnabled`', NATIVE_TYPE 'BIT'),
MealStartTime time OPTIONS (ANNOTATION '', NAMEINSOURCE '`MealStartTime`', NATIVE_TYPE 'TIME'),
CONSTRAINT "PRIMARY" PRIMARY KEY(fkProfile, Weekday, MealNumber),
CONSTRAINT fkMealConfigToAccount FOREIGN KEY(fkProfile) REFERENCES Account (idProfile)
) OPTIONS (ANNOTATION '', NAMEINSOURCE '`MealConfigs`', UPDATABLE TRUE);
CREATE FOREIGN TABLE Profile (
fkProfile long NOT NULL OPTIONS (ANNOTATION '', NAMEINSOURCE '`fkProfile`', NATIVE_TYPE 'BIGINT UNSIGNED'),
BodyHeight float DEFAULT '0.000' OPTIONS (ANNOTATION '', NAMEINSOURCE '`BodyHeight`', NATIVE_TYPE 'FLOAT UNSIGNED'),
GoalWeight float DEFAULT '0.000' OPTIONS (ANNOTATION '', NAMEINSOURCE '`GoalWeight`', NATIVE_TYPE 'FLOAT UNSIGNED'),
Gender string(1) DEFAULT 'm' OPTIONS (ANNOTATION '', NAMEINSOURCE '`Gender`', CHAR_OCTET_LENGTH 4, NATIVE_TYPE 'ENUM'),
BirthDate date OPTIONS (ANNOTATION '', NAMEINSOURCE '`BirthDate`', NATIVE_TYPE 'DATE'),
ActivityLevel string(17) DEFAULT 'strActive' OPTIONS (ANNOTATION '', NAMEINSOURCE '`ActivityLevel`', CHAR_OCTET_LENGTH 68, NATIVE_TYPE 'ENUM'),
CONSTRAINT "PRIMARY" PRIMARY KEY(fkProfile),
CONSTRAINT fkProfile_UNIQUE UNIQUE(fkProfile),
CONSTRAINT fkProfileToAccount FOREIGN KEY(fkProfile) REFERENCES Account (idProfile)
) OPTIONS (ANNOTATION '', NAMEINSOURCE '`Profile`', UPDATABLE TRUE);
{noformat}
was (Author: cjohn001):
OK,
I will give two examples. The first one is without DateTime fractions and everything is working as expected
Example 1:
If I query the collection https://morpheus.fritz.box/odata4/svc/my_nutri_diary/Diary
I get the list with entities. A single entity is looking as follows:
{noformat}
<a:entry>
<a:id>
https://morpheus.fritz.box/odata4/svc/my_nutri_diary/Diary(fkProfile=2,Ad...
</a:id>
<a:title/>
<a:summary/>
<a:updated>2019-03-04T15:07:44Z</a:updated>
<a:author>
<a:name/>
</a:author>
<a:link rel="edit" href="https://morpheus.fritz.box/odata4/svc/my_nutri_diary/Diary(fkProfile=2,Ad..."/>
<a:link rel="http://docs.oasis-open.org/odata/ns/related/fkDiaryToAccount" title="fkDiaryToAccount" href="https://morpheus.fritz.box/odata4/svc/my_nutri_diary/Diary(fkProfile=2,Ad..."/>
<a:link rel="http://docs.oasis-open.org/odata/ns/related/fkDiaryToFDBProducts" title="fkDiaryToFDBProducts" href="https://morpheus.fritz.box/odata4/svc/my_nutri_diary/Diary(fkProfile=2,Ad..."/>
<a:link rel="http://docs.oasis-open.org/odata/ns/relatedlinks/fkDiaryToAccount" title="fkDiaryToAccount" href="https://morpheus.fritz.box/odata4/svc/my_nutri_diary/Diary(fkProfile=2,Ad..."/>
<a:link rel="http://docs.oasis-open.org/odata/ns/relatedlinks/fkDiaryToFDBProducts" title="fkDiaryToFDBProducts" href="https://morpheus.fritz.box/odata4/svc/my_nutri_diary/Diary(fkProfile=2,Ad..."/>
<a:category scheme="http://docs.oasis-open.org/odata/ns/scheme" term="#svc.1.my_nutri_diary.Diary"/>
<a:content type="application/xml">
<m:properties>
<d:fkProfile m:type="Int64">2</d:fkProfile>
<d:AddedDateTime m:type="DateTimeOffset">2019-03-03T18:46:39Z</d:AddedDateTime>
<d:fkIdCode m:type="Int64">17</d:fkIdCode>
<d:product_name>Vitória crackers</d:product_name>
<d:brands>n/a</d:brands>
<d:DatabaseID m:type="Int16">0</d:DatabaseID>
<d:MealNumber>0</d:MealNumber>
<d:AmountInG m:type="Double">200.0</d:AmountInG>
<d:Calories m:type="Double">375.0</d:Calories>
<d:ProteinsInG m:type="Double">7.8</d:ProteinsInG>
<d:CarbohydratesInG m:type="Double">70.1</d:CarbohydratesInG>
<d:SugarsInG m:type="Double">15.0</d:SugarsInG>
<d:FatsInG m:type="Double">7.0</d:FatsInG>
<d:SaturatedFatsInG m:type="Double">3.08</d:SaturatedFatsInG>
<d:SaltsInG m:type="Double">1.4</d:SaltsInG>
<d:Diarycol m:null="true"/>
</m:properties>
</a:content>
</a:entry>
{noformat}
--------------------
When I select this entity via the following url, I get the entity as response as I expect.
https://morpheus.fritz.box/odata4/svc/my_nutri_diary/Diary(fkProfile=2,Ad...
-----------------------------------------------------------------------
Example 2: Now using millisecond format
Again, when I query the collection via
https://morpheus.fritz.box/odata4/svc/my_nutri_diary/Diary
I get a list with the entities. Here an example item with millisecond key
{noformat}
<a:entry>
<a:id>
https://morpheus.fritz.box/odata4/svc/my_nutri_diary/Diary(fkProfile=2,Ad...
</a:id>
<a:title/>
<a:summary/>
<a:updated>2019-03-04T19:43:08Z</a:updated>
<a:author>
<a:name/>
</a:author>
<a:link rel="edit" href="https://morpheus.fritz.box/odata4/svc/my_nutri_diary/Diary(fkProfile=2,Ad..."/>
<a:link rel="http://docs.oasis-open.org/odata/ns/related/fkDiaryToAccount" title="fkDiaryToAccount" href="https://morpheus.fritz.box/odata4/svc/my_nutri_diary/Diary(fkProfile=2,Ad..."/>
<a:link rel="http://docs.oasis-open.org/odata/ns/related/fkDiaryToFDBProducts" title="fkDiaryToFDBProducts" href="https://morpheus.fritz.box/odata4/svc/my_nutri_diary/Diary(fkProfile=2,Ad..."/>
<a:link rel="http://docs.oasis-open.org/odata/ns/relatedlinks/fkDiaryToAccount" title="fkDiaryToAccount" href="https://morpheus.fritz.box/odata4/svc/my_nutri_diary/Diary(fkProfile=2,Ad..."/>
<a:link rel="http://docs.oasis-open.org/odata/ns/relatedlinks/fkDiaryToFDBProducts" title="fkDiaryToFDBProducts" href="https://morpheus.fritz.box/odata4/svc/my_nutri_diary/Diary(fkProfile=2,Ad..."/>
<a:category scheme="http://docs.oasis-open.org/odata/ns/scheme" term="#svc.1.my_nutri_diary.Diary"/>
<a:content type="application/xml">
<m:properties>
<d:fkProfile m:type="Int64">2</d:fkProfile>
<d:AddedDateTime m:type="DateTimeOffset">2019-03-04T19:42:53.148Z</d:AddedDateTime>
<d:fkIdCode m:type="Int64">1772</d:fkIdCode>
<d:product_name>Mélange fruits secs</d:product_name>
<d:brands>Agrosourcing</d:brands>
<d:DatabaseID m:type="Int16">0</d:DatabaseID>
<d:MealNumber>4</d:MealNumber>
<d:AmountInG m:type="Double">100.0</d:AmountInG>
<d:Calories m:null="true"/>
<d:ProteinsInG m:null="true"/>
<d:CarbohydratesInG m:null="true"/>
<d:SugarsInG m:null="true"/>
<d:FatsInG m:null="true"/>
<d:SaturatedFatsInG m:null="true"/>
<d:SaltsInG m:null="true"/>
<d:Diarycol m:null="true"/>
</m:properties>
</a:content>
</a:entry>
{noformat}
--------------------------------------------------------------
If I now query this sincle entity via the given url
https://morpheus.fritz.box/odata4/svc/my_nutri_diary/Diary(fkProfile=2,Ad...
I do not get the entity but the following error message:
Diese morpheus.fritz.box-Seite wurde nicht gefunden Für folgende Webadresse wurde keine Webseite gefunden: https://morpheus.fritz.box/odata4/svc/my_nutri_diary/Diary(fkProfile=2,Ad....
HTTP ERROR 404
I should also mention, the entity is correctly stored in the underlaying mysql database
!Bildschirmfoto 2019-03-04 um 20.47.19.png|thumbnail!
You see it does not depend on the format of the odata query. The urls were directly taken from the generated responses of the teiid server. Is my description sufficient ?
Here is the vdb code that was generated for the key including milliseconds:
{noformat}
CREATE FOREIGN TABLE Account (
idProfile long NOT NULL AUTO_INCREMENT OPTIONS (ANNOTATION '', NAMEINSOURCE '`idProfile`', NATIVE_TYPE 'BIGINT UNSIGNED'),
uuidUser string(36) NOT NULL OPTIONS (ANNOTATION '', NAMEINSOURCE '`uuidUser`', NATIVE_TYPE 'CHAR'),
CONSTRAINT "PRIMARY" PRIMARY KEY(idProfile),
CONSTRAINT idProfile_UNIQUE UNIQUE(idProfile),
CONSTRAINT uuidUser_UNIQUE UNIQUE(uuidUser)
) OPTIONS (ANNOTATION '', NAMEINSOURCE '`Account`', UPDATABLE TRUE);
CREATE FOREIGN TABLE Avatar (
fkProfile long NOT NULL OPTIONS (ANNOTATION '', NAMEINSOURCE '`fkProfile`', NATIVE_TYPE 'BIGINT UNSIGNED'),
AvatarImg blob(65535) OPTIONS (ANNOTATION '', NAMEINSOURCE '`AvatarImg`', NATIVE_TYPE 'BLOB'),
CONSTRAINT "PRIMARY" PRIMARY KEY(fkProfile),
CONSTRAINT fkProfile_UNIQUE UNIQUE(fkProfile),
CONSTRAINT fkAvatarToAccount FOREIGN KEY(fkProfile) REFERENCES Account (idProfile)
) OPTIONS (ANNOTATION '', NAMEINSOURCE '`Avatar`', UPDATABLE TRUE);
CREATE FOREIGN TABLE BodyWeight (
idBodyWeight long NOT NULL AUTO_INCREMENT OPTIONS (ANNOTATION 'We need a surrogate key here as Teiid requires a primary key on each table. fkProfile is not unique here as we can will have multiple weight measurements per person. Moreover, combining it with WeightMeasurementDateTime makes the index to compute intensive.', NAMEINSOURCE '`idBodyWeight`', NATIVE_TYPE 'BIGINT UNSIGNED'),
fkProfile long NOT NULL OPTIONS (ANNOTATION '', NAMEINSOURCE '`fkProfile`', NATIVE_TYPE 'BIGINT UNSIGNED'),
WeightMeasurementDateTime timestamp NOT NULL OPTIONS (ANNOTATION '', NAMEINSOURCE '`WeightMeasurementDateTime`', NATIVE_TYPE 'DATETIME'),
Weight float NOT NULL OPTIONS (ANNOTATION '', NAMEINSOURCE '`Weight`', NATIVE_TYPE 'FLOAT UNSIGNED'),
CONSTRAINT "PRIMARY" PRIMARY KEY(idBodyWeight),
CONSTRAINT idBodyWeight_UNIQUE UNIQUE(idBodyWeight),
CONSTRAINT fkBodyWeightToAccount FOREIGN KEY(fkProfile) REFERENCES Account (idProfile)
) OPTIONS (ANNOTATION '', NAMEINSOURCE '`BodyWeight`', UPDATABLE TRUE);
CREATE FOREIGN TABLE ConfigOptions (
fkProfile long NOT NULL OPTIONS (ANNOTATION '', NAMEINSOURCE '`fkProfile`', NATIVE_TYPE 'BIGINT UNSIGNED'),
MUnitWeight string(2) DEFAULT 'kg' OPTIONS (ANNOTATION '', NAMEINSOURCE '`MUnitWeight`', CHAR_OCTET_LENGTH 8, NATIVE_TYPE 'ENUM'),
MUnitLength string(2) DEFAULT 'cm' OPTIONS (ANNOTATION '', NAMEINSOURCE '`MUnitLength`', CHAR_OCTET_LENGTH 8, NATIVE_TYPE 'ENUM'),
MUnitEnergy string(4) DEFAULT 'kcal' OPTIONS (ANNOTATION '', NAMEINSOURCE '`MUnitEnergy`', CHAR_OCTET_LENGTH 16, NATIVE_TYPE 'ENUM'),
MUnitLiquids string(2) DEFAULT 'ml' OPTIONS (ANNOTATION '', NAMEINSOURCE '`MUnitLiquids`', CHAR_OCTET_LENGTH 8, NATIVE_TYPE 'ENUM'),
MUnitTime string(3) DEFAULT '24h' OPTIONS (ANNOTATION '', NAMEINSOURCE '`MUnitTime`', CHAR_OCTET_LENGTH 12, NATIVE_TYPE 'ENUM'),
EnableDrinkReminder boolean DEFAULT '0' OPTIONS (ANNOTATION '', NAMEINSOURCE '`EnableDrinkReminder`', NATIVE_TYPE 'BIT'),
PreferredCountryCodeForSearch string(2) DEFAULT 'de' OPTIONS (ANNOTATION '', NAMEINSOURCE '`PreferredCountryCodeForSearch`', CHAR_OCTET_LENGTH 8, NATIVE_TYPE 'VARCHAR'),
EnableInternationalSearch boolean DEFAULT '1' OPTIONS (ANNOTATION '', NAMEINSOURCE '`EnableInternationalSearch`', NATIVE_TYPE 'BIT'),
DaySpecificDietConfig boolean DEFAULT '0' OPTIONS (ANNOTATION '', NAMEINSOURCE '`DaySpecificDietConfig`', NATIVE_TYPE 'BIT'),
CONSTRAINT "PRIMARY" PRIMARY KEY(fkProfile),
CONSTRAINT fkProfile_UNIQUE UNIQUE(fkProfile),
CONSTRAINT fkConfigOptionsToAccount FOREIGN KEY(fkProfile) REFERENCES Account (idProfile)
) OPTIONS (ANNOTATION '', NAMEINSOURCE '`ConfigOptions`', UPDATABLE TRUE);
CREATE FOREIGN TABLE Diary (
fkProfile long NOT NULL OPTIONS (ANNOTATION '', NAMEINSOURCE '`fkProfile`', NATIVE_TYPE 'BIGINT UNSIGNED'),
AddedDateTime timestamp NOT NULL OPTIONS (ANNOTATION '', NAMEINSOURCE '`AddedDateTime`', NATIVE_TYPE 'DATETIME'),
fkIdCode long NOT NULL OPTIONS (ANNOTATION '', NAMEINSOURCE '`fkIdCode`', NATIVE_TYPE 'BIGINT UNSIGNED'),
product_name string(256) OPTIONS (ANNOTATION '', NAMEINSOURCE '`product_name`', CHAR_OCTET_LENGTH 1024, NATIVE_TYPE 'VARCHAR'),
brands string(384) OPTIONS (ANNOTATION '', NAMEINSOURCE '`brands`', CHAR_OCTET_LENGTH 1536, NATIVE_TYPE 'VARCHAR'),
DatabaseID short NOT NULL OPTIONS (ANNOTATION '', NAMEINSOURCE '`DatabaseID`', NATIVE_TYPE 'TINYINT UNSIGNED'),
MealNumber string(1) NOT NULL OPTIONS (ANNOTATION '', NAMEINSOURCE '`MealNumber`', CHAR_OCTET_LENGTH 4, NATIVE_TYPE 'ENUM'),
AmountInG double OPTIONS (ANNOTATION '', NAMEINSOURCE '`AmountInG`', NATIVE_TYPE 'DOUBLE'),
Calories double OPTIONS (ANNOTATION '', NAMEINSOURCE '`Calories`', NATIVE_TYPE 'DOUBLE'),
ProteinsInG double OPTIONS (ANNOTATION '', NAMEINSOURCE '`ProteinsInG`', NATIVE_TYPE 'DOUBLE'),
CarbohydratesInG double OPTIONS (ANNOTATION '', NAMEINSOURCE '`CarbohydratesInG`', NATIVE_TYPE 'DOUBLE'),
SugarsInG double OPTIONS (ANNOTATION '', NAMEINSOURCE '`SugarsInG`', NATIVE_TYPE 'DOUBLE'),
FatsInG double OPTIONS (ANNOTATION '', NAMEINSOURCE '`FatsInG`', NATIVE_TYPE 'DOUBLE'),
SaturatedFatsInG double OPTIONS (ANNOTATION '', NAMEINSOURCE '`SaturatedFatsInG`', NATIVE_TYPE 'DOUBLE'),
SaltsInG double OPTIONS (ANNOTATION '', NAMEINSOURCE '`SaltsInG`', NATIVE_TYPE 'DOUBLE'),
Diarycol string(45) OPTIONS (ANNOTATION '', NAMEINSOURCE '`Diarycol`', CHAR_OCTET_LENGTH 180, NATIVE_TYPE 'VARCHAR'),
CONSTRAINT "PRIMARY" PRIMARY KEY(fkProfile, AddedDateTime),
CONSTRAINT fkDiaryToFDBProducts FOREIGN KEY(fkIdCode) REFERENCES FDBProducts (idCode),
CONSTRAINT fkDiaryToAccount FOREIGN KEY(fkProfile) REFERENCES Account (idProfile)
) OPTIONS (ANNOTATION '', NAMEINSOURCE '`Diary`', UPDATABLE TRUE);
CREATE FOREIGN TABLE FDBProducts (
idCode long NOT NULL OPTIONS (ANNOTATION '', NAMEINSOURCE '`idCode`', NATIVE_TYPE 'BIGINT UNSIGNED'),
lc string(5) OPTIONS (ANNOTATION '', NAMEINSOURCE '`lc`', CHAR_OCTET_LENGTH 20, NATIVE_TYPE 'CHAR'),
product_name string(256) OPTIONS (ANNOTATION '', NAMEINSOURCE '`product_name`', CHAR_OCTET_LENGTH 1024, NATIVE_TYPE 'VARCHAR'),
origins string(512) OPTIONS (ANNOTATION '', NAMEINSOURCE '`origins`', CHAR_OCTET_LENGTH 2048, NATIVE_TYPE 'VARCHAR'),
brands string(384) OPTIONS (ANNOTATION '', NAMEINSOURCE '`brands`', CHAR_OCTET_LENGTH 1536, NATIVE_TYPE 'VARCHAR'),
quantity string(256) OPTIONS (ANNOTATION '', NAMEINSOURCE '`quantity`', CHAR_OCTET_LENGTH 1024, NATIVE_TYPE 'VARCHAR'),
nova_group string(1) OPTIONS (ANNOTATION '', NAMEINSOURCE '`nova_group`', CHAR_OCTET_LENGTH 4, NATIVE_TYPE 'CHAR'),
nutrition_grade_fr string(1) OPTIONS (ANNOTATION '', NAMEINSOURCE '`nutrition_grade_fr`', CHAR_OCTET_LENGTH 4, NATIVE_TYPE 'CHAR'),
energy_100g double OPTIONS (ANNOTATION '', NAMEINSOURCE '`energy_100g`', NATIVE_TYPE 'DOUBLE'),
carbohydrates_100g double OPTIONS (ANNOTATION '', NAMEINSOURCE '`carbohydrates_100g`', NATIVE_TYPE 'DOUBLE'),
sugars_100g double OPTIONS (ANNOTATION '', NAMEINSOURCE '`sugars_100g`', NATIVE_TYPE 'DOUBLE'),
proteins_100g double OPTIONS (ANNOTATION '', NAMEINSOURCE '`proteins_100g`', NATIVE_TYPE 'DOUBLE'),
fat_100g double OPTIONS (ANNOTATION '', NAMEINSOURCE '`fat_100g`', NATIVE_TYPE 'DOUBLE'),
saturated_fat_100g double OPTIONS (ANNOTATION '', NAMEINSOURCE '`saturated_fat_100g`', NATIVE_TYPE 'DOUBLE'),
saturated_fat_modifier string(3) OPTIONS (ANNOTATION '', NAMEINSOURCE '`saturated_fat_modifier`', CHAR_OCTET_LENGTH 12, NATIVE_TYPE 'CHAR'),
salt_100g double OPTIONS (ANNOTATION '', NAMEINSOURCE '`salt_100g`', NATIVE_TYPE 'DOUBLE'),
sodium_100g double OPTIONS (ANNOTATION '', NAMEINSOURCE '`sodium_100g`', NATIVE_TYPE 'DOUBLE'),
CONSTRAINT "PRIMARY" PRIMARY KEY(idCode),
CONSTRAINT code_UNIQUE UNIQUE(idCode)
) OPTIONS (ANNOTATION '', NAMEINSOURCE '`FDBProducts`', UPDATABLE TRUE);
CREATE FOREIGN TABLE MealConfigs (
fkProfile long NOT NULL OPTIONS (ANNOTATION '', NAMEINSOURCE '`fkProfile`', NATIVE_TYPE 'BIGINT UNSIGNED'),
Weekday string(1) NOT NULL OPTIONS (ANNOTATION '', NAMEINSOURCE '`Weekday`', CHAR_OCTET_LENGTH 4, NATIVE_TYPE 'ENUM'),
MealNumber string(1) NOT NULL OPTIONS (ANNOTATION '', NAMEINSOURCE '`MealNumber`', CHAR_OCTET_LENGTH 4, NATIVE_TYPE 'ENUM'),
WeekdaySortOrder long NOT NULL OPTIONS (ANNOTATION '', NAMEINSOURCE '`WeekdaySortOrder`', NATIVE_TYPE 'INT UNSIGNED'),
MealName string(45) DEFAULT 'strMeal' OPTIONS (ANNOTATION '', NAMEINSOURCE '`MealName`', CHAR_OCTET_LENGTH 180, NATIVE_TYPE 'VARCHAR'),
MealEnabled boolean OPTIONS (ANNOTATION '', NAMEINSOURCE '`MealEnabled`', NATIVE_TYPE 'BIT'),
MealStartTime time OPTIONS (ANNOTATION '', NAMEINSOURCE '`MealStartTime`', NATIVE_TYPE 'TIME'),
CONSTRAINT "PRIMARY" PRIMARY KEY(fkProfile, Weekday, MealNumber),
CONSTRAINT fkMealConfigToAccount FOREIGN KEY(fkProfile) REFERENCES Account (idProfile)
) OPTIONS (ANNOTATION '', NAMEINSOURCE '`MealConfigs`', UPDATABLE TRUE);
CREATE FOREIGN TABLE Profile (
fkProfile long NOT NULL OPTIONS (ANNOTATION '', NAMEINSOURCE '`fkProfile`', NATIVE_TYPE 'BIGINT UNSIGNED'),
BodyHeight float DEFAULT '0.000' OPTIONS (ANNOTATION '', NAMEINSOURCE '`BodyHeight`', NATIVE_TYPE 'FLOAT UNSIGNED'),
GoalWeight float DEFAULT '0.000' OPTIONS (ANNOTATION '', NAMEINSOURCE '`GoalWeight`', NATIVE_TYPE 'FLOAT UNSIGNED'),
Gender string(1) DEFAULT 'm' OPTIONS (ANNOTATION '', NAMEINSOURCE '`Gender`', CHAR_OCTET_LENGTH 4, NATIVE_TYPE 'ENUM'),
BirthDate date OPTIONS (ANNOTATION '', NAMEINSOURCE '`BirthDate`', NATIVE_TYPE 'DATE'),
ActivityLevel string(17) DEFAULT 'strActive' OPTIONS (ANNOTATION '', NAMEINSOURCE '`ActivityLevel`', CHAR_OCTET_LENGTH 68, NATIVE_TYPE 'ENUM'),
CONSTRAINT "PRIMARY" PRIMARY KEY(fkProfile),
CONSTRAINT fkProfile_UNIQUE UNIQUE(fkProfile),
CONSTRAINT fkProfileToAccount FOREIGN KEY(fkProfile) REFERENCES Account (idProfile)
) OPTIONS (ANNOTATION '', NAMEINSOURCE '`Profile`', UPDATABLE TRUE);
{noformat}
> When using DateTime datatype with millisecond fractions, i.e DateTime(3) the resulting urls for the records are invalid
> -----------------------------------------------------------------------------------------------------------------------
>
> Key: TEIID-5672
> URL: https://issues.jboss.org/browse/TEIID-5672
> Project: Teiid
> Issue Type: Bug
> Affects Versions: 11.2.1
> Environment: Docker Container
> Reporter: Christoph John
> Assignee: Steven Hawkins
> Priority: Major
> Attachments: Bildschirmfoto 2019-03-04 um 20.47.19.png
>
>
> I am using a composite key based on a BIGINT and a DATETIME(3) value. The URLs which Teiid generates are invalid in this case. When using DATETIME(0) the links or ok. Example of generated record structure
> {code:java}
> <a:feed xmlns:a="http://www.w3.org/2005/Atom" xmlns:m="http://docs.oasis-open.org/odata/ns/metadata" xmlns:d="http://docs.oasis-open.org/odata/ns/data" m:context="https://morpheus.fritz.box/odata4/svc/my_nutri_diary/$metadata#Diary">
> <a:id>
> https://morpheus.fritz.box/odata4/svc/my_nutri_diary/Diary
> </a:id>
> <a:entry>
> <a:id>
> https://morpheus.fritz.box/odata4/svc/my_nutri_diary/Diary(fkProfile=2,Ad...
> </a:id>
> <a:title/>
> <a:summary/>
> <a:updated>2019-03-03T17:53:52Z</a:updated>
> <a:author>
> <a:name/>
> </a:author>
> <a:link rel="edit" href="https://morpheus.fritz.box/odata4/svc/my_nutri_diary/Diary(fkProfile=2,Ad..."/>
> <a:link rel="http://docs.oasis-open.org/odata/ns/related/fkDiaryToAccount" title="fkDiaryToAccount" href="https://morpheus.fritz.box/odata4/svc/my_nutri_diary/Diary(fkProfile=2,Ad..."/>
> <a:link rel="http://docs.oasis-open.org/odata/ns/related/fkDiaryToFDBProducts" title="fkDiaryToFDBProducts" href="https://morpheus.fritz.box/odata4/svc/my_nutri_diary/Diary(fkProfile=2,Ad..."/>
> <a:link rel="http://docs.oasis-open.org/odata/ns/relatedlinks/fkDiaryToAccount" title="fkDiaryToAccount" href="https://morpheus.fritz.box/odata4/svc/my_nutri_diary/Diary(fkProfile=2,Ad..."/>
> <a:link rel="http://docs.oasis-open.org/odata/ns/relatedlinks/fkDiaryToFDBProducts" title="fkDiaryToFDBProducts" href="https://morpheus.fritz.box/odata4/svc/my_nutri_diary/Diary(fkProfile=2,Ad..."/>
> <a:category scheme="http://docs.oasis-open.org/odata/ns/scheme" term="#svc.1.my_nutri_diary.Diary"/>
> <a:content type="application/xml">
> <m:properties>
> <d:fkProfile m:type="Int64">2</d:fkProfile>
> <d:AddedDateTime m:type="DateTimeOffset">2019-03-03T17:53:12.676Z</d:AddedDateTime>
> <d:fkIdCode m:type="Int64">1772</d:fkIdCode>
> <d:product_name>Mélange fruits secs</d:product_name>
> <d:brands>Agrosourcing</d:brands>
> <d:DatabaseID m:type="Int16">0</d:DatabaseID>
> <d:MealNumber>5</d:MealNumber>
> <d:AmountInG m:type="Double">100.0</d:AmountInG>
> <d:Calories m:type="Double">0.0</d:Calories>
> <d:ProteinsInG m:type="Double">-1.0</d:ProteinsInG>
> <d:CarbohydratesInG m:type="Double">-1.0</d:CarbohydratesInG>
> <d:SugarsInG m:type="Double">-1.0</d:SugarsInG>
> <d:FatsInG m:type="Double">-1.0</d:FatsInG>
> <d:SaturatedFatsInG m:type="Double">-1.0</d:SaturatedFatsInG>
> <d:SaltsInG m:type="Double">-1.0</d:SaltsInG>
> <d:Diarycol m:null="true"/>
> </m:properties>
> </a:content>
> </a:entry>
> {code}
> When I navigate to
> https://morpheus.fritz.box/odata4/svc/my_nutri_diary/Diary(fkProfile=2,Ad...
> I get HTTP ERROR 404 page not found. Note: I replaced ":"with "%3A" (urlencode) in the url which was required to work with the DateTime(0) primary keys. But this did not help either.
--
This message was sent by Atlassian Jira
(v7.12.1#712002)
7 years, 1 month