danhuawang opened a new issue, #5657:
URL: https://github.com/apache/gravitino/issues/5657
### What would you like to be improved?
When the data source MySQL has the data including JSON type data as
following. Then I configure the MySQL catalog in Trino and try to load the
original data, it popped "Unsupported gravitino datatype: external(JSON)."
```
trino:db1> select * from my_tb01;
Query 20241123_064812_00840_zc3ii failed: Unsupported gravitino datatype:
external(JSON)
io.trino.spi.TrinoException: Unsupported gravitino datatype: external(JSON)
at
org.apache.gravitino.trino.connector.util.GeneralDataTypeTransformer.getTrinoType(GeneralDataTypeTransformer.java:126)
at
org.apache.gravitino.trino.connector.catalog.jdbc.mysql.MySQLDataTypeTransformer.getTrinoType(MySQLDataTypeTransformer.java:57)
at
org.apache.gravitino.trino.connector.catalog.jdbc.mysql.MySQLMetadataAdapter.getColumnMetadata(MySQLMetadataAdapter.java:97)
at
org.apache.gravitino.trino.connector.catalog.CatalogConnectorMetadataAdapter.getTableMetadata(CatalogConnectorMetadataAdapter.java:79)
at
org.apache.gravitino.trino.connector.GravitinoMetadata.getTableMetadata(GravitinoMetadata.java:133)
at
io.trino.spi.connector.ConnectorMetadata.getTableSchema(ConnectorMetadata.java:256)
at
io.trino.tracing.TracingConnectorMetadata.getTableSchema(TracingConnectorMetadata.java:239)
at
io.trino.metadata.MetadataManager.getTableSchema(MetadataManager.java:454)
at
io.trino.tracing.TracingMetadata.getTableSchema(TracingMetadata.java:289)
at
io.trino.sql.analyzer.StatementAnalyzer$Visitor.visitTable(StatementAnalyzer.java:2291)
at
io.trino.sql.analyzer.StatementAnalyzer$Visitor.visitTable(StatementAnalyzer.java:521)
at io.trino.sql.tree.Table.accept(Table.java:60)
at io.trino.sql.tree.AstVisitor.process(AstVisitor.java:27)
at
io.trino.sql.analyzer.StatementAnalyzer$Visitor.process(StatementAnalyzer.java:540)
at
io.trino.sql.analyzer.StatementAnalyzer$Visitor.analyzeFrom(StatementAnalyzer.java:4869)
at
io.trino.sql.analyzer.StatementAnalyzer$Visitor.visitQuerySpecification(StatementAnalyzer.java:3062)
at
io.trino.sql.analyzer.StatementAnalyzer$Visitor.visitQuerySpecification(StatementAnalyzer.java:521)
at
io.trino.sql.tree.QuerySpecification.accept(QuerySpecification.java:155)
at io.trino.sql.tree.AstVisitor.process(AstVisitor.java:27)
at
io.trino.sql.analyzer.StatementAnalyzer$Visitor.process(StatementAnalyzer.java:540)
at
io.trino.sql.analyzer.StatementAnalyzer$Visitor.process(StatementAnalyzer.java:548)
at
io.trino.sql.analyzer.StatementAnalyzer$Visitor.visitQuery(StatementAnalyzer.java:1558)
at
io.trino.sql.analyzer.StatementAnalyzer$Visitor.visitQuery(StatementAnalyzer.java:521)
at io.trino.sql.tree.Query.accept(Query.java:118)
at io.trino.sql.tree.AstVisitor.process(AstVisitor.java:27)
at
io.trino.sql.analyzer.StatementAnalyzer$Visitor.process(StatementAnalyzer.java:540)
at
io.trino.sql.analyzer.StatementAnalyzer.analyze(StatementAnalyzer.java:500)
at
io.trino.sql.analyzer.StatementAnalyzer.analyze(StatementAnalyzer.java:489)
at io.trino.sql.analyzer.Analyzer.analyze(Analyzer.java:97)
at io.trino.sql.analyzer.Analyzer.analyze(Analyzer.java:86)
at
io.trino.execution.SqlQueryExecution.analyze(SqlQueryExecution.java:274)
at
io.trino.execution.SqlQueryExecution.<init>(SqlQueryExecution.java:209)
at
io.trino.execution.SqlQueryExecution$SqlQueryExecutionFactory.createQueryExecution(SqlQueryExecution.java:850)
at
io.trino.dispatcher.LocalDispatchQueryFactory.lambda$createDispatchQuery$0(LocalDispatchQueryFactory.java:153)
at io.trino.$gen.Trino_435____20241123_043415_2.call(Unknown Source)
at
com.google.common.util.concurrent.TrustedListenableFutureTask$TrustedFutureInterruptibleTask.runInterruptibly(TrustedListenableFutureTask.java:131)
at
com.google.common.util.concurrent.InterruptibleTask.run(InterruptibleTask.java:76)
at
com.google.common.util.concurrent.TrustedListenableFutureTask.run(TrustedListenableFutureTask.java:82)
at
java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
at
java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
at java.base/java.lang.Thread.run(Thread.java:1583)
```
user scenario:
In MySQL, insert data:
```
CREATE TABLE my_tb01 (
col_tinyint TINYINT,
col_smallint SMALLINT,
col_int INT,
col_bigint BIGINT,
col_decimal DECIMAL(10, 2),
col_float FLOAT(7, 4),
col_double DOUBLE(16, 8),
col_char CHAR(10),
col_varchar VARCHAR(255),
col_text TEXT,
col_date DATE,
col_time TIME,
col_timestamp TIMESTAMP,
col_json JSON
);
INSERT INTO my_tb01 (
col_tinyint,
col_smallint,
col_int,
col_bigint,
col_decimal,
col_float,
col_double,
col_char,
col_varchar,
col_text,
col_date,
col_time,
col_timestamp,
col_json
) VALUES
(
127,
32767,
2147483647,
9223372036854775807,
12345.67,
123.4567,
12345678.12345678,
'FixedData',
'Variable length data',
'This is some sample text for the TEXT column.',
'2024-11-22',
'12:34:56',
CURRENT_TIMESTAMP,
'{ "key": "value", "foo": "bar" }'
);
```
In Trino, load data:
```
call gravitino.system.create_catalog(
'gt_mysql1',
'jdbc-mysql',
map(
array['jdbc-url', 'jdbc-user', 'jdbc-password', 'jdbc-driver',
'trino.bypass.join-pushdown.strategy'],
array['jdbc:mysql://10.20.31.20/?useSSL=false', 'trino', 'ds123',
'com.mysql.cj.jdbc.Driver', 'EAGER']
)
);
create schema gt_mysql1.db1;
use gt_mysql1.db1;
show tables;
select * from my_tb01;
```
### How should we improve?
_No response_
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]