Caican Cai created CALCITE-6613:
-----------------------------------
Summary: Make the Background code examples in Calcite official
documentation clearer
Key: CALCITE-6613
URL: https://issues.apache.org/jira/browse/CALCITE-6613
Project: Calcite
Issue Type: Improvement
Reporter: Caican Cai
{code:java}
public static class HrSchema {
public final Employee[] emps = 0;
public final Department[] depts = 0;
}
Class.forName("org.apache.calcite.jdbc.Driver");
Properties info = new Properties();
info.setProperty("lex", "JAVA");
Connection connection =
DriverManager.getConnection("jdbc:calcite:", info);
CalciteConnection calciteConnection =
connection.unwrap(CalciteConnection.class);
SchemaPlus rootSchema = calciteConnection.getRootSchema();
Schema schema = new ReflectiveSchema(new HrSchema());
rootSchema.add("hr", schema);
Statement statement = calciteConnection.createStatement();
ResultSet resultSet = statement.executeQuery(
"select d.deptno, min(e.empid)\n"
+ "from hr.emps as e\n"
+ "join hr.depts as d\n"
+ " on e.deptno = d.deptno\n"
+ "group by d.deptno\n"
+ "having count(*) > 1");
print(resultSet);
resultSet.close();
statement.close();
connection.close();
Where is the database? There is no database. The connection is completely empty
until new ReflectiveSchema registers a Java object as a schema and its
collection fields emps and depts as tables.
Calcite does not want to own data; it does not even have a favorite data
format. This example used in-memory data sets, and processed them using
operators such as groupBy and join from the linq4j library. But Calcite can
also process data in other data formats, such as JDBC. In the first example,
replace
Schema schema = new ReflectiveSchema(new HrSchema());
with
Class.forName("com.mysql.jdbc.Driver");
BasicDataSource dataSource = new BasicDataSource();
dataSource.setUrl("jdbc:mysql://localhost");
dataSource.setUsername("username");
dataSource.setPassword("password");
Schema schema = JdbcSchema.create(rootSchema, "hr", dataSource,
null, "name");
{code}
Currently, the data of emps and depts are both 0, and it is not reasonable to
not create a new object. We can create new Employee[0] and add some data, which
may be more reasonable.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)