Skip to content

Commit 069f34d

Browse files
committed
Feat: export geometry types to table metadata
1 parent f649922 commit 069f34d

File tree

1 file changed

+23
-0
lines changed

1 file changed

+23
-0
lines changed

traindb-core/src/main/java/traindb/engine/AbstractTrainDBModelRunner.java

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,9 @@
1616

1717
import java.nio.file.Path;
1818
import java.nio.file.Paths;
19+
import java.sql.DatabaseMetaData;
20+
import java.sql.ResultSet;
21+
import java.sql.SQLException;
1922
import java.util.List;
2023
import java.util.Map;
2124
import org.apache.calcite.adapter.java.JavaTypeFactory;
@@ -113,6 +116,11 @@ protected JSONObject buildTableMetadata(
113116
('id', None): 'int',
114117
('id', 'integer'): 'int',
115118
('id', 'string'): 'str'
119+
120+
// geometry types
121+
('geometry', 'point'): 'point',
122+
('geometry', 'linestring'): 'linestring',
123+
('geometry', 'polygon'): 'polygon'
116124
*/
117125
switch (field.getType().getSqlTypeName()) {
118126
case CHAR:
@@ -142,6 +150,21 @@ protected JSONObject buildTableMetadata(
142150
case TIMESTAMP_WITH_LOCAL_TIME_ZONE:
143151
typeInfo.put("type", "datetime");
144152
break;
153+
case GEOMETRY: {
154+
typeInfo.put("type", "geometry");
155+
String subtype = "geometry";
156+
try {
157+
DatabaseMetaData md = conn.getMetaData();
158+
ResultSet rs = md.getColumns("traindb", schemaName, tableName, field.getName());
159+
while (rs.next()) {
160+
subtype = rs.getString("TYPE_NAME");
161+
}
162+
} catch (SQLException e) {
163+
// ignore
164+
}
165+
typeInfo.put("subtype", subtype.toLowerCase().replaceFirst("^st_", ""));
166+
break;
167+
}
145168
default:
146169
typeInfo.put("type", "unknown");
147170
break;

0 commit comments

Comments
 (0)