@@ -43,7 +43,7 @@ class MetadataTest extends SnappyFunSuite {
4343 test(" DESCRIBE, SHOW and EXPLAIN" ) {
4444 val session = this .snc.snappySession
4545 val planCaching = io.snappydata.Property .PlanCaching .get(session.sessionState.conf)
46- MetadataTest .testDescribeShowAndExplain(session.sql, usingJDBC = false , planCaching)
46+ MetadataTest .testDescribeShowAndExplain(session.sql, jdbcStmt = null , planCaching)
4747 }
4848
4949 test(" DSID joins with SYS tables" ) {
@@ -367,7 +367,7 @@ object MetadataTest extends Assertions {
367367 }
368368
369369 def testDescribeShowAndExplain (executeSQL : String => Dataset [Row ],
370- usingJDBC : Boolean , planCachingEnabled : Boolean ): Unit = {
370+ jdbcStmt : java.sql. Statement , planCachingEnabled : Boolean ): Unit = {
371371 var ds : Dataset [Row ] = null
372372 var expectedColumns : List [String ] = null
373373 var rs : Array [Row ] = null
@@ -618,6 +618,72 @@ object MetadataTest extends Assertions {
618618 rs = executeSQL(" show tblproperties columnTable2" ).collect()
619619 checkTableProperties(rs, isRowTable = false )
620620
621+ // ----- check ResultSet metadata is case-insensitive (GITHUB #1559) -----
622+
623+ executeSQL(" insert into rowTable1 select id, 'data_' || id from range(1000)" )
624+ executeSQL(" insert into columnTable2 select id, 'data_' || id, id + 1.1 from range(1000)" )
625+ if (jdbcStmt != null ) {
626+ var numResults = 0
627+ var resultSet = jdbcStmt.executeQuery(" select * from rowTable1 order by id" )
628+ while (resultSet.next()) {
629+ val expectedData = " data_" + numResults
630+ assert(resultSet.getInt(1 ) === numResults)
631+ assert(resultSet.getInt(" id" ) === numResults)
632+ assert(resultSet.getInt(" ID" ) === numResults)
633+ assert(resultSet.getInt(" Id" ) === numResults)
634+ assert(resultSet.getInt(" rowtable1.id" ) === numResults)
635+ assert(resultSet.getInt(" ROWTABLE1.ID" ) === numResults)
636+ assert(resultSet.getInt(" rowTable1.Id" ) === numResults)
637+
638+ assert(resultSet.getString(2 ) === expectedData)
639+ assert(resultSet.getString(" data" ) === expectedData)
640+ assert(resultSet.getString(" DATA" ) === expectedData)
641+ assert(resultSet.getString(" Data" ) === expectedData)
642+ assert(resultSet.getString(" rowtable1.data" ) === expectedData)
643+ assert(resultSet.getString(" ROWTABLE1.DATA" ) === expectedData)
644+ assert(resultSet.getString(" rowTable1.Data" ) === expectedData)
645+
646+ numResults += 1
647+ }
648+ assert(numResults === 1000 )
649+
650+ numResults = 0
651+ resultSet = jdbcStmt.executeQuery(" select * from columnTable2 order by id" )
652+ while (resultSet.next()) {
653+ assert(resultSet.getInt(1 ) === numResults)
654+ assert(resultSet.getInt(" id" ) === numResults)
655+ assert(resultSet.getInt(" ID" ) === numResults)
656+ assert(resultSet.getInt(" Id" ) === numResults)
657+ assert(resultSet.getInt(" columntable2.id" ) === numResults)
658+ assert(resultSet.getInt(" COLUMNTABLE2.ID" ) === numResults)
659+ assert(resultSet.getInt(" columnTable2.Id" ) === numResults)
660+
661+ val expectedData = " data_" + numResults
662+ assert(resultSet.getString(2 ) === expectedData)
663+ assert(resultSet.getString(" data" ) === expectedData)
664+ assert(resultSet.getString(" DATA" ) === expectedData)
665+ assert(resultSet.getString(" Data" ) === expectedData)
666+ assert(resultSet.getString(" columntable2.data" ) === expectedData)
667+ assert(resultSet.getString(" COLUMNTABLE2.DATA" ) === expectedData)
668+ assert(resultSet.getString(" columnTable2.Data" ) === expectedData)
669+
670+ val expectedData2 = new java.math.BigDecimal (numResults).add(
671+ new java.math.BigDecimal (" 1.1" )).setScale(18 )
672+ assert(resultSet.getBigDecimal(3 ) === expectedData2)
673+ assert(resultSet.getBigDecimal(" data2" ) === expectedData2)
674+ assert(resultSet.getBigDecimal(" DATA2" ) === expectedData2)
675+ assert(resultSet.getBigDecimal(" Data2" ) === expectedData2)
676+ assert(resultSet.getBigDecimal(" columnTable2.data2" ) === expectedData2)
677+ assert(resultSet.getBigDecimal(" COLUMNTABLE2.DATA2" ) === expectedData2)
678+ assert(resultSet.getBigDecimal(" columntable2.Data2" ) === expectedData2)
679+
680+ numResults += 1
681+ }
682+ assert(numResults === 1000 )
683+ }
684+ executeSQL(" delete from rowTable1" )
685+ executeSQL(" delete from columnTable2" )
686+
621687 // ----- check EXPLAIN for row tables -----
622688
623689 var plan : String = null
@@ -627,7 +693,7 @@ object MetadataTest extends Assertions {
627693 plan = rs(0 ).getString(0 )
628694 // check schema of the returned Dataset which should be a single string column
629695 // for JDBC it should be a CLOB column
630- if (usingJDBC ) {
696+ if (jdbcStmt != null ) {
631697 assert(ds.schema === StructType (Array (StructField (" plan" , StringType , nullable = true ,
632698 getMetadata(" plan" , 0 , " CLOB" )))))
633699 } else {
@@ -641,15 +707,15 @@ object MetadataTest extends Assertions {
641707 rs = ds.collect()
642708 assert(rs.length === 1 )
643709 plan = rs(0 ).getString(0 )
644- if (usingJDBC ) {
710+ if (jdbcStmt != null ) {
645711 assert(ds.schema === StructType (Array (StructField (" plan" , StringType , nullable = true ,
646712 getMetadata(" plan" , 0 , " CLOB" )))))
647713 } else {
648714 assert(ds.schema === StructType (Array (StructField (" plan" , StringType , nullable = true ))))
649715 }
650716
651717 def literalString (value : String ): String = {
652- if (planCachingEnabled || usingJDBC ) {
718+ if (planCachingEnabled || jdbcStmt != null ) {
653719 s " ParamLiteral:0,[0-9#]*, $value"
654720 } else {
655721 value
@@ -667,7 +733,7 @@ object MetadataTest extends Assertions {
667733 rs = ds.collect()
668734 assert(rs.length === 1 )
669735 plan = rs(0 ).getString(0 )
670- if (usingJDBC ) {
736+ if (jdbcStmt != null ) {
671737 assert(ds.schema === StructType (Array (StructField (" plan" , StringType , nullable = false ,
672738 getMetadata(" plan" , 0 , " CLOB" )))))
673739 assert(plan.contains(" stmt_id" ))
@@ -684,7 +750,7 @@ object MetadataTest extends Assertions {
684750 rs = ds.collect()
685751 assert(rs.length === 1 )
686752 plan = rs(0 ).getString(0 )
687- if (usingJDBC ) {
753+ if (jdbcStmt != null ) {
688754 assert(ds.schema === StructType (Array (StructField (" plan" , StringType , nullable = true ,
689755 getMetadata(" plan" , 0 , " CLOB" )))))
690756 } else {
@@ -704,7 +770,7 @@ object MetadataTest extends Assertions {
704770 rs = ds.collect()
705771 assert(rs.length === 1 )
706772 plan = rs(0 ).getString(0 )
707- if (usingJDBC ) {
773+ if (jdbcStmt != null ) {
708774 assert(ds.schema === StructType (Array (StructField (" plan" , StringType , nullable = true ,
709775 getMetadata(" plan" , 0 , " CLOB" )))))
710776 } else {
@@ -719,7 +785,7 @@ object MetadataTest extends Assertions {
719785 rs = ds.collect()
720786 assert(rs.length === 1 )
721787 plan = rs(0 ).getString(0 )
722- if (usingJDBC ) {
788+ if (jdbcStmt != null ) {
723789 assert(ds.schema === StructType (Array (StructField (" plan" , StringType , nullable = true ,
724790 getMetadata(" plan" , 0 , " CLOB" )))))
725791 } else {
@@ -739,7 +805,7 @@ object MetadataTest extends Assertions {
739805 rs = ds.collect()
740806 assert(rs.length === 1 )
741807 plan = rs(0 ).getString(0 )
742- if (usingJDBC ) {
808+ if (jdbcStmt != null ) {
743809 assert(ds.schema === StructType (Array (StructField (" plan" , StringType , nullable = true ,
744810 getMetadata(" plan" , 0 , " CLOB" )))))
745811 } else {
@@ -817,7 +883,7 @@ object MetadataTest extends Assertions {
817883 plan = rs(0 ).getString(0 )
818884 // check schema of the returned Dataset which should be a single string column
819885 // for JDBC it should be a CLOB column
820- if (usingJDBC ) {
886+ if (jdbcStmt != null ) {
821887 assert(ds.schema === StructType (Array (StructField (" plan" , StringType , nullable = true ,
822888 getMetadata(" plan" , 0 , " CLOB" )))))
823889 } else {
@@ -831,7 +897,7 @@ object MetadataTest extends Assertions {
831897 rs = ds.collect()
832898 assert(rs.length === 1 )
833899 plan = rs(0 ).getString(0 )
834- if (usingJDBC ) {
900+ if (jdbcStmt != null ) {
835901 assert(ds.schema === StructType (Array (StructField (" plan" , StringType , nullable = true ,
836902 getMetadata(" plan" , 0 , " CLOB" )))))
837903 } else {
@@ -848,7 +914,7 @@ object MetadataTest extends Assertions {
848914 rs = ds.collect()
849915 assert(rs.length === 1 )
850916 plan = rs(0 ).getString(0 )
851- if (usingJDBC ) {
917+ if (jdbcStmt != null ) {
852918 assert(ds.schema === StructType (Array (StructField (" plan" , StringType , nullable = false ,
853919 getMetadata(" plan" , 0 , " CLOB" )))))
854920 assert(plan.contains(" stmt_id" ))
@@ -869,7 +935,7 @@ object MetadataTest extends Assertions {
869935 rs = ds.collect()
870936 assert(rs.length === 1 )
871937 plan = rs(0 ).getString(0 )
872- if (usingJDBC ) {
938+ if (jdbcStmt != null ) {
873939 assert(ds.schema === StructType (Array (StructField (" plan" , StringType , nullable = true ,
874940 getMetadata(" plan" , 0 , " CLOB" )))))
875941 } else {
@@ -883,7 +949,7 @@ object MetadataTest extends Assertions {
883949 rs = ds.collect()
884950 assert(rs.length === 1 )
885951 plan = rs(0 ).getString(0 )
886- if (usingJDBC ) {
952+ if (jdbcStmt != null ) {
887953 assert(ds.schema === StructType (Array (StructField (" plan" , StringType , nullable = true ,
888954 getMetadata(" plan" , 0 , " CLOB" )))))
889955 } else {
0 commit comments