13 months ago[CARBONDATA-4268][Doc][summer-2021] Add new dev mailing list (website) link and updat...
chenliang613 [Sat, 7 Aug 2021 08:49:04 +0000 (16:49 +0800)] 
[CARBONDATA-4268][Doc][summer-2021] Add new dev mailing list (website) link and update the Nabble address This closes #4195

13 months ago[Doc] Add new dev mailing list (website) link and update the Nabble address.
Jerome [Thu, 5 Aug 2021 09:28:29 +0000 (17:28 +0800)] 
[Doc] Add new dev mailing list (website) link and update the Nabble address.

14 months ago[maven-release-plugin] prepare for next development iteration
akashrn5 [Mon, 2 Aug 2021 05:32:48 +0000 (11:02 +0530)] 
[maven-release-plugin] prepare for next development iteration

14 months ago[CARBONDATA-4261][Doc][summer-2021] Add new ways of slack in This closes...
chenliang613 [Tue, 3 Aug 2021 09:51:07 +0000 (17:51 +0800)] 
[CARBONDATA-4261][Doc][summer-2021] Add new ways of slack in This closes #4190

14 months agoadd new ways of "contact us" in 4190/head
Jerome [Sun, 1 Aug 2021 09:08:13 +0000 (17:08 +0800)] 
add new ways of "contact us" in

14 months ago[CARBONDATA-4255] Prohibit Create/Drop Database when databaselocation is inconsistent summer-2021
marchpure [Tue, 27 Jul 2021 04:17:40 +0000 (12:17 +0800)] 
[CARBONDATA-4255] Prohibit Create/Drop Database when databaselocation is inconsistent

Why is this PR needed?
When carbon.storelocation and spark.sql.warehouse.dir are configured to
different values, the databaselocation maybe inconsistent. When DROP DATABASE
command is executed, maybe both location (carbon dblcation and hive
dblocation) will be cleared, which may confuses the users

What changes were proposed in this PR?
Drop database is prohibited when database locaton is inconsistent

Does this PR introduce any user interface change?

Is any new testcase added?

This closes #4186

14 months ago[CARBONDATA-4242]Improve cdc performance and introduce new APIs for UPSERT, DELETE...
akashrn5 [Mon, 31 May 2021 12:45:45 +0000 (18:15 +0530)] 
[CARBONDATA-4242]Improve cdc performance and introduce new APIs for UPSERT, DELETE, INSERT and UPDATE

Why is this PR needed?
1. In the exiting solution, when we perform join of the source and target dataset for tagging records to delete, update and insert records, we were scanning all the data of target table and then perform join with source dataset. But it can happen that the source data is less and its range may cover only some 100s of Carbondata files out of 1000s of files in the target table. So pruning is main bottleneck here, so scanning all records and involving in join results in so much of shuffle and reduces performance.
2. Source data caching was not there, caching source data will help to improve its multiple scans and since input source data will be of less size, we can persist the dataset.
3. When we were performing join, we used to first get the Row object and then operate on it and then for each datatype casting happens to convert to spark datatype and then covert to InternalRow object for further processing of joined data. This will add extra deserializeToObject and map nodes in DAG and increase time.
4. Initially during tagging records(Join operation), we were preparing a new projection of required columns, which basically involves operations of preparing an internal row object as explained in point 3, and then apply eval function on each row to prepare a projection, so this basically applying same eval of expression on joined data, a repeated work and increases time.
5. In join operation we were using all the columns of source dataset and the required columns of target table like, join key column and other columns of tupleID, status_on_mergeds etc. So when we there will be so many columns in the table, then it will increase the execution time due to lot of data shuffling.
6. The current APIs of merge are little bit complex and generalized and confusing to user for simple Upsert, delete and insert operations.

What changes were proposed in this PR?
1. Add a pruning logic before the join operations. Compare the incoming row with an interval based tree data structure which contains the Carbondata file path and min and max to identify the Carbondata file where the incoming row can be present, so that in some use case scenario which will be explained in later section, can give benefit and help to scan less files rather than blindly scanning all the Carbondata files in the target table.
2. Cache the incoming source dataset srcDS.cache(), so that the cached data will be used in all the operations and speed will be improved. Uncache() after the merge operation
3. Instead of operating on row object and then converting to InternalRow, directly operate on the InternalRow object to avoid the data type conversions.
4. Instead of evaluating the expression again based on required project columns on matching conditions and making new projection, directly identify the indexes required for output row and then directly access these indices on the incoming internal row object after step3, so evaluation is avoided and array access with indices will give O(1) performance.
5. During join or the tagging of records, do not include all the column data, just include the join key columns and identify the tupleIDs to delete and the rows to insert, this will avoid lot of shuffle and improve performance significantly.
6. Introduce new APIs for UPSERT, UPDATE, DELETE and INSERT and make the user exposed APIs simple. So now user just needs to give the key column for join, source dataset and the operation type as mentioned above. These new APIs will make use of all the improvements mentioned above and avoid unnecessary operations of the existing merge APIs.

Does this PR introduce any user interface change?

Is any new testcase added?

This closes #4148

14 months ago[CARBONDATA-4247][CARBONDATA-4241] Fix Wrong timestamp value query results for data...
Indhumathi27 [Tue, 20 Jul 2021 08:12:57 +0000 (13:42 +0530)] 
[CARBONDATA-4247][CARBONDATA-4241] Fix Wrong timestamp value query results for data before
1900 years with Spark 3.1

Why is this PR needed?
1. Spark 3.1, will store timestamp value as julian micros and rebase timestamp value from
JulianToGregorianMicros during query.
-> Since carbon parse and formats timestamp value with SimpleDateFormatter, query gives
incorrect results, when rebased with JulianToGregorianMicros by spark.
2. CARBONDATA-4241 -> Global sort load and compaction fails on table having timestamp column

What changes were proposed in this PR?
1. Use Java Instant to parse new timestamp values. For old stores and query with Spark 3.1,
Rebase the timestamp value from Julian to Gregorian Micros
2. If timestamp value is of type Instant, then convert value to java timestamp.

Does this PR introduce any user interface change?

Is any new testcase added?
No (Existing testcase is sufficient)

This closes #4177

14 months ago[CARBONDATA-4248] Fixed upper case column name in explain command
Nihal ojha [Mon, 19 Jul 2021 07:57:47 +0000 (13:27 +0530)] 
[CARBONDATA-4248] Fixed upper case column name in explain command

Why is this PR needed?
Explain command with upper case column name fails with key not found exception.

What changes were proposed in this PR?
Changed column name to lower case before conversion of spark data type to carbon data type.

Does this PR introduce any user interface change?

Is any new testcase added?

This closes #4175

14 months ago[CARBONDATA-4251][CARBONDATA-4253] Optimize Clean Files Performance
marchpure [Mon, 26 Jul 2021 02:54:43 +0000 (10:54 +0800)] 
[CARBONDATA-4251][CARBONDATA-4253] Optimize Clean Files Performance

Why is this PR needed?
 1) When execute cleanfile command, it cleans up all the carbonindex and
    carbonmergeindex that once existed, even though carbonindex files have been
    merged into carbonergeindex and deleted. When there are tens of thousands
    of carbonindex that once existed after the completion of the compaction,
    the clean file command will take serveral hours to clean index files which
    actually doesn't exist. We just need to clean up the existing
    files, carbonmergeindex or carbonindex files
 2) The rename command will list partitions of the table, but the partitions
    information is not actually used. If the table has hundreds of thousands
    partitions, the performance of rename table will degrade a lot

What changes were proposed in this PR?
 1) There is a variable indexOrMergeFiles, which means all existing indexfiles,
    CLEAN FILE commmand will delete all existing files instead of delete all
    files in 'indexFilesMap', which is actually all '.carbonindex' files once
    exists. Clean 'indexOrMergeFiles' helps to improve CLEAN FILES performance a lot.
 2) The rename command will list partitions for the table, but the partitions
    information is not actually used. If the table has hundreds of thousands
    partitions, the performance of rename table will degrade a lot

This closes #4183

14 months ago[CARBONDATA-4250] Ignoring presto random test cases
Mahesh Raju Somalaraju [Mon, 19 Jul 2021 14:08:46 +0000 (19:38 +0530)] 
[CARBONDATA-4250] Ignoring presto random test cases

Why is this PR needed?
Presto test cases failing randomly and taking more time in CI verification for other PRs.

What changes were proposed in this PR?
Currently presto random test cases will be ignored and will be fixed with other JIRA raised.
1. JIRA [CARBONDATA-4250] raised for ignoring presto test cases currently as this random
   failures causing PR CI failures.
2. JIRA [CARBONDATA-4249] raised for fixing presto random tests in concurrent scenario.
   We can get more details on this JIRA about issue reproduce and problem snippet.
3. [CARBONDATA-4254] raised to fix Test alter add for structs enabling local dictionary
   and CarbonIndexFileMergeTestCaseWithSI.Verify command of index merge

This closes #4176

14 months ago[CARBONDATA-4204][CARBONDATA-4231] Fix add segment error message,
ShreelekhyaG [Mon, 21 Jun 2021 15:14:31 +0000 (20:44 +0530)] 
[CARBONDATA-4204][CARBONDATA-4231] Fix add segment error message,
index server failed testcases and dataload fail error on update

Why is this PR needed?
1. When the path is empty in Carbon add segments then
StringIndexOutOfBoundsException is thrown.
2. Index server UT failures fix.
3. Update fails with dataload fail error if set bad
records action is specified to force with spark 3.1v.

What changes were proposed in this PR?
1. Added check to see if the path is empty and then throw
a valid error message.
2. Used checkAnswer instead of assert in test cases so
that the order of rows returned would be same with or
without index server. Excluded 2 test cases where explain
with query statistics is used, as we are not setting any
pruning info from index server.
3. On update command, dataframe.persist is called and with
latest 3.1 spark changes, spark returns a cloned
SparkSession from cacheManager with all specified
configurations disabled. As now it's using a different
sparkSession for 3.1 which is not initialized in CarbonEnv.
So CarbonEnv.init is called where new CarbonSessionInfo is
created with no sessionParams. So, the properties set were
not accessible. When a new carbonSessionInfo object is
getting created, made changes to set existing sessionparams
from currentThreadSessionInfo.

This closes #4157

14 months ago[CARBONDATA-4210] Handle 3.1 parsing failures related to alter complex types
akkio-97 [Wed, 23 Jun 2021 07:49:48 +0000 (13:19 +0530)] 
[CARBONDATA-4210] Handle 3.1 parsing failures related to alter complex types

Why is this PR needed?
For 2.3 and 2.4 parsing of alter commands are done by spark. Which is not in the case of 3.1.

What changes were proposed in this PR?
So carbon is responsible for the parsing here.
Previously ignored test cases due to this issue are now enabled.

This closes #4162

14 months ago[CARBONDATA-4232] Add missing doc change for secondary index.
Nihal ojha [Thu, 24 Jun 2021 06:31:05 +0000 (12:01 +0530)] 
[CARBONDATA-4232] Add missing doc change for secondary index.

Why is this PR needed?
Documentation changes were not handled in PR 4116

What changes were proposed in this PR?
Added missing documentation.

This closes #4164

15 months ago[HOTFIX]Revert wrong pom changes commit during prepare release process.
akashrn5 [Mon, 5 Jul 2021 16:30:52 +0000 (22:00 +0530)] 
[HOTFIX]Revert wrong pom changes commit during prepare release process.

Why is this PR needed?
Due to wrong branch release, wrong pom changes are present.

What changes were proposed in this PR?
revert the pom changes.

This closes #4167

15 months ago[maven-release-plugin] prepare for next development iteration
akashrn5 [Mon, 5 Jul 2021 15:34:53 +0000 (21:04 +0530)] 
[maven-release-plugin] prepare for next development iteration

15 months ago[maven-release-plugin] prepare release apache-carbondata-2.2.0-rc1
akashrn5 [Mon, 5 Jul 2021 15:33:54 +0000 (21:03 +0530)] 
[maven-release-plugin] prepare release apache-carbondata-2.2.0-rc1

15 months ago[CARBONDATA-4230] table properties not updated with lower-case and table
Mahesh Raju Somalaraju [Wed, 23 Jun 2021 13:20:25 +0000 (18:50 +0530)] 
[CARBONDATA-4230] table properties not updated with lower-case and table
comment is not working in carbon spark3.1

Why is this PR needed?
1. table properties storing with case-sensitive and when we query table
   properties with the small case then property not able to get hence table
   create command is failed. this is induced with spark 3.1 integration changes.
2. Table comment is displayed as byte code in spark 3.1 cluster.
   CommentSpecContext is changed in 3.1

What changes were proposed in this PR?
1. convert to small case and store in table properties.
2. Get string value from commentSpec and set as table comment

Does this PR introduce any user interface change?

Is any new testcase added?
No, already test case is present but not failed in local ut setup as create
flow is different in local ut env and real cluster setup

This closes #4163

15 months ago[HOTFIX] Correct CI build status This closes #4166
chenliang613 [Sat, 26 Jun 2021 04:04:15 +0000 (12:04 +0800)] 
[HOTFIX] Correct CI build status This closes #4166

15 months ago[HOTFIX] Correct CI build status 4166/head
Liang Chen [Sat, 26 Jun 2021 03:54:50 +0000 (11:54 +0800)] 
[HOTFIX] Correct CI build status

Due to apache jenkis CI address changed, correct CI build status.

15 months ago[CARBONDATA-4225] Fix Update performance issues when auto merge compaction is enabled
Indhumathi27 [Mon, 21 Jun 2021 13:45:55 +0000 (19:15 +0530)] 
[CARBONDATA-4225] Fix Update performance issues when auto merge compaction is enabled

Why is this PR needed?
1. When auto-compaction is enabled, during update, we are trying to do compaction after
   Insert. Auto-Compaction throws exception, after multiple retries. Carbon does not allow
   concurrent compaction and Update.
2. dataframe.rdd.isEmpty will launch a Job. This code is called two times in code, which
   is not reused.

What changes were proposed in this PR?
1. Avoid trying to do Auto-compaction during Update.
2. Reuse dataframe.rdd.isEmpty and avoided launching a Job.

Does this PR introduce any user interface change?

Is any new testcase added?

This closes #4156

15 months ago[CARBONDATA-4190] Integrate Carbondata with Spark 3.1.1 version
Vikram Ahuja [Tue, 6 Apr 2021 06:55:14 +0000 (12:25 +0530)] 
[CARBONDATA-4190] Integrate Carbondata with Spark 3.1.1 version

Why is this PR needed?
To integrate Carbondata with Spark3.1.1

What changes were proposed in this PR?
Refactored code to add changes to support Spark 3.1.1 along with Spark 2.3 and 2.4 versions

1. Compile Related Changes
1. New Spark package in MV, Streaming and spark-integration.
2. API wise changes as per spark changes
2. Spark has moved to Proleptic Gregorian Calendar, due to which timestamp related changes in carbondata are also required.
3. Show segment by select command refactor
4. Few Lucene test cases ignored due to the deadlock in spark DAGSchedular, which does not allow it to work.
5. Alter rename: Parser enabled in Carbon and check for carbon
6. doExecuteColumnar() changes in CarbonDataSourceScan.scala
7. char/varchar changes from spark side.
8. Rule name changed in MV
9. In univocity parser, CSVParser version changed.
10. New Configs added in SparkTestQueryExecutor to keep some behaviour same as 2.3 and 2.4

Does this PR introduce any user interface change?

Is any new testcase added?

This closes #4141

15 months ago[CARBONDATA-4214] inserting NULL value when timestamp value received from FROM_UNIXTI...
Mahesh Raju Somalaraju [Thu, 17 Jun 2021 19:10:18 +0000 (00:40 +0530)] 
[CARBONDATA-4214] inserting NULL value when timestamp value received from FROM_UNIXTIME(0)

Why is this PR needed?
Filling null in case of timestamp value is received from FROM_UNIXTIME(0) as spark original
insert rdd value[internalRow] received in this case zero. if the original column
value[internalRow] is zero then in insert flow adding NULL and giving NULL to spark.
When query happens on the same column received NULL value instead of timestamp value.
Problem code: if (internalRow.getLong(index) == 0) { internalRow.setNullAt(index) }

What changes were proposed in this PR?
Removed the null filling check for zero value case and if internalRow value is non
null/empty then only set the internalRow timestamp value.

Does this PR introduce any user interface change?

Is any new testcase added?

This closes #4154

15 months ago[CARBONDATA-4217] Fix rename SI table, other applications didn't get reflected issue
jack86596 [Sat, 19 Jun 2021 16:52:58 +0000 (00:52 +0800)] 
[CARBONDATA-4217] Fix rename SI table, other applications didn't get reflected issue

Why is this PR needed?
After one application rename SI table, other application cannot be reflected
of this change, which leads to query on SI column failed.

What changes were proposed in this PR?
After update index info of parent table, persist schema info so that other
applications can refresh table metadata in time.

This closes #4155

15 months ago[CARBONDATA-4211] Fix - from xx Insert into select fails if an SQL statement contains...
ShreelekhyaG [Mon, 14 Jun 2021 15:36:16 +0000 (21:06 +0530)] 
[CARBONDATA-4211] Fix - from xx Insert into select fails if an SQL statement contains multiple inserts

Why is this PR needed?
When multiple inserts with single query is used, it fails from SparkPlan with: java.lang.ClassCastException:
GenericInternalRow cannot be cast to UnsafeRow.
For every successful insert/load we return Segment ID as a row. For multiple inserts also, we are returning
a row containing Segment ID but while processing in spark ClassCastException is thrown.

What changes were proposed in this PR?
When multiple insert query is given, it has Union node in the plan. Based on its presence, made changes
to use flag isMultipleInserts to call class UnionCommandExec and implemented custom sideEffectResult which
converts GenericInternalRow to UnsafeRow and return.

Does this PR introduce any user interface change?

Is any new testcase added?

This closes #4151

15 months ago[CARBONDATA-4213] Fix update/delete issue in index server
Vikram Ahuja [Wed, 16 Jun 2021 10:54:56 +0000 (16:24 +0530)] 
[CARBONDATA-4213] Fix update/delete issue in index server

Why is this PR needed?
During update/delete, the segment file in the segment would come as an empty
string due to which it was not able to read the segment file.

What changes were proposed in this PR?
1. Changed the empty string to NULL
2. Added empty segment file condition while creating SegmentFileStore.

Does this PR introduce any user interface change?

Is any new testcase added?

This closes #4153

15 months ago[CARBONDATA-4212] Fix case sensitive issue with Update query having Alias Table name
Indhumathi27 [Wed, 16 Jun 2021 10:10:07 +0000 (15:40 +0530)] 
[CARBONDATA-4212] Fix case sensitive issue with Update query having Alias Table name

Why is this PR needed?
Update Query having Alias Table name, fails with Unsupported complex types error,
even if table does not any.

What changes were proposed in this PR?
Check the columnName irrespective of case

Does this PR introduce any user interface change?

Is any new testcase added?

This closes #4152

15 months ago[CARBONDATA-4208] Wrong Exception received for complex child long string columns
Mahesh Raju Somalaraju [Fri, 11 Jun 2021 19:47:27 +0000 (01:17 +0530)] 
[CARBONDATA-4208] Wrong Exception received for complex child long string columns

Why is this PR needed?
When we create a table with complex columns with child columns with long string
data type then receiving column not found in table exception. Normally it should
throw an exception in the above case by saying that complex child columns will
not support long string data type.

What changes were proposed in this PR?
Added a case if complex child column has long string data type then throw correct
Exception: MalformedCarbonCommandException
Exception Message: Complex child column cannot be set as LONG_STRING_COLUMNS

Does this PR introduce any user interface change?

Is any new testcase added?

This closes #4150

15 months ago[CARBONDATA-4206] Support rename SI table
jack86596 [Thu, 10 Jun 2021 11:35:39 +0000 (19:35 +0800)] 
[CARBONDATA-4206] Support rename SI table

Why is this PR needed?
Currently rename SI table can succeed, but after rename, insert and query on main table
failed, throw no such table exception. This is because after SI table renamed, main
table's tblproperties didn't get update, it still stores the old SI table name, when
refering to SI table, it tries to find the SI table by old name, which leads to no such table exception.

What changes were proposed in this PR?
After SI table renamed, update the main table's tblproperties with new SI information.

Does this PR introduce any user interface change?

Is any new testcase added?

This closes #4149

15 months ago[CARBONDATA-4202] Fix issue when refresh main table with MV
ShreelekhyaG [Fri, 4 Jun 2021 09:25:13 +0000 (14:55 +0530)] 
[CARBONDATA-4202] Fix issue when refresh main table with MV

Why is this PR needed?
When trying to register a table of old store which has MV, it fails parser
error(syntax issue while creating table). It is trying to create table with
relatedmvtablesmap property which is not valid.

What changes were proposed in this PR?
1. Removed relatedmvtablesmap from table properties in RefreshCarbonTableCommand
2. After Main table has registered, to register MV made changes to get the schema
   from the system folder and register.

Does this PR introduce any user interface change?

Is any new testcase added?

This closes #4147

15 months ago[CARBONDATA-4179] Support renaming of complex columns (array/struct)
akkio-97 [Tue, 4 May 2021 06:00:23 +0000 (11:30 +0530)] 
[CARBONDATA-4179] Support renaming of complex columns (array/struct)

Why is this PR needed?
This PR enables renaming of complex columns - parent as well as children columns with nested levels
example: if the schema contains columns - str1 struct<a:int, b:string>, arr1 array<long>
1. alter table <table_name> change str1 str2 struct<a:int, b:string>
2. alter table <table_name> change arr1 arr2 array<long>
3. Changing parent name as well as child name
4. alter table <table_name> change str1 str2 struct<abc:int, b:string>
NOTE- Rename operation fails if the structure of the complex column has been altered.
This check ensures the old and new columns are compatible with each other. Meaning
the number of children and complex levels should be unaltered while attempting to rename.

What changes were proposed in this PR?
1. Parses the incoming new complex type. Create a nested DatatypeInfo structure.
2. This DatatypeInfo is then passed on to the AlterTableDataTypeChangeModel.
3. Validation for compatibility, duplicate columns happens here.
4. Add the parent column to the schema evolution entry.
5. Update the spark catalog table.
Limitation - Renaming is not supported for Map types yet

Does this PR introduce any user interface change?

Is any new testcase added?

This closes #4129

15 months ago[CARBONDATA-4143] Enable UT with index server and fix related issues
ShreelekhyaG [Thu, 25 Feb 2021 09:57:30 +0000 (15:27 +0530)] 
[CARBONDATA-4143] Enable UT with index server and fix related issues

Why is this PR needed?
enable to run UT with index server.
Fix below issues:
1. With index server enabled, select query gives incorrect result with
   SI when parent and child table segments are not in sync.
2. When reindex is triggered, if stale files are present in the segment
   directory the segment file is being written with incorrect file names.
   (both valid index and stale mergeindex file names). As a result, duplicate
   data is present in SI table but there are no error/incorrect query results.

What changes were proposed in this PR?
usage of flag useIndexServer. excluded some of the test cases to not run with index server.
1. While pruning from index server, missingSISegments values were not
   getting considered. Have passed down and set those values to filter.
2. Before loading data to SI segment, added changes to delete the segment
   directory if already present.

Does this PR introduce any user interface change?

Is any new testcase added?

This closes #4098

15 months ago[CARBONDATA-4196] Allow zero or more white space in GEO UDFs
Nihal ojha [Fri, 4 Jun 2021 05:09:31 +0000 (10:39 +0530)] 
[CARBONDATA-4196] Allow zero or more white space in GEO UDFs

Why is this PR needed?
Currently, regex of geo UDF is not allowing zero space between
UDF name and parenthesis. It always expects a single space in
between. For ex: linestring (120.184179 30.327465). Because of
this sometimes using the UDFs without space is not giving
the expected result.

What changes were proposed in this PR?
Allow zero space between UDFs and parenthesis.

Does this PR introduce any user interface change?

Is any new testcase added?

This closes #4145

15 months ago[CARBONDATA-4193] Fix compaction failure after alter add complex column.
ShreelekhyaG [Wed, 26 May 2021 13:44:40 +0000 (19:14 +0530)] 
[CARBONDATA-4193] Fix compaction failure after alter add complex column.

Why is this PR needed?
1. When we perform compaction after alter add a complex column, the query fails with
   ArrayIndexOutOfBounds exception. While converting and adding row after merge step
   in WriteStepRowUtil.fromMergerRow, As complex dimension is present, the complexKeys
   array is accessed but doesnt have any values in array and throws exception.
2. Creating SI with globalsort on newly added complex column throws TreenodeException
   (Caused by: java.lang.RuntimeException: Couldn't find positionId#172 in [arr2#153])

What changes were proposed in this PR?
1. While restructuring row, added changes to fill complexKeys with default values(null
   values to children) according to the latest schema.
   In SI queryresultprocessor, used the column property isParentColumnComplex to identify
   any complex type. If complex index column not present in the parent table block,
   assigned the SI row value to empty bytes.
2. For SI with globalsort, In case of complex type projection, TableProperties object in
   carbonEnv is not same as in carbonTable object and hence requiredColumns is not
   updated with positionId. So updating tableproperties from carbon env itself.

Does this PR introduce any user interface change?

Is any new testcase added?

This closes #4142

16 months ago[CARBONDATA-4192] UT cases correction for validating the exception message correctly
Mahesh Raju Somalaraju [Thu, 20 May 2021 18:55:54 +0000 (00:25 +0530)] 
[CARBONDATA-4192] UT cases correction for validating the exception message correctly

Why is this PR needed?
Currently, when we check the exception message like below, it is not asserting/failing/
catching if the message content is different.
 sql("update test set(a)=(4) where id=1").collect()).getMessage.contains("abc")`

What changes were proposed in this PR?
1. Added assert condition like below for validating the exception message correctly
    sql("update test set(a)=(4) where id=1").collect()).getMessage.contains("abc"))`
2. Added assert condition to check exception message for some test cases which are
   not checking exception message
3. Fixed add segment doc heading related issues

This closes #4140

16 months ago[Doc] syntax and format issues in and
Ting Sun [Fri, 14 May 2021 12:33:53 +0000 (20:33 +0800)] 
[Doc] syntax and format issues in and

Why is this PR needed?
To improve the quality of and

What changes were proposed in this PR?
Syntax and format changes.

This closes #4136

16 months ago[CARBONDATA-4191] update table for primitive column not working when complex child
Mahesh Raju Somalaraju [Mon, 24 May 2021 12:31:34 +0000 (18:01 +0530)] 
[CARBONDATA-4191] update table for primitive column not working when complex child
column name and primitive column name match

Why is this PR needed?
Update primitive column not working when complex column child name and primitive
data type name same.
When an update for primitive is received, we are checking in complex child columns
if column name matches then returning UnsupportedOperationbException.

What changes were proposed in this PR?
Currently, we are ignoring the prefix of all columns and passing only columns/child
column info to the update command.
New Changes: Passing full column(alias name/table name.columnName) name which is given
by the user and added checks for handling the unsupported update operation of complex columns.

This closes #4139

16 months ago[CARBONDATA-4186] Fixed insert failure when partition column present in local sort...
Nihal ojha [Wed, 12 May 2021 06:56:42 +0000 (12:26 +0530)] 
[CARBONDATA-4186] Fixed insert failure when partition column present in local sort scope

Why is this PR needed?
Currently when we create table with partition column and put the same column as part of
local sort scope then Insert query fails with ArrayIndexOutOfBounds exception.

What changes were proposed in this PR?
Handle ArrayIndexOutOfBound exception, earlier array size was not increasing because data
was inconsistence and in the wrong order for sortcolumn and isDimNoDictFlags.

This closes #4132

16 months ago[CARBONDATA-4183] Local sort Partition Load and Compaction fix
Indhumathi27 [Fri, 2 Apr 2021 14:47:55 +0000 (20:17 +0530)] 
[CARBONDATA-4183] Local sort Partition Load and Compaction fix

Why is this PR needed?
Currently, number of tasks for partition table local sort load, is decided based on input file size. In this case, the data will not be properly sorted, as tasks launched is more. For compaction, number of tasks is equal to number of partitions. If data is huge for a partition, then there can be chances, that compaction will fail with OOM with less memory configurations.

What changes were proposed in this PR?
When local sort task level property is enabled,

For local sort load, divide input files based on the node locality (num of task = num of nodes), which will properly do the local sorting.
For compaction, launch task based on task id for a partition, so the task launched for a partition will be more.

Does this PR introduce any user interface change?

Is any new testcase added?

This closes #4130

16 months ago[CARBONDATA-4189] alter table validation issues
Mahesh Raju Somalaraju [Tue, 18 May 2021 10:32:38 +0000 (16:02 +0530)] 
[CARBONDATA-4189] alter table validation issues

Why is this PR needed?
1. Alter table duplicate columns check for dimensions/complex columns missed
2. Alter table properties with long strings for complex columns should not support

What changes were proposed in this PR?
1. Changed the dimension columns list type in preparing dimensions columns
   [LinkedHashSet to Scala Seq] for handling the duplicate columns
2. Added check for throwing an exception in case of long strings for complex columns

Does this PR introduce any user interface change?

Is any new testcase added?

This closes #4138

16 months ago[CARBONDATA-4184] alter table Set TBLPROPERTIES for RANGE_COLUMN sets unsupported
Karan980 [Wed, 12 May 2021 11:34:53 +0000 (17:04 +0530)] 
[CARBONDATA-4184] alter table Set TBLPROPERTIES for RANGE_COLUMN sets unsupported
datatype(complex_datatypes/Binary/Boolean/Decimal) as RANGE_COLUMN

Why is this PR needed?
Alter table set command was not validating unsupported dataTypes for range column.

What changes were proposed in this PR?
Added validation for unsupported dataTypes before setting range column value.

Does this PR introduce any user interface change?

Is any new testcase added?

This closes #4133

16 months ago[CARBONDATA-4185] Doc Changes for Heterogeneous format segments in carbondata
Mahesh Raju Somalaraju [Wed, 12 May 2021 17:41:57 +0000 (23:11 +0530)] 
[CARBONDATA-4185] Doc Changes for Heterogeneous format segments in carbondata

Why is this PR needed?
Heterogeneous format segments in carbondata documenation.

What changes were proposed in this PR?
Add segment feature background and impact on existed carbondata features

This closes #4134

16 months ago[CARBONDATA-4188] Fixed select query with small table page size after alter add column
Nihal ojha [Mon, 17 May 2021 10:00:24 +0000 (15:30 +0530)] 
[CARBONDATA-4188] Fixed select query with small table page size after alter add column

Why is this PR needed?
Select query on table with long string data type and small page size throws
ArrayIndexOutOfBoudException after alter add columns.
Query fails because after changing the schema, the number of rows set in
bitsetGroup(RestructureIncludeFilterExecutorImpl.applyFilter()) for pages is not correct.

What changes were proposed in this PR?
Set the correct number of rows inside every page of bitsetGroup.

This closes #4137

16 months ago[CARBONDATA-4175] [CARBONDATA-4162] Leverage Secondary Index till segment level
Nihal ojha [Wed, 24 Mar 2021 09:47:44 +0000 (15:17 +0530)] 
[CARBONDATA-4175] [CARBONDATA-4162] Leverage Secondary Index till segment level

Why is this PR needed?
In the existing architecture, if the parent(main) table and SI table don’t have
the same valid segments then we disable the SI table. And then from the next query
onwards, we scan and prune only the parent table until we trigger the next load or
REINDEX command (as these commands will make the parent and SI table segments in sync).
Because of this, queries take more time to give the result when SI is disabled.

What changes were proposed in this PR?
Instead of disabling the SI table(when parent and child table segments are not in sync)
we will do pruning on SI tables for all the valid segments(segments with status success,
marked for update and load partial success) and the rest of the segments will be pruned by the parent table.
As of now, query on the SI table can be pruned in two ways:
a) With SI as data map.
b) WIth spark plan rewrite.
This PR contains changes to support both methods of SI to leverage till segment level.

This closes #4116

16 months ago[CARBONDATA-4166] Geo spatial Query Enhancements
Indhumathi27 [Fri, 12 Mar 2021 02:49:43 +0000 (08:19 +0530)] 
[CARBONDATA-4166] Geo spatial Query Enhancements

Why is this PR needed?
Currently, for IN_POLYGON_LIST and IN_POLYLINE_LIST udf’s, polygons need to be
specified in SQL. If the polygon list grows in size, then the SQL will also be too long,
which may affect query performance, as SQL analysing cost will be more.
If Polygons are defined as a Column in a new dimension table, then, Spatial dimension
table join can be supported in order to support aggregation on spatial table columns
based on polygons.

What changes were proposed in this PR?
polygon table.
Support IN_POLYGON filter as join condition for spatial JOIN queries.

Does this PR introduce any user interface change?

Is any new testcase added?

This closes #4127

17 months ago[HOTFIX] Remove hitcount link due to not working
Liang Chen [Fri, 30 Apr 2021 03:06:54 +0000 (11:06 +0800)] 
[HOTFIX] Remove hitcount link due to not working

Why is this PR needed?
hitcount link in readme md file is not working

What changes were proposed in this PR?
Remove the hitcount link as its not required.

Does this PR introduce any user interface change?

Is any new testcase added?

This closes #4128

17 months ago[CARBONDATA-4170] Support dropping of parent complex columns(array/struct/map)
akkio-97 [Wed, 31 Mar 2021 15:11:26 +0000 (20:41 +0530)] 
[CARBONDATA-4170] Support dropping of parent complex columns(array/struct/map)

Why is this PR needed?
This PR supports dropping of parent complex columns (single and multi-level)
from the carbon table. Dropping of parent column will in turn drop all of
its children columns too.

What changes were proposed in this PR?
Children columns are prefixed with its parent column name. So the identified
columns are added to the delete-column-list and the schema is updated based
on that.Test cases have been written up to 3-levels.

Does this PR introduce any user interface change?

Is any new testcase added?

This closes #4121

17 months ago[CARBONDATA-4167][CARBONDATA-4168] Fix case sensitive issues and input validation...
ShreelekhyaG [Tue, 6 Apr 2021 08:42:40 +0000 (14:12 +0530)] 
[CARBONDATA-4167][CARBONDATA-4168] Fix case sensitive issues and input validation for Geo values.

Why is this PR needed?
1. SPATIAL_INDEX property, POLYGON, LINESTRING, and RANGELIST UDF's are case sensitive.
2. SPATIAL_INDEX.xx.gridSize and is accepting negative values.
3. Accepting invalid values in geo UDF's.

What changes were proposed in this PR?
1. converted properties to lower case and made UDF's case insensitive.
2. added validation.
3. refactored readAllIIndexOfSegment

Does this PR introduce any user interface change?

Is any new testcase added?

This closes #4118

17 months ago[CARBONDATA-4172] Select query having parent and child struct column in projection...
Indhumathi27 [Thu, 22 Apr 2021 08:20:39 +0000 (13:50 +0530)] 
[CARBONDATA-4172] Select query having parent and child struct column in projection returns incorrect results

Why is this PR needed?
After PR-3574, a scenario has been missed while code refactor.
Currently, if select query has both Parent and its child struct column in projection,
only child column is pushed down to carbon for filling result. For other columns in parent Struct, data output is null.

What changes were proposed in this PR?
If parent struct column is also present in projection, then push down only parent column to carbon.

This closes #4123

17 months ago[CARBONDATA-4173][CARBONDATA-4174] Fix inverted index query issue and handle exceptio...
ShreelekhyaG [Thu, 22 Apr 2021 14:53:37 +0000 (20:23 +0530)] 
[CARBONDATA-4173][CARBONDATA-4174] Fix inverted index query issue and handle exception for desc column

Why is this PR needed?
After creating an Inverted index on the dimension column, some of the filter queries give incorrect results.
handle exception for higher level non-existing children column in desc column.

What changes were proposed in this PR?
While sorting byte arrays with inverted index, we use compareTo method of ByteArrayColumnWithRowId. Here, it was sorting based on the last byte only. Made changes to sort properly based on the entire byte length when dictionary is used.
handled exception and added in testcase.

Does this PR introduce any user interface change?

Is any new testcase added?

This closes #4124

17 months ago[CARBONDATA-4037] Improve the table status and segment file writing
ShreelekhyaG [Fri, 16 Oct 2020 18:03:15 +0000 (23:33 +0530)] 
[CARBONDATA-4037] Improve the table status and segment file writing

Why is this PR needed?
Currently, we update table status and segment files multiple times for a
single iud/merge/compact operation and delete the index files immediately after
merge. When concurrent queries are run, there may be situations like user query
is trying to access the segment index files and they are not present, which is
availability issue.

What changes were proposed in this PR?
1. Generate segment file after merge index and update table status at beginning
   and after merge index. If mergeindex/ table status update fails , load will also fail.
   create table status file => index files => merge index => generate segment file => update table status
 * Same order is now maintained for SI, compaction, IUD, addHivePartition, addSegment scenarios.
 * Whenever segment file needs to be updated for main table, a new segment file is created
   instead of updating existing one.
2. When compact 'segment_index' is triggered,
   For new tables - if no index files to merge, then logs warn message and exits.
   For old tables - index files not deleted.
3. After SI small files merge,
   For newly loaded SI segments - DeleteOldIndexOrMergeFiles deletes immediately after merge.
   For segments that are already present (rebuild) - old index files and data files are not deleted.
4. Removed property from config-parameters. This property
   to be used for debugging/test purposes.

Note: Cleaning of stale index/segment files to be handled in - CARBONDATA -4074

This closes #3988

17 months ago[CARBONDATA-4158]Add Secondary Index as a coarse-grain index and use secondary indexe...
Venu Reddy [Tue, 9 Mar 2021 18:53:07 +0000 (00:23 +0530)] 
[CARBONDATA-4158]Add Secondary Index as a coarse-grain index and use secondary indexes for Presto queries

Why is this PR needed?
At present, secondary indexes are leveraged for query pruning via spark plan modification.
This approach is tightly coupled with spark because the plan modification is specific to
spark engine. In order to use secondary indexes for Presto or Hive queries, it is not
feasible to modify the query plans as we desire in the current approach. Thus need arises
for an engine agnostic approach to use secondary indexes in query pruning.

What changes were proposed in this PR?
1. Add Secondary Index as a coarse grain index.
2. Add a new insegment() UDF to support query within the particular segments
3. Control the use of Secondary Index as a coarse grain index pruning with
4. Use Index Server driver for Secondary Index pruning
5. Use Secondary Indexes with Presto Queries

This closes #4110

17 months ago[CARBONDATA-4163] Support adding of single-level complex columns(array/struct)
akkio-97 [Wed, 31 Mar 2021 15:11:26 +0000 (20:41 +0530)] 
[CARBONDATA-4163] Support adding of single-level complex columns(array/struct)

Why is this PR needed?
This PR enables adding of single-level complex columns(only array and struct)
to carbon table. Command -
ALTER TABLE <table_name> ADD COLUMNS(arr1 ARRAY (double) )
ALTER TABLE <table_name> ADD COLUMNS(struct1 STRUCT<a:int, b:string>)
The default value for the column in case of old rows will be null.

What changes were proposed in this PR?
1. Create instances of ColumnSchema for each of the children, By doing this
   each child column will have its own ordinal. The new columns are first
   identified and stored in a flat structure. For example, for arr1 array(int)
   --> 2 column schemas are created - arr1 and arr1.val. First being the parent
   and second being its child. Each of which will have its own ordinals.
2. Later while updating the Schema evolution entry we only account for the newly
   added parent columns while discarding children columns (As they are no longer
   required. Otherwise we will have the child as a separate column in the schema ).
3. Using the schema evolution entry the final schema is updated. Since ColumnSchemas
   are stored as a flat structure we later convert them to a nested structure of type Dimensions.

Does this PR introduce any user interface change?

Is any new testcase added?

This closes #4115

17 months ago[CARBONDATA-4161] Describe complex columns
ShreelekhyaG [Tue, 23 Mar 2021 09:40:23 +0000 (15:10 +0530)] 
[CARBONDATA-4161] Describe complex columns
Why is this PR needed?
Currently describe formatted displays the column information
of a table and some additional information. When complex
types such as ARRAY, STRUCT, and MAP types are present in the
table, column definition can be long and it’s difficult to
read in a nested format.

What changes were proposed in this PR?
The DESCRIBE output can be formatted to avoid long lines
for multiple fields. We can pass the column name to the
command and visualize its structure with child fields.

Does this PR introduce any user interface change?
Yes ,
DDL Commands:
DESCRIBE COLUMN fieldname ON [db_name.]table_name;
DESCRIBE short [db_name.]table_name;

Is any new testcase added?

This closes #4113

17 months agoEnable github's merge function This closes #4119
chenliang613 [Thu, 15 Apr 2021 09:29:40 +0000 (17:29 +0800)] 
Enable github's merge function This closes #4119

17 months agoEnable github's merge function 4119/head
Liang Chen [Thu, 15 Apr 2021 08:09:51 +0000 (16:09 +0800)] 
Enable github's merge function

Enable github's merge function

18 months ago[maven-release-plugin] prepare for next development iteration
ajantha-bhat [Fri, 26 Mar 2021 07:37:20 +0000 (13:07 +0530)] 
[maven-release-plugin] prepare for next development iteration

18 months ago[maven-release-plugin] prepare release apache-carbondata-2.1.1-rc2
ajantha-bhat [Fri, 26 Mar 2021 07:35:52 +0000 (13:05 +0530)] 
[maven-release-plugin] prepare release apache-carbondata-2.1.1-rc2

18 months agoadd .asf.yaml
chenliang613 [Sun, 28 Mar 2021 09:20:08 +0000 (17:20 +0800)] 
add .asf.yaml

18 months ago[CARBONDATA-4154] Fix various concurrent issues with clean files
Vikram Ahuja [Tue, 16 Mar 2021 11:27:10 +0000 (16:57 +0530)] 
[CARBONDATA-4154] Fix various concurrent issues with clean files

Why is this PR needed?
There are 2 issues in clean files operation when ran concurrently with multiple load operations:

Dry run can show negative space freed for clean files with concurrent load.
Accidental deletion of Insert in progress(ongoing load) during clean files operation.
What changes were proposed in this PR?
To solve the dry run negative result, saving the old metadatadetails before the clean files operation and comparing it with loadmetadetails after the clean files operation and just ignoring any new entry that has been added, basically doing an intersection of new and old metadatadetails to show the correct space freed.
In case of load failure issue, there can be scenarios where load in going on(insert in progress state and segment lock is occupied) and as during clean files operation when the final table status lock is removed, there can be scenarios where the load has completed and the segment lock is released but in the clean files in the final list of loadmetadatadetails to be deleted, that load can still be in Insert In Progress state with segment lock released by the load. The clean files operation will delete such loads. To solve this issue, instead of sending a boolean which check if update is required or not in the tablestatus, can send a list of load numbers and will only delete those loadnumbers.

Does this PR introduce any user interface change?

Is any new testcase added?

This closes #4109

18 months ago[CARBONDATA-4156] Fix Writing Segment Min max with all blocks of a segment
Indhumathi27 [Tue, 9 Mar 2021 10:39:37 +0000 (16:09 +0530)] 
[CARBONDATA-4156] Fix Writing Segment Min max with all blocks of a segment

Why is this PR needed?
PR-3999 has removed some code related to getting segment min max from all blocks.
Because of this, if segment has more than one block, currently, it is writing
min max considering one block only.

What changes were proposed in this PR?
Reverted specific code from above PR. Removed unwanted synchronization for some methods

This closes #4101

18 months ago[CARBONDATA-4149] Fix query issues after alter add empty partition location
ShreelekhyaG [Tue, 23 Mar 2021 09:05:56 +0000 (14:35 +0530)] 
[CARBONDATA-4149] Fix query issues after alter add empty partition location

Why is this PR needed?
Query with SI after add partition based on empty location on partition
table gives incorrect results. pr- 4107 fixes the issue for add
partition if the location is not empty.

What changes were proposed in this PR?
while creating blockid, get segment number from the file name for
the external partition. This blockid will be added to SI and used
for pruning. To identify as an external partition during the compaction
process, instead of checking with loadmetapath, checking with
filepath.startswith(tablepath) format.

Does this PR introduce any user interface change?

Is any new testcase added?

This closes #4112

18 months ago[CARBONDATA-4155] Fix Create table like table with MV
Indhumathi27 [Mon, 22 Mar 2021 15:12:35 +0000 (20:42 +0530)] 
[CARBONDATA-4155] Fix Create table like table with MV

Why is this PR needed?
PR-4076 has added a new table property to fact table.
While executing create table like command, this property
is not excluded, which leads to parsing exception.

What changes were proposed in this PR?
Remove MV related info from destination table properties

This closes #4111

18 months ago[CARBONDATA-4153] Fix DoNot Push down not equal to filter with Cast on SI
Indhumathi27 [Tue, 16 Mar 2021 09:34:25 +0000 (15:04 +0530)] 
[CARBONDATA-4153] Fix DoNot Push down not equal to filter with Cast on SI

Why is this PR needed?
NOT EQUAL TO filter on SI index column, should not be pushed down to SI table.
Currently, where x!='2' is not pushing down to SI, but where x!=2 is pushed down to SI.

This is because "x != 2" will be wrapped in a CAST expression like NOT EQUAL TO(cast(x as int) = 2).

What changes were proposed in this PR?
Handle CAST case while checking DONOT PUSH DOWN to SI

This closes #4108

18 months ago[CARBONDATA-4146]Query fails and the error message "unable to get file status" is...
liuhe0702 [Wed, 10 Mar 2021 12:54:25 +0000 (20:54 +0800)] 
[CARBONDATA-4146]Query fails and the error message "unable to get file status" is displayed.
query is normal after the "drop metacache on table" command is executed.

Why is this PR needed?
During compact execution, the status of the new segment is set to success before index
files are merged. After index files are merged, the carbonindex files are deleted.
As a result, the query task cannot find the cached carbonindex files.

What changes were proposed in this PR?
Set the status of the new segment to succeeded after index files are merged.

Does this PR introduce any user interface change?

Is any new testcase added?

This closes #4104

18 months ago[CARBONDATA-4147] Fix re-arrange schema in logical relation on MV partition table...
Indhumathi27 [Fri, 12 Mar 2021 10:36:27 +0000 (16:06 +0530)] 
[CARBONDATA-4147] Fix re-arrange schema in logical relation on MV partition table having sort column

Why is this PR needed?
After PR-3615, we have avoided rearranging catalog table schema if already re-arranged.
For MV on a partition table, we always move the partition column to the end on a MV partition table.
Catalog table will also have the column schema in same order(partition column at last). Hence, in
this case, we do not re-arrange logical relation in a catalog table again.

But, if there is a sort column present in MV table, then selected column schema and catalog table
schema will not be in same order. In that case, we have to re-arrange the catalog table schema.
Currently, we are using rearrangedIndex to re-arrange the catalog table logical relation, but
rearrangedIndex will keep the index of partition column at the end, whereas, catalog table has
partition column already at the end. Hence, we are re-arranging the partition column index
again in catalog table relation, which leads to insertion failure.

Create MV on columns: c1, c2 (partition), c3(sort_column), c4
Create order: c1,c2,c3,c4
Create order index: 0,1,2,3

Rearranged Index:
Existing Catalog table schema order: c1, c3, c4, c2 (for MV, partition column will be moved to Last)
Rearrange index: 2,0,3,1
After Re-arrange catalog table order: c4,c2,c2, c3(which is wrong)

Change MV create order as below
New Create order: c1,c4,c3,c2
Create order index: 0,1,2,3

Rearranged Index:
Existing Catalog table schema order: c1, c3, c4, c2 (for MV, partition column will be moved to Last)
Rearrange index: 1,0,2,3
After Re-arrange catalog table order: c3,c1,c4,c2

What changes were proposed in this PR?
In MV case, if there is any column schema order change apart from partition column, then re-arrange
index of only those columns and use the same to re-arrange catalog table logical relation.

This closes #4106

18 months ago[CARBONDATA-4148] Reindex failed when SI has stale carbonindexmerge file
jack86596 [Fri, 12 Mar 2021 07:07:40 +0000 (15:07 +0800)] 
[CARBONDATA-4148] Reindex failed when SI has stale carbonindexmerge file

Why is this PR needed?
Reindex failed when SI has stale carbonindexmerge file, throw exception FileNotFoundException.
This is because SegmentFileStore.getIndexFiles stores the mapping of indexfile to indexmergefile,
when stale carbon indexmergefile exists, indexmergefile will not be null. During merging index
file, new indexmergefile will be created with same name as before in the same location.
At the end of CarbonIndexFileMergeWriter.writeMergeIndexFileBasedOnSegmentFile, carbon index
file will be deleted. Since indexmergefile is stored in the indexFiles list, newly created
indexmergefile will be delete also, which leads to FileNotFoundException.

What changes were proposed in this PR?
1. SegmentFileStore.getIndexFiles stores the mapping of indexfile to indexmergefile which is redundant.
2. SegmentFileStore.getIndexOrMergeFiles returns both index file and index merge file, so
   function name is incorrect, rename to getIndexAndMergeFiles.
3. CarbonLoaderUtil.getActiveExecutor actually get active node, so function name is incorrect,
   rename to getActiveNode, together replace all "executor" with "node" in function assignBlocksByDataLocality.

Does this PR introduce any user interface change?

Is any new testcase added?

This closes #4105

18 months ago[CARBONDATA-4149] Fix query issues after alter add partition.
ShreelekhyaG [Sat, 13 Mar 2021 18:45:43 +0000 (00:15 +0530)] 
[CARBONDATA-4149] Fix query issues after alter add partition.

Why is this PR needed?
Query with SI after add partition based on location on partition table gives incorrect results.
1. While pruning, if it's an external segment, it should use ExternalSegmentResolver , and no
   need to use ImplicitIncludeFilterExecutor as an external segment is not added in the SI table.
2. If the partition table has external partitions, after compaction the new files are loaded
   to the external path.
3. Data is not loaded to the child table(MV) after executing add partition command

What changes were proposed in this PR?
1. add path to loadMetadataDetails for external partition. It is used to identify it as an
   external segment.
2. After compaction, to not maintain any link to the external partition, the compacted files
   will be added as a new partition in the table. To update partition spec details in hive metastore,
   (drop partition + add partition) operations performed.
3. Add Load Pre and Post listener's in CarbonAlterTableAddHivePartitionCommand to trigger data
   load to materialized view.

Does this PR introduce any user interface change?

Is any new testcase added?

This closes #4107

18 months ago[CARBONDATA-4145] Query fails and the message "File does not exist: xxxx.carbondata" is
liuhe0702 [Wed, 10 Mar 2021 09:24:42 +0000 (17:24 +0800)] 
[CARBONDATA-4145] Query fails and the message "File does not exist: xxxx.carbondata" is

Why is this PR needed?
If an exception occurs when the refresh index command is executed, a task has been
successful. The new query will be failed.
Reason: After the compaction task is executed successfully, the old carbondata files are
deleted. If other exception occurs, the deleted files are missing.
This PR will fix this issue.

What changes were proposed in this PR?
When all tasks are successful, the driver deletes the old carbondata files.

Does this PR introduce any user interface change?

Is any new testcase added?

This closes #4103

18 months ago[CARBONDATA-4144] During compaction, the segment lock of SI table is not released...
liuhe0702 [Wed, 10 Mar 2021 07:45:41 +0000 (15:45 +0800)] 
[CARBONDATA-4144] During compaction, the segment lock of SI table is not released in abnormal

Why is this PR needed?
When compact operation fails, the segment lock of SI table is not released. Run compaction again,
can not get the segment lock of the SI table and compation does nothing, but in the tablestatus
file of SI table the merged segment status is set to success and the segmentfile is
xxx_null.segments and the vaule of indexsize is 0.

What changes were proposed in this PR?
If an exception occurs, release the obtained segment locks.
If getting segment locks failed, not update the segment status.

Does this PR introduce any user interface change?

Is any new testcase added?

This closes #4102

18 months ago[CARBONDATA-4110] Support clean files dry run operation and show statistics after...
Vikram Ahuja [Thu, 7 Jan 2021 05:49:54 +0000 (11:19 +0530)] 
[CARBONDATA-4110] Support clean files dry run operation and show statistics after clean files

Why is this PR needed?
Currently in the clean files operation the user does not know how much space will be freed.
The idea is the add support for dry run in clean files which can tell the user how much space
will be freed in the clean files operation without cleaning the actual data.

What changes were proposed in this PR?
This PR has the following changes:

1. Support dry run in clean files: It will show the user how much space will be freed by the
   clean files operation and how much space left (which can be released after expiration time)
   after the clean files operation.
2. Clean files output: Total size released during the clean files operation
3. Disable clean files Statistics option in case the user does not want clean files statistics
4. Clean files log: To enhance the clean files log to print the name of every file that is being
deleted in the info log.

This closes #4072

18 months ago[CARBONDATA-4075] Using withEvents instead of fireEvent
QiangCai [Tue, 19 Jan 2021 12:49:33 +0000 (20:49 +0800)] 
[CARBONDATA-4075] Using withEvents instead of fireEvent

Why is this PR needed?
withEvents method can simplify code to fire event

What changes were proposed in this PR?
Refactor code to use the withEvents method instead of fireEvent

This closes #4078

18 months ago[CARBONDATA-4141] Index Server is not caching indexes for external tables with sdk...
Karan980 [Tue, 2 Mar 2021 11:43:49 +0000 (17:13 +0530)] 
[CARBONDATA-4141] Index Server is not caching indexes for external tables with sdk segments

Why is this PR needed?
Indexes cached in Executor cache are not dropped when drop table is called for external table
with SDK segments. Because, external tables with sdk segments will not have metadata like table
status file. So in drop table command we send zero segments to indexServer clearIndexes job,
which clears nothing from executor side. So when we drop this type of table, executor side
indexes are not dropped. Now when we again create external table with same location and do
select * or select count(*), it will not cache the indexes for this table, because indexes with
same loaction are already present. Now show metacache on this newly created table will use new tableId ,
but indexes present have the old tableId, whose table is already dropped. So show metacache will return
nothing, because of tableId mismatch.

What changes were proposed in this PR?
Prepared the validSegments from indexFiles present at external table location and send it to IndexServer clearIndexes job through IndexInputFormat.

This closes #4099

18 months ago[CARBONDATA-4133] Concurrent Insert Overwrite with static partition on Index server...
ShreelekhyaG [Tue, 23 Feb 2021 15:15:46 +0000 (20:45 +0530)] 
[CARBONDATA-4133] Concurrent Insert Overwrite with static partition on Index server fails

Why is this PR needed?
Concurrent Insert Overwrite with static partition on Index server fails. When index server
and prepriming are enabled, prepriming is triggered even when load fails as it is in finally block.
Performance degradation with indexserver due to #4080

What changes were proposed in this PR?
Removed triggerPrepriming method from finally.
Reverted 4080 and used a boolean flag to determine the external segment.

Does this PR introduce any user interface change?

Is any new testcase added?
No, tested in cluster.

This closes #4096

19 months ago[CARBONDATA-4137] Refactor CarbonDataSourceScan without the soruces.Filter of Spark 3
QiangCai [Mon, 22 Feb 2021 11:36:34 +0000 (19:36 +0800)] 
[CARBONDATA-4137] Refactor CarbonDataSourceScan without the soruces.Filter of Spark 3

Why is this PR needed?
1. In spark version 3, org.apache.spark.sql.sources.Filter is sealed, carbon can't extend it in carbon code.
2. The name of CarbonLateDecodeStrategy class is incorrect, the code is complex and hard to read
3. CarbonDataSourceScan can be the same for 2.3 and 2.4, and should support both batch reading and row reading.

What changes were proposed in this PR?
1. translate spark Expression to carbon Expression directly, skip the spark Filter step. Remove all spark Filters in carbon code.
  old follow: Spark Expression => Spark Filter => Carbon Expression
  new follow: Spark Expression => Carbon Expression
2. Remove filter reorder, need to implement expression reorder (added CARBONDATA-4138).
3. separate CarbonLateDecodeStrategy to CarbonSourceStrategy and DMLStrategy, and simplify the code of CarbonSourceStrategy.
4. move CarbonDataSourceScan back to the source folder, use one CarbonDataSourceScan for all versions
  CarbonDataSourceScan supports both VectorReader and RowReader, Carbon will not use RowDataSourceScanExec.

Does this PR introduce any user interface change?

Is any new testcase added?

19 months ago[CARBONDATA-4115] Successful load and insert will return segment ID
areyouokfreejoe [Sat, 30 Jan 2021 09:41:20 +0000 (17:41 +0800)] 
[CARBONDATA-4115] Successful load and insert will return segment ID

Why is this PR needed?
Currently successful load and insert sql return empty Seq in carbondata, we need it to return the segment ID.

What changes were proposed in this PR?
Successful load and insert will return segment ID.

Does this PR introduce any user interface change?
Yes. (Successful load and insert will return segment ID.)

Is any new testcase added?

This closes #4086

19 months ago[CARBONDATA-4121] Prepriming is not working in Index Server
Karan980 [Fri, 5 Feb 2021 11:26:23 +0000 (16:56 +0530)] 
[CARBONDATA-4121] Prepriming is not working in Index Server

Why is this PR needed?
Prepriming is not working in Index Server. Server.getRemoteUser
returns null value in async call of prepriming which results in
NPE and crashes the indexServer application. Issue Induced after PR #3952

What changes were proposed in this PR?
Computed the Server.getRemoteUser value before making the async prepriming
call and then used the same value during async call. Code reset to code before PR #3952

This closes #4088

19 months ago[CARBONDATA-4126] Concurrent compaction failed with load on table
Karan980 [Thu, 11 Feb 2021 07:44:07 +0000 (13:14 +0530)] 
[CARBONDATA-4126] Concurrent compaction failed with load on table

Why is this PR needed?
Concurrent compaction was failing when run in parallel with load.
During load we acquire SegmentLock for a particular segment, and
when this same lock we try to acquire during compaction, we were
not able to acquire this lock and compaction fails.

What changes were proposed in this PR?
Skipped compaction for segments for which we are not able to acquire
the SegmentLock instead of throwing the exception.

This closes #4093

19 months ago[CARBONDATA-3962] Fixed concurrent load failure with flat folder structure.
Nihal ojha [Tue, 16 Feb 2021 07:31:34 +0000 (13:01 +0530)] 
[CARBONDATA-3962] Fixed concurrent load failure with flat folder structure.

Why is this PR needed?
PR #3904 has added the code to remove fact directory and because of this concurrent
load fails with file not found exception.

What changes were proposed in this PR?
Reverted PR 3904.

This closes #4905

19 months ago[CARBONDATA-4117][CARBONDATA-4123] cg index and bloom index query issue with Index...
ShreelekhyaG [Fri, 5 Feb 2021 15:00:47 +0000 (20:30 +0530)] 
[CARBONDATA-4117][CARBONDATA-4123] cg index and bloom index query issue with Index server

Why is this PR needed?
1. Test cg index query with Index server fails with NPE. While initializing the index model,
a parsing error is thrown when trying to uncompress with snappy.
2. Bloom index query with Index server giving incorrect results when splits have >1 blocklets.
Blocklet level details are not serialized for index server as it is considered as block level cache.

What changes were proposed in this PR?
1. Have set segment and schema details to BlockletIndexInputSplit object. While writing
minmax object, write byte size instead of position.
2. Creating BlockletIndex when bloom filter is used, so in createBlocklet step isBlockCache
is set to false.

This closes #4089

19 months ago[CARBONDATA-4124] Fix Refresh MV which does not exist error message
Indhumathi27 [Tue, 9 Feb 2021 05:31:54 +0000 (11:01 +0530)] 
[CARBONDATA-4124] Fix Refresh MV which does not exist error message

Why is this PR needed?
Refreshing MV which does not exist, is not throwing proper carbon error message.
It throws Table NOT found message from Spark. This is because, getSchema is
returning null, if schema is not present.

What changes were proposed in this PR?
1. Check If getSchema is null and throw No such MV exception.
2. While drop table, drop mv and then drop fact table from metastore, to avoid
getting Nullpointer exception, when trying to access fact table while drop MV.

Does this PR introduce any user interface change?

Is any new testcase added?

This closes #4091

19 months ago[CARBONDATA-4125] SI compatability issue fix
Indhumathi27 [Wed, 3 Feb 2021 15:06:26 +0000 (20:36 +0530)] 
[CARBONDATA-4125] SI compatability issue fix

Why is this PR needed?
Currently, while upgrading table store with SI, we have to execute REFRESH tables and
REGISTER INDEX command to refresh and register the index to main table. And also, while
SI creation, we add a property 'indexTableExists' to main table, to identify if table
has SI or not. If a table has SI, then we load the index information for that table
from Hive {org.apache.spark.sql.secondaryindex.hive.CarbonInternalMetastore#refreshIndexInfo}.
indexTableExists will be default 'false' to all tables which does not have SI and for
SI tables, this property will not be added.

{org.apache.spark.sql.secondaryindex.hive.CarbonInternalMetastore#refreshIndexInfo} will
be called on any command to refresh indexInfo. indexTableExists property should be either
true(Main table) or null (SI), in order to get index information from Hive and set it to
carbon table.

Issue 1:
While upgarding tables with SI, after refresh main table and SI, If user does any operation
like Select or Show cache, it is adding indexTableExists property to false. After register
index and on doing any operation with SI(load or select),
{org.apache.spark.sql.secondaryindex.hive.CarbonInternalMetastore#refreshIndexInfo} is not
updating index information to SI table, since indexTableExists is false. Hence, load to SI
will fail.

Issue 2:
While upgarding tables with SI, after refresh main table and SI, If user does any operation
like Update, alter, delete to SI table, while registering it as a index, it is not validating
the alter operations done on that table.

What changes were proposed in this PR?
Issue 1:
While registering SI table as a index, check if SI table has indexTableExists proeprty and
remove it. For already registered index, allow re-register index to remove the property.

Issue 2:
Added validations for checking if SI has undergone Load/Update/delete/alter opertaion before
registering it as a index and throw exception.

This closes #4087

19 months ago[CARBONDATA-4122] Use CarbonFile API instead of java File API for Flink CarbonLocalWriter
Indhumathi27 [Sun, 7 Feb 2021 11:32:31 +0000 (17:02 +0530)] 
[CARBONDATA-4122] Use CarbonFile API instead of java File API for Flink CarbonLocalWriter

Why is this PR needed?
Currently, only two writer's(Local & S3) is supported for flink carbon streaming support. If user wants to ingest data from flink as a carbon format, directly into HDFS carbon table, there is no writer type to support it.

What changes were proposed in this PR?
Since the code for writing flink stage data will be same for Local and Hdfs FileSystems, we can use the existing CarbonLocalWriter to write data into hdfs, by using CarbonFile API instead of java File API.

Changed code to use CarbonFile API instead of

Does this PR introduce any user interface change?

Is any new testcase added?

This closes #4090

20 months ago[CARBONDATA-4102] Added UT and FT to improve coverage of SI module.
Nihal ojha [Wed, 23 Dec 2020 09:26:57 +0000 (14:56 +0530)] 
[CARBONDATA-4102] Added UT and FT to improve coverage of SI module.

Why is this PR needed?
Added UT and FT to improve coverage of SI module and also removed the dead or unused code.

What changes were proposed in this PR?
Added UT and FT to improve coverage of SI module and also removed the dead or unused code.

Does this PR introduce any user interface change?

Is any new testcase added?

This closes #4071

20 months ago[CARBONDATA-4111] Filter query having invalid results after add segment to table...
ShreelekhyaG [Mon, 25 Jan 2021 10:39:32 +0000 (16:09 +0530)] 
[CARBONDATA-4111] Filter query having invalid results after add segment to table having SI with Indexserver

Why is this PR needed?
When the index server is enabled, filter query on SI column after alter table
add sdk segment to maintable throws NoSuchMethodException and the rows added
by sdk segment are not returned in the result.

What changes were proposed in this PR?
Added segment path in index server flow, as it is used to identify external segment
in filter resolver step. No need to load to SI, if it is an add load command.
Default constructor for SegmentWrapperContainer declared.

Does this PR introduce any user interface change?

Is any new testcase added?

This closes #4080

20 months ago[CARBONDATA-4107] Added related MV tables Map to fact table and added lock while...
Indhumathi27 [Tue, 12 Jan 2021 08:38:56 +0000 (14:08 +0530)] 
[CARBONDATA-4107] Added related MV tables Map to fact table and added lock while touchMDTFile

Why is this PR needed?
1. After MV support multi-tenancy PR, mv system folder is moved to database level. Hence,
during each operation, insert/Load/IUD/show mv/query, we are listing all the databases in the
system and collecting mv schemas and checking if there is any mv mapped to the table or not.
This will degrade performance of the query, to collect mv schemas from all databases, even
though the table has mv or not.

2. When different jvm process call touchMDTFile method, file creation and deletion can
happen same time. This may fail the operation.

What changes were proposed in this PR?
1. Added a table property relatedMVTablesMap to fact tables of MV during MV creation. During
any operation, check if the table has MV or not using the added property and if it has, then
collect schemas of only related databases. In this way, we can avoid collecting mv schemas
for table which dont have MV.

2. Take a Global level lock on system folder location, to update last modified time.

NOTE: For compatibilty scenarios, can perform refresh MV operation to update these table properties.

Does this PR introduce any user interface change?
For compatibilty scenarios, can perform refresh MV operation to update these table properties.

Is any new testcase added?

This closes #4076

20 months ago[CARBONDATA-4082] Fix alter table add segment query on adding a segment having delete...
Karan980 [Mon, 4 Jan 2021 06:40:05 +0000 (12:10 +0530)] 
[CARBONDATA-4082] Fix alter table add segment query on adding a segment having delete delta files

Why is this PR needed?
When a segment is added to a carbon table by alter table add segment query
and that segment also have a deleteDelta file present in it, then on querying
the carbon table the deleted rows are coming in the result.

What changes were proposed in this PR?
Updating the tableStatus and tableUpdateStatus files in correct way for the
segments having delta delta files.

This closes #4070

20 months ago[CARBONDATA-4113] Partition prune and cache fix when
ShreelekhyaG [Thu, 28 Jan 2021 10:10:27 +0000 (15:40 +0530)] 
[CARBONDATA-4113] Partition prune and cache fix when is disabled

Why is this PR needed?
When is false then select queries on
partition table result is invalid . For a single partition, partition
values are appended to form the wrong path when loaded by the same segment.
Ex: For partition on column b, path: /tablepath/b=1/b=2

What changes were proposed in this PR?
In PartitionCacheManager, changes made to handle single and multiple partitions.
Encoded the URI path to handle space values in the string.

This closes #4084

20 months ago[CARBONDATA-4112] Data mismatch issue in SI global sort merge flow
Karan980 [Thu, 28 Jan 2021 10:09:04 +0000 (15:39 +0530)] 
[CARBONDATA-4112] Data mismatch issue in SI global sort merge flow

Why is this PR needed?
When the data files of a SI segment are merged. it results in having more number of rows in SI table than main table.

What changes were proposed in this PR?
CARBON_INPUT_SEGMENT property was not set before creating the dataframe from SI segment. So it was creating dataframe from all the rows in the table, not only from a particular segment.

Does this PR introduce any user interface change?

Is any new testcase added?

This closes #4083

20 months ago[CARBONDATA-4109] Improve carbondata coverage for presto-integration code
akkio-97 [Mon, 11 Jan 2021 16:44:04 +0000 (22:14 +0530)] 
[CARBONDATA-4109] Improve carbondata coverage for presto-integration code

Why is this PR needed?
Few scenarios had missing coverage in presto-integration code. This PR aims to improve it by considering all such scenarios.

Dead code- was created with an aim to query complex types. Instead ComplexTypeStreamReader was created. Making ObjectStreamreader obsolete.

What changes were proposed in this PR?
Test cases added for scenarios that were not covered earlier in presto-integration code
Removed dead code.

Does this PR introduce any user interface change?

Is any new testcase added?

This closes #4074

20 months ago[CARBONDATA-4104] Vector filling for complex decimal type needs to be handled
akkio-97 [Thu, 7 Jan 2021 19:51:59 +0000 (01:21 +0530)] 
[CARBONDATA-4104] Vector filling for complex decimal type needs to be handled

Why is this PR needed?
Filling of vectors in case of complex decimal type whose precision is greater than 18 is not handled properly.
for ex-

What changes were proposed in this PR?
Ensured proper vector filling considering it's page data type.

Does this PR introduce any user interface change?

Is any new testcase added?

This closes #4073

20 months ago[CARBONDATA-4097] ColumnVectors should not be initialized as
Karan980 [Tue, 22 Dec 2020 13:21:23 +0000 (18:51 +0530)] 
[CARBONDATA-4097] ColumnVectors should not be initialized as
ColumnVectorWrapperDirect for alter tables

Why is this PR needed?
Direct filling of column vectors is not allowed for alter tables,
But its column vectors were getting initialized as ColumnVectorWrapperDirect.

What changes were proposed in this PR?
Changed the initialization of column vectors to ColumnVectorWrapper
for alter tables.

This closes #4062

20 months ago[CARBONDATA-4051] Geo spatial index algorithm improvement and UDFs enhancement
shenjiayu17 [Thu, 19 Nov 2020 07:30:24 +0000 (15:30 +0800)] 
[CARBONDATA-4051] Geo spatial index algorithm improvement and UDFs enhancement

Why is this PR needed?
Spatial index feature optimization of CarbonData

What changes were proposed in this PR?
1. Update spatial index encoded algorithm, which can reduce the required properties of creating geo table
2. Enhance geo query UDFs, support querying geo table with polygon list, polyline list, geoId range list. And add some geo transforming util UDFs.
3. Load data (include LOAD and INSERT INTO) allows user to input spatial index, which column will still generated internally when user does not give.

Does this PR introduce any user interface change?

Is any new testcase added?

This closes #4012

20 months ago[CARBONDATA-4096] SDK read fails from cluster and sdk read filter query on
ShreelekhyaG [Tue, 22 Dec 2020 13:14:43 +0000 (18:44 +0530)] 
[CARBONDATA-4096] SDK read fails from cluster and sdk read filter query on
sort column giving wrong result with IndexServer

Why is this PR needed?
1. Create a table and read from sdk written files fails in cluster with
java.nio.file.NoSuchFileException: hdfs:/hacluster/user/hive/warehouse/
2. After fixing the above path issue, filter query on sort column gives
the wrong result with IndexServer.

What changes were proposed in this PR?
1. In getAllDeleteDeltaFiles , used CarbonFiles.listFiles instead of Files.walk
to handle custom file types.
2. In PruneWithFilter , isResolvedOnSegment is used in filterResolver step.
Have set table and expression on executor side, so indexserver can use this
in filterResolver step.

This closes #4064

20 months ago[CARBONDATA-4055]Fix creation of empty segment directory and meta
akashrn5 [Mon, 23 Nov 2020 13:48:06 +0000 (19:18 +0530)] 
[CARBONDATA-4055]Fix creation of empty segment directory and meta
entry when there is no update/insert data

Why is this PR needed?
1. After #3999 when an update happens on the table, a new segment
is created for updated data. But when there is no data to update,
still the segments are created and the table status has in progress
entries for those empty segments. This leads to unnecessary segment
dirs and an increase in table status entries.
2. after this, clean files don't clean these empty segments.
3. when the source table do not have data, CTAS will result in same
problem mentioned.

What changes were proposed in this PR?
when the data is not present during update, make the segment as marked
for delete so that the clean files take care to delete the segment,
for cats already handled, added test cases.

This closes #4018

20 months ago[DOC] Running the Thrift JDBC/ODBC server with CarbonExtensions
QiangCai [Fri, 15 Jan 2021 02:30:15 +0000 (10:30 +0800)] 
[DOC] Running the Thrift JDBC/ODBC server with CarbonExtensions

Why is this PR needed?
since version 2.0, carbon supports starting spark ThriftServer with CarbonExtensions.

What changes were proposed in this PR?
add the document to start spark ThriftServer with CarbonExtensions.

Does this PR introduce any user interface change?

Is any new testcase added?

This closes #4077

20 months ago[CARBONDATA-4065] Support MERGE INTO SQL Command
BrooksLi [Thu, 5 Nov 2020 06:42:35 +0000 (14:42 +0800)] 
[CARBONDATA-4065] Support MERGE INTO SQL Command

Why is this PR needed?
In order to support MERGE INTO SQL Command in Carbondata
The previous Scala Parser having trouble to parse the complicated Merge Into SQL Command

What changes were proposed in this PR?
Add an ANTLR parser, and support parse MERGE INTO SQL Command to DataSet Command

Does this PR introduce any user interface change?
The PR introduces the MERGE INTO SQL Command.

Is any new testcase added?

This closes #4032

Co-authored-by: Zhangshunyu <>
20 months ago[CARBONDATA-4070] [CARBONDATA-4059] Fixed SI issues and improved FT
Nihal ojha [Fri, 27 Nov 2020 10:40:47 +0000 (16:10 +0530)] 
[CARBONDATA-4070] [CARBONDATA-4059] Fixed SI issues and improved FT

Why is this PR needed?
1. Block SI creation on binary column.
2. Block alter table drop column directly on SI table.
3. Create table as like should not be allowed for SI tables.
4. Filter with like should not scan SI table.
5. Currently compaction is allowed on SI table. Because of this if only SI table
is compacted and running filter query query on main table is causing more data
scan of SI table which will causing performance degradation.

What changes were proposed in this PR?
1. Blocked SI creation on binary column.
2. Blocked alter table drop column directly on SI table.
3. Handled Create table as like for SI tables.
4. Handled filter with like to not scan SI table.
5. Block the direct compaction on SI table and add FTs for compaction scenario of SI.
6. Added FT for compression and range column on SI table.

Does this PR introduce any user interface change?

Is any new testcase added?

This closes #4037

20 months ago[CARBONDATA-3987] Handled filter and IUD operation for pagination reader in SDK
Nihal ojha [Wed, 30 Dec 2020 08:34:51 +0000 (14:04 +0530)] 
[CARBONDATA-3987] Handled filter and IUD operation for pagination reader in SDK

Why is this PR needed?
Currently, SDK pagination reader is not supported for the filter expression and also returning the wrong result after performing IUD operation through SDK.

What changes were proposed in this PR?
In case of filter present or update/delete operation get the total rows in splits after building the carbon reader else get the row count from the details info of each splits.
Handled ArrayIndexOutOfBoundException and return zero in case of rowCountInSplits.size() == 0

Does this PR introduce any user interface change?

Is any new testcase added?

This closes #4068

21 months ago[CARBONDATA-4073] Added FT for missing scenarios and removed dead code in Presto...
akkio-97 [Sun, 29 Nov 2020 19:24:12 +0000 (00:54 +0530)] 
[CARBONDATA-4073] Added FT for missing scenarios and removed dead code in Presto integration

Why is this PR needed?
FT for following cases has been added. Here store is created by spark and it is read by Presto.

update without local-dict
delete operations on table
minor, major, custom compaction
add and delete segments
test update with inverted index
read with partition columns
Filter on partition columns
Bloom index
test range columns
read streaming data

Does this PR introduce any user interface change?

Is any new testcase added?

This closes #4031