mirror of
https://github.com/CodePhiliaX/Chat2DB.git
synced 2025-07-29 18:53:12 +08:00
Merge pull request #1199 from openai0229/fix-clickhouse-query-columns-under-a-table
fix-clickhouse-query-columns-under-a-table
This commit is contained in:
@ -36,7 +36,7 @@ public class ClickHouseMetaData extends DefaultMetaService implements MetaData {
|
|||||||
+ "TRIGGER_SCHEMA = '%s' AND TRIGGER_NAME = '%s';";
|
+ "TRIGGER_SCHEMA = '%s' AND TRIGGER_NAME = '%s';";
|
||||||
private static String TRIGGER_SQL_LIST
|
private static String TRIGGER_SQL_LIST
|
||||||
= "SELECT TRIGGER_NAME FROM INFORMATION_SCHEMA.TRIGGERS where TRIGGER_SCHEMA = '%s';";
|
= "SELECT TRIGGER_NAME FROM INFORMATION_SCHEMA.TRIGGERS where TRIGGER_SCHEMA = '%s';";
|
||||||
private static String SELECT_TABLE_COLUMNS = "SELECT * FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = '%s' AND TABLE_NAME = '%s' order by ORDINAL_POSITION";
|
private static String SELECT_TABLE_COLUMNS = "select * from `system`.columns where table ='%s' and database='%s';";
|
||||||
private static String VIEW_SQL
|
private static String VIEW_SQL
|
||||||
= "SELECT TABLE_SCHEMA AS DatabaseName, TABLE_NAME AS ViewName, VIEW_DEFINITION AS definition, CHECK_OPTION, "
|
= "SELECT TABLE_SCHEMA AS DatabaseName, TABLE_NAME AS ViewName, VIEW_DEFINITION AS definition, CHECK_OPTION, "
|
||||||
+ "IS_UPDATABLE FROM INFORMATION_SCHEMA.VIEWS WHERE TABLE_SCHEMA = '%s' AND TABLE_NAME = '%s';";
|
+ "IS_UPDATABLE FROM INFORMATION_SCHEMA.VIEWS WHERE TABLE_SCHEMA = '%s' AND TABLE_NAME = '%s';";
|
||||||
@ -151,7 +151,7 @@ public class ClickHouseMetaData extends DefaultMetaService implements MetaData {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<TableColumn> columns(Connection connection, String databaseName, String schemaName, String tableName) {
|
public List<TableColumn> columns(Connection connection, String databaseName, String schemaName, String tableName) {
|
||||||
String sql = String.format(SELECT_TABLE_COLUMNS, databaseName, tableName);
|
String sql = String.format(SELECT_TABLE_COLUMNS,tableName, databaseName);
|
||||||
List<TableColumn> tableColumns = new ArrayList<>();
|
List<TableColumn> tableColumns = new ArrayList<>();
|
||||||
|
|
||||||
return SQLExecutor.getInstance().execute(connection, sql, resultSet -> {
|
return SQLExecutor.getInstance().execute(connection, sql, resultSet -> {
|
||||||
@ -159,22 +159,22 @@ public class ClickHouseMetaData extends DefaultMetaService implements MetaData {
|
|||||||
TableColumn column = new TableColumn();
|
TableColumn column = new TableColumn();
|
||||||
column.setDatabaseName(databaseName);
|
column.setDatabaseName(databaseName);
|
||||||
column.setTableName(tableName);
|
column.setTableName(tableName);
|
||||||
column.setOldName(resultSet.getString("COLUMN_NAME"));
|
column.setOldName(resultSet.getString("name"));
|
||||||
column.setName(resultSet.getString("COLUMN_NAME"));
|
column.setName(resultSet.getString("name"));
|
||||||
String dataType = resultSet.getString("DATA_TYPE");
|
String dataType = resultSet.getString("type");
|
||||||
if (dataType.startsWith("Nullable(")) {
|
if (dataType.startsWith("Nullable(")) {
|
||||||
dataType = dataType.substring(9, dataType.length() - 1);
|
dataType = dataType.substring(9, dataType.length() - 1);
|
||||||
|
column.setNullable(1);
|
||||||
}
|
}
|
||||||
column.setColumnType(dataType);
|
column.setColumnType(dataType);
|
||||||
column.setDefaultValue(resultSet.getString("COLUMN_DEFAULT"));
|
column.setDefaultValue(resultSet.getString("default_expression"));
|
||||||
column.setAutoIncrement(resultSet.getString("EXTRA").contains("auto_increment"));
|
// column.setAutoIncrement(resultSet.getString("EXTRA").contains("auto_increment"));
|
||||||
column.setComment(resultSet.getString("COLUMN_COMMENT"));
|
column.setComment(resultSet.getString("comment"));
|
||||||
column.setNullable("YES".equalsIgnoreCase(resultSet.getString("IS_NULLABLE")) ? 1 : 0);
|
column.setOrdinalPosition(resultSet.getInt("position"));
|
||||||
column.setOrdinalPosition(resultSet.getInt("ORDINAL_POSITION"));
|
column.setDecimalDigits(resultSet.getInt("numeric_scale"));
|
||||||
column.setDecimalDigits(resultSet.getInt("NUMERIC_SCALE"));
|
/*column.setCharSetName(resultSet.getString("CHARACTER_SET_NAME"));
|
||||||
column.setCharSetName(resultSet.getString("CHARACTER_SET_NAME"));
|
column.setCollationName(resultSet.getString("COLLATION_NAME"));*/
|
||||||
column.setCollationName(resultSet.getString("COLLATION_NAME"));
|
setColumnSize(column, dataType);
|
||||||
setColumnSize(column, resultSet.getString("COLUMN_TYPE"));
|
|
||||||
tableColumns.add(column);
|
tableColumns.add(column);
|
||||||
}
|
}
|
||||||
return tableColumns;
|
return tableColumns;
|
||||||
|
Reference in New Issue
Block a user