[CARBONDATA-4282] Fix issues with table having complex columns related to long string...
authorShreelekhyaG <shreelu_gampa@yahoo.com>
Mon, 6 Sep 2021 18:24:07 +0000 (23:54 +0530)
committerajantha-bhat <ajanthabhat@gmail.com>
Wed, 8 Sep 2021 06:47:31 +0000 (12:17 +0530)
commit4d8bc9eccfdf699f28a7f5e757a125e0ade82026
treefb642c9fc729b05a36932354721669ddc5d5599d
parent226228f7474f4083d78b7bd8facb4ec1a41bfd56
[CARBONDATA-4282] Fix issues with table having complex columns related to long string, SI, local dictionary

Why is this PR needed?
1.Insert/load fails after alter add complex column if table contains long string columns.
2.create index on array of complex column (map/struct) throws null pointer exception instead of correct error message.
3.alter table property local dictionary inlcude/exclude with newly added map column is failing.

What changes were proposed in this PR?
1. The datatypes array and data row are of different order leading to ClassCastException. Made changes to add newly added complex columns after the long string columns and other dimensions in carbonTableSchemaCommon.scala
2. For complex columns, SI creation on only array of primitive types is allowed. Check if the child column is of complex type and throw an exception. Changes made in SICreationCommand.scala
3. In AlterTableUtil.scala, while validating local dictionary columns, array and struct type are present but map type is missed. Added check for complex types.

Does this PR introduce any user interface change?
No

Is any new testcase added?
Yes

This closes #4214
index/secondary-index/src/test/scala/org/apache/carbondata/spark/testsuite/secondaryindex/TestSIWithComplexArrayType.scala
integration/spark/src/main/scala/org/apache/spark/sql/execution/command/carbonTableSchemaCommon.scala
integration/spark/src/main/scala/org/apache/spark/sql/secondaryindex/command/SICreationCommand.scala
integration/spark/src/main/scala/org/apache/spark/util/AlterTableUtil.scala
integration/spark/src/test/scala/org/apache/carbondata/spark/testsuite/alterTable/TestAlterTableAddColumns.scala