diff --git a/pom.xml b/pom.xml
index 8980cb7..9d68952 100644
--- a/pom.xml
+++ b/pom.xml
@@ -121,6 +121,7 @@
1.7.36
1.19.2
0.6.11
+ 16.20.6
3.3.0
3.3.1
@@ -276,6 +277,26 @@
${lombok.version}
test
+
+ us.fatehi
+ schemacrawler
+ ${schemacrawler.version}
+ test
+
+
+ us.fatehi
+ schemacrawler-api
+ ${schemacrawler.version}
+ test-jar
+ test
+
+
+ us.fatehi
+ schemacrawler-tools
+ ${schemacrawler.version}
+ test-jar
+ test
+
diff --git a/src/test/java/com/ing/data/cassandra/jdbc/CompleteMetadataTest.java b/src/test/java/com/ing/data/cassandra/jdbc/CompleteMetadataTest.java
new file mode 100644
index 0000000..3a922ef
--- /dev/null
+++ b/src/test/java/com/ing/data/cassandra/jdbc/CompleteMetadataTest.java
@@ -0,0 +1,101 @@
+
+package com.ing.data.cassandra.jdbc;
+
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.junit.jupiter.api.Assertions.fail;
+import static schemacrawler.test.utility.ExecutableTestUtility.executableExecution;
+import static schemacrawler.test.utility.FileHasContent.classpathResource;
+import static schemacrawler.test.utility.FileHasContent.hasSameContentAs;
+import static schemacrawler.test.utility.FileHasContent.outputOf;
+import java.net.InetSocketAddress;
+import java.util.regex.Pattern;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import schemacrawler.inclusionrule.IncludeAll;
+import schemacrawler.schemacrawler.InfoLevel;
+import schemacrawler.schemacrawler.LimitOptionsBuilder;
+import schemacrawler.schemacrawler.LoadOptionsBuilder;
+import schemacrawler.schemacrawler.SchemaCrawlerOptions;
+import schemacrawler.schemacrawler.SchemaCrawlerOptionsBuilder;
+import schemacrawler.schemacrawler.SchemaInfoLevelBuilder;
+import schemacrawler.tools.command.text.schema.options.SchemaTextOptions;
+import schemacrawler.tools.command.text.schema.options.SchemaTextOptionsBuilder;
+import schemacrawler.tools.executable.SchemaCrawlerExecutable;
+import us.fatehi.utility.datasource.DatabaseConnectionSource;
+import us.fatehi.utility.datasource.DatabaseConnectionSources;
+import us.fatehi.utility.datasource.MultiUseUserCredentials;
+
+/****
+ * Runs extensive database metadata tests.
+ ****/
+public class CompleteMetadataTest extends UsingCassandraContainerTest {
+
+ private DatabaseConnectionSource dbConnectionSource;
+
+ /****
+ * Sets up a data source to connect to the Cassandra database.
+ *
+ ****/
+ @BeforeEach
+ public void createDatabase() {
+
+ if (!cassandraContainer.isRunning()) {
+ fail("Testcontainer for database is not available");
+ }
+
+ final InetSocketAddress contactPoint = cassandraContainer.getContactPoint();
+ final String host = contactPoint.getHostName();
+ final int port = contactPoint.getPort();
+ final String keyspace = "test_keyspace";
+ final String localDatacenter = cassandraContainer.getLocalDatacenter();
+ final String connectionUrl = String.format("jdbc:cassandra://%s:%d/%s?localdatacenter=%s",
+ host, port, keyspace, localDatacenter);
+ createDataSource(connectionUrl);
+ }
+
+ /****
+ * Uses SchemaCrawler to obtain database metadata in "maximum" mode. Compares actual results to
+ * an expected file with results. The test will produce a new expected results file if the
+ * actual and expected results do not match.
+ *
+ * @throws Exception on an error when running the test
+ ****/
+ @Test
+ public void givenDatabase_whenCompleteMetadataExtracted_shouldMatchExpectedOutput()
+ throws Exception {
+
+ final LimitOptionsBuilder limitOptionsBuilder =
+ LimitOptionsBuilder.builder().includeSchemas(Pattern.compile("test_keyspace.*"))
+ .includeRoutines(new IncludeAll());
+ final SchemaInfoLevelBuilder schemaInfoLevelBuilder =
+ SchemaInfoLevelBuilder.builder().withInfoLevel(InfoLevel.maximum);
+ final LoadOptionsBuilder loadOptionsBuilder =
+ LoadOptionsBuilder.builder().withSchemaInfoLevelBuilder(schemaInfoLevelBuilder);
+ final SchemaCrawlerOptions schemaCrawlerOptions = SchemaCrawlerOptionsBuilder
+ .newSchemaCrawlerOptions().withLimitOptions(limitOptionsBuilder.toOptions())
+ .withLoadOptions(loadOptionsBuilder.toOptions());
+ final SchemaTextOptionsBuilder textOptionsBuilder = SchemaTextOptionsBuilder.builder();
+ textOptionsBuilder.showDatabaseInfo().showJdbcDriverInfo();
+ final SchemaTextOptions textOptions = textOptionsBuilder.toOptions();
+
+ final SchemaCrawlerExecutable executable = new SchemaCrawlerExecutable("details");
+ executable.setSchemaCrawlerOptions(schemaCrawlerOptions);
+ executable.setAdditionalConfiguration(
+ SchemaTextOptionsBuilder.builder(textOptions).toConfig());
+
+ final String expectedResource = "expected_metadata_output.txt";
+ assertThat(outputOf(executableExecution(getDataSource(), executable)),
+ hasSameContentAs(classpathResource(expectedResource)));
+ }
+
+ private void createDataSource(final String connectionUrl) {
+ dbConnectionSource = DatabaseConnectionSources.newDatabaseConnectionSource(connectionUrl,
+ new MultiUseUserCredentials(cassandraContainer.getUsername(),
+ cassandraContainer.getPassword()));
+
+ }
+
+ private DatabaseConnectionSource getDataSource() {
+ return dbConnectionSource;
+ }
+}
diff --git a/src/test/resources/expected_metadata_output.txt b/src/test/resources/expected_metadata_output.txt
new file mode 100644
index 0000000..28db2a7
--- /dev/null
+++ b/src/test/resources/expected_metadata_output.txt
@@ -0,0 +1,881 @@
+
+
+System Information
+========================================================================
+
+generated by SchemaCrawler 16.20.6
+generated on 2023-11-21 22:11:52
+database version Cassandra 5.0.0
+driver version Cassandra JDBC Driver 4.10.2
+
+
+
+Tables
+========================================================================
+
+
+
+test_keyspace.cf_test1 [table]
+------------------------------------------------------------------------
+First table in the keyspace
+ keyname TEXT NOT NULL
+ t1bvalue BOOLEAN NOT NULL
+ t1ivalue INT NOT NULL
+
+Primary Key
+
+ [primary key]
+ keyname
+
+
+
+test_keyspace.cf_test2 [table]
+------------------------------------------------------------------------
+Second table in the keyspace
+ keyname TEXT NOT NULL
+ t2bvalue BOOLEAN NOT NULL
+ t2ivalue INT NOT NULL
+
+Primary Key
+
+ [primary key]
+ keyname
+
+
+
+test_keyspace.cf_test3 [table]
+------------------------------------------------------------------------
+Third table in the keyspace
+ keyname TEXT NOT NULL
+ t3ivalue INT NOT NULL
+ t3bvalue BOOLEAN NOT NULL
+
+Primary Key
+
+ [primary key]
+ keyname
+ t3ivalue
+
+
+
+test_keyspace.tbl_test_blobs [table]
+------------------------------------------------------------------------
+ keyname TEXT NOT NULL
+ col_blob BLOB NOT NULL
+
+Primary Key
+
+ [primary key]
+ keyname
+
+
+
+test_keyspace.tbl_test_texts [table]
+------------------------------------------------------------------------
+ keyname TEXT NOT NULL
+ col_ascii ASCII NOT NULL
+
+Primary Key
+
+ [primary key]
+ keyname
+
+
+
+test_keyspace.tbl_test_timestamps [table]
+------------------------------------------------------------------------
+ keyname TEXT NOT NULL
+ col_ts TIMESTAMP NOT NULL
+
+Primary Key
+
+ [primary key]
+ keyname
+
+
+
+test_keyspace2.cf_test1 [table]
+------------------------------------------------------------------------
+First table in the keyspace
+ keyname TEXT NOT NULL
+ t1bvalue BOOLEAN NOT NULL
+ t1ivalue INT NOT NULL
+
+Primary Key
+
+ [primary key]
+ keyname
+
+
+
+test_keyspace2.cf_test2 [table]
+------------------------------------------------------------------------
+Second table in the keyspace
+ keyname TEXT NOT NULL
+ t2bvalue BOOLEAN NOT NULL
+ t2ivalue INT NOT NULL
+
+Primary Key
+
+ [primary key]
+ keyname
+
+Indexes
+
+int_values_idx [non-unique index]
+ t2ivalue unknown
+
+
+
+test_keyspace3.regressions_test [table]
+------------------------------------------------------------------------
+ keyname TEXT NOT NULL
+ bvalue BOOLEAN NOT NULL
+ ivalue INT NOT NULL
+
+Primary Key
+
+ [primary key]
+ keyname
+
+Indexes
+
+regressions_test_ivalue_idx [non-unique index]
+ ivalue unknown
+
+
+
+test_keyspace_batch.collections_test [table]
+------------------------------------------------------------------------
+ keyvalue INT NOT NULL
+ listvalue List(BIGINT, not frozen) NOT NULL
+ mapvalue Map(DOUBLE => BOOLEAN, not frozen) NOT NULL
+ setvalue Set(TEXT, not frozen) NOT NULL
+
+Primary Key
+
+ [primary key]
+ keyvalue
+
+
+
+test_keyspace_coll.collections_test [table]
+------------------------------------------------------------------------
+ keyvalue INT NOT NULL
+ listvalue List(BIGINT, not frozen) NOT NULL
+ mapvalue Map(DOUBLE => BOOLEAN, not frozen) NOT NULL
+ setvalue Set(TEXT, not frozen) NOT NULL
+
+Primary Key
+
+ [primary key]
+ keyvalue
+
+
+
+test_keyspace_coll.frozen_test [table]
+------------------------------------------------------------------------
+ keyvalue INT NOT NULL
+ frozenlist List(INT, frozen) NOT NULL
+ frozenmap Map(TEXT => TEXT, frozen) NOT NULL
+ frozenset Set(TEXT, frozen) NOT NULL
+ innertuple customtype)), not frozen) not null
+ innerudt customtype), not frozen) not null
+
+Primary Key
+
+ [primary key]
+ keyvalue
+
+
+
+test_keyspace_pool.pooled_test [table]
+------------------------------------------------------------------------
+ somekey TEXT NOT NULL
+ someint INT NOT NULL
+
+Primary Key
+
+ [primary key]
+ somekey
+
+
+
+test_keyspace_vect.pet_supply_vectors [table]
+------------------------------------------------------------------------
+ product_id TEXT NOT NULL
+ product_name TEXT NOT NULL
+ product_vector Vector(FLOAT, 14) NOT NULL
+
+Primary Key
+
+ [primary key]
+ product_id
+
+Indexes
+
+idx_vector [non-unique index]
+ product_vector unknown
+
+
+
+test_keyspace_vect.vectors_test [table]
+------------------------------------------------------------------------
+ keyvalue INT NOT NULL
+ floatsvector Vector(FLOAT, 4) NOT NULL
+ intsvector Vector(INT, 3) NOT NULL
+
+Primary Key
+
+ [primary key]
+ keyvalue
+
+
+
+Routines
+========================================================================
+
+
+
+test_keyspace.function_test1 [function, does not return a table]
+------------------------------------------------------------------------
+ var1 INT, in
+ var2 TEXT, in
+
+ [specific name]
+function_test1
+
+
+
+Data Types
+========================================================================
+
+ascii [data type]
+ defined with no parameters
+ nullable
+ not auto-incrementable
+ searchable except with where .. like
+
+bigint [data type]
+ defined with no parameters
+ nullable
+ not auto-incrementable
+ searchable except with where .. like
+
+blob [data type]
+ defined with no parameters
+ nullable
+ not auto-incrementable
+ searchable except with where .. like
+
+boolean [data type]
+ defined with no parameters
+ nullable
+ not auto-incrementable
+ searchable except with where .. like
+
+counter [data type]
+ defined with no parameters
+ nullable
+ not auto-incrementable
+ searchable except with where .. like
+
+CUSTOM [data type]
+ defined with no parameters
+ nullable
+ not auto-incrementable
+ searchable except with where .. like
+
+date [data type]
+ defined with no parameters
+ nullable
+ not auto-incrementable
+ searchable except with where .. like
+
+decimal [data type]
+ defined with no parameters
+ nullable
+ not auto-incrementable
+ searchable except with where .. like
+
+double [data type]
+ defined with no parameters
+ nullable
+ not auto-incrementable
+ searchable except with where .. like
+
+duration [data type]
+ defined with no parameters
+ nullable
+ not auto-incrementable
+ searchable except with where .. like
+
+float [data type]
+ defined with no parameters
+ nullable
+ not auto-incrementable
+ searchable except with where .. like
+
+inet [data type]
+ defined with no parameters
+ nullable
+ not auto-incrementable
+ searchable except with where .. like
+
+int [data type]
+ defined with no parameters
+ nullable
+ not auto-incrementable
+ searchable except with where .. like
+
+list [data type]
+ defined with no parameters
+ nullable
+ not auto-incrementable
+ searchable except with where .. like
+
+map [data type]
+ defined with no parameters
+ nullable
+ not auto-incrementable
+ searchable except with where .. like
+
+set [data type]
+ defined with no parameters
+ nullable
+ not auto-incrementable
+ searchable except with where .. like
+
+smallint [data type]
+ defined with no parameters
+ nullable
+ not auto-incrementable
+ searchable except with where .. like
+
+text [data type]
+ defined with no parameters
+ nullable
+ not auto-incrementable
+ searchable except with where .. like
+
+time [data type]
+ defined with no parameters
+ nullable
+ not auto-incrementable
+ searchable except with where .. like
+
+timestamp [data type]
+ defined with no parameters
+ nullable
+ not auto-incrementable
+ searchable except with where .. like
+
+timeuuid [data type]
+ defined with no parameters
+ nullable
+ not auto-incrementable
+ searchable except with where .. like
+
+tinyint [data type]
+ defined with no parameters
+ nullable
+ not auto-incrementable
+ searchable except with where .. like
+
+tuple [data type]
+ defined with no parameters
+ nullable
+ not auto-incrementable
+ searchable except with where .. like
+
+UDT [data type]
+ defined with no parameters
+ nullable
+ not auto-incrementable
+ searchable except with where .. like
+
+uuid [data type]
+ defined with no parameters
+ nullable
+ not auto-incrementable
+ searchable except with where .. like
+
+VARCHAR [data type]
+ defined with no parameters
+ nullable
+ not auto-incrementable
+ searchable except with where .. like
+
+varint [data type]
+ defined with no parameters
+ nullable
+ not auto-incrementable
+ searchable except with where .. like
+
+Vector [data type]
+ defined with no parameters
+ nullable
+ not auto-incrementable
+ searchable except with where .. like
+
+test_keyspace.ASCII [user defined data type]
+ defined with no parameters
+ not nullable
+ not auto-incrementable
+ not searchable
+ based on
+
+test_keyspace.BLOB [user defined data type]
+ defined with no parameters
+ not nullable
+ not auto-incrementable
+ not searchable
+ based on
+
+test_keyspace.BOOLEAN [user defined data type]
+ defined with no parameters
+ not nullable
+ not auto-incrementable
+ not searchable
+ based on
+
+test_keyspace.customtype1 [user defined data type]
+ defined with no parameters
+ not nullable
+ not auto-incrementable
+ not searchable
+ based on
+
+test_keyspace.customtype2 [user defined data type]
+ defined with no parameters
+ not nullable
+ not auto-incrementable
+ not searchable
+ based on
+
+test_keyspace.INT [user defined data type]
+ defined with no parameters
+ not nullable
+ not auto-incrementable
+ not searchable
+ based on
+
+test_keyspace.TEXT [user defined data type]
+ defined with no parameters
+ not nullable
+ not auto-incrementable
+ not searchable
+ based on
+
+test_keyspace.TIMESTAMP [user defined data type]
+ defined with no parameters
+ not nullable
+ not auto-incrementable
+ not searchable
+ based on
+
+test_keyspace.type_in_different_ks [user defined data type]
+ defined with no parameters
+ not nullable
+ not auto-incrementable
+ not searchable
+ based on
+
+test_keyspace2.BOOLEAN [user defined data type]
+ defined with no parameters
+ not nullable
+ not auto-incrementable
+ not searchable
+ based on
+
+test_keyspace2.INT [user defined data type]
+ defined with no parameters
+ not nullable
+ not auto-incrementable
+ not searchable
+ based on
+
+test_keyspace2.TEXT [user defined data type]
+ defined with no parameters
+ not nullable
+ not auto-incrementable
+ not searchable
+ based on
+
+test_keyspace2.type_in_different_ks [user defined data type]
+ defined with no parameters
+ not nullable
+ not auto-incrementable
+ not searchable
+ based on
+
+test_keyspace3.BOOLEAN [user defined data type]
+ defined with no parameters
+ not nullable
+ not auto-incrementable
+ not searchable
+ based on
+
+test_keyspace3.INT [user defined data type]
+ defined with no parameters
+ not nullable
+ not auto-incrementable
+ not searchable
+ based on
+
+test_keyspace3.TEXT [user defined data type]
+ defined with no parameters
+ not nullable
+ not auto-incrementable
+ not searchable
+ based on
+
+test_keyspace_batch.INT [user defined data type]
+ defined with no parameters
+ not nullable
+ not auto-incrementable
+ not searchable
+ based on
+
+test_keyspace_batch.List(BIGINT, not frozen) [user defined data type]
+ defined with no parameters
+ not nullable
+ not auto-incrementable
+ not searchable
+ based on
+
+test_keyspace_batch.Map(DOUBLE => BOOLEAN, not frozen) [user defined data type]
+ defined with no parameters
+ not nullable
+ not auto-incrementable
+ not searchable
+ based on
+
+test_keyspace_batch.Set(TEXT, not frozen) [user defined data type]
+ defined with no parameters
+ not nullable
+ not auto-incrementable
+ not searchable
+ based on
+
+test_keyspace_coll.customtype [user defined data type]
+ defined with no parameters
+ not nullable
+ not auto-incrementable
+ not searchable
+ based on
+
+test_keyspace_coll.customtype)), not frozen) [user defined data type]
+ defined with no parameters
+ not nullable
+ not auto-incrementable
+ not searchable
+ based on
+
+test_keyspace_coll.customtype), not frozen) [user defined data type]
+ defined with no parameters
+ not nullable
+ not auto-incrementable
+ not searchable
+ based on
+
+test_keyspace_coll.INT [user defined data type]
+ defined with no parameters
+ not nullable
+ not auto-incrementable
+ not searchable
+ based on
+
+test_keyspace_coll.List(BIGINT, not frozen) [user defined data type]
+ defined with no parameters
+ not nullable
+ not auto-incrementable
+ not searchable
+ based on
+
+test_keyspace_coll.List(INT, frozen) [user defined data type]
+ defined with no parameters
+ not nullable
+ not auto-incrementable
+ not searchable
+ based on
+
+test_keyspace_coll.Map(DOUBLE => BOOLEAN, not frozen) [user defined data type]
+ defined with no parameters
+ not nullable
+ not auto-incrementable
+ not searchable
+ based on
+
+test_keyspace_coll.Map(TEXT => TEXT, frozen) [user defined data type]
+ defined with no parameters
+ not nullable
+ not auto-incrementable
+ not searchable
+ based on
+
+test_keyspace_coll.Set(TEXT, frozen) [user defined data type]
+ defined with no parameters
+ not nullable
+ not auto-incrementable
+ not searchable
+ based on
+
+test_keyspace_coll.Set(TEXT, not frozen) [user defined data type]
+ defined with no parameters
+ not nullable
+ not auto-incrementable
+ not searchable
+ based on
+
+test_keyspace_pool.INT [user defined data type]
+ defined with no parameters
+ not nullable
+ not auto-incrementable
+ not searchable
+ based on
+
+test_keyspace_pool.TEXT [user defined data type]
+ defined with no parameters
+ not nullable
+ not auto-incrementable
+ not searchable
+ based on
+
+test_keyspace_vect.INT [user defined data type]
+ defined with no parameters
+ not nullable
+ not auto-incrementable
+ not searchable
+ based on
+
+test_keyspace_vect.TEXT [user defined data type]
+ defined with no parameters
+ not nullable
+ not auto-incrementable
+ not searchable
+ based on
+
+test_keyspace_vect.Vector(FLOAT, 14) [user defined data type]
+ defined with no parameters
+ not nullable
+ not auto-incrementable
+ not searchable
+ based on
+
+test_keyspace_vect.Vector(FLOAT, 4) [user defined data type]
+ defined with no parameters
+ not nullable
+ not auto-incrementable
+ not searchable
+ based on
+
+test_keyspace_vect.Vector(INT, 3) [user defined data type]
+ defined with no parameters
+ not nullable
+ not auto-incrementable
+ not searchable
+ based on
+
+
+
+System Information
+========================================================================
+
+
+Database Information
+-=--=--=--=--=--=--=--=--=--=--=--=--=--=--=--=--=--=--=--=--=--=--=--=-
+database product name Cassandra
+database product version 5.0.0
+database user name cassandra
+
+
+Database Characteristics
+-=--=--=--=--=--=--=--=--=--=--=--=--=--=--=--=--=--=--=--=--=--=--=--=-
+all procedures are callable false
+all tables are selectable true
+auto commit failure closes all result sets false
+catalog separator
+catalog term Cluster
+catalogs embedded_test_cluster
+data definition causes transaction commit false
+data definition ignored in transactions false
+database major version 5
+database minor version 0
+default transaction isolation 0
+deletes are detected for TYPE_FORWARD_ONLY result sets false
+deletes are detected for TYPE_SCROLL_INSENSITIVE result sets false
+deletes are detected for TYPE_SCROLL_SENSITIVE result sets false
+does max row size include blobs false
+driver major version 4
+driver minor version 10
+extra name characters
+generated key always returned false
+identifier quote string
+inserts are detected for TYPE_FORWARD_ONLY result sets false
+inserts are detected for TYPE_SCROLL_INSENSITIVE result sets false
+inserts are detected for TYPE_SCROLL_SENSITIVE result sets false
+is catalog at start false
+is read only false
+JDBC major version 4
+JDBC minor version 0
+locators update copy false
+max binary literal length 1073741823
+max catalog name length 127
+max char literal length 65535
+max column name length 65535
+max columns in group by 0
+max columns in index 0
+max columns in order by 0
+max columns in select 0
+max columns in table 0
+max connections 0
+max cursor name length 0
+max index length 0
+max logical lob size 0
+max procedure name length 0
+max row size 0
+max schema name length 48
+max statement length 0
+max statements 0
+max table name length 48
+max tables in select 0
+max user name length 0
+null plus non null is null false
+nulls are sorted at end false
+nulls are sorted at start true
+nulls are sorted high true
+nulls are sorted low false
+numeric functions similarity_cosine, similarity_euclidean, similarity_dot_product
+others deletes are visible for TYPE_FORWARD_ONLY result sets false
+others deletes are visible for TYPE_SCROLL_INSENSITIVE result sets false
+others deletes are visible for TYPE_SCROLL_SENSITIVE result sets false
+others inserts are visible for TYPE_FORWARD_ONLY result sets false
+others inserts are visible for TYPE_SCROLL_INSENSITIVE result sets false
+others inserts are visible for TYPE_SCROLL_SENSITIVE result sets false
+others updates are visible for TYPE_FORWARD_ONLY result sets false
+others updates are visible for TYPE_SCROLL_INSENSITIVE result sets false
+others updates are visible for TYPE_SCROLL_SENSITIVE result sets false
+own deletes are visible for TYPE_FORWARD_ONLY result sets false
+own deletes are visible for TYPE_SCROLL_INSENSITIVE result sets false
+own deletes are visible for TYPE_SCROLL_SENSITIVE result sets false
+own inserts are visible for TYPE_FORWARD_ONLY result sets false
+own inserts are visible for TYPE_SCROLL_INSENSITIVE result sets false
+own inserts are visible for TYPE_SCROLL_SENSITIVE result sets false
+own updates are visible for TYPE_FORWARD_ONLY result sets false
+own updates are visible for TYPE_SCROLL_INSENSITIVE result sets false
+own updates are visible for TYPE_SCROLL_SENSITIVE result sets false
+procedure term
+result set holdability 1
+row id lifetime ROWID_UNSUPPORTED
+schema term Keyspace
+schemas test_json_support, test_keyspace, test_keyspace2, test_keyspace3, test_keyspace_batch, test_keyspace_coll, test_keyspace_pool, test_keyspace_vect, test_prep_stmt
+search string escape \
+SQL keywords AGGREGATE, ALLOW, ANN OF, APPLY, ASCII, AUTHORIZE, BATCH, CLUSTERING, COLUMNFAMILY, COMPACT, COUNTER, CUSTOM, ENTRIES, FILTERING, FINALFUNC, FROZEN, FUNCTIONS, IF, INDEX, INET, INFINITY, INITCOND, JSON, KEYS, KEYSPACE, KEYSPACES, LIMIT, LIST, LOGIN, MODIFY, NAN, NOLOGIN, NORECURSIVE, NOSUPERUSER, PASSWORD, PERMISSION, PERMISSIONS, RENAME, REPLACE, RETURNS, ROLES, SFUNC, SMALLINT, STORAGE, STYPE, SUPERUSER, TEXT, TIMEUUID, TINYINT, TOKEN, TRUNCATE, TTL, TUPLE, UNLOGGED, USE, USERS, UUID, VARINT, VECTOR, WRITETIME
+SQL state type 2
+stores lower case identifiers false
+stores lower case quoted identifiers false
+stores mixed case identifiers true
+stores mixed case quoted identifiers true
+stores upper case identifiers false
+stores upper case quoted identifiers false
+string functions
+supports alter table with add column true
+supports alter table with drop column true
+supports ANSI92 entry level SQL false
+supports ANSI92 full SQL false
+supports ANSI92 intermediate SQL false
+supports batch updates false
+supports catalogs in data manipulation false
+supports catalogs in index definitions false
+supports catalogs in privilege definitions false
+supports catalogs in procedure calls false
+supports catalogs in table definitions false
+supports column aliasing true
+supports convert false
+supports core SQL grammar false
+supports correlated subqueries false
+supports data definition and data manipulation transactions false
+supports data manipulation transactions only false
+supports different table correlation names false
+supports expressions in order by false
+supports extended SQL grammar false
+supports full outer joins false
+supports get generated keys false
+supports group by true
+supports group by beyond select false
+supports group by unrelated false
+supports integrity enhancement facility false
+supports like escape clause false
+supports limited outer joins false
+supports minimum SQL grammar false
+supports mixed case identifiers true
+supports mixed case quoted identifiers true
+supports multiple open results false
+supports multiple result sets false
+supports multiple transactions false
+supports named parameters false
+supports non nullable columns false
+supports open cursors across commit false
+supports open cursors across rollback false
+supports open statements across commit false
+supports open statements across rollback false
+supports order by unrelated false
+supports outer joins false
+supports positioned delete false
+supports positioned update false
+supports ref cursors false
+supports result set type for TYPE_FORWARD_ONLY result sets true
+supports result set type for TYPE_SCROLL_INSENSITIVE result sets false
+supports result set type for TYPE_SCROLL_SENSITIVE result sets false
+supports savepoints false
+supports schemas in data manipulation true
+supports schemas in index definitions true
+supports schemas in privilege definitions true
+supports schemas in procedure calls false
+supports schemas in table definitions true
+supports select for update false
+supports statement pooling false
+supports stored functions using call syntax false
+supports stored procedures false
+supports subqueries in comparisons false
+supports subqueries in exists false
+supports subqueries in ins false
+supports subqueries in quantifieds false
+supports table correlation names false
+supports transactions false
+supports union false
+supports union all false
+system functions TOKEN, TTL, WRITETIME
+table types TABLE
+time date functions dateOf, now, minTimeuuid, maxTimeuuid, unixTimestampOf, toDate, toTimestamp, toUnixTimestamp, currentTimestamp, currentDate, currentTime, currentTimeUUID
+type info CUSTOM, UDT, VARCHAR, Vector, ascii, bigint, blob, boolean, counter, date, decimal, double, duration, float, inet, int, list, map, set, smallint, text, time, timestamp, timeuuid, tinyint, tuple, uuid, varint
+updates are detected for TYPE_FORWARD_ONLY result sets false
+updates are detected for TYPE_SCROLL_INSENSITIVE result sets false
+updates are detected for TYPE_SCROLL_SENSITIVE result sets false
+uses local file per table false
+uses local files false
+
+
+JDBC Driver Information
+-=--=--=--=--=--=--=--=--=--=--=--=--=--=--=--=--=--=--=--=--=--=--=--=-
+connection url jdbc:cassandra://localhost:60543/test_keyspace
+driver name Cassandra JDBC Driver
+driver version 4.10.2
+driver class name com.ing.data.cassandra.jdbc.CassandraDriver
+is JDBC compliant false
+supported JDBC version 4.0
+
+
+JDBC Driver Properties
+-=--=--=--=--=--=--=--=--=--=--=--=--=--=--=--=--=--=--=--=--=--=--=--=-
+password [driver property]
+ The 'password' property
+ not required
+ value null
+
+user [driver property]
+ The 'user' property
+ not required
+ value null
+