Thomas Steinholz
10/18/2022, 5:57 PM> SELECT * from pinot.default."SELECT * FROM uplinkpayloadevent WHERE time_string < '2022-01-01T00:00:00' ORDER BY time_string DESC LIMIT 300"
[2022-10-18 13:45:13] 300 rows retrieved starting from 1 in 1 s 339 ms (execution: 1 s 138 ms, fetching: 201 ms)
However, using trino itself fails:
> SELECT * from pinot.default.uplinkpayloadevent WHERE time_string < '2022-01-01T00:00:00' ORDER BY time_string DESC
[2022-10-18 13:46:13] 0 rows retrieved in 398 ms (execution: 333 ms, fetching: 65 ms)
[2022-10-18 13:46:13] [65536] Query failed (#20221018_174613_00013_q2hjp): Caught exception while parsing query: SELECT "app_tok", "gatewayaddress", "message_str", "key_hash", "net_tok", "acctid", "id", "moduleaddress", "time_string", "key_range" FROM uplinkpayloadevent_REALTIME WHERE time_string >= 2022-10-18T09:12:39.768 AND (("time_string" < '2022-01-01T00:00:00')) LIMIT 2147483647
[2022-10-18 13:46:13] org.apache.calcite.sql.parser.babel.ParseException: Encountered "T09" at line 1, column 200.
... stack trace continues....
Thomas Steinholz
10/18/2022, 5:57 PMorg.apache.pinot.sql.parsers.SqlCompilationException: Caught exception while parsing query: SELECT "app_tok", "gatewayaddress", "message_str", "key_hash", "net_tok", "acctid", "id", "moduleaddress", "time_string", "key_range" FROM uplinkpayloadevent_REALTIME WHERE time_string >= 2022-10-18T09:12:39.768 AND (("time_string" < '2022-01-01T00:00:00')) LIMIT 2147483647
at org.apache.pinot.sql.parsers.CalciteSqlParser.compileCalciteSqlToPinotQuery(CalciteSqlParser.java:334)
at org.apache.pinot.sql.parsers.CalciteSqlParser.compileToPinotQuery(CalciteSqlParser.java:133)
at org.apache.pinot.sql.parsers.CalciteSqlCompiler.compileToBrokerRequest(CalciteSqlCompiler.java:35)
at io.trino.plugin.pinot.client.PinotGrpcDataFetcher$PinotGrpcServerQueryClient.queryPinot(PinotGrpcDataFetcher.java:244)
at io.trino.plugin.pinot.client.PinotGrpcDataFetcher.fetchData(PinotGrpcDataFetcher.java:99)
at io.trino.plugin.pinot.PinotSegmentPageSource.getNextPage(PinotSegmentPageSource.java:114)
at io.trino.operator.TableScanOperator.getOutput(TableScanOperator.java:311)
at io.trino.operator.Driver.processInternal(Driver.java:411)
at io.trino.operator.Driver.lambda$process$10(Driver.java:314)
at io.trino.operator.Driver.tryWithLock(Driver.java:706)
at io.trino.operator.Driver.process(Driver.java:306)
at io.trino.operator.Driver.processForDuration(Driver.java:277)
at io.trino.execution.SqlTaskExecution$DriverSplitRunner.processFor(SqlTaskExecution.java:736)
at io.trino.execution.executor.PrioritizedSplitRunner.process(PrioritizedSplitRunner.java:164)
at io.trino.execution.executor.TaskExecutor$TaskRunner.run(TaskExecutor.java:515)
at io.trino.$gen.Trino_399____20221018_171212_2.run(Unknown Source)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
at java.base/java.lang.Thread.run(Thread.java:833)
Caused by: org.apache.calcite.sql.parser.SqlParseException: Encountered "T09" at line 1, column 200.
Was expecting one of:
<EOF>
"ORDER" ...
"LIMIT" ...
"OFFSET" ...
"FETCH" ...
"GROUP" ...
"HAVING" ...
"WINDOW" ...
"UNION" ...
"INTERSECT" ...
"EXCEPT" ...
"MINUS" ...
"." ...
"NOT" ...
"IN" ...
"<" ...
"<=" ...
">" ...
">=" ...
"=" ...
"<>" ...
"!=" ...
"BETWEEN" ...
"LIKE" ...
"ILIKE" ...
"RLIKE" ...
"SIMILAR" ...
"!" ...
"~" ...
"::" ...
"+" ...
"-" ...
"*" ...
"/" ...
"%" ...
"||" ...
"AND" ...
"OR" ...
"IS" ...
"MEMBER" ...
"SUBMULTISET" ...
"CONTAINS" ...
"OVERLAPS" ...
"EQUALS" ...
"PRECEDES" ...
"SUCCEEDS" ...
"IMMEDIATELY" ...
"MULTISET" ...
"[" ...
"FORMAT" ...
at org.apache.calcite.sql.parser.babel.SqlBabelParserImpl.convertException(SqlBabelParserImpl.java:393)
at org.apache.calcite.sql.parser.babel.SqlBabelParserImpl.normalizeException(SqlBabelParserImpl.java:157)
at org.apache.calcite.sql.parser.SqlParser.handleException(SqlParser.java:145)
at org.apache.calcite.sql.parser.SqlParser.parseQuery(SqlParser.java:160)
at org.apache.pinot.sql.parsers.CalciteSqlParser.compileCalciteSqlToPinotQuery(CalciteSqlParser.java:332)
... 18 more
Caused by: org.apache.calcite.sql.parser.babel.ParseException: Encountered "T09" at line 1, column 200.
Was expecting one of:
<EOF>
"ORDER" ...
"LIMIT" ...
"OFFSET" ...
"FETCH" ...
"GROUP" ...
"HAVING" ...
"WINDOW" ...
"UNION" ...
"INTERSECT" ...
"EXCEPT" ...
"MINUS" ...
"." ...
"NOT" ...
"IN" ...
"<" ...
"<=" ...
">" ...
">=" ...
"=" ...
"<>" ...
"!=" ...
"BETWEEN" ...
"LIKE" ...
"ILIKE" ...
"RLIKE" ...
"SIMILAR" ...
"!" ...
"~" ...
"::" ...
"+" ...
"-" ...
"*" ...
"/" ...
"%" ...
"||" ...
"AND" ...
"OR" ...
"IS" ...
"MEMBER" ...
"SUBMULTISET" ...
"CONTAINS" ...
"OVERLAPS" ...
"EQUALS" ...
"PRECEDES" ...
"SUCCEEDS" ...
"IMMEDIATELY" ...
"MULTISET" ...
"[" ...
"FORMAT" ...
at org.apache.calcite.sql.parser.babel.SqlBabelParserImpl.generateParseException(SqlBabelParserImpl.java:35553)
at org.apache.calcite.sql.parser.babel.SqlBabelParserImpl.jj_consume_token(SqlBabelParserImpl.java:35367)
at org.apache.calcite.sql.parser.babel.SqlBabelParserImpl.SqlStmtEof(SqlBabelParserImpl.java:965)
at org.apache.calcite.sql.parser.babel.SqlBabelParserImpl.parseSqlStmtEof(SqlBabelParserImpl.java:205)
at org.apache.calcite.sql.parser.SqlParser.parseQuery(SqlParser.java:158)
... 19 more
Xiang Fu
Xiang Fu
Elon
10/18/2022, 6:02 PMThomas Steinholz
10/18/2022, 6:02 PMElon
10/18/2022, 6:02 PMThomas Steinholz
10/18/2022, 6:02 PMXiang Fu
Elon
10/18/2022, 6:03 PMElon
10/18/2022, 6:03 PMXiang Fu
2022-10-18T09:12:39.768
has some special charactersElon
10/18/2022, 6:04 PMXiang Fu
WHERE time_string >= 2022-10-18T09:12:39.768 AND (("time_string" < '2022-01-01T00:00:00'))
is wrong, it should be
WHERE ("time_string" >= '2022-10-18T09:12:39.768') AND (("time_string" < '2022-01-01T00:00:00'))
Elon
10/18/2022, 6:05 PMXiang Fu
Elon
10/18/2022, 6:05 PMXiang Fu
Elon
10/18/2022, 6:05 PMXiang Fu
Elon
10/18/2022, 6:07 PMThomas Steinholz
10/18/2022, 6:07 PMSELECT * from pinot.default.uplinkpayloadevent WHERE time_string < '2022-01-01T00:00:00.000' ORDER BY time_string DESC
io.grpc.StatusRuntimeException: INVALID_ARGUMENT: Bad request
at io.grpc.Status.asRuntimeException(Status.java:535)
at io.grpc.stub.ClientCalls$BlockingResponseStream.hasNext(ClientCalls.java:648)
at io.trino.plugin.pinot.client.PinotGrpcDataFetcher$PinotGrpcServerQueryClient$ResponseIterator.computeNext(PinotGrpcDataFetcher.java:274)
at io.trino.plugin.pinot.client.PinotGrpcDataFetcher$PinotGrpcServerQueryClient$ResponseIterator.computeNext(PinotGrpcDataFetcher.java:261)
at com.google.common.collect.AbstractIterator.tryToComputeNext(AbstractIterator.java:146)
at com.google.common.collect.AbstractIterator.hasNext(AbstractIterator.java:141)
at io.trino.plugin.pinot.client.PinotGrpcDataFetcher.endOfData(PinotGrpcDataFetcher.java:85)
at io.trino.plugin.pinot.PinotSegmentPageSource.getNextPage(PinotSegmentPageSource.java:117)
at io.trino.operator.TableScanOperator.getOutput(TableScanOperator.java:311)
at io.trino.operator.Driver.processInternal(Driver.java:411)
at io.trino.operator.Driver.lambda$process$10(Driver.java:314)
at io.trino.operator.Driver.tryWithLock(Driver.java:706)
at io.trino.operator.Driver.process(Driver.java:306)
at io.trino.operator.Driver.processForDuration(Driver.java:277)
at io.trino.execution.SqlTaskExecution$DriverSplitRunner.processFor(SqlTaskExecution.java:736)
at io.trino.execution.executor.PrioritizedSplitRunner.process(PrioritizedSplitRunner.java:164)
at io.trino.execution.executor.TaskExecutor$TaskRunner.run(TaskExecutor.java:515)
at io.trino.$gen.Trino_400____20221018_180612_2.run(Unknown Source)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
at java.base/java.lang.Thread.run(Thread.java:833)
Elon
10/18/2022, 6:07 PMElon
10/18/2022, 6:08 PMElon
10/18/2022, 6:11 PMdebug/timeBoundary/{tablename}
?Xiang Fu
Xiang Fu
Xiang Fu
Thomas Steinholz
10/18/2022, 6:16 PMXiang Fu
Xiang Fu
Thomas Steinholz
10/18/2022, 6:19 PMThomas Steinholz
10/18/2022, 7:14 PM{
"name": "message_timestamp",
"dataType": "LONG",
"format": "1:MILLISECONDS:EPOCH",
"granularity": "1:MILLISECONDS"
}
• Added a transform function to populate the new
"transformFunction": "Groovy({
def t_ingest = new groovy.json.JsonSlurper().parseText(message_str).get('__prop.t_ingest');
!time_string || time_string < '2014-01-01 00:00:00.000000' ?
(!t_ingest ? 1388552400 : Long.valueOf(t_ingest)) :
Date.parse(\"yyyy-MM-dd'T'HH:mm:ss.SSS\", time_string).getTime();
}, time_string, message_str)"
• I updated both Realtime and Offline tables to use the new message_timestamp column for date times.
"timeColumnName": "message_timestamp",
• Reloaded all segments and generated data for the new time column
However, the pinot connector is still failing in trino with the same error messageElon
10/18/2022, 7:15 PMElon
10/18/2022, 7:15 PMThomas Steinholz
10/18/2022, 7:15 PMElon
10/18/2022, 7:16 PMElon
10/18/2022, 7:16 PMElon
10/18/2022, 7:16 PMThomas Steinholz
10/18/2022, 7:19 PMThomas Steinholz
10/18/2022, 7:20 PMThomas Steinholz
10/18/2022, 7:22 PMThomas Steinholz
10/18/2022, 7:25 PMXiang Fu
Xiang Fu
Xiang Fu
Elon
10/18/2022, 7:41 PMreload
param in TableConfigsRestletResource
?Thomas Steinholz
10/18/2022, 7:44 PMsegments/uplinkpayloadevent_OFFLINE/reload?type=OFFLINE
Xiang Fu
Elon
10/18/2022, 7:56 PMXiang Fu
Elon
10/18/2022, 8:23 PM