- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试用方解石做一些基本的事情来理解这个框架。我已经设置了一个应该从 2 个 json 文件中读取的简单示例。我的模型看起来像
{
version: '1.0',
defaultSchema: 'PEOPLE',
schemas: [
{
name: 'PEOPLE',
type: 'custom',
factory: 'demo.JsonSchemaFactory',
operand: {
directory: '/..../calcite-json/src/test/resources/files'
}
}
]
}
在我的测试中,似乎模型加载正常,因为当我提取数据库元数据信息时,我可以看到我的文件正在作为 PEOPLE 模式下的表加载。但是在该语句之后,我试图从该表中执行 select *
操作,但我收到一条错误消息,指出未找到该表。
> --
null
PEOPLE
a
TABLE
-->
Jun 29, 2015 8:53:30 AM org.apache.calcite.sql.validate.SqlValidatorException <init>
SEVERE: org.apache.calcite.sql.validate.SqlValidatorException: Table 'A' not found
Jun 29, 2015 8:53:30 AM org.apache.calcite.runtime.CalciteException <init>
SEVERE: org.apache.calcite.runtime.CalciteContextException: At line 1, column 26: Table 'A' not found
输出中的第一行显示来自数据库元数据的表“-- null PEOPLE a TABLE -->”。这表明表“a”存在于模式“people”下,类型为“table”。
我的测试代码是这样的
@Test
public void testModel() throws SQLException {
Properties props = new Properties();
props.put("model", getPath("/model.json"));
System.out.println("model = " + props.get("model"));
Connection conn = DriverManager.getConnection("jdbc:calcite:", props);
DatabaseMetaData md = conn.getMetaData();
ResultSet tables = md.getTables(null, "PEOPLE", "%", null);
while (tables.next()) {
System.out.println("--");
System.out.println(tables.getString(1));
System.out.println(tables.getString(2));
System.out.println(tables.getString(3));
System.out.println(tables.getString(4));
System.out.println("-->");
}
Statement stat = conn.createStatement();
stat.execute("select _MAP['name'] from a");
stat.close();
conn.close();
}
为什么我无法在加载的表上进行选择?有什么想法吗?
我注意到的另一件有趣的事情是,对于 1 个文件,Schema.getTableMap
被调用了 4 次。
可以找到该项目的完整代码on github
最佳答案
问题是区分大小写。因为您没有将表名括在双引号中,所以 Calcite 的 SQL 解析器将其转换为大写。因为该文件名为“a.json”,所以该表也称为“a”,而您的查询正在查找名为“A”的表。
解决方案是按如下方式编写您的查询:
select _MAP['name'] from "a"
这变成了:
stat.execute("select _MAP['name'] from \"a\"");
当您将它嵌入到 Java 中时。
关于java - 找不到带有 apache 方解石的表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31118348/
我目前正在尝试使用方解石连接 mysql。但是,我在执行 SQL 语句时遇到问题 当我使用这个sql来执行时,它有效。 ResultSet resultSet = statement.executeQ
我可以在哪里获得 Apache 方解石的 Excel 适配器。 class ExcelEnumerator implements Enumerator { } 我正在尝试创建 ExcelEmumara
我正在尝试使用 Apache Calcite 查询 Postgres 数据库。我可以通过 Calcite JDBC 驱动程序细读有关数据库的元数据,因此我绝对能够连接到它,但是每当我查询一个表时,Ca
我能够获得 MongoDB 连接并能够获得节点 (LogicalTableScan(table=[[enlivenDev, collection1]])) 但是当我执行节点时,出现空指针异常。 完整代
我目前正在开发一个项目,我想在其中解析 SQL 查询并为其创建关系表达式树。主要目标是识别查询中的加入伙伴。所以我想将连接表达式推到树的叶子上。为了实现这一目标,我决定使用 Apache Calcit
我是一名优秀的程序员,十分优秀!