Skip to content

Commit 16b4351

Browse files
committed
Apache Calcite Demo
Apache Calcite Demo
0 parents  commit 16b4351

File tree

15 files changed

+258
-0
lines changed

15 files changed

+258
-0
lines changed

.idea/.gitignore

+3
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/codeStyles/Project.xml

+22
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/codeStyles/codeStyleConfig.xml

+5
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/compiler.xml

+19
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/csv-plugin.xml

+23
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/encodings.xml

+6
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/google-java-format.xml

+7
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/jarRepositories.xml

+20
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/misc.xml

+14
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pom.xml

+40
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<project xmlns="http://maven.apache.org/POM/4.0.0"
3+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4+
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
5+
<modelVersion>4.0.0</modelVersion>
6+
7+
<groupId>com.ascendant76</groupId>
8+
<artifactId>calcitedata</artifactId>
9+
<version>1.0-SNAPSHOT</version>
10+
11+
<parent>
12+
<groupId>org.springframework.boot</groupId>
13+
<artifactId>spring-boot-starter-parent</artifactId>
14+
<version>2.7.5</version>
15+
<relativePath/> <!-- lookup parent from repository -->
16+
</parent>
17+
18+
<properties>
19+
<maven.compiler.source>18</maven.compiler.source>
20+
<maven.compiler.target>18</maven.compiler.target>
21+
</properties>
22+
23+
<dependencies>
24+
<dependency>
25+
<groupId>org.projectlombok</groupId>
26+
<artifactId>lombok</artifactId>
27+
<optional>true</optional>
28+
</dependency>
29+
<dependency>
30+
<groupId>org.apache.calcite</groupId>
31+
<artifactId>calcite-core</artifactId>
32+
<version>1.32.0</version>
33+
</dependency>
34+
<dependency>
35+
<groupId>org.apache.calcite</groupId>
36+
<artifactId>calcite-csv</artifactId>
37+
<version>1.32.0</version>
38+
</dependency>
39+
</dependencies>
40+
</project>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
package com.ascendant76.calcitedata;
2+
3+
import org.apache.calcite.util.Sources;
4+
5+
import java.sql.Connection;
6+
import java.sql.DriverManager;
7+
import java.sql.ResultSet;
8+
import java.sql.Statement;
9+
import java.util.Properties;
10+
11+
public class Main {
12+
13+
public static final String AGGREGATION_QUERY = """
14+
SELECT d.name, COUNT(*)
15+
FROM emps AS e JOIN depts AS d ON e.deptno = d.deptno
16+
GROUP BY d.name""";
17+
public static final String SELECT_QUERY = "select * from EMPS";
18+
19+
public static void main(String[] args) throws ClassNotFoundException {
20+
final Properties info = new Properties();
21+
info.put(
22+
"model",
23+
Sources.of(Main.class.getResource("/sales/model.json")).file().getAbsolutePath());
24+
25+
Class.forName("org.apache.calcite.jdbc.Driver");
26+
try (
27+
final Connection connection = DriverManager.getConnection("jdbc:calcite:", info);
28+
final Statement statement = connection.createStatement();
29+
final ResultSet resultSet = statement.executeQuery(SELECT_QUERY)) {
30+
while (resultSet.next()) {
31+
System.out.print("EMPNO: " + resultSet.getString("EMPNO"));
32+
System.out.print(", NAME: " + resultSet.getString("NAME"));
33+
System.out.print(", DEPTNO: " + resultSet.getString("DEPTNO"));
34+
System.out.print(", GENDER: " + resultSet.getString("GENDER"));
35+
System.out.print(", CITY: " + resultSet.getString("CITY"));
36+
System.out.print(", EMPID: " + resultSet.getString("EMPID"));
37+
System.out.print(", AGE: " + resultSet.getInt("AGE"));
38+
System.out.print(", SLACKER: " + resultSet.getString("SLACKER"));
39+
System.out.print(", MANAGER: " + resultSet.getString("MANAGER"));
40+
System.out.println(", JOINEDAT: " + resultSet.getString("JOINEDAT"));
41+
}
42+
} catch (Exception e) {
43+
e.printStackTrace();
44+
}
45+
46+
try (
47+
final Connection connection = DriverManager.getConnection("jdbc:calcite:", info);
48+
final Statement statement = connection.createStatement();
49+
final ResultSet resultSet = statement.executeQuery(AGGREGATION_QUERY)
50+
) {
51+
while (resultSet.next()) {
52+
System.out.print("NAME: " + resultSet.getString("NAME"));
53+
System.out.println(", EXPR$1: " + resultSet.getString("EXPR$1"));
54+
}
55+
} catch (Exception e) {
56+
e.printStackTrace();
57+
}
58+
}
59+
}

src/main/resources/sales/DEPTS.csv

+4
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
DEPTNO:int,NAME:string
2+
10,"Sales"
3+
20,"Marketing"
4+
30,"Accounts"

src/main/resources/sales/EMPS.csv.gz

262 Bytes
Binary file not shown.

src/main/resources/sales/SDEPTS.csv

+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
DEPTNO:int,NAME:string
2+
10,"Sales"
3+
20,"Marketing"
4+
30,"Accounts"
5+
40,"40"
6+
50,"50"
7+
60,"60"

src/main/resources/sales/model.json

+29
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
{
2+
"version": "1.0",
3+
"defaultSchema": "CUSTOM_TABLE",
4+
"schemas": [
5+
{
6+
"name": "CUSTOM_TABLE",
7+
"tables": [
8+
{
9+
"name": "EMPS",
10+
"type": "custom",
11+
"factory": "org.apache.calcite.adapter.csv.CsvTableFactory",
12+
"operand": {
13+
"file": "EMPS.csv.gz",
14+
"flavor": "scannable"
15+
}
16+
},
17+
{
18+
"name": "DEPTS",
19+
"type": "custom",
20+
"factory": "org.apache.calcite.adapter.csv.CsvTableFactory",
21+
"operand": {
22+
"file": "DEPTS.csv",
23+
"flavor": "scannable"
24+
}
25+
}
26+
]
27+
}
28+
]
29+
}

0 commit comments

Comments
 (0)