@jon-ht commented on Thu Jul 12 2018
Hi,
It seems that's not possible to use a datetime before 1970-01-01.
Here is my simplified request :
mutation {
createPerson(
data: {
dateOfBirth: "1969-01-01T10:33:59.828Z"
}
) {
id
dateOfBirth
}
}
{
"data": {
"createPerson": null
},
"errors": [
{
"message": "Whoops. Looks like an internal server error. Search your server logs for request ID: local:api:cjjiw6k85002k076838g1qn78",
"locations": [],
"path": [
"createDefunct"
],
"requestId": "local:api:cjjiw6k85002k076838g1qn78"
}
]
}
If I change datetime value by 1970-01-01T10:33:59.828Z, it works as expected
Thanks @jon-ht, I can reproduce this error on 1.12-beta-1. However, your conclusion that dates before 1970 are not supported is not correct. Let me elaborate:
Works:
mutation b {
createPerson(data: {
dateOfBirth: "1969-01-01T10:33:59"
}) {
id
dateOfBirth
}
}
Doesn't work:
mutation a {
createPerson(data: {
dateOfBirth: "1969-01-01T10:33:59.828Z"
}) {
id
dateOfBirth
}
}
It seems that using the millisecond part (828Z in this example) is causing the error.
Here are the internal server error logs:
java.time.DateTimeException: Invalid value for NanoOfSecond (valid values 0 - 999999999): -172000000
at java.time.temporal.ValueRange.checkValidValue(ValueRange.java:311)
at java.time.temporal.ChronoField.checkValidValue(ChronoField.java:703)
at java.time.LocalDateTime.ofEpochSecond(LocalDateTime.java:418)
at com.prisma.api.connector.jdbc.extensions.JdbcExtensionsValueClasses$.jodaDateTimeToSqlTimestampUTC(JdbcExtensions.scala:33)
at com.prisma.api.connector.jdbc.extensions.JdbcExtensionsValueClasses$PreparedStatementExtensions$.setLeafValue$extension(JdbcExtensions.scala:53)
at com.prisma.api.connector.jdbc.extensions.JdbcExtensionsValueClasses$PreparedStatementExtensions$.setGcValue$extension(JdbcExtensions.scala:40)
at com.prisma.api.connector.jdbc.extensions.SlickExtensionsValueClasses$PositionedParameterExtensions$.setGcValue$extension(SlickExtensions.scala:17)
at com.prisma.api.connector.jdbc.database.NodeActions.$anonfun$createNode$4(NodeActions.scala:37)
at com.prisma.api.connector.jdbc.database.NodeActions.$anonfun$createNode$4$adapted(NodeActions.scala:34)
at scala.collection.immutable.List.foreach(List.scala:389)
at com.prisma.api.connector.jdbc.database.NodeActions.$anonfun$createNode$3(NodeActions.scala:34)
at com.prisma.api.connector.jdbc.database.NodeActions.$anonfun$createNode$3$adapted(NodeActions.scala:32)
at com.prisma.api.connector.jdbc.database.BuilderBase.$anonfun$jooqToDBIO$1(BuilderBase.scala:86)
at slick.jdbc.SimpleJdbcAction.run(StreamingInvokerAction.scala:70)
at slick.jdbc.SimpleJdbcAction.run(StreamingInvokerAction.scala:69)
at slick.basic.BasicBackend$DatabaseDef$$anon$2.liftedTree1$1(BasicBackend.scala:275)
at slick.basic.BasicBackend$DatabaseDef$$anon$2.run(BasicBackend.scala:275)
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)
java.time.DateTimeException: Invalid value for NanoOfSecond (valid values 0 - 999999999): -172000000
at java.time.temporal.ValueRange.checkValidValue(ValueRange.java:311)
at java.time.temporal.ChronoField.checkValidValue(ChronoField.java:703)
at java.time.LocalDateTime.ofEpochSecond(LocalDateTime.java:418)
at com.prisma.api.connector.jdbc.extensions.JdbcExtensionsValueClasses$.jodaDateTimeToSqlTimestampUTC(JdbcExtensions.scala:33)
at com.prisma.api.connector.jdbc.extensions.JdbcExtensionsValueClasses$PreparedStatementExtensions$.setLeafValue$extension(JdbcExtensions.scala:53)
at com.prisma.api.connector.jdbc.extensions.JdbcExtensionsValueClasses$PreparedStatementExtensions$.setGcValue$extension(JdbcExtensions.scala:40)
at com.prisma.api.connector.jdbc.extensions.SlickExtensionsValueClasses$PositionedParameterExtensions$.setGcValue$extension(SlickExtensions.scala:17)
at com.prisma.api.connector.jdbc.database.NodeActions.$anonfun$createNode$4(NodeActions.scala:37)
at com.prisma.api.connector.jdbc.database.NodeActions.$anonfun$createNode$4$adapted(NodeActions.scala:34)
at scala.collection.immutable.List.foreach(List.scala:389)
at com.prisma.api.connector.jdbc.database.NodeActions.$anonfun$createNode$3(NodeActions.scala:34)
at com.prisma.api.connector.jdbc.database.NodeActions.$anonfun$createNode$3$adapted(NodeActions.scala:32)
at com.prisma.api.connector.jdbc.database.BuilderBase.$anonfun$jooqToDBIO$1(BuilderBase.scala:86)
at slick.jdbc.SimpleJdbcAction.run(StreamingInvokerAction.scala:70)
at slick.jdbc.SimpleJdbcAction.run(StreamingInvokerAction.scala:69)
at slick.basic.BasicBackend$DatabaseDef$$anon$2.liftedTree1$1(BasicBackend.scala:275)
at slick.basic.BasicBackend$DatabaseDef$$anon$2.run(BasicBackend.scala:275)
{"key":"error/unhandled","requestId":"local:api:cjjo2xnrz00200a14zev75twl","clientId":"r-2768$dev","payload":{"exception":"java.time.DateTimeException: Invalid value for
NanoOfSecond (valid values 0 - 999999999): -172000000","query":"mutation a {\n createPerson(data: {dateOfBirth: \"1969-01-01T10:33:59.828Z\"}) {\n id\n dateOfBirth
\n }\n}\n\nmutation b {\n createPerson(data: {dateOfBirth: \"1969-01-01T10:33:59\"}) {\n id\n dateOfBirth\n }\n}\n","variables":"{}","code":"0","stack_trace":"ja
va.time.temporal.ValueRange.checkValidValue(ValueRange.java:311)\\n java.time.temporal.ChronoField.checkValidValue(ChronoField.java:703)\\n java.time.LocalDateTime.ofEpoc
hSecond(LocalDateTime.java:418)\\n com.prisma.api.connector.jdbc.extensions.JdbcExtensionsValueClasses$.jodaDateTimeToSqlTimestampUTC(JdbcExtensions.scala:33)\\n com.pris
ma.api.connector.jdbc.extensions.JdbcExtensionsValueClasses$PreparedStatementExtensions$.setLeafValue$extension(JdbcExtensions.scala:53)\\n com.prisma.api.connector.jdbc.
extensions.JdbcExtensionsValueClasses$PreparedStatementExtensions$.setGcValue$extension(JdbcExtensions.scala:40)\\n com.prisma.api.connector.jdbc.extensions.SlickExtensio
nsValueClasses$PositionedParameterExtensions$.setGcValue$extension(SlickExtensions.scala:17)\\n com.prisma.api.connector.jdbc.database.NodeActions.$anonfun$createNode$4(N
odeActions.scala:37)\\n com.prisma.api.connector.jdbc.database.NodeActions.$anonfun$createNode$4$adapted(NodeActions.scala:34)\\n scala.collection.immutable.List.foreach(
List.scala:389)\\n com.prisma.api.connector.jdbc.database.NodeActions.$anonfun$createNode$3(NodeActions.scala:34)\\n com.prisma.api.connector.jdbc.database.NodeActions.$a
nonfun$createNode$3$adapted(NodeActions.scala:32)\\n com.prisma.api.connector.jdbc.database.BuilderBase.$anonfun$jooqToDBIO$1(BuilderBase.scala:86)\\n slick.jdbc.SimpleJd
bcAction.run(StreamingInvokerAction.scala:70)\\n slick.jdbc.SimpleJdbcAction.run(StreamingInvokerAction.scala:69)\\n slick.basic.BasicBackend$DatabaseDef$$anon$2.liftedTr
ee1$1(BasicBackend.scala:275)\\n slick.basic.BasicBackend$DatabaseDef$$anon$2.run(BasicBackend.scala:275)\\n java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolE
xecutor.java:1149)\\n java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)\\n java.lang.Thread.run(Thread.java:748)","message":"Invalid value f
or NanoOfSecond (valid values 0 - 999999999): -172000000"}}
[Bugsnag - local / testing] Error report: com.bugsnag.Report@169ab84a
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)
Hello @marktani.
That's a good news ! I'm a bit confused about why 1970-01-01T10:33:59.828Z works and 1969-01-01T10:33:59.828Z doesn't. Thanks for your help :)
Ah good point, so this error does seem to only affect times pre 1970. 馃挕