diff --git a/src/main/java/com/amazon/redshift/jdbc/RedshiftDatabaseMetaData.java b/src/main/java/com/amazon/redshift/jdbc/RedshiftDatabaseMetaData.java index 9afda9a..b888d05 100644 --- a/src/main/java/com/amazon/redshift/jdbc/RedshiftDatabaseMetaData.java +++ b/src/main/java/com/amazon/redshift/jdbc/RedshiftDatabaseMetaData.java @@ -2146,13 +2146,13 @@ private String buildLocalSchemaColumnsQuery(String catalog, result.append("when 'int4' THEN 10 "); result.append("when 'bit' THEN 1 "); result.append("when 'bool' THEN 1 "); - result.append("when 'varchar' THEN atttypmod -4 "); - result.append("when 'character varying' THEN atttypmod -4 "); - result.append("when 'char' THEN atttypmod -4 "); - result.append("when 'character' THEN atttypmod -4 "); - result.append("when 'nchar' THEN atttypmod -4 "); - result.append("when 'bpchar' THEN atttypmod -4 "); - result.append("when 'nvarchar' THEN atttypmod -4 "); + result.append("when 'varchar' THEN CASE atttypmod WHEN -1 THEN 0 ELSE atttypmod -4 END "); + result.append("when 'character varying' THEN CASE atttypmod WHEN -1 THEN 0 ELSE atttypmod -4 END "); + result.append("when 'char' THEN CASE atttypmod WHEN -1 THEN 0 ELSE atttypmod -4 END "); + result.append("when 'character' THEN CASE atttypmod WHEN -1 THEN 0 ELSE atttypmod -4 END "); + result.append("when 'nchar' THEN CASE atttypmod WHEN -1 THEN 0 ELSE atttypmod -4 END "); + result.append("when 'bpchar' THEN CASE atttypmod WHEN -1 THEN 0 ELSE atttypmod -4 END "); + result.append("when 'nvarchar' THEN CASE atttypmod WHEN -1 THEN 0 ELSE atttypmod -4 END "); result.append("when 'date' THEN 13 "); result.append("when 'time' THEN 15 "); result.append("when 'time without time zone' THEN 15 "); @@ -2275,13 +2275,13 @@ private String buildLocalSchemaColumnsQuery(String catalog, result.append("when 'int4' THEN 10 "); result.append("when 'bit' THEN 1 "); result.append("when 'bool' THEN 1 "); - result.append("when 'varchar' THEN atttypmod -4 "); - result.append("when 'character varying' THEN atttypmod -4 "); - result.append("when 'char' THEN atttypmod -4 "); - result.append("when 'character' THEN atttypmod -4 "); - result.append("when 'nchar' THEN atttypmod -4 "); - result.append("when 'bpchar' THEN atttypmod -4 "); - result.append("when 'nvarchar' THEN atttypmod -4 "); + result.append("when 'varchar' THEN CASE atttypmod WHEN -1 THEN 0 ELSE atttypmod -4 END "); + result.append("when 'character varying' THEN CASE atttypmod WHEN -1 THEN 0 ELSE atttypmod -4 END "); + result.append("when 'char' THEN CASE atttypmod WHEN -1 THEN 0 ELSE atttypmod -4 END "); + result.append("when 'character' THEN CASE atttypmod WHEN -1 THEN 0 ELSE atttypmod -4 END "); + result.append("when 'nchar' THEN CASE atttypmod WHEN -1 THEN 0 ELSE atttypmod -4 END "); + result.append("when 'bpchar' THEN CASE atttypmod WHEN -1 THEN 0 ELSE atttypmod -4 END "); + result.append("when 'nvarchar' THEN CASE atttypmod WHEN -1 THEN 0 ELSE atttypmod -4 END "); result.append("when 'date' THEN 13 "); result.append("when 'time' THEN 15 "); result.append("when 'time without time zone' THEN 15 ");