in baremaps-calcite/src/main/java/org/apache/baremaps/calcite/postgres/PostgresTypeConversion.java [44:98]
public static RelDataType postgresTypeToRelDataType(
RelDataTypeFactory typeFactory, String postgresType) {
switch (postgresType.toLowerCase()) {
case "int4":
case "integer":
return typeFactory.createSqlType(SqlTypeName.INTEGER);
case "bigint":
case "int8":
return typeFactory.createSqlType(SqlTypeName.BIGINT);
case "smallint":
case "int2":
return typeFactory.createSqlType(SqlTypeName.SMALLINT);
case "real":
case "float4":
return typeFactory.createSqlType(SqlTypeName.FLOAT);
case "double precision":
case "float8":
return typeFactory.createSqlType(SqlTypeName.DOUBLE);
case "numeric":
case "decimal":
return typeFactory.createSqlType(SqlTypeName.DECIMAL);
case "boolean":
case "bool":
return typeFactory.createSqlType(SqlTypeName.BOOLEAN);
case "varchar":
case "character varying":
case "text":
return typeFactory.createSqlType(SqlTypeName.VARCHAR);
case "char":
case "character":
return typeFactory.createSqlType(SqlTypeName.CHAR);
case "date":
return typeFactory.createSqlType(SqlTypeName.DATE);
case "timestamp":
case "timestamp without time zone":
return typeFactory.createSqlType(SqlTypeName.TIMESTAMP);
case "timestamp with time zone":
return typeFactory.createSqlType(SqlTypeName.TIMESTAMP_WITH_LOCAL_TIME_ZONE);
case "time":
case "time without time zone":
return typeFactory.createSqlType(SqlTypeName.TIME);
case "time with time zone":
return typeFactory.createSqlType(SqlTypeName.TIME_WITH_LOCAL_TIME_ZONE);
case "bytea":
return typeFactory.createSqlType(SqlTypeName.BINARY);
case "geometry":
return typeFactory.createSqlType(SqlTypeName.GEOMETRY);
case "json":
case "jsonb":
return typeFactory.createSqlType(SqlTypeName.OTHER);
default:
// Default to VARCHAR for unknown types
return typeFactory.createSqlType(SqlTypeName.VARCHAR);
}
}