diff --git a/src/connector/jdbc/.settings/org.eclipse.core.resources.prefs b/src/connector/jdbc/.settings/org.eclipse.core.resources.prefs deleted file mode 100755 index 1935ba2ee4..0000000000 --- a/src/connector/jdbc/.settings/org.eclipse.core.resources.prefs +++ /dev/null @@ -1,5 +0,0 @@ -eclipse.preferences.version=1 -encoding//src/main/java=GBK -encoding//src/main/java/com/taosdata/jdbc/TSDBJNIConnector.java=UTF-8 -encoding//src/main/resources=UTF-8 -encoding/=UTF-8 diff --git a/src/connector/jdbc/.settings/org.eclipse.jdt.core.prefs b/src/connector/jdbc/.settings/org.eclipse.jdt.core.prefs deleted file mode 100755 index 5ce4518899..0000000000 --- a/src/connector/jdbc/.settings/org.eclipse.jdt.core.prefs +++ /dev/null @@ -1,13 +0,0 @@ -eclipse.preferences.version=1 -org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled -org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate -org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6 -org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve -org.eclipse.jdt.core.compiler.compliance=1.6 -org.eclipse.jdt.core.compiler.debug.lineNumber=generate -org.eclipse.jdt.core.compiler.debug.localVariable=generate -org.eclipse.jdt.core.compiler.debug.sourceFile=generate -org.eclipse.jdt.core.compiler.problem.assertIdentifier=error -org.eclipse.jdt.core.compiler.problem.enumIdentifier=error -org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning -org.eclipse.jdt.core.compiler.source=1.6 diff --git a/src/connector/jdbc/.settings/org.eclipse.m2e.core.prefs b/src/connector/jdbc/.settings/org.eclipse.m2e.core.prefs deleted file mode 100755 index f897a7f1cb..0000000000 --- a/src/connector/jdbc/.settings/org.eclipse.m2e.core.prefs +++ /dev/null @@ -1,4 +0,0 @@ -activeProfiles= -eclipse.preferences.version=1 -resolveWorkspaceProjects=true -version=1 diff --git a/src/connector/jdbc/src/test/java/com/taosdata/jdbc/DatabaseMetaDataTest.java b/src/connector/jdbc/src/test/java/com/taosdata/jdbc/DatabaseMetaDataTest.java new file mode 100644 index 0000000000..2154079e23 --- /dev/null +++ b/src/connector/jdbc/src/test/java/com/taosdata/jdbc/DatabaseMetaDataTest.java @@ -0,0 +1,231 @@ +package com.taosdata.jdbc; + +import org.junit.BeforeClass; +import org.junit.Test; + +import java.sql.*; +import java.util.Properties; + +public class DatabaseMetaDataTest { + static Connection connection = null; + static PreparedStatement statement = null; + static String dbName = "test"; + static String tName = "t0"; + static String host = "localhost"; + + @BeforeClass + public static void createConnection() throws SQLException { + try { + Class.forName("com.taosdata.jdbc.TSDBDriver"); + } catch (ClassNotFoundException e) { + return; + } + Properties properties = new Properties(); + properties.setProperty(TSDBDriver.PROPERTY_KEY_HOST, host); + connection = DriverManager.getConnection("jdbc:TAOS://" + host + ":0/" + "?user=root&password=taosdata", + properties); + + String sql = "drop database if exists " + dbName; + statement = (TSDBPreparedStatement) connection.prepareStatement(sql); + statement.executeUpdate("create database if not exists " + dbName); + statement.executeUpdate("create table if not exists " + dbName + "." + tName + " (ts timestamp, k int, v int)"); + } + + @Test + public void testMetaDataTest() throws SQLException { + + DatabaseMetaData databaseMetaData = connection.getMetaData(); + ResultSet resultSet = databaseMetaData.getTables(dbName, "t*", "t*", new String[]{"t"}); + while (resultSet.next()) { + for (int i = 1; i <= resultSet.getMetaData().getColumnCount(); i++) { + System.out.printf("%d: %s\n", i, resultSet.getString(i)); + } + } + databaseMetaData.isWrapperFor(null); + databaseMetaData.allProceduresAreCallable(); + databaseMetaData.allTablesAreSelectable(); + databaseMetaData.getURL(); + databaseMetaData.getUserName(); + databaseMetaData.isReadOnly(); + databaseMetaData.nullsAreSortedHigh(); + databaseMetaData.nullsAreSortedLow(); + databaseMetaData.nullsAreSortedAtStart(); + databaseMetaData.nullsAreSortedAtEnd(); + databaseMetaData.getDatabaseProductName(); + databaseMetaData.getDatabaseProductVersion(); + databaseMetaData.getDriverName(); + databaseMetaData.getDriverVersion(); + databaseMetaData.getDriverMajorVersion(); + databaseMetaData.getDriverMinorVersion(); + databaseMetaData.usesLocalFiles(); + databaseMetaData.usesLocalFilePerTable(); + databaseMetaData.supportsMixedCaseIdentifiers(); + databaseMetaData.storesUpperCaseIdentifiers(); + databaseMetaData.storesLowerCaseIdentifiers(); + databaseMetaData.storesMixedCaseIdentifiers(); + databaseMetaData.supportsMixedCaseQuotedIdentifiers(); + databaseMetaData.storesUpperCaseQuotedIdentifiers(); + databaseMetaData.storesLowerCaseQuotedIdentifiers(); + databaseMetaData.storesMixedCaseQuotedIdentifiers(); + databaseMetaData.getIdentifierQuoteString(); + databaseMetaData.getSQLKeywords(); + databaseMetaData.getNumericFunctions(); + databaseMetaData.getStringFunctions(); + databaseMetaData.getSystemFunctions(); + databaseMetaData.getTimeDateFunctions(); + databaseMetaData.getSearchStringEscape(); + databaseMetaData.getExtraNameCharacters(); + databaseMetaData.supportsAlterTableWithAddColumn(); + databaseMetaData.supportsAlterTableWithDropColumn(); + databaseMetaData.supportsColumnAliasing(); + databaseMetaData.nullPlusNonNullIsNull(); + databaseMetaData.supportsConvert(); + databaseMetaData.supportsConvert(0, 0); + databaseMetaData.supportsTableCorrelationNames(); + databaseMetaData.supportsDifferentTableCorrelationNames(); + databaseMetaData.supportsExpressionsInOrderBy(); + databaseMetaData.supportsOrderByUnrelated(); + databaseMetaData.supportsGroupBy(); + databaseMetaData.supportsGroupByUnrelated(); + databaseMetaData.supportsGroupByBeyondSelect(); + databaseMetaData.supportsLikeEscapeClause(); + databaseMetaData.supportsMultipleResultSets(); + databaseMetaData.supportsMultipleTransactions(); + databaseMetaData.supportsNonNullableColumns(); + databaseMetaData.supportsMinimumSQLGrammar(); + databaseMetaData.supportsCoreSQLGrammar(); + databaseMetaData.supportsExtendedSQLGrammar(); + databaseMetaData.supportsANSI92EntryLevelSQL(); + databaseMetaData.supportsANSI92IntermediateSQL(); + databaseMetaData.supportsANSI92FullSQL(); + databaseMetaData.supportsIntegrityEnhancementFacility(); + databaseMetaData.supportsOuterJoins(); + databaseMetaData.supportsFullOuterJoins(); + databaseMetaData.supportsLimitedOuterJoins(); + databaseMetaData.getSchemaTerm(); + databaseMetaData.getProcedureTerm(); + databaseMetaData.getCatalogTerm(); + databaseMetaData.isCatalogAtStart(); + databaseMetaData.getCatalogSeparator(); + databaseMetaData.supportsSchemasInDataManipulation(); + databaseMetaData.supportsSchemasInProcedureCalls(); + databaseMetaData.supportsSchemasInTableDefinitions(); + databaseMetaData.supportsSchemasInIndexDefinitions(); + databaseMetaData.supportsSchemasInPrivilegeDefinitions(); + databaseMetaData.supportsCatalogsInDataManipulation(); + databaseMetaData.supportsCatalogsInProcedureCalls(); + databaseMetaData.supportsCatalogsInTableDefinitions(); + databaseMetaData.supportsCatalogsInIndexDefinitions(); + databaseMetaData.supportsCatalogsInPrivilegeDefinitions(); + databaseMetaData.supportsPositionedDelete(); + databaseMetaData.supportsPositionedUpdate(); + databaseMetaData.supportsSelectForUpdate(); + databaseMetaData.supportsStoredProcedures(); + databaseMetaData.supportsSubqueriesInComparisons(); + databaseMetaData.supportsSubqueriesInExists(); + databaseMetaData.supportsSubqueriesInIns(); + databaseMetaData.supportsSubqueriesInQuantifieds(); + databaseMetaData.supportsCorrelatedSubqueries(); + databaseMetaData.supportsUnion(); + databaseMetaData.supportsUnionAll(); + databaseMetaData.supportsOpenCursorsAcrossCommit(); + databaseMetaData.supportsOpenCursorsAcrossRollback(); + databaseMetaData.supportsOpenStatementsAcrossCommit(); + databaseMetaData.supportsOpenStatementsAcrossRollback(); + databaseMetaData.getMaxBinaryLiteralLength(); + databaseMetaData.getMaxCharLiteralLength(); + databaseMetaData.getMaxColumnNameLength(); + databaseMetaData.getMaxColumnsInGroupBy(); + databaseMetaData.getMaxColumnsInIndex(); + databaseMetaData.getMaxColumnsInOrderBy(); + databaseMetaData.getMaxColumnsInSelect(); + databaseMetaData.getMaxColumnsInTable(); + databaseMetaData.getMaxConnections(); + databaseMetaData.getMaxCursorNameLength(); + databaseMetaData.getMaxIndexLength(); + databaseMetaData.getMaxSchemaNameLength(); + databaseMetaData.getMaxProcedureNameLength(); + databaseMetaData.getMaxCatalogNameLength(); + databaseMetaData.getMaxRowSize(); + databaseMetaData.doesMaxRowSizeIncludeBlobs(); + databaseMetaData.getMaxStatementLength(); + databaseMetaData.getMaxStatements(); + databaseMetaData.getMaxTableNameLength(); + databaseMetaData.getMaxTablesInSelect(); + databaseMetaData.getMaxUserNameLength(); + databaseMetaData.getDefaultTransactionIsolation(); + databaseMetaData.supportsTransactions(); + databaseMetaData.supportsTransactionIsolationLevel(0); + databaseMetaData.supportsDataDefinitionAndDataManipulationTransactions(); + databaseMetaData.supportsDataManipulationTransactionsOnly(); + databaseMetaData.dataDefinitionCausesTransactionCommit(); + databaseMetaData.dataDefinitionIgnoredInTransactions(); + try { + databaseMetaData.getProcedures("", "", ""); + } catch (Exception e) { + } + try { + databaseMetaData.getProcedureColumns("", "", "", ""); + } catch (Exception e) { + } + try { + databaseMetaData.getTables("", "", "", new String[]{""}); + } catch (Exception e) { + } + databaseMetaData.getSchemas(); + databaseMetaData.getCatalogs(); +// databaseMetaData.getTableTypes(); + + databaseMetaData.getColumns("", "", "", ""); + databaseMetaData.getColumnPrivileges("", "", "", ""); + databaseMetaData.getTablePrivileges("", "", ""); + databaseMetaData.getBestRowIdentifier("", "", "", 0, false); + databaseMetaData.getVersionColumns("", "", ""); + databaseMetaData.getPrimaryKeys("", "", ""); + databaseMetaData.getImportedKeys("", "", ""); + databaseMetaData.getExportedKeys("", "", ""); + databaseMetaData.getCrossReference("", "", "", "", "", ""); + databaseMetaData.getTypeInfo(); + databaseMetaData.getIndexInfo("", "", "", false, false); + databaseMetaData.supportsResultSetType(0); + databaseMetaData.supportsResultSetConcurrency(0, 0); + databaseMetaData.ownUpdatesAreVisible(0); + databaseMetaData.ownDeletesAreVisible(0); + databaseMetaData.ownInsertsAreVisible(0); + databaseMetaData.othersUpdatesAreVisible(0); + databaseMetaData.othersDeletesAreVisible(0); + databaseMetaData.othersInsertsAreVisible(0); + databaseMetaData.updatesAreDetected(0); + databaseMetaData.deletesAreDetected(0); + databaseMetaData.insertsAreDetected(0); + databaseMetaData.supportsBatchUpdates(); + databaseMetaData.getUDTs("", "", "", new int[]{0}); + databaseMetaData.getConnection(); + databaseMetaData.supportsSavepoints(); + databaseMetaData.supportsNamedParameters(); + databaseMetaData.supportsMultipleOpenResults(); + databaseMetaData.supportsGetGeneratedKeys(); + databaseMetaData.getSuperTypes("", "", ""); + databaseMetaData.getSuperTables("", "", ""); + databaseMetaData.getAttributes("", "", "", ""); + databaseMetaData.supportsResultSetHoldability(0); + databaseMetaData.getResultSetHoldability(); + databaseMetaData.getDatabaseMajorVersion(); + databaseMetaData.getDatabaseMinorVersion(); + databaseMetaData.getJDBCMajorVersion(); + databaseMetaData.getJDBCMinorVersion(); + databaseMetaData.getSQLStateType(); + databaseMetaData.locatorsUpdateCopy(); + databaseMetaData.supportsStatementPooling(); + databaseMetaData.getRowIdLifetime(); + databaseMetaData.getSchemas("", ""); + databaseMetaData.supportsStoredFunctionsUsingCallSyntax(); + databaseMetaData.autoCommitFailureClosesAllResultSets(); + databaseMetaData.getClientInfoProperties(); + databaseMetaData.getFunctions("", "", ""); + databaseMetaData.getFunctionColumns("", "", "", ""); + databaseMetaData.getPseudoColumns("", "", "", ""); + databaseMetaData.generatedKeyAlwaysReturned(); + + } +} diff --git a/src/connector/jdbc/src/test/java/com/taosdata/jdbc/PreparedStatementTest.java b/src/connector/jdbc/src/test/java/com/taosdata/jdbc/PreparedStatementTest.java index d9aac70bdc..dc26f7d9df 100644 --- a/src/connector/jdbc/src/test/java/com/taosdata/jdbc/PreparedStatementTest.java +++ b/src/connector/jdbc/src/test/java/com/taosdata/jdbc/PreparedStatementTest.java @@ -1,9 +1,11 @@ package com.taosdata.jdbc; +import org.junit.AfterClass; import org.junit.BeforeClass; import org.junit.Test; import java.sql.*; +import java.util.ArrayList; import java.util.Properties; import static org.junit.Assert.assertEquals; @@ -26,8 +28,8 @@ public class PreparedStatementTest { } Properties properties = new Properties(); properties.setProperty(TSDBDriver.PROPERTY_KEY_HOST, host); - connection = DriverManager.getConnection("jdbc:TAOS://" + host + ":0/" + "?user=root&password=taosdata" - , properties); + connection = DriverManager.getConnection("jdbc:TAOS://" + host + ":0/" + "?user=root&password=taosdata", + properties); String sql = "drop database if exists " + dbName; statement = (TSDBPreparedStatement) connection.prepareStatement(sql); @@ -51,11 +53,34 @@ public class PreparedStatementTest { assertEquals(false, isClosed); } + @Test + public void testPreparedStatement() throws SQLException { + long ts = System.currentTimeMillis(); + PreparedStatement saveStatement = connection + .prepareStatement("insert into " + dbName + "." + tName + " values (" + ts + ", 1)"); + + int affectedRows = saveStatement.executeUpdate(); + assertTrue(1 == affectedRows); + } + + @Test + public void testSavedPreparedStatement() throws SQLException { + long ts = System.currentTimeMillis(); + + TSDBPreparedStatement saveStatement = (TSDBPreparedStatement) connection + .prepareStatement("insert into " + dbName + "." + tName + " values (?, ?)"); + + saveStatement.setObject(1, ts + 100); + saveStatement.setObject(2, 3); + int rows = saveStatement.executeUpdate(); + assertEquals(1, rows); + } + @Test public void testUnsupport() { -// if(null == resSet) { -// return; -// } + // if(null == resSet) { + // return; + // } TSDBPreparedStatement tsdbStatement = (TSDBPreparedStatement) statement; try { tsdbStatement.unwrap(null); @@ -130,11 +155,11 @@ public class PreparedStatementTest { } catch (SQLException e) { } try { - tsdbStatement.executeUpdate(null, new int[]{0}); + tsdbStatement.executeUpdate(null, new int[] { 0 }); } catch (SQLException e) { } try { - tsdbStatement.executeUpdate(null, new String[]{"str1", "str2"}); + tsdbStatement.executeUpdate(null, new String[] { "str1", "str2" }); } catch (SQLException e) { } try { @@ -158,4 +183,12 @@ public class PreparedStatementTest { } catch (SQLException e) { } } + + @AfterClass + public static void close() throws SQLException { + statement.executeUpdate("drop database " + dbName); + statement.close(); + connection.close(); + } + }