在 CLI 上快速创建视图给出连接器不支持创建视图错误

presto create view on CLI gives connector does not support create view error

  1. presto 服务器以 [​​=115=] 和 myql 目录启动。
  2. 从 presto cli,我可以查询两个来源的表。
  3. 我什至可以发出结合来自两个来源的数据的查询。
  4. 在Mongo中是mongodb.test.actors,它有姓名、城市、出生日期字段。
  5. 在MySql中是mysql.imdb_full.actors有名字,性别字段。

问题是当我尝试直接从 presto cli 发出创建视图而没有 运行 和 'use .schema' 时,如下所示,我得到一个异常 Schema must be specified when会话架构未设置如下

presto> create view xyz_view as select name,city,dob from mongodb.test.actors; 查询 20210303_063035_00046_ecshq 失败:第 1:1 行:未设置会话架构时必须指定架构 com.facebook.presto.sql.analyzer.SemanticException: 行 1:1: 未设置会话架构时必须指定架构 在 com.facebook.presto.metadata.MetadataUtil.lambda$createQualifiedObjectName$2(MetadataUtil.java:148) 在 java.util.Optional.orElseThrow(Optional.java:290) 在 com.facebook.presto.metadata.MetadataUtil.createQualifiedObjectName(MetadataUtil.java:147) 在 com.facebook.presto.execution.CreateViewTask.execute(CreateViewTask.java:82) 在 com.facebook.presto.execution.CreateViewTask.execute(CreateViewTask.java:49) 在 com.facebook.presto.execution.DataDefinitionExecution.start(DataDefinitionExecution.java:187) 在 com.facebook.presto.$gen.Presto_0_247_a896816____20210303_053748_1.run(未知来源) 在 com.facebook.presto.execution.SqlQueryManager.createQuery(SqlQueryManager.java:254) 在 com.facebook.presto.dispatcher.LocalDispatchQuery.lambda$startExecution$5(LocalDispatchQuery.java:114) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) 在 java.lang.Thread.run(Thread.java:748)

当我切换到 'use mongodb.test' 并发出如下创建视图时,我得到此连接器不支持如下创建视图。

presto:test> create view xyz_view as select name,city,dob from mongodb.test.actors; 查询 20210303_062603_00045_ecshq 失败:此连接器不支持创建视图 com.facebook.presto.spi.PrestoException: 此连接器不支持创建视图 在 com.facebook.presto.spi.connector.ConnectorMetadata.createView(ConnectorMetadata.java:528) 在 com.facebook.presto.metadata.MetadataManager.createView(MetadataManager.java:1030) 在 com.facebook.presto.execution.CreateViewTask.execute(CreateViewTask.java:108) 在 com.facebook.presto.execution.CreateViewTask.execute(CreateViewTask.java:49) 在 com.facebook.presto.execution.DataDefinitionExecution.start(DataDefinitionExecution.java:187) 在 com.facebook.presto.$gen.Presto_0_247_a896816____20210303_053748_1.run(未知来源) 在 com.facebook.presto.execution.SqlQueryManager.createQuery(SqlQueryManager.java:254) 在 com.facebook.presto.dispatcher.LocalDispatchQuery.lambda$startExecution$5(LocalDispatchQuery.java:114) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) 在 java.lang.Thread.run(Thread.java:748)

我检查过 ConnectorMetadata.java createView() 除了抛出这个异常没有任何代码。

当我将模式切换到 mysql.imdb_full 时出现同样的错误,说连接器不支持创建视图。

但是 mysql 连接器文档没有将创建视图显示为限制。

请帮忙。

仅 Hive 连接器支持视图创建。

特别是 JDBC 连接器不支持它,例如 MySQL。

But mysql connector documentation does not show create view as a limitation.

我为此提交了 https://github.com/trinodb/trino/issues/7150