From 0c4a084c313e06cae95fc5273ba40a9482efad92 Mon Sep 17 00:00:00 2001 From: serge-rider Date: Fri, 15 Nov 2024 15:56:35 +0100 Subject: [PATCH] #10 Standard columns support added --- com.dbeaver.jdbc.driver.libsql/pom.xml | 29 ++++++++++++++++++- .../driver/libsql/LibSqlDatabaseMetaData.java | 28 ++++++++++++++++-- .../libsql/LibSqlResultSetMetaData.java | 7 ++++- .../driver/libsql/client/LibSqlClient.java | 2 +- 4 files changed, 60 insertions(+), 6 deletions(-) diff --git a/com.dbeaver.jdbc.driver.libsql/pom.xml b/com.dbeaver.jdbc.driver.libsql/pom.xml index 2b6c334..5ff1978 100644 --- a/com.dbeaver.jdbc.driver.libsql/pom.xml +++ b/com.dbeaver.jdbc.driver.libsql/pom.xml @@ -72,12 +72,39 @@ copy-dependencies - ${project.build.directory}/dependencies + ${project.build.directory}/dist runtime + com.dbeaver.jdbc.driver.libsql + + org.apache.maven.plugins + maven-resources-plugin + 2.6 + + + assemble-driver-dist + package + + ${project.build.directory}/dist + true + + + ${project.build.directory} + + *.jar + + + + + + copy-resources + + + + diff --git a/com.dbeaver.jdbc.driver.libsql/src/main/java/com/dbeaver/jdbc/driver/libsql/LibSqlDatabaseMetaData.java b/com.dbeaver.jdbc.driver.libsql/src/main/java/com/dbeaver/jdbc/driver/libsql/LibSqlDatabaseMetaData.java index 71cad57..bb992e3 100644 --- a/com.dbeaver.jdbc.driver.libsql/src/main/java/com/dbeaver/jdbc/driver/libsql/LibSqlDatabaseMetaData.java +++ b/com.dbeaver.jdbc.driver.libsql/src/main/java/com/dbeaver/jdbc/driver/libsql/LibSqlDatabaseMetaData.java @@ -114,9 +114,31 @@ public ResultSet getColumns(String catalog, String schemaPattern, String tableNa return executeQuery( "WITH all_tables AS (SELECT name AS tn FROM sqlite_master WHERE type = 'table'" + (tableName == null ? "" : " and name=" + LibSqlUtils.quote(tableName)) + ") \n" + - "SELECT NULL as TABLE_CAT, NULL AS TABLE_SCHEM, at.tn as TABLE_NAME,\n" + - "pti.name as COLUMN_NAME," + Types.VARCHAR + " AS DATA_TYPE, pti.type AS TYPE_NAME, 0 AS COLUMN_SIZE," + - "NULL AS REMARKS,pti.cid AS ORDINAL_POSITION " + + "SELECT " + + "NULL as TABLE_CAT, " + + "NULL AS TABLE_SCHEM, " + + "at.tn as TABLE_NAME,\n" + + "pti.name as COLUMN_NAME," + + Types.VARCHAR + " AS DATA_TYPE," + + "pti.type AS TYPE_NAME," + + "0 AS COLUMN_SIZE," + + "0 as COLUMN_SIZE," + + "0 as BUFFER_LENGTH," + + "0 as DECIMAL_DIGITS,\n" + + columnNullable + " as NULLABLE," + + "NULL as REMARKS," + + "NULL as COLUMN_DEF," + + "0 as SQL_DATA_TYPE," + + "0 as SQL_DATETIME_SUB," + + "0 as CHAR_OCTET_LENGTH," + + "pti.cid as ORDINAL_POSITION," + + "'' as IS_NULLABLE," + + "NULL as SCOPE_CATALOG," + + "NULL as SCOPE_SCHEMA," + + "NULL as SCOPE_TABLE," + + "NULL as SOURCE_DATA_TYPE," + + "'' as IS_AUTOINCREMENT," + + "'' as IS_GENERATEDCOLUMN\n" + "FROM all_tables at INNER JOIN pragma_table_info(at.tn) pti\n" + "ORDER BY TABLE_NAME"); } diff --git a/com.dbeaver.jdbc.driver.libsql/src/main/java/com/dbeaver/jdbc/driver/libsql/LibSqlResultSetMetaData.java b/com.dbeaver.jdbc.driver.libsql/src/main/java/com/dbeaver/jdbc/driver/libsql/LibSqlResultSetMetaData.java index e84ed3f..f11ea6c 100644 --- a/com.dbeaver.jdbc.driver.libsql/src/main/java/com/dbeaver/jdbc/driver/libsql/LibSqlResultSetMetaData.java +++ b/com.dbeaver.jdbc.driver.libsql/src/main/java/com/dbeaver/jdbc/driver/libsql/LibSqlResultSetMetaData.java @@ -23,6 +23,7 @@ import java.sql.SQLException; import java.sql.Types; +import java.util.List; public class LibSqlResultSetMetaData extends AbstractJdbcResultSetMetaData { @@ -102,7 +103,11 @@ public String getColumnLabel(int column) throws SQLException { @Override public String getColumnName(int column) throws SQLException { - return resultSet.getResult().getColumns().get(column - 1); + List columns = resultSet.getResult().getColumns(); + if (column < 1 || column > columns.size()) { + throw new SQLException("Column index out of bounds: " + column + "/" + columns.size()); + } + return columns.get(column - 1); } @Override diff --git a/com.dbeaver.jdbc.driver.libsql/src/main/java/com/dbeaver/jdbc/driver/libsql/client/LibSqlClient.java b/com.dbeaver.jdbc.driver.libsql/src/main/java/com/dbeaver/jdbc/driver/libsql/client/LibSqlClient.java index 5ed5998..e5a3876 100644 --- a/com.dbeaver.jdbc.driver.libsql/src/main/java/com/dbeaver/jdbc/driver/libsql/client/LibSqlClient.java +++ b/com.dbeaver.jdbc.driver.libsql/src/main/java/com/dbeaver/jdbc/driver/libsql/client/LibSqlClient.java @@ -100,7 +100,7 @@ public LibSqlExecutionResult[] executeBatch( .header("Content-Type", "application/json") .header("User-Agent", userAgent) .POST(HttpRequest.BodyPublishers.ofString(requestBuffer.toString())); - if (authToken != null) { + if (!CommonUtils.isEmpty(authToken)) { builder.header("Authorization", "Bearer " + authToken); }