You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@hive.apache.org by "Son Nguyen (JIRA)" <ji...@apache.org> on 2015/06/04 17:35:38 UTC

[jira] [Created] (HIVE-10933) Hive 0.13 returns precision 0 for varchar(32) from DatabaseMetadata.getColumns()

Son Nguyen created HIVE-10933:
---------------------------------

             Summary: Hive 0.13 returns precision 0 for varchar(32) from DatabaseMetadata.getColumns()
                 Key: HIVE-10933
                 URL: https://issues.apache.org/jira/browse/HIVE-10933
             Project: Hive
          Issue Type: Bug
          Components: API
    Affects Versions: 0.13.0
            Reporter: Son Nguyen


DatabaseMetadata.getColumns() returns "COLUMN_SIZE" as 0 for a column defined as varchar(32), or char(32).   While ResultSetMetaData.getPrecision() returns correct value 32.

Here is the segment program that reproduces the issue.

try {
	statement = connection.createStatement();
			
	statement.execute("drop table if exists son_table");
			
	statement.execute("create table son_table( col1 varchar(32) )");
			
	statement.close();
			
} catch ( Exception e) {
	   return;
}		
		
// get column info using metadata
try {
	DatabaseMetaData dmd = null;
	ResultSet resultSet = null;
			
	dmd = connection.getMetaData();
			
	resultSet = dmd.getColumns(null, null, "son_table", "col1");
			
	if ( resultSet.next() ) {
		String tabName = resultSet.getString("TABLE_NAME");
		String colName = resultSet.getString("COLUMN_NAME");
		String dataType = resultSet.getString("DATA_TYPE");
		String typeName = resultSet.getString("TYPE_NAME");
		int precision = resultSet.getInt("COLUMN_SIZE");
				
		// output is: colName = col1, dataType = 12, typeName = VARCHAR, precision = 0.
	      System.out.format("colName = %s, dataType = %s, typeName = %s, precision = %d.",
		colName, dataType, typeName, precision);
	}

} catch ( Exception e) {
	return;
}





--
This message was sent by Atlassian JIRA
(v6.3.4#6332)