Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
[CONJ-359] Metadata getColumns(...) resultSet doesnt have "IS_GENERAT…
…EDCOLUMN" info
  • Loading branch information
rusher committed Oct 3, 2016
1 parent ed1c4f5 commit df148b4
Show file tree
Hide file tree
Showing 2 changed files with 100 additions and 6 deletions.
3 changes: 2 additions & 1 deletion src/main/java/org/mariadb/jdbc/MariaDbDatabaseMetaData.java
Expand Up @@ -631,7 +631,8 @@ public ResultSet getColumns(String catalog, String schemaPattern, String tableNa
+ " COLUMN_DEFAULT COLUMN_DEF, 0 SQL_DATA_TYPE, 0 SQL_DATETIME_SUB, "
+ " LEAST(CHARACTER_OCTET_LENGTH," + Integer.MAX_VALUE + ") CHAR_OCTET_LENGTH,"
+ " ORDINAL_POSITION, IS_NULLABLE, NULL SCOPE_CATALOG, NULL SCOPE_SCHEMA, NULL SCOPE_TABLE, NULL SOURCE_DATA_TYPE,"
+ " IF(EXTRA = 'auto_increment','YES','NO') IS_AUTOINCREMENT "
+ " IF(EXTRA = 'auto_increment','YES','NO') IS_AUTOINCREMENT, "
+ " IF(EXTRA = 'VIRTUAL','YES','NO') IS_GENERATEDCOLUMN "
+ " FROM INFORMATION_SCHEMA.COLUMNS WHERE "
+ catalogCond("TABLE_SCHEMA", catalog)
+ " AND "
Expand Down
103 changes: 98 additions & 5 deletions src/test/java/org/mariadb/jdbc/DatabaseMetadataTest.java
@@ -1,5 +1,6 @@
package org.mariadb.jdbc;

import org.junit.Assert;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
Expand Down Expand Up @@ -370,12 +371,104 @@ public void testGetTables3() throws SQLException {

@Test
public void testGetColumns() throws SQLException {
createTable("tablegetcolumns", "a INT NOT NULL primary key auto_increment, b VARCHAR(32), c INT AS (a mod 10) VIRTUAL, d VARCHAR(5) AS (left(b,5)) PERSISTENT");
DatabaseMetaData dbmd = sharedConnection.getMetaData();
ResultSet rs = dbmd.getColumns(null, null, "t1", null);
while (rs.next()) {
// System.out.println(rs.getString(3));
assertEquals("t1", rs.getString(3));
}
ResultSet rs = dbmd.getColumns(null, null, "tablegetcolumns", null);

Assert.assertTrue(rs.next());
Assert.assertEquals("testj",rs.getString(1)); //TABLE_CAT
Assert.assertEquals(null, rs.getString(2)); //TABLE_SCHEM
Assert.assertEquals("tablegetcolumns", rs.getString(3)); //TABLE_NAME
Assert.assertEquals("a", rs.getString(4)); //COLUMN_NAME
Assert.assertEquals(Types.INTEGER, rs.getInt(5)); //DATA_TYPE
Assert.assertEquals("INT", rs.getString(6)); //"TYPE_NAME
Assert.assertEquals(10, rs.getInt(7)); //"COLUMN_SIZE
Assert.assertEquals(0, rs.getInt(9)); //DECIMAL_DIGITS
Assert.assertEquals(10, rs.getInt(10)); //NUM_PREC_RADIX
Assert.assertEquals(0, rs.getInt(11)); //NULLABLE
Assert.assertEquals("", rs.getString(12)); //REMARKS
Assert.assertEquals(null, rs.getString(13)); //COLUMN_DEF
Assert.assertEquals(0, rs.getInt(16)); //CHAR_OCTET_LENGTH
Assert.assertEquals(1, rs.getInt(17)); //ORDINAL_POSITION
Assert.assertEquals("NO", rs.getString(18)); //IS_NULLABLE
Assert.assertEquals(null, rs.getString(19)); //SCOPE_CATALOG
Assert.assertEquals(null, rs.getString(20)); //SCOPE_SCHEMA
Assert.assertEquals(null, rs.getString(21)); //SCOPE_TABLE
Assert.assertEquals(0, rs.getShort(22)); //SOURCE_DATA_TYPE
Assert.assertEquals("YES", rs.getString(23)); //IS_AUTOINCREMENT
Assert.assertEquals("NO", rs.getString(24)); //IS_GENERATEDCOLUMN

Assert.assertTrue(rs.next());
Assert.assertEquals("testj",rs.getString(1)); //TABLE_CAT
Assert.assertEquals(null, rs.getString(2)); //TABLE_SCHEM
Assert.assertEquals("tablegetcolumns", rs.getString(3)); //TABLE_NAME
Assert.assertEquals("b", rs.getString(4)); //COLUMN_NAME
Assert.assertEquals(Types.VARCHAR, rs.getInt(5)); //DATA_TYPE
Assert.assertEquals("VARCHAR", rs.getString(6)); //"TYPE_NAME
Assert.assertEquals(32, rs.getInt(7)); //"COLUMN_SIZE
Assert.assertEquals(0, rs.getInt(9)); //DECIMAL_DIGITS
Assert.assertEquals(10, rs.getInt(10)); //NUM_PREC_RADIX
Assert.assertEquals(1, rs.getInt(11)); //NULLABLE
Assert.assertEquals("", rs.getString(12)); //REMARKS
Assert.assertEquals(null, rs.getString(13)); //COLUMN_DEF
Assert.assertEquals(32 * 3, rs.getInt(16)); //CHAR_OCTET_LENGTH
Assert.assertEquals(2, rs.getInt(17)); //ORDINAL_POSITION
Assert.assertEquals("YES", rs.getString(18)); //IS_NULLABLE
Assert.assertEquals(null, rs.getString(19)); //SCOPE_CATALOG
Assert.assertEquals(null, rs.getString(20)); //SCOPE_SCHEMA
Assert.assertEquals(null, rs.getString(21)); //SCOPE_TABLE
Assert.assertEquals(0, rs.getShort(22)); //SOURCE_DATA_TYPE
Assert.assertEquals("NO", rs.getString(23)); //IS_AUTOINCREMENT
Assert.assertEquals("NO", rs.getString(24)); //IS_GENERATEDCOLUMN

Assert.assertTrue(rs.next());
Assert.assertEquals("testj",rs.getString(1)); //TABLE_CAT
Assert.assertEquals(null, rs.getString(2)); //TABLE_SCHEM
Assert.assertEquals("tablegetcolumns", rs.getString(3)); //TABLE_NAME
Assert.assertEquals("c", rs.getString(4)); //COLUMN_NAME
Assert.assertEquals(Types.INTEGER, rs.getInt(5)); //DATA_TYPE
Assert.assertEquals("INT", rs.getString(6)); //"TYPE_NAME
Assert.assertEquals(10, rs.getInt(7)); //"COLUMN_SIZE
Assert.assertEquals(0, rs.getInt(9)); //DECIMAL_DIGITS
Assert.assertEquals(10, rs.getInt(10)); //NUM_PREC_RADIX
Assert.assertEquals(1, rs.getInt(11)); //NULLABLE
Assert.assertEquals("", rs.getString(12)); //REMARKS
Assert.assertEquals(null, rs.getString(13)); //COLUMN_DEF
Assert.assertEquals(0, rs.getInt(16)); //CHAR_OCTET_LENGTH
Assert.assertEquals(3, rs.getInt(17)); //ORDINAL_POSITION
Assert.assertEquals("YES", rs.getString(18)); //IS_NULLABLE
Assert.assertEquals(null, rs.getString(19)); //SCOPE_CATALOG
Assert.assertEquals(null, rs.getString(20)); //SCOPE_SCHEMA
Assert.assertEquals(null, rs.getString(21)); //SCOPE_TABLE
Assert.assertEquals(0, rs.getShort(22)); //SOURCE_DATA_TYPE
Assert.assertEquals("NO", rs.getString(23)); //IS_AUTOINCREMENT
Assert.assertEquals("YES", rs.getString(24)); //IS_GENERATEDCOLUMN

Assert.assertTrue(rs.next());
Assert.assertEquals("testj",rs.getString(1)); //TABLE_CAT
Assert.assertEquals(null, rs.getString(2)); //TABLE_SCHEM
Assert.assertEquals("tablegetcolumns", rs.getString(3)); //TABLE_NAME
Assert.assertEquals("d", rs.getString(4)); //COLUMN_NAME
Assert.assertEquals(Types.VARCHAR, rs.getInt(5)); //DATA_TYPE
Assert.assertEquals("VARCHAR", rs.getString(6)); //"TYPE_NAME
Assert.assertEquals(5, rs.getInt(7)); //"COLUMN_SIZE
Assert.assertEquals(0, rs.getInt(9)); //DECIMAL_DIGITS
Assert.assertEquals(10, rs.getInt(10)); //NUM_PREC_RADIX
Assert.assertEquals(1, rs.getInt(11)); //NULLABLE
Assert.assertEquals("", rs.getString(12)); //REMARKS
Assert.assertEquals(null, rs.getString(13)); //COLUMN_DEF
Assert.assertEquals(5 * 3, rs.getInt(16)); //CHAR_OCTET_LENGTH
Assert.assertEquals(4, rs.getInt(17)); //ORDINAL_POSITION
Assert.assertEquals("YES", rs.getString(18)); //IS_NULLABLE
Assert.assertEquals(null, rs.getString(19)); //SCOPE_CATALOG
Assert.assertEquals(null, rs.getString(20)); //SCOPE_SCHEMA
Assert.assertEquals(null, rs.getString(21)); //SCOPE_TABLE
Assert.assertEquals(0, rs.getShort(22)); //SOURCE_DATA_TYPE
Assert.assertEquals("NO", rs.getString(23)); //IS_AUTOINCREMENT
Assert.assertEquals("NO", rs.getString(24)); //IS_GENERATEDCOLUMN

Assert.assertFalse(rs.next());

}

void testResultSetColumns(ResultSet rs, String spec) throws SQLException {
Expand Down

0 comments on commit df148b4

Please sign in to comment.