carbondata.git
19 months ago[maven-release-plugin] prepare release apache-carbondata-2.1.0-rc2 apache-carbondata-2.1.0-rc2
kunal642 [Tue, 3 Nov 2020 17:14:54 +0000 (22:44 +0530)] 
[maven-release-plugin] prepare release apache-carbondata-2.1.0-rc2

19 months ago[CARBONDATA-4044] Fix dirty data in index file while IUD with stale data in segment...
haomarch [Tue, 13 Oct 2020 15:10:58 +0000 (23:10 +0800)] 
[CARBONDATA-4044] Fix dirty data in index file while IUD with stale data in segment folder

Why is this PR needed?
XX.mergecarbonindex and XX..segment records the indexfiles list of a segment. now, we generate xx.mergeindexfile and xx.segment  based on filter out all indexfiles(including carbonindex and mergecarbonindex), which will leading dirty data when there is stale data in segment folder.
For example, there are a stale index file in segment_0 folder, "0_1603763776.carbonindex".
While loading, a new carbonindex "0_16037752342.carbonindex" is wrote, when merge carbonindex files, we expect to only merge 0_16037752342.carbonindex, But If we filter out all carbonindex in segment folder, both "0_1603763776.carbonindex" and 0_16037752342.carbonindex will be merged and recorded into segment file.
While updating, there has same problem.

What changes were proposed in this PR?
1. IUD: merge file based on UUID(timestamp).
2. IUD: write segment file based on UUID(timestamp).
3. Update: update will generate a new segment to avoid rewrite segment file. also will rollback the new segment when update fails
4. We delete horizotal compaction processing of update delta(both carbondata files and carbonindex).
5. Clean the dead code when update write into new segment
6. Fix an update issue: The wrong update result after drop partition.

Does this PR introduce any user interface change?
Yes

Is any new testcase added?
Yes

This closes #3999

19 months ago[CARBONDATA-4006] Fix for currentUser as NULL in getcount method
Vikram Ahuja [Wed, 23 Sep 2020 07:27:58 +0000 (12:57 +0530)] 
[CARBONDATA-4006] Fix for currentUser as NULL in getcount method
during index server fallback mode

Why is this PR needed?
In case of index server fallback, Server.getRemoteUser.getShortUserName
always returns NULL. Can give null pointer exception in any generic events.

What changes were proposed in this PR?
Do not launch any generic events in case of index server fallback mode.
The behaviour is similar as getSplits and invalidateSegmentCache API's.

This closes #3952

19 months ago[CARBONDATA-4043] Fix data load failure issue for columns added in legacy store
Indhumathi27 [Wed, 21 Oct 2020 13:43:24 +0000 (19:13 +0530)] 
[CARBONDATA-4043] Fix data load failure issue for columns added in legacy store

Why is this PR needed?
When dimension is added in older versions like 1.1, by default it will be sort column.
In sort step we assume data will be coming as sort column in the beginning.
But the added column will be at last eventhough sort column. So, while building
the dataload configurations for loading data, we rearrange the columns(dimensions
and datafields) in order to bring the sort column to beginning and no-sort to last
and revert them back to schema order before FinalMerge/DataWriter step.

Issue:
Data loading is failing because of castException in data writing step in case
of NO_SORT and in final sort step in case of LOCAL_SORT.
NO_SORT:
In this flow, datafields are rearranged based on sort columns order, which is not required.
LOCAL_SORT:
During FinalMerge, we assume intermediate row data will have only sort column
data in schema order. But intermediate sort row data can contain no-dictionary
and dictionary data also. So, the information about the actual index of sort column data is insufficient.

What changes were proposed in this PR?
NO_SORT:
Update datafields based on sort columns only if the table is a sort table and sort columns are configured.
LOCAL_SORT:
Collect the sort column info from all the dimensions into a map and identify the sort column index using it and compare only sort column data in final merge.

This closes #3995

20 months ago[CARBONDATA-4034] Improve the time-consuming of Horizontal Compaction for update
shenjiayu17 [Tue, 13 Oct 2020 03:02:24 +0000 (11:02 +0800)] 
[CARBONDATA-4034] Improve the time-consuming of Horizontal Compaction for update

Why is this PR needed?
The horizontal compaction flow will be too slow when updating with lots of segments(or lots of blocks), so we try to analyze and optimize it for time-consuming problem.

What changes were proposed in this PR?
1. In performDeleteDeltaCompaction, optimize the method getSegListIUDCompactionQualified.
2. Combine two traversals of segments which have same process.
3. Use forming delete delta file name instead of listFiles operation.

Does this PR introduce any user interface change?
No

Is any new testcase added?
No

This closes #3986

20 months ago[CARBONDATA-4042]Launch same number of task as select query for insert into
Venu Reddy [Thu, 8 Oct 2020 07:16:33 +0000 (12:46 +0530)] 
[CARBONDATA-4042]Launch same number of task as select query for insert into
select and ctas cases when target table is of no_sort

Why is this PR needed?
At present, When we do insert into table select from or create table as select
from, we lauch one single task per node. Whereas when we do a simple select *
from table query, tasks launched are equal to number of carbondata
files(CARBON_TASK_DISTRIBUTION default is CARBON_TASK_DISTRIBUTION_BLOCK).

Thus, slows down the load performance of insert into select and ctas cases.
Refer [Community discussion regd. task lauch]
(http://apache-carbondata-dev-mailing-list-archive.1130556.n5.nabble.com/
Discussion-Query-Regarding-Task-launch-mechanism-for-data-load-operations-tt98711.html)

What changes were proposed in this PR?
1. Lauch the same number of tasks as in select query for insert into select and
ctas cases when the target table is of no-sort.
2. Replaced all checkAnswerWithoutSort with checkAnswer in TestSIWithSecondaryIndex
to fix random UT failure issues in that file.

This closes #3972

20 months ago[CARBONDATA-4007] Fix multiple issues in SDK_IUD
Karan980 [Wed, 7 Oct 2020 06:46:33 +0000 (12:16 +0530)] 
[CARBONDATA-4007] Fix multiple issues in SDK_IUD

Why is this PR needed?
Fix multiple issues occurred in SDK_IUD.
a) TupleId always have linux file separator independent of the system.
b) Filtered rows array size gives ArrayOutOfBound exception if number of deleted rows is greater than 4096.
c) On read, date columns were returned as integers and timestamp columns were returned as long.

What changes were proposed in this PR?
a) Changed the tupleId file separator to linux file separator.
b) Change the filtered rows size to default column page rows size.
c) Converted the date and timestamp columns to their respective forms on read.

This closes #3970

20 months ago[DOC] Adjust partition table document
QiangCai [Fri, 23 Oct 2020 07:05:36 +0000 (15:05 +0800)] 
[DOC] Adjust partition table document

Why is this PR needed?
the function description of the partitioned table is incorrect

What changes were proposed in this PR?
1. not support splitting partition
2. change "STANDARD PARTITION" to "PARTITION"

This close #3996

20 months ago[CARBONDATA-3934] Support write transactional table with presto.
akashrn5 [Mon, 16 Mar 2020 17:10:25 +0000 (22:40 +0530)] 
[CARBONDATA-3934] Support write transactional table with presto.

Why is this PR needed?
Currently we have the read support from presto which reads all primitive and complex types and partition support. Here main bottleneck is, user has to create table and load the data in spark, so its better if the user can load the transactional data from presto itself.

What changes were proposed in this PR?
This PR supports writing the trasactional data to the carbon table. This supports just the insert command, as we cant have load command here. This PR just supports the insert, there are separate jiras for partition and complex write support, i will raise separate PRs for the same.

Does this PR introduce any user interface change?
No

Is any new testcase added?
Yes

This closes #3875

20 months ago[CARBONDATA-4027] Fix the wrong modifiedtime of loading files in insert stage
haomarch [Mon, 12 Oct 2020 01:58:58 +0000 (09:58 +0800)] 
[CARBONDATA-4027] Fix the wrong modifiedtime of loading files in insert stage

Why is this PR needed?

ISSUE1: In the insertstage flow, there is a empty file with suffix '.loading'
to mark the stage in the status of 'in processing'. We update the modifiedtime
of '.loading' file for monitoring the insertstage start time, which can be used
for calculate TIMEOUT, help to retry and recovery. Before, we use setModifiedTime
function to update the modifiedtime, which has a serious bug. For S3 file,
setModifiedTime operation do not take effect. leading to the incorrect
inserstage starttime of 'loading' file.

ISSUE2: For now, Insertstage non-parttion table will not merge index files,
which will degrade the query performance heavily.

What changes were proposed in this PR?
1. Update the modifiedtime of loading files based on recreating files.
2. Trigger indexfiles merging after insertstage non-parttiontable.

Does this PR introduce any user interface change?
No

Is any new testcase added?
No

This closes #3977

20 months ago[CARBONDATA-3979] Added Hive local dictionary support example
ShreelekhyaG [Mon, 7 Sep 2020 07:30:05 +0000 (13:00 +0530)] 
[CARBONDATA-3979] Added Hive local dictionary support example

Why is this PR needed?
To verify local dictionary support in hive.

What changes were proposed in this PR?
Added example in HiveExample class
Added testcase in HiveTest
Refactored the functions to verify local dictionary.

This closes #3914

20 months ago[CARBONDATA-4039] Support Local dictionary for Presto complex datatypes
akkio-97 [Fri, 9 Oct 2020 10:58:02 +0000 (16:28 +0530)] 
[CARBONDATA-4039] Support Local dictionary for Presto complex datatypes

Why is this PR needed?
Enable local-dictionary for presto complex types.

What changes were proposed in this PR?
As local dictionary is only supported in case of strings, while we fill primitive type - VariableLengthDimensionColumnPage is instantiated which in turn calls fillVector().

Dictionary block is created with positionCount set from batchSize whose default value is 32000. Since it is a complex primitive type its value will never get updated from CarbondataPageSource. So will have to update it during the loading of that page along with other child pages.

Calculate surrogate value for date type only in case of non-null values. Doing otherwise might cause exception in case of null values.

Does this PR introduce any user interface change?
No

Is any new testcase added?
Yes

This closes #3987

20 months ago[Carbondata-3999] Fix permission issue of indexServerTmp directory
Karan980 [Fri, 9 Oct 2020 05:10:24 +0000 (10:40 +0530)] 
[Carbondata-3999] Fix permission issue of indexServerTmp directory

Why is this PR needed?
When dir "/indexservertmp" is not existing,then select query with
indexserver will create a dir "/indexservertmp/[queryid]" with
permission 755,and the permission of dir "/indexservertmp" is also
755,it will cause permission issue.

What changes were proposed in this PR?
When select query with indexserver,first check if the dir "/indexservertmp"
is existing,and if not,then create dir "/indexservertmp" with permission 777

This closes #3974

20 months ago[Carbondata-3954] Fix insertion from ORC table into carbon table when sort scope...
Karan980 [Mon, 12 Oct 2020 06:17:47 +0000 (11:47 +0530)] 
[Carbondata-3954] Fix insertion from ORC table into carbon table when sort scope is global sort

Why is this PR needed?
Loading records from ORC table having null values into carbon table having sort scope as global sort gives NPE.

What changes were proposed in this PR?
Added null check for arrayType and mapType before writing the data into byteArrays

Does this PR introduce any user interface change?
No

Is any new testcase added?
Yes

This closes #3979

20 months ago[CARBONDATA-4035]Fix MV query issue with aggregation on decimal column
akashrn5 [Wed, 14 Oct 2020 09:46:35 +0000 (15:16 +0530)] 
[CARBONDATA-4035]Fix MV query issue with aggregation on decimal column

Why is this PR needed?
When the aggregation like sum is performed on decimal column similar to MV schema query,
the user query is not getting results from MV. Since in MV schema during MV created we
prepare the plan on the query string of modular plan(modularPlan.asCompactSQL) which adds
multiple cast expression, because of which the semantic equals fails

What changes were proposed in this PR?
During MV creation, to set the query to MV schema, just use the direct query string,
instead of compactSQL.

Does this PR introduce any user interface change?
No

Is any new testcase added?
Yes

This closes #3984

20 months ago[CARBONDATA-4032] Fix drop partition command clean data issue
haomarch [Tue, 13 Oct 2020 17:20:14 +0000 (01:20 +0800)] 
[CARBONDATA-4032] Fix drop partition command clean data issue

Why is this PR needed?
1. CREATE TABLE droppartition (id STRING, sales STRING) PARTITIONED BY (dtm STRING)STORED AS carbondata
2.
insert into droppartition values ('01', '0', '20200907'),('03', '0', '20200908'),
insert overwrite table droppartition partition (dtm=20200908) select * from droppartition where dtm = 20200907;
insert overwrite table droppartition partition (dtm=20200909) select * from droppartition where dtm = 20200907;

3. alter table droppartition drop partition (dtm=20200909)

the dirctionary "20200908" was deleted.

The rootcause: drop partition will clean stale data, but delete the parent dirctionary contains the stale data, leading to normal data loss.

What changes were proposed in this PR?
Fix this issue by limit to clean stale data, not the whole dirctionary

Does this PR introduce any user interface change?
No

Is any new testcase added?
YES

This closes #3982

20 months ago[CARBONDATA-3994] Skip Order by for map task if it is sort column and use limit pushd...
ajantha-bhat [Wed, 16 Sep 2020 10:42:20 +0000 (16:12 +0530)] 
[CARBONDATA-3994] Skip Order by for map task if it is sort column and use limit pushdown for array_contains filter

Why is this PR needed?
To improve query performance in specific scenarios these changes are proposed.

What changes were proposed in this PR?
When the order by column is in sort column, every map task output will be already sorted. No need to sort the data again.
Hence skipping the order at map task by changing plan node from TakeOrderedAndProject --> CarbonTakeOrderedAndProjectExec
Also in this scenario collecting the limit at map task and Array_contains() will use this limit value for row scan filtering to break scan once limit value is reached.
Also added a carbon property to control this .
carbon.mapOrderPushDown.<db_name>_<table_name>.column

Note: later we can improve this for other filters also to use the limit value.

Does this PR introduce any user interface change?
No

Is any new testcase added?
Yes

This closes #3932

Co-authored-by: li36909 <369091991@qq.com>
20 months ago[HOTFIX] Fix random failure issue due to indexMerge
Indhumathi27 [Tue, 20 Oct 2020 14:01:50 +0000 (19:31 +0530)] 
[HOTFIX] Fix random failure issue due to indexMerge

Why is this PR needed?
CarbonIndexFileMerge test cases are failing randomly in CI

What changes were proposed in this PR?
Unset merge properties to default in afterALL function

Does this PR introduce any user interface change?
No

Is any new testcase added?
No

This closes #3989

20 months ago[CARBONDATA-3889] Enable scalastyle check for all scala test code
QiangCai [Sat, 19 Sep 2020 02:05:36 +0000 (10:05 +0800)] 
[CARBONDATA-3889] Enable scalastyle check for all scala test code

Why is this PR needed?
there are many code style issues in test source code
it results in ugly code

What changes were proposed in this PR?
keep long sql if needed by using comment "// scalastyle:off lineLength"
optimize import for all scala test cases
fix code style issues

Does this PR introduce any user interface change?
No

Is any new test case added?
No

This closes #3950

20 months ago[CARBONDATA-4036]Fix special char(`) issue in create table, when column
akashrn5 [Wed, 16 Sep 2020 14:44:40 +0000 (20:14 +0530)] 
[CARBONDATA-4036]Fix special char(`) issue in create table, when column
name contains ` character

Why is this PR needed?
When a table is created with special character ``` , it fails when
parsing to create field object. This is because ` character is used for
tokenizing while parsing, and it will use the same char present in column
name for parsing and it leads to wrong field object creation.

What changes were proposed in this PR?
when the column name contains the ``` , just for parsing , replace the
character with ! character, then once the parsing is done and the files
object is created, then replace again with the original one. This solution
is considered so as to avoid the changes in parsing layer, as it might
induce other layers of parsing. So this solution is considered.

This closes #3983

20 months ago[CARBONDATA-4004] [CARBONDATA-4012] Issue with select after update command
akkio-97 [Mon, 5 Oct 2020 18:40:43 +0000 (00:10 +0530)] 
[CARBONDATA-4004] [CARBONDATA-4012] Issue with select after update command

Why is this PR needed?
During vector filling, due to missing implementation of putAllByteArray()
method in sliceStreamReader.java, its implementation in parent class
CarbonColumnVectorImpl was called.
Hence in presto on firing select query on string column, all rows never
showed up. And on select query on multiple columns - exceptions were thrown.
Similarly for getColumnVector(), implementation was missing - while
reading struct datatype columns.

What changes were proposed in this PR?
Implemented the missing methods.

This closes #3967

20 months ago[CARBONDATA-3901][CARBONDATA-3903][CARBONDATA-3824] SI creation on unkbown table and
Nihal ojha [Tue, 13 Oct 2020 12:45:02 +0000 (18:15 +0530)] 
[CARBONDATA-3901][CARBONDATA-3903][CARBONDATA-3824] SI creation on unkbown table and
doc changes.

Why is this PR needed?
1. Currently, the exception message for SI creation on the table which doesn't exist
is not correct.
2. Some links were not working and also removed unnecessary things.
3. Included spatial index changes in documentation.

What changes were proposed in this PR?
1. Changed exception message for SI creation on the table which doesn't exist.
2. Corrected the documentation.
3. Included spatial index changes in documentation.

Does this PR introduce any user interface change?
No

Is any new testcase added?
Yes

This closes #3980

20 months ago[CARBONDATA-3965] Fixed float variable target datatype in case of adaptive encoding
Nihal ojha [Thu, 15 Oct 2020 10:59:33 +0000 (16:29 +0530)] 
[CARBONDATA-3965] Fixed float variable target datatype in case of adaptive encoding

Why is this PR needed?
Currently, float variables are using long value 8 bytes to store float data.

What changes were proposed in this PR?
Handled the float variables to consider the target data type based on the given value.

Does this PR introduce any user interface change?
No

Is any new testcase added?
Yes

This closes #3985

20 months ago[HOTFIX] Fix 2 random failures in CI
ajantha-bhat [Tue, 22 Sep 2020 11:53:01 +0000 (17:23 +0530)] 
[HOTFIX] Fix 2 random failures in CI

Why is this PR needed?
There is a random 11 testcase failure in CI.

What changes were proposed in this PR?
a) After analyzing and adding logs, found out that test case added in #3608 has not reset the carbon.enable.auto.load.merge carbon property.
This issue is random as if any other testcase (which resets that carbon property) in CarbonIndexFileMergeTestCase is ran before issue testcase, it will set the value to false and mask the issue. Also in a suite, order of testcase execution is not same always. So, it is random.

b) Test case added by #3832 has a problem. test cdc with compaction fails randomly because 12.2 segment will not be there and merge carbon property is not reset when this is failed.
It is because auto compaction sometimes 0.1 goes for marked for delete during merge operation. There is no record mismatch. Just that 12.2 doesn't exist. It will be in some other segment name. currently removed checking that 12.2 segment.

Does this PR introduce any user interface change?
No

Is any new testcase added?
No

this closes #3948

20 months ago[CARBONDATA-3964] Added test case for select query without filter
Nihal ojha [Fri, 9 Oct 2020 10:58:02 +0000 (16:28 +0530)] 
[CARBONDATA-3964] Added test case for select query without filter

Why is this PR needed?
Added test case for select or select count query without filter to not prune with multi thread.

What changes were proposed in this PR?
Added test case for select or select count query without filter to not prune with multi thread.

This closes #3975

20 months ago[CARBONDATA-3932] [CARBONDATA-3903] change discovery.uri in presto guide and dml...
ShreelekhyaG [Tue, 6 Oct 2020 14:42:10 +0000 (20:12 +0530)] 
[CARBONDATA-3932] [CARBONDATA-3903] change discovery.uri in presto guide and dml document update

Why is this PR needed?
Few document changes in dml, presto-guide.

What changes were proposed in this PR?
change discovery.uri=<coordinator_ip>:8086 to discovery.uri=http://<coordinator_ip>:8086 in presto guide.
dml document update with delta file information.

Does this PR introduce any user interface change?
No

Is any new testcase added?
No

This closes #3969

20 months ago[CARBONDATA-4010] Doc changes for long strings.
Nihal ojha [Fri, 25 Sep 2020 08:56:07 +0000 (14:26 +0530)] 
[CARBONDATA-4010] Doc changes for long strings.

Why is this PR needed?
Added documentation change for the handling of long strings(length greater than 32000) as bad record and set/unset of longStringColumns.

What changes were proposed in this PR?
Added documentation change for the handling of long strings(length greater than 32000) as bad record and set/unset of longStringColumns.

Does this PR introduce any user interface change?
No

Is any new testcase added?
No

This closes #3959

Co-authored-by: Karan980 <karan.bajwa980@gmail.com>
20 months ago[CARBONDATA-4030] Fix getPositionId udf issue in concurrent SI global sort
ajantha-bhat [Tue, 22 Sep 2020 11:57:32 +0000 (17:27 +0530)] 
[CARBONDATA-4030] Fix getPositionId udf issue in concurrent SI global sort

Why is this PR needed?
when concurrent SI global sort is in progress, one load was removing the table property added by the other load. So, the global sort insert for one load was failing with error that unable to find position id in the projection.

What changes were proposed in this PR?
Keep the table properties for main table when SI global sort load is done. No need to remove it.
Tested other scenarios on main table like compaction, insert and select.

Does this PR introduce any user interface change?
No

Is any new testcase added?
No [concurrent scenario]

This closes #3949

20 months ago[CARBONDATA-4028] Fix failed to unlock issue during update
haomarch [Mon, 12 Oct 2020 04:52:52 +0000 (12:52 +0800)] 
[CARBONDATA-4028] Fix failed to unlock issue during update

Why is this PR needed?
1. In the update flow, we unpresist dataset before unlocking. unlock will fail once the dataset unpresist is interrupted.
2. cleanStaleDeltaFiles will hold the lock, which degrade the concurrency perf a lot.

What changes were proposed in this PR?
1. unlock before unpresisting dataset
2. cleanStaleDeltaFiles won't hold the lock.

Does this PR introduce any user interface change?
No

Is any new testcase added?
No

This closes #3978

20 months ago[CARBONDATA-3988] Allow SI creation on first dimension column
ajantha-bhat [Mon, 14 Sep 2020 05:50:54 +0000 (11:20 +0530)] 
[CARBONDATA-3988] Allow SI creation on first dimension column

Why is this PR needed?
In some scenarios like, A table having 100 columns. with sort columns as (A,B,C). Currently we don't allow SI creation on column 'A'. Due to this If the filter is B=x, A=y. There will be huge task to scan main table as SI is not supported for column 'A'. Instead if we allow SI for A,B. There will be less task to scan main table and over all query execution will be faster.
Let user decide he need to create SI for first column or not, instead of we blocking always.

What changes were proposed in this PR?
Allow first dimension column also as SI column.

Does this PR introduce any user interface change?
No

Is any new testcase added?
No

This closes #3924

20 months ago[CARBONDATA-4026] Fix Thread leakage while Loading
haomarch [Sun, 11 Oct 2020 18:56:04 +0000 (02:56 +0800)] 
[CARBONDATA-4026] Fix Thread leakage while Loading

Why is this PR needed?
A few code of Loading/InsertStage won't shutdown executorservice. leads to thread leakage which will degrade the performance of the driver and executor.

What changes were proposed in this PR?
Shutdown executorservices as soon as finish using them.

Does this PR introduce any user interface change?
No

Is any new testcase added?
No

This closes #3976

20 months ago[CARBONDATA-4008] Fixed IN filter on date column is returning 0 results when 'carbon...
Venu Reddy [Wed, 23 Sep 2020 20:01:58 +0000 (01:31 +0530)] 
[CARBONDATA-4008] Fixed IN filter on date column is returning 0 results when 'carbon.push.rowfilters.for.vector' is true

Why is this PR needed?
IN filter on date column is returning 0 results when 'carbon.push.rowfilters.for.vector' is set to true. RowLevelFilterExecutorImpl.applyFilter() calls createRow() and applies filter at row level with expression.evaluate(row) invocation. expression in this case is InExpression. But createRow() missed to fill the date column value. Thus expression always evaluates to false and returns 0 rows.

What changes were proposed in this PR?
Filled the date column value in createRow().
Have removed unused imports introduced in previous PR.(SqlAstBuilderHelper.scala)

Does this PR introduce any user interface change?
No

Is any new testcase added?
Yes

This closes #3953

20 months ago[CARBONDATA-4023] Create MV failed on table with geospatial index using carbonsession
ShreelekhyaG [Mon, 5 Oct 2020 11:17:45 +0000 (16:47 +0530)] 
[CARBONDATA-4023] Create MV failed on table with geospatial index using carbonsession

Why is this PR needed?
Create MV failed on the table with geospatial index using carbonsession.
Failed with, java.lang.ClassNotFoundException: org.apache.carbondata.geo.geohashindex

What changes were proposed in this PR?
When geo table is created with carbon session, the spatial properties are normalized
and converted to lower case. Added spatial index class into noConverterList.

Does this PR introduce any user interface change?
No

Is any new testcase added?
No

This closes #3966

20 months ago[CARBONDATA-4015] Remove hard-coded parameters of the ICarbonLock.lockWithRetries...
Kejian-Li [Tue, 29 Sep 2020 13:58:55 +0000 (21:58 +0800)] 
[CARBONDATA-4015] Remove hard-coded parameters of the ICarbonLock.lockWithRetries method

Why is this PR needed?
Retrycount and retryInterval of compactLock and updateLock is fixed as "3" when they try to get lock, default values of these two parameters is exactly "3", therefore, it is not neccessary to be fixed in code, it is also good to allow users to configure them in the carbon.properties by removing "3".

What changes were proposed in this PR?
Removed the parameters of compactLock and updateLock when they try to get lock.
Besides, I made some obvious but trivial changes.

Does this PR introduce any user interface change?
No

Is any new testcase added?
No

This closes #3964

20 months ago[CARBONDATA-3975]Fix wrong data from carbondata for binary column when read via hive
akashrn5 [Fri, 28 Aug 2020 05:25:18 +0000 (10:55 +0530)] 
[CARBONDATA-3975]Fix wrong data from carbondata for binary column when read via hive

Why is this PR needed?
When binary data read via hive, the results are not the actual
inserted data. This is because the BytesWritable objected will be
given for binary data, we were doing the toString() to get the data
object which gives wrong data for binary as it gives objects to string.

What changes were proposed in this PR?
For BytesWritable, get the bytes from the object and get the bytes
only for the specific length in object and not the extra bits.

This closes #3915

20 months ago[CARBONDATA-4019]Fix CDC merge failure join expression made of AND/OR expressions.
akashrn5 [Mon, 28 Sep 2020 14:58:49 +0000 (20:28 +0530)] 
[CARBONDATA-4019]Fix CDC merge failure join expression made of AND/OR expressions.

Why is this PR needed?
1. In CDC ,when the join expression contains AND/OR expression, then it failed with CAST exception
2. when multiple columns are present in join condition, then not all columns are considered to check as
bucket columns to repartition.
What changes were proposed in this PR?
1. Instead of directly casting to equalTo expression to get join column, collect all attributes
2. check if all join columns present in bucket columns and then only repartition the data.

This closes #3961

20 months ago[CARBONDATA-4017]Fix the insert issue when the column name contains '\' and fix SI...
akashrn5 [Mon, 28 Sep 2020 14:27:42 +0000 (19:57 +0530)] 
[CARBONDATA-4017]Fix the insert issue when the column name contains '\' and fix SI creation issue

Why is this PR needed?
1. when the column name contains the backslash character and the table is created with carbon session,
   insert fails second time. This is because, the .fromGson method takes input string, if that has \,
   it will escape that char, eventhough its valid.
2. when column name has special characters, SI creation fails in parsing.

What changes were proposed in this PR?
1. replace the \ char jason string to \\, so that only one character is escaped.
2. Use CarbonSparkUtil.getRawSchema to get the schema which wrap `` characters around column names and
   helps in parsing.

Does this PR introduce any user interface change?
No

Is any new testcase added?
Yes

This closes #3962

20 months ago[CARBONDATA-4018]Fix CSV header validation not contains dimension columns
akashrn5 [Mon, 28 Sep 2020 15:29:25 +0000 (20:59 +0530)] 
[CARBONDATA-4018]Fix CSV header validation not contains dimension columns

Why is this PR needed?
CSV header validation not considering the dimension columns in schema

What changes were proposed in this PR?
refactor the code to consider the dimensions in schema for csv header validation

Does this PR introduce any user interface change?
No

Is any new testcase added?
No

This closes #3963

20 months ago[CARBONDATA-4016] NPE and FileNotFound in Show Segments and Insert Stage
haomarch [Tue, 29 Sep 2020 13:31:40 +0000 (21:31 +0800)] 
[CARBONDATA-4016] NPE and FileNotFound in Show Segments and Insert Stage

Why is this PR needed?
1. Insert Stage, While Spark read Stages which are writting by Flink in
the meanwhile, JSONFORMAT EXCEPTION maybe be thrown as the stage file is in writing.
2. Show Segments with STAGE, when read stages which are writting by Flink
or deleting by spark. JSONFORMAT EXCEPTION will be thrown as the stage file is in writing.
3. Show Segment will load partition info for non-partition table, leading
to bad performance, which shall be avoided.
4. In getLastModifiedTime of TableStatus, if the timestamp is empty,
getLastModifiedTime throw Exception. Accoding to getLoadEndTime(), we shall return -1.

What changes were proposed in this PR?
1. Insert Stage, add RETRY to read stage file.
2. Show Segments with STAGE, add RETRY to read stage.
3. Show Segment load partition only for partition table
4. getLastModifiedTime return -1 if the timestamp is empty.

This closes #3965

21 months ago[CARBONDATA-4014] Support Change Column Comment 3947/head
haomarch [Mon, 28 Sep 2020 07:04:20 +0000 (15:04 +0800)] 
[CARBONDATA-4014] Support Change Column Comment

Why is this PR needed?
Now, we support add column comment in "CREATE TABLE" and
"ADD COLUMN". but do not support alter comment of the column,
which shall be support in 'CHANGE COLUMN'

What changes were proposed in this PR?
Support "ALTER TABLE table_name CHANGE [COLUMN] col_name
col_name data_type [COMMENT col_comment]"

Does this PR introduce any user interface change?
Yes. add CHANGE COLUMN explaination in the ddl document.

Is any new testcase added?
Yes

This closes #3960

21 months ago[CARBONDATA-4011] drop index table is failed with table not found exception
Mahesh Raju Somalaraju [Fri, 25 Sep 2020 07:13:42 +0000 (12:43 +0530)] 
[CARBONDATA-4011] drop index table is failed with table not found exception

Why is this PR needed?
drop index table is failed with table not found exception.
Passing index table name instead of main table name while creating the SI.
When creating an empty main table and empty SI table and then drop only SI table causing problem.
If we load any data into maintable then the same field is updating in table refresh flow. But currently, we have not loaded data into tables, we just create table and then dropping hence the issue.
Problem code:

     val indexTableMeta = new IndexMetadata(indexTableName, true, carbonTable.getTablePath)

What changes were proposed in this PR?
Pass the main table name instead of index table name while creating the index metadata in SI creation flow.
Fixed code:

     val indexTableMeta = new IndexMetadata(mainTableName, true, carbonTable.getTablePath)

Does this PR introduce any user interface change?
No

Is any new testcase added?
Yes

This closes #3957

21 months ago[CARBONDATA-4009] Fix PartialQueries not hitting mv
Indhumathi27 [Thu, 24 Sep 2020 16:45:37 +0000 (22:15 +0530)] 
[CARBONDATA-4009] Fix PartialQueries not hitting mv

Why is this PR needed?
If a MV having aggregation, is created with all columns present in main table,
then some partial-queries are not hitting mv.

What changes were proposed in this PR?
When all columns are given in projection in a aggregate query, logical plan
will not have Project node. Added Project node to logical plan in this case,
to match partialqueries also to mv. In GroupByGroupByNochildData pattern,
added check for checking CAST(aggregate expression) and used group by result
to get final compensation result

Does this PR introduce any user interface change?
No

Is any new testcase added?
Yes

This closes #3955

21 months ago[CARBONDATA-4005] SI with cache level blocklet issue
ShreelekhyaG [Tue, 22 Sep 2020 13:04:28 +0000 (18:34 +0530)] 
[CARBONDATA-4005] SI with cache level blocklet issue

Why is this PR needed?
Select query on SI column returns blank resultset after changing the cache
level to blocklet

What changes were proposed in this PR?
In case of CACHE_LEVEL = BLOCKLET, blockId path contains both block id and
blocklet id. In getShortBlockId , added check for blocklet id file seperator
and made change to replace only the compressor name.
Added example in testcase.

Does this PR introduce any user interface change?
No

Is any new testcase added?
Yes

This closes #3951

21 months ago[CARBONDATA-4002] Fix removal of columns from table schema.
Karan980 [Tue, 22 Sep 2020 07:12:36 +0000 (12:42 +0530)] 
[CARBONDATA-4002] Fix removal of columns from table schema.

Why is this PR needed?
When we change the value of sort_columns property and then perform
an alter table query to unset long_string_columns. It results in
removal of columns from table schema.

What changes were proposed in this PR?
Added fix to avoid removal of columns from table schema.

Does this PR introduce any user interface change?
No

Is any new testcase added?
Yes

This closes #3946

21 months ago[CARBONDATA-3996]Fixed show table extended like command exception
Venu Reddy [Fri, 18 Sep 2020 15:50:35 +0000 (21:20 +0530)] 
[CARBONDATA-3996]Fixed show table extended like command exception

Why is this PR needed?
Show table extended like command throws java.lang.ArrayIndexOutOfBoundsException.
Same showTablesCommand class is used for show tables command and show table
extended like command from spark. The output attributes for show tables command
and show table extended like command are 3 and 4 respectively.
CarbonShowTablesCommand class handles for show tables with 3 output attributes.
Thus have exception when show table extended like command is executed.

What changes were proposed in this PR?
Instead of carbondata querying from session catalog and forming the output rows,
can call showTablesCommand.run(sparkSession), get the output rows for tables and
filter out rows corresponding to MV tables.

Does this PR introduce any user interface change?
No

Is any new testcase added?
Yes

This closes #3938

21 months ago[CARBONDATA-4000] Presto select query failure right after firing update query.
akkio-97 [Mon, 21 Sep 2020 09:11:07 +0000 (14:41 +0530)] 
[CARBONDATA-4000] Presto select query failure right after firing update query.

Why is this PR needed?
The putObject() method implementation was missing due to which select query on struct complex data type after update queries were failing.

What changes were proposed in this PR?
Added implementation in ColumnarVectorWrapperDirectWithDeleteDelta. Earlier without this implementation control went to its parent class AbstractCarbonColumnarVector,java which was unsupported.

Does this PR introduce any user interface change?
No

Is any new testcase added?
No

This closes #3943

21 months ago[CARBONDATA-3998] Fixed file not found exception for hive during insert
kunal642 [Mon, 21 Sep 2020 11:34:20 +0000 (17:04 +0530)] 
[CARBONDATA-3998] Fixed file not found exception for hive during insert

Why is this PR needed?
FileNotFoundException being thrown in hive during insert.

What changes were proposed in this PR?
During insert the path in the parameters for write is for staging directory,
because carbon is non-native table therefore this directory does not exist.
When getAbsolutePath is called on this directory, it throws FileNotFound
exception. Removed the getAbsolutePath call to avoid this.

Does this PR introduce any user interface change?
No

Is any new testcase added?
No

This closes #3941

21 months ago[CARBONDATA-3997] Fix decimal value reading issue for negative decimal
ajantha-bhat [Mon, 21 Sep 2020 05:42:00 +0000 (11:12 +0530)] 
[CARBONDATA-3997] Fix decimal value reading issue for negative decimal
numbers from presto

Why is this PR needed?
Reading negative decimal numbers gives the wrong value from presto.

What changes were proposed in this PR?
When complex decimal column is stored with DIRECT_COMPRESS codec,
DataTypeUtil#bigDecimalToByte is used to create a byte array. So, while
decoding it, need to use DataTypeUtil#byteToBigDecimalto get back the original value.
Originally added a TODO to find what is happening at write step for
decimal, handled as part of this issue.

This closes #3940

21 months ago[CARBONDATA-4001] Fix SI global sort load on partition table
ajantha-bhat [Mon, 21 Sep 2020 13:26:39 +0000 (18:56 +0530)] 
[CARBONDATA-4001] Fix SI global sort load on partition table

Why is this PR needed?
On a partition table, when SI is created with global sort and
when data is loaded. It shows 0 rows as main table query results is 0 rows.

What changes were proposed in this PR?
For partition table, local sort SI flow current.segmentfile
is set in CarbonSecondaryIndexRDD
For the global sort, this value was not set. so, the main table
query was resulting in 0 rows. Setting this value for global sort flow also.

This closes #3944

21 months ago[CARBONDATA-3995] Support presto querying older complex type stores 3930/head
ajantha-bhat [Fri, 18 Sep 2020 07:11:45 +0000 (12:41 +0530)] 
[CARBONDATA-3995] Support presto querying older complex type stores

Why is this PR needed?
Before carbon 2.0, complex child length is stored as SHORT for string,
varchar, binary, date, decimal types.
So, In 2.0 as it is stored as INT, presto complex query code always
assumes it as INT and goes to out of bound exception when old store is queried.

What changes were proposed in this PR?
If INT_LENGTH_COMPLEX_CHILD_BYTE_ARRAY encoding is present, parse as
INT, else parse as SHORT. so, that both stores can be queried.

This closes #3937

21 months ago[CARBONDATA-3914] Fixed exception on reading data from carbon-hive empty table.
Nihal ojha [Thu, 17 Sep 2020 14:33:08 +0000 (20:03 +0530)] 
[CARBONDATA-3914] Fixed exception on reading data from carbon-hive empty table.

Why is this PR needed?
Reading data from empty carbontable through hive beeline was giving 'Unable read Carbon Schema' exception when no data is present in the carbon table. In case of empty table, some additional fields are present in the columns. And also schema is comma-separated which we are expecting to be colon-separated.

What changes were proposed in this PR?
Return the empty data if no data is present. Validated the columns and column types and removed, if any extra field was added. Also parsed the schema in such a way that it can consider comma-separated values also.

Does this PR introduce any user interface change?
No

Is any new testcase added?
Yes

This closes #3936

21 months ago[CARBONDATA-3990] Fix DropCache log error when indexmap is null on SI table
Indhumathi27 [Tue, 15 Sep 2020 06:39:04 +0000 (12:09 +0530)] 
[CARBONDATA-3990] Fix DropCache log error when indexmap is null on SI table

Why is this PR needed?
1. DropCache on Maintable having SI throws NPE in error log, when refreshRequired
for SI table Schema is false.
2. While direct upgrading store to current version for tables having SI, query
fails with NPE, as indexProperties is null.

What changes were proposed in this PR?
1. Check if indexMetadata has indexmap or not, in case of index table, this value
will be null or empty. if null, return empty list.
2. If indexProperties is null in case of compatibility scenarios, prepare
indexProperties from indexColumns
3. Removed throwable in warning message on listFiles

Does this PR introduce any user interface change?
No

Is any new testcase added?
No

This closes #3928

21 months ago[CARBONDATA-3891] Fix loading data will update all segments updateDeltaEndTimestamp
IceMimosa [Mon, 20 Jul 2020 15:08:40 +0000 (23:08 +0800)] 
[CARBONDATA-3891] Fix loading data will update all segments updateDeltaEndTimestamp

Why is this PR needed?
Loading Data to the partitioned table will update all segments updateDeltaEndTimestamp,that will cause the driver to clear all segments cache when doing the query.

What changes were proposed in this PR?
update only the current insert overwrite segment.

Does this PR introduce any user interface change?
No

Is any new testcase added?
Yes

This closes #3848

21 months ago[CARBONDATA-3942] Fix type cast when loading data into partitioned table
IceMimosa [Thu, 6 Aug 2020 08:32:33 +0000 (16:32 +0800)] 
[CARBONDATA-3942] Fix type cast when loading data into partitioned table

Why is this PR needed?
Loading Int type data to carbondata double type, the value will be broken like this:

+---+----+
|cnt |time|
+---+----+
|4.9E-323|2020|
|1.0E-322|2020|
+---+----+

original cnt value is: 10, 20

What changes were proposed in this PR?
handle cast for partition table

Does this PR introduce any user interface change?
No

Is any new testcase added?
Yes

This closes #3884

21 months ago[CARBONDATA-3981] Presto filter check on binary, byte and float datatypes
akkio-97 [Thu, 10 Sep 2020 16:05:22 +0000 (21:35 +0530)] 
[CARBONDATA-3981] Presto filter check on binary, byte and float datatypes

Why is this PR needed?
Due to the absence of binary, byte and float datatypes check, there were either empty results or a problem during object serialisation in presto filter queries.

What changes were proposed in this PR?
Above datatype conversions and checks has been added in prestoFIlterUtil.java

Does this PR introduce any user interface change?
No

Is any new testcase added?
Yes

This closes #3920

21 months ago[CARBONDATA-3989] Fix unnecessary segment files creation when segment is neither...
akashrn5 [Mon, 7 Sep 2020 09:59:32 +0000 (15:29 +0530)] 
[CARBONDATA-3989] Fix unnecessary segment files creation when segment is neither updated nor deleted.

Why is this PR needed?
Unnecessary segment file is created for the segment, even though the segment is neither updated nor deleted.
Once the segment files are merged, old segment files are still present and will keep on increasing until clean files is fired.

What changes were proposed in this PR?
Create the new segment files only when the segment is updated or deleted data.
once the segment file merge is done, delete the old segment files to avoid many segment files in the metadata directory.

Does this PR introduce any user interface change?
No

Is any new testcase added?
No

This closes #3927

21 months ago[CARBONDATA-3984] compaction on table having range column after altering datatype...
Karan980 [Sun, 13 Sep 2020 18:21:22 +0000 (23:51 +0530)] 
[CARBONDATA-3984] compaction on table having range column after altering datatype from string
to long string fails

Why is this PR needed?
Fix multiple issues occurred after altering the column dataType to long_string_column.
a) When dataType of a String column which is also provided as range column in table properties
is altered to long_string_column. It throws following error while performing compaction on the
table.
VARCHAR not supported for the filter expression;
b) When longStringColumn name is present in UpperCase then Validation check for SortColumns
fails. As names of SortColumns are present in LowerCase.

What changes were proposed in this PR?
a) Added condition for VARCHAR datatype in all conditional expressions.
b) Changed the long_string_columns name to lowerCase before doing validation.

Does this PR introduce any user interface change?
No

Is any new testcase added?
Yes

This closes #3923

21 months ago[CARBONDATA-3986] Fix multiple issues during compaction and concurrent scenarios
ajantha-bhat [Wed, 29 Jul 2020 08:20:08 +0000 (13:50 +0530)] 
[CARBONDATA-3986] Fix multiple issues during compaction and concurrent scenarios

Why is this PR needed?
Fix multiple issues during compaction and concurrent scenarios
a) Auto compaction/multiple times minor compaction is called, it was considering
compacted segments and coming compaction again ad overwriting the files and segments
b) Minor/ auto compaction should skip >=2 level segments, now only skipping =2 level
segments
c) when compaction failed, no need to call merge index
d) At executor, When segment file or table status file failed to write during merge
index event, need to remove the stale files.
e) during partial load cleanup segment folders are removed but segment metadata files
were not removed
f) Some table status retry issues
g) BlockIndex was not checking for empty partition

What changes were proposed in this PR?
a) Auto compaction/minor compaction consider only SUCCESS or PARTIAL_SUCCESS Segments
b) Minor/ auto compaction should skip >=2 level segments
c) when compaction failed, no need to call merge index
d) At executor, When segment file or table status file failed to write during merge
index event, Remove the stale files.
e) During partial load cleanup segment metadata files also need to be removed
f) add retry to table status
g) BlockIndex need to check for empty partition

Does this PR introduce any user interface change?
No

Is any new testcase added?
No [as mostly concurrent scenarios]

This closes #3871

21 months ago[CARBONDATA-3983] Fix SI compatability issue after tupleID format changed
ShreelekhyaG [Fri, 11 Sep 2020 09:36:06 +0000 (15:06 +0530)] 
[CARBONDATA-3983] Fix SI compatability issue after tupleID format changed

Why is this PR needed?
Read from maintable having SI returns empty resultset when SI is stored with
old tuple id storage format.

What changes were proposed in this PR?
Checked if blockletPath contains old tuple id format, and convert it to
compatible format.

Does this PR introduce any user interface change?
No

Is any new testcase added?
No, tested in cluster

This closes #3922

21 months ago[CARBONDATA-3980] Load fails with aborted exception when Bad records action is unspec...
ShreelekhyaG [Thu, 10 Sep 2020 11:00:05 +0000 (16:30 +0530)] 
[CARBONDATA-3980] Load fails with aborted exception when Bad records action is unspecified

Why is this PR needed?
Load fails with aborted exception when Bad records action is unspecified.

When the partition column is loaded with a bad record value, load fails with 'Job aborted' message in cluster. However in complete stack trace we can see the actual error message. (Like, 'Data load failed due to bad record: The value with column name projectjoindate and column data type TIMESTAMP is not a valid TIMESTAMP type')

What changes were proposed in this PR?
Fix bad record error message for the partition column. Added the error message to operationContext map and if its not null throwing exception with errorMessage from CarbonLoadDataCommand.

Does this PR introduce any user interface change?
No

Is any new testcase added?
Yes

This closes #3919

21 months ago[CARBONDATA-3928] Removed records from exception message.
Nihal ojha [Fri, 11 Sep 2020 07:31:37 +0000 (13:01 +0530)] 
[CARBONDATA-3928] Removed records from exception message.

    Why is this PR needed?
    Currently, when the string length exceeds 32000 and bad record action as default then
    records are thrown in exception message which violates security concern.

    What changes were proposed in this PR?
    Removed the records from exception message and only printed in logger file and redirected csv file.

    Does this PR introduce any user interface change?
    No

    Is any new testcase added?
    Yes

This closes #3921

21 months ago[CARBONDATA-3793]Fix update and delete issue when multiple partition columns are...
akashrn5 [Fri, 4 Sep 2020 05:52:06 +0000 (11:22 +0530)] 
[CARBONDATA-3793]Fix update and delete issue when multiple partition columns are present and clean files issue

Why is this PR needed?
1. After #3837 , when there are multiple partition columns are present in table,
update and delete not happening as , it was considering the tuple id as external
segment tuple ID , Because when multiple partitions are present TID contains # character.
2. when multiple segments are present, and some segments are updated, and clean
files delete the segment files of non updated segments considering as stale files.

What changes were proposed in this PR?
1. To double check for external segment, check if the segment metadata details has path is not null.
2. delete the old segment files of only the updated segments.

This closes #3911

21 months ago[CARBONDATA-3982] Use Partition instead of Span to split legacy and
Indhumathi27 [Thu, 10 Sep 2020 09:31:12 +0000 (15:01 +0530)] 
[CARBONDATA-3982] Use Partition instead of Span to split legacy and
non-legacy segments for executor distribution in indexserver

Why is this PR needed?
When we use segments.span to split legacy segments and non-legacy
segments where legacy segment index size is zero, segments list is empty.

What changes were proposed in this PR?
Use segments.partition instead of span to split legacy segments and non-legacy segments

This closes #3918

21 months ago[CARBONDATA-3967] cache partition on select to enable faster pruning
kunal642 [Thu, 27 Aug 2020 09:27:04 +0000 (14:57 +0530)] 
[CARBONDATA-3967] cache partition on select to enable faster pruning

Why is this PR needed?
spark's getPartition method can sometime take a lot of time which can degrade the performance for the queries.

What changes were proposed in this PR?
Cache the partition on each load and query so that the subsequent queries can perform faster. Caching is done under the expiring map interface so the cache expiration time can work for this also.

Does this PR introduce any user interface change?
No

Is any new testcase added?
Yes

This closes #3908

21 months ago[CARBONDATA-3974] Improve partition purning performance in presto carbon integration
ajantha-bhat [Fri, 4 Sep 2020 17:04:19 +0000 (22:34 +0530)] 
[CARBONDATA-3974] Improve partition purning performance in presto carbon integration

Why is this PR needed?
a) For 200K segments table in cloud, presto partition query was taking
more than 5 hours. the reason is it was reading all segment files for
partition pruning. Now it is less than a minute !
b) If the query filter is < or > or more than one value.
Partition pruning is not working in presto.
c) prestodb profile compilation is broken from previous PR

What changes were proposed in this PR?
a) HiveTableHandle already have partition spec, matching for the filters
(it has queried metastore to get all partitions and pruned it). So, create
partitionSpec based on that. Also handled for both prestodb and prestosql
b) #3885 , broke prestodb compilation, only prestosql is compiled.
c) #3887, also didn't handled prestodb

This closes #3913

21 months ago[CARBONDATA-3922] Support order by limit push down for secondary index queries
ajantha-bhat [Thu, 23 Jul 2020 12:10:19 +0000 (17:40 +0530)] 
[CARBONDATA-3922] Support order by limit push down for secondary index queries

Why is this PR needed?
a) Limit pushdown for SI is already supported. But when order by column is
not SI column, Still we were pushing down limit. Need to fix it.
b) when Limit is present and order by column and all the filter column is
SI column. we can pushdown order by + limit.
This can reduce SI output results and reduce the scan time in main table.
c) SI transformation rule is applied even though any relation don't contain SI

What changes were proposed in this PR?
a) Block limit push down if order by column is not an SI column
b) when Limit is present and order by column and all the filter column is
SI column, pushdown order by + limit
c) SI transformation rule need to apply only when any relation contains SI

This closes #3861

21 months ago[CARBONDATA-3961] Reorder filter expression based on storage ordinal
kunal642 [Wed, 26 Aug 2020 08:13:47 +0000 (13:43 +0530)] 
[CARBONDATA-3961] Reorder filter expression based on storage ordinal

Why is this PR needed?
Currently the filter is being executed in the user specified order, which may be different than the storage order. This can cause a lot of backward seek in cloud storage solutions resulting in slower performance.

What changes were proposed in this PR?
Reorder the filter according to the column storage ordinal.

Does this PR introduce any user interface change?
No

Is any new testcase added?
Yes

This closes #3902

21 months ago[CARBONDATA-3969] Fix Deserialization issue with DataType class
Indhumathi27 [Tue, 1 Sep 2020 12:16:11 +0000 (17:46 +0530)] 
[CARBONDATA-3969] Fix Deserialization issue with DataType class

Why is this PR needed?
When DataType(For eg, StringType) object is serialized and deserialized using Gson, DataType object after deserialization, gets changed to Main class (DataType) instance instead of child type(StringType in this example).

Because of this, presto query on table with complex columns fails with NPE, because while filing DimensionAndMeasureDetails(SegmentProperties.fillDimensionAndMeasureDetails) from CarbonLocalInputSplit.getDetailInfo, list of child dimensions will be left unfilled for Parent Carbon Dimension.

What changes were proposed in this PR?
Override JsonDeserializer method for DataType and deserialize the jsonObject based on its DataType child class instance.
Add registerTypeAdapter for DataType class to gsonObject, while deserializing carbonLocalInputSplit.detailInfo.

Does this PR introduce any user interface change?
No

Is any new testcase added?
Yes

This closes #3910

21 months ago[CARBONDATA-3923] support global sort for SI
ajantha-bhat [Thu, 4 Jun 2020 12:57:04 +0000 (18:27 +0530)] 
[CARBONDATA-3923] support global sort for SI

Why is this PR needed?
Secondary index is always created with local sort, should support
global sort, it can improve SI lookup performance.

What changes were proposed in this PR?
support sort_scope and global_sort_partitions in create index property.

This closes #3787

21 months ago[CARBONDATA-3865] Implementation of delete/update feature in carbondata SDK.
Karan-c980 [Tue, 14 Apr 2020 19:07:42 +0000 (00:37 +0530)] 
[CARBONDATA-3865] Implementation of delete/update feature in carbondata SDK.

Why is this PR needed?
Currently carbondata SDK doesn't provide delete/update feature.
This PR will supports carbondata SDK to delete/update of records from carbondata files

What changes were proposed in this PR?
With the help of this PR carbondata SDK will support delete/update features.

This closes #3834

21 months ago[CARBONDATA-3855] Support carbon SDK to load data from different files
Nihal ojha [Fri, 26 Jun 2020 09:06:25 +0000 (14:36 +0530)] 
[CARBONDATA-3855] Support carbon SDK to load data from different files

Why is this PR needed?
    Currently, carbon SDK doesn't support loading the data from Parquet, ORC, CSV, AVRO, or JSON file. Loading of these types of files is supported by the spark-SQL library. This PR will support carbon   SDK to load data from Parquet, Avro, CSV, and ORC file.

What changes were proposed in this PR?
    With the help of this PR now carbon can load data from different types of files as mentioned above. Loading of these types of files is possible in different ways like carbon can load a single file at a given path or it can load all the files under the given directory or load only selected files under the given directory. In case of loading the multiple files, it is must that schema of all the files should same and all files are of the same type either Parquet, ORC, Avro, CSV, or JSON.

Does this PR introduce any user interface change?
    No

Is any new testcase added?
    Yes

This closes #3819

21 months ago[CARBONDATA-3964] Fixed, null pointer excption for select query and time zone depende...
Nihal ojha [Thu, 27 Aug 2020 08:28:29 +0000 (13:58 +0530)] 
[CARBONDATA-3964] Fixed, null pointer excption for select query and time zone dependent test
failures.

Why is this PR needed?
1. In case of 1 million record and 500 segments select query without filter is thowing null
pointer exception.
2. Currently some testcases are failing releated to timestamp and time zone.

What changes were proposed in this PR?
1. Select query without filter should execute pruneWithoutFilter method rather than
pruneWithMultiThread. Added null check for filter.
2. According to timezone version releases for Java we have different DST rule for different
JRE version. In this PR we have Changed the testcase timezone and date to be compatible.

Does this PR introduce any user interface change?
No

Is any new testcase added?
No

This closes #3905

21 months ago[CARBONDATA-3968]Added test cases for hive read complex types and handled other issues
akkio-97 [Thu, 27 Aug 2020 20:29:02 +0000 (01:59 +0530)] 
[CARBONDATA-3968]Added test cases for hive read complex types and handled other issues

Why is this PR needed?
Handled issues related to reading of byte, varchar and decimal types.
Map of primitive type with only one row inserted had issues.
Added test cases for hive read complex types.

What changes were proposed in this PR?
Byte datatype check was not present.
Varchar and decimal types were causing a problem during conversion from hive
datatypes to carbon(due to the presence of parentheses).
Handled map parser issue.
Added test cases for all primitive types excluding - binary datatype.

This closes #3906

21 months ago[CARBONDATA-3959] Added new property to set the value of executor
Karan980 [Mon, 17 Aug 2020 13:16:53 +0000 (18:46 +0530)] 
[CARBONDATA-3959] Added new property to set the value of executor
LRU cache size to 70% of the total executor memory in IndexServer,
if executor LRU cache size is not configured

Why is this PR needed?
This PR will set executor LRU cache memory to 70% of executor memory
size, if it is not configured.

What changes were proposed in this PR?
Added new property to set executor LRU cache size to 70%

This closes #3893

21 months ago[CARBONDATA-3957] Added property to enable disable the repair logic
Vikram Ahuja [Tue, 18 Aug 2020 06:42:03 +0000 (12:12 +0530)] 
[CARBONDATA-3957] Added property to enable disable the repair logic
and provide a limit to number of segments in SILoadEventListenerForFailedSegments

Why is this PR needed?
In the main table with SI tables after every load/insert command ,
SILoadEventListenerForFailedSegments.scala checks for missing segments or
segments mismatch in SI table and loads the missing/deleted segments to the SI
table. In case when there are very large number of missing segments in the SI
table(10000's), the repair logic will run for multiple days and will thus block the next load.

What changes were proposed in this PR?
The above mentioned issue is solved using 2 carbon properties.

1. carbon.load.si.repair- This property lets the user enable/disable the repair
SI logic in SILoadEventListenerForFailedSegments. The default value of this property is true.
2. carbon.si.repair.limit - This property decides the number of failed segments that
are being loaded again in the SI table in SILoadEventListenerForFailedSegments.
By default repairing all the segments. Instead of repairing all the segments in one
load the user can now set a limit thus not blocking the next load for the in case
of large number of missing SI segments.

This closes #3894

21 months ago[CARBONDATA-3916] Support array complex type with SI
Indhumathi27 [Thu, 21 May 2020 09:36:52 +0000 (15:06 +0530)] 
[CARBONDATA-3916] Support array complex type with SI

Why is this PR needed?
Currently, SI supports only dimension columns as index columns. This PR will support creating index with array data type.

What changes were proposed in this PR?
Support SI with array type
Store ARRAY type as STRING type internally, by storing data as flattened.
Currently, only one level of complex type is supported. Nested types will be supported in future PR
Support query on complex type, by rewriting the filter expression

This closes #3778

21 months ago[CARBONDATA-3960] Default comment should be null when adding columns
QiangCai [Tue, 25 Aug 2020 11:05:07 +0000 (19:05 +0800)] 
[CARBONDATA-3960] Default comment should be null when adding columns

Why is this PR needed?
1. column comment is an empty string by default when adding a column
2. there are too many redundancy codes

What changes were proposed in this PR?
1. change default column comment to null
2. re-factory code

Does this PR introduce any user interface change?
No

Is any new testcase added?
Yes

This closes #3898

21 months ago[CARBONDATA-3956] Reindex command on SI table
Vikram Ahuja [Wed, 29 Jul 2020 12:31:04 +0000 (18:01 +0530)] 
[CARBONDATA-3956] Reindex command on SI table

Why is this PR needed?
In the main table with SI tables after every
load/insert command , SILoadEventListenerForFailedSegments.scala
checks for missing segments or segments mismatch in SI table
and loads the missing/deleted segments to the SI table.
This functionality is dependent on the load/insert command.
A new functionality/command is required so that this repair
logic can be made independent to the load/insert logic.

What changes were proposed in this PR?
Added a separate SQL reindex command(reindex [index_table]
on table maintable) to call the SI repair logic without load/insert.

This closes #3873

21 months ago[CARBONDATA-3820] CDC update as new segment use target table's sort_scope
ajantha-bhat [Wed, 26 Aug 2020 07:30:25 +0000 (13:00 +0530)] 
[CARBONDATA-3820] CDC update as new segment use target table's sort_scope

Why is this PR needed?
Originally when CDC is developed, it was using target table sort_scope for new segment added but

What changes were proposed in this PR?
CDC update as new segment should use target table sort_scope

Does this PR introduce any user interface change?
No

Is any new testcase added?
No (verified manually the flows)

This closes #3901

22 months ago[CARBONDATA-3963]Fix hive timestamp data mismatch issue and empty data during query...
akashrn5 [Wed, 26 Aug 2020 08:53:58 +0000 (14:23 +0530)] 
[CARBONDATA-3963]Fix hive timestamp data mismatch issue and empty data during query issue

Why is this PR needed?
1. when carbon table is queried through beeline, gives empty data.
2. the timestamp data given by carbon table is different than hive table.
Because during read we used to send the Timestamp value to WritableTimestampObjectInspector's
create method, which basically was converting the value to EpochMillli, which resulted in the
time value go different than the actual input data.

What changes were proposed in this PR?
1. Pass the carbon storage_handler into the table parameters
2. Convert the the long value to formatted string and directly form the TimestampWritableV2,
by passing the Hive's Timestamp object which avoid EpochMilli and gives the proper data as output.

This closes #3903

22 months ago[CARBONDATA-3830] Support Array and Struct of all primitive type reading from presto
ajantha-bhat [Thu, 13 Aug 2020 16:35:15 +0000 (22:05 +0530)] 
[CARBONDATA-3830] Support Array and Struct of all primitive type reading from presto

Why is this PR needed?
Currently, presto cannot read complex data type stores. Sometimes it gives empty results and some times exception.

What changes were proposed in this PR?
Supported all the 13 complex primitive types (including binary, refer the testcase added) with non-nested array and struct data type

Supported complex type in Direct vector filling flow :
Currently, spark integration carbondata will use row level filling for complex type instead of vector filling. But presto supports only vector reading. so need to support complex type in vector filling.

Supported complex primitive vector handling in DIRECT_COMPESS, ADAPTIVE_CODEC flows
Encoding of all the complex primitive type is either DIRECT_COMPESS or ADAPTIVE_CODEC, it will never use a legacy encoding. so, because of this string, varchar (with/without local dictionary), binary, date vector filling need to handle in DIRECT_COMPESS. Parent column also comes as DIRECT_COMPESS. Extracted data from parent column page here.

Supported vector stack in complex column vectorInfo to store all the children vectors.

Keep a list of children vector inside CarbonColumnVectorImpl.java

Support ComplexStreamReader to fill presto ROW (struct) block and ARRAY block.

Handle null value filling by wrapping children vector with ColumnarVectorWrapperDirect

Limitations / next work:
Some pending TODO 's are,

Local dictionary need to handle for string / varchar columns as DIRECT_COMPRESS flow don't have that handling
Can support map of all primitive types
Can support multilevel nested arrays and struct

Does this PR introduce any user interface change?
No

Is any new testcase added?
Yes [Added test case for all 13 primitive type with array and struct, null values and more than one page data]

This closes #3887

Co-authored-by: akkio-97 <akshay.nuthala@gmail.com>
22 months ago[CARBONDATA-3962]Remove unwanted empty fact directory in case of flat_folder table
akashrn5 [Wed, 26 Aug 2020 11:46:09 +0000 (17:16 +0530)] 
[CARBONDATA-3962]Remove unwanted empty fact directory in case of flat_folder table

Why is this PR needed?
In case of flat folder, we write the data files directly at table path,
so fact dir is not required. Fact dir is unwanted and present as empty dir.

What changes were proposed in this PR?
Remove empty fact dirs

This closes #3904

22 months ago[CARBONDATA-3955] Fix load failures due to daylight saving time changes
ShreelekhyaG [Tue, 18 Aug 2020 13:01:12 +0000 (18:31 +0530)] 
[CARBONDATA-3955] Fix load failures due to daylight saving time changes

Why is this PR needed?
1. Fix load failures due to daylight saving time changes.
2. During load, date/timestamp year values with >4 digit should fail or
be null according to bad records action property.

What changes were proposed in this PR?
New property added to setLeniet as true and parse timestampformat.
Added validation for timestamp range values.

Does this PR introduce any user interface change?
No

Is any new testcase added?
Yes

This closes #3896

22 months ago[HOTFIX] Avoid cleaning segments after reading tablestatus failed
QiangCai [Tue, 25 Aug 2020 13:11:39 +0000 (21:11 +0800)] 
[HOTFIX] Avoid cleaning segments after reading tablestatus failed

Why is this PR needed?
1. After reading tablestatus file failed, method TableProcessingOperations.
deletePartialLoadDataIfExist will delete all related segments.
2. If the tablestatus file was removed, the system will delete all original
segment before loading.

What changes were proposed in this PR?
1. check the result of reading tablestatus file, if it is empty, no need to process.
2. if the table status was removed, the system shouldn't delete any segment.
3. re-factory code to avoid invoking getAbsolutePath method too many times.

This closes #3899

22 months ago[CARBONDATA-3929] Improve CDC performance
akashrn5 [Thu, 28 May 2020 18:38:25 +0000 (00:08 +0530)] 
[CARBONDATA-3929] Improve CDC performance

Why is this PR needed?
This PR is to improve the CDC merge performance. CDC is currently very slow in the case of full outer joins and slow in normal cases. Identified pain points are as below:
1. currently we are writing the intermediate delete data to carbon format, which is the columnar format, and we do a full scan which is slow. Here since intermediate, we do full scan, compression, columnar format, its all-time taking.
2. Full outer join case is very slow.
3. when we insert new data into new segments, we follow the old insert flow with the converter step.
4. since we write the intermediate data carbon format, we use coalesce to limit the partition to number of active executors.

What changes were proposed in this PR?
Some improvements points are identified as below
1. Write the intermediate data to a faster row format like Avro.
2. use bucketing on join column and do the repartition of the Dataframe before performing the join operation, which avoids the shuffle on one side as shuffle is major time consuming part in join.
3. make the insert flow to the new flow without the converter step.
4. remove coalesce and can use resource to write the intermediate Avro data in a faster way.

Performance results
DataSize -> 2GB target table data
230MB source table data
InnerJoin case - around 17000+ deleted rows, 70400 odd updated rows
Full outer Join case - 2million target data, 0.2million src data, 70400 odd rows updated and some deleted
                Old Time(sec)         New Time(sec)
Join Type 1st time query 2nd time query 1st time query 2nd time query
Inner Join 20       9.6      14       4.6
Full Outer Join 43       17.8     26       7.7

Does this PR introduce any user interface change?
No

Is any new testcase added?
Yes

This closes #3856

22 months ago[CARBONDATA-3958] Avoid blocking the loading task when the output queue poll timeout
QiangCai [Mon, 24 Aug 2020 08:15:54 +0000 (16:15 +0800)] 
[CARBONDATA-3958] Avoid blocking the loading task when the output queue poll timeout

Why is this PR needed?
In some cases, the CDC merge tasks are blocked when data loading uses
CarbonTableOutputFormat.getRecordWriter method. PR #3856 change the code to avoid using
CarbonTableOutputFormat.getRecordWriter, CDC merge will not happen this issue again.
But this issue maybe happen in other similar scenarios.

Because the poll method of the queue is time out in some cases, so the row batch in
the queue will not be polled again.

After the queue is full, the queue blocks the writing task puts a new batch. Even if
the queue is not full, it will also lose the row batch in the queue.

What changes were proposed in this PR?
If the output is not closed, it will poll a row batch in the loops till it gets a not
null batch.
If the output is closed, it will break the loop.

Does this PR introduce any user interface change?
No

Is any new testcase added?
No

This closes #3897

22 months ago[CARBONDATA-3889] Enable scala check style
QiangCai [Fri, 14 Aug 2020 08:50:33 +0000 (16:50 +0800)] 
[CARBONDATA-3889] Enable scala check style

Why is this PR needed?

scala style checking is not working during compile and IntelliJ IDEA does not use the scala style config in the dev folder.
Intellij IDEA sort import with different order
What changes were proposed in this PR?

move scalastyle-config.xml to the parent project folder.
a) IntelliJ IDEA will show the style error during coding.
b) Fix scala style issue which the scala style checking report during maven compile.
change java-code-format-template.xml to sort import as Scalastyle.
Does this PR introduce any user interface change?

No
Is any new testcase added?

No

This closes #3891

22 months ago[CARBONDATA-3915] Correction in the documentation for spark-shell
akkio-97 [Tue, 28 Jul 2020 05:43:57 +0000 (11:13 +0530)] 
[CARBONDATA-3915] Correction in the documentation for spark-shell

Why is this PR needed?
Data load fails because the spark-shell code uses carbonSessions instead of carbonExtensions.

What changes were proposed in this PR?
Have made use of carbonExtensions.

This closes #3866

22 months ago[CARBONDATA-3933]Fix DDL/DML failures after table is created
akashrn5 [Fri, 24 Jul 2020 06:20:20 +0000 (11:50 +0530)] 
[CARBONDATA-3933]Fix DDL/DML failures after table is created
with column names having special characters like #,\,%

Why is this PR needed?
when operations like insert,describe, select is fired after
table is created with column names having special characters,
operations fails. This is because after table creation spark already
stred the column names with special characters correctly,
bt for further operations we try to update the metastore/refresh
with new schema parts which is unnecessary which causes this issue.

What changes were proposed in this PR?
We use unnecessary API to update the serde properties of table by
calling spark-sql, this was required when we used to support the
spark-2.1 and 2.2 version when spark was not supporting many alter
table operations. Now since we use other APIs to alter the table,
these API calls are not necessary. So once we remove we in turn
avoid updating the serde properties with the modified schema parts which solves this issue.

This closes #3862

22 months ago[CARBONDATA-3946] Support IndexServer with Presto Engine
Indhumathi27 [Thu, 6 Aug 2020 12:03:36 +0000 (17:33 +0530)] 
[CARBONDATA-3946] Support IndexServer with Presto Engine

Why is this PR needed?
Currently, when indexserver is enabled with presto, query will through NPE

What changes were proposed in this PR?
Use Config from Job to get index server client
Get QueryId from Presto and set it to indexFormat

This closes #3885

22 months ago[CARBONDATA-3928] Handled the Strings which length is greater than 32000 as a bad...
Nihal ojha [Mon, 27 Jul 2020 11:40:04 +0000 (17:10 +0530)] 
[CARBONDATA-3928] Handled the Strings which length is greater than 32000 as a bad record.

Why is this PR needed?
Currently, when the string length exceeds 32000 then the load is failed. The particular
record should be handled as a bad record and load should not be failed.

What changes were proposed in this PR?
At place of throwing exception in case of strings greater than 32000 bytes now we will
handle as a bad record and load will not fail.

Does this PR introduce any user interface change?
No

Is any new testcase added?
Yes

This closes #3865

22 months ago[CARBONDATA-3925] flink write carbon file to hdfs when file size is less than 1M...
xiaoyu [Sat, 15 Aug 2020 07:46:23 +0000 (15:46 +0800)] 
[CARBONDATA-3925] flink write carbon file to hdfs when file size is less than 1M,can't write

Why is this PR needed?
write carbon file less than 1M , less than configured minimum value (dfs.namenode.fs-limits.min-block-size) 1M ;can't write hdfs file

What changes were proposed in this PR?
the default block size is set 1024 byte and compare with file size;when
file size big than 1KB but less than 1M ,can not write file to hdfs ;so
set default block size to 2MB

Does this PR introduce any user interface change?
No

Is any new testcase added?
No

This closes #3892

22 months ago[CARBONDATA-3927]Remove unwanted fields from tupleID to make it
akashrn5 [Sun, 12 Jul 2020 15:53:23 +0000 (21:23 +0530)] 
[CARBONDATA-3927]Remove unwanted fields from tupleID to make it
short and to improve store size and performance

Why is this PR needed?
Currently, we store the tupleId which is very long, which
increases the store size and reduces query performance.

What changes were proposed in this PR?
Remove the compressor name, part id and batch number from the tupleID.
This helps to improve the store size and improve the query performance also.

part_0 is not required as it will be same for all
_batchno is not required as common word, can be replaced by -
compressor name not required as it does not plan any role.

This closes #3837

22 months ago[CARBONDATA-3863]after using index service clean the temp data
litao [Mon, 20 Jul 2020 13:52:28 +0000 (21:52 +0800)] 
[CARBONDATA-3863]after using index service clean the temp data

Why is this PR needed?
each query that use index server will create a folder under
/tmp/indexservertmp. but when query finished the folder will not
be delete. therefore as the number of queries increases, the
folders in /tmp/indexservertmp will increased. then will get
the directory item limit.

What changes were proposed in this PR?
after query finished delete the folder that created.
clean the /tmp/indexservertmp after index server restart.
run a thread that will delete the folder in /tmp/indexservertmp
that has existed for more than 3 hours.

This closes #3855

22 months ago[CARBONDATA-3943] Handling the addition of geo column to hive at the time of table...
ShreelekhyaG [Wed, 5 Aug 2020 17:15:00 +0000 (22:45 +0530)] 
[CARBONDATA-3943] Handling the addition of geo column to hive at the time of table creation.

Why is this PR needed?
PR #3774 adds geocolumn to hive when it is generated at the time of load.

What changes were proposed in this PR?
Handling the addition of column at create table itself. Added example class for the scenario
to check create geo table with carbon session.

Does this PR introduce any user interface change?
No

Is any new testcase added?
Yes

This closes #3879

22 months ago[CARBONDATA-3919] Improve concurrent query performance
ajantha-bhat [Wed, 22 Jul 2020 11:13:15 +0000 (16:43 +0530)] 
[CARBONDATA-3919] Improve concurrent query performance

Why is this PR needed?
1. when 500 queries executed concurrently.
checkIfRefreshIsNeeded method was synchronized. so only one thread was working at a time.
But actually synchronization is required only when schema modified to drop tables. Not
for whole function.
2. TokenCache.obtainTokensForNamenodes was causing a performance bottleneck for concurrent
queries.so, removed it

What changes were proposed in this PR?
1. Synchronize only remove table part. Observed 500 query total performance improved from
10s to 3 seconds in cluster.
2. Avoid calling the API.

This closes #3858

22 months ago[CARBONDATA-3947]Fixed Hive read/write operation for Insert into Select operation.
Nihal ojha [Wed, 5 Aug 2020 10:07:05 +0000 (15:37 +0530)] 
[CARBONDATA-3947]Fixed Hive read/write operation for Insert into Select operation.

Why is this PR needed?
FileNotFound Exception is thrown for Hive read/write operation.

What changes were proposed in this PR?
When carbon schema file is not present at given location then build the table from the configuration at place of throwing exception.

This closes #3878

22 months ago[CARBONDATA-3931] Fix secondary index on DateType column giving wrong results
Indhumathi27 [Wed, 29 Jul 2020 15:48:48 +0000 (21:18 +0530)] 
[CARBONDATA-3931] Fix secondary index on DateType column giving wrong results

Why is this PR needed?
On data load to SI with date data type, dictionary values is loaded from factToIndexDictColumnMapping instead of getting from main table query results. factToIndexDictColumnMapping will have value as 0, hence only first row data will be loaded

What changes were proposed in this PR?
Get dictionary Keys from wrapper and convert it to Int and load to SI. Removed factToIndexDictColumnMapping.

Does this PR introduce any user interface change?
No

Is any new testcase added?
Yes

This closes #3874

22 months ago[CARBONDATA-3889] Cleanup duplicated code in carbondata-spark module
QiangCai [Fri, 31 Jul 2020 09:54:34 +0000 (17:54 +0800)] 
[CARBONDATA-3889] Cleanup duplicated code in carbondata-spark module

Why is this PR needed?
There are many duplicated code in carbondata-spark module

What changes were proposed in this PR?
Cleanup duplicated code in carbondata-spark module

Does this PR introduce any user interface change?
No

Is any new testcase added?
No

This closes #3877

22 months ago[CARBONDATA-3944] Insert Stage interrupted when IOException happen
haomarch [Fri, 7 Aug 2020 10:14:35 +0000 (18:14 +0800)] 
[CARBONDATA-3944] Insert Stage interrupted when IOException happen

Why is this PR needed?
In the insertstage flow, the stage files will be deleted with retry mechanism. but when IOException happen due to network abnormal etc, the insert stage will be interrupted, which is unexpected.

What changes were proposed in this PR?
When catch IOexception in the insert stage flow, Continue to retry.

Does this PR introduce any user interface change?
No
Is any new testcase added?
No

This closes #3886