carbondata.git
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?
No

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?
No

Is any new testcase added?
Yes

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
Changes:

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?
No

Is any new testcase added?
No

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?
No

Is any new testcase added?
Yes

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?
No

Is any new testcase added?
Yes

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?
No

Is any new testcase added?
No

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?
No

Is any new testcase added?
Yes

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.
Exception: MalformedCarbonCommandException
Exception Message: Complex child column cannot be set as LONG_STRING_COLUMNS

Does this PR introduce any user interface change?
No

Is any new testcase added?
Yes

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?
No

Is any new testcase added?
Yes

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?
No

Is any new testcase added?
Yes

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?
Yes

Is any new testcase added?
Yes

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?
No

Is any new testcase added?
Yes

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?
No

Is any new testcase added?
Yes

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?
No

Is any new testcase added?
Yes

This closes #4142

15 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.
`intercept[UnsupportedOperationException](
 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
   `assert(intercept[UnsupportedOperationException](
    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

15 months ago[Doc] syntax and format issues in README.md and how-to-contribute-to-apache-carbondata.md
Ting Sun [Fri, 14 May 2021 12:33:53 +0000 (20:33 +0800)] 
[Doc] syntax and format issues in README.md and how-to-contribute-to-apache-carbondata.md

Why is this PR needed?
To improve the quality of README.md and how-to-contribute-to-apache-carbondata.md.

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

This closes #4136

15 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

15 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?
No

Is any new testcase added?
Yes

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?
No

Is any new testcase added?
Yes

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?
No

Is any new testcase added?
Yes

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?
Support IN_POLYGON_LIST and IN_POLYLINE_LIST with SELECT QUERY on the
polygon table.
Support IN_POLYGON filter as join condition for spatial JOIN queries.

Does this PR introduce any user interface change?
Yes.

Is any new testcase added?
Yes

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?
No

Is any new testcase added?
No

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?
No

Is any new testcase added?
Yes

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 SPATIAL_INDEX.xxx.conversionRatio 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?
No

Is any new testcase added?
Yes

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?
No

Is any new testcase added?
Yes

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.
   order:
   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 carbon.merge.index.in.segment 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
property('carbon.coarse.grain.secondary.index')
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?
No

Is any new testcase added?
Yes

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?
Yes

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?
No

Is any new testcase added?
No

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?
No

Is any new testcase added?
Yes

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?
No

Is any new testcase added?
No

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.

Example:
Create MV on columns: c1, c2 (partition), c3(sort_column), c4
Problem:
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)

Solution:
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?
No

Is any new testcase added?
Yes

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?
No

Is any new testcase added?
Yes

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
displayed

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?
No

Is any new testcase added?
No

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
scenarios.

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?
No

Is any new testcase added?
No

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
operation

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?
No

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

This closes #4096

18 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?
No

Is any new testcase added?
No

18 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?
Yes

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?
No

Is any new testcase added?
Yes

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 java.io.File.

Does this PR introduce any user interface change?
No

Is any new testcase added?
No

This closes #4090

19 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?
No

Is any new testcase added?
Yes

This closes #4071

19 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?
No

Is any new testcase added?
No

This closes #4080

19 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?
Yes.
For compatibilty scenarios, can perform refresh MV operation to update these table properties.

Is any new testcase added?
No

This closes #4076

19 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

19 months ago[CARBONDATA-4113] Partition prune and cache fix when carbon.read.partition.hive.direc...
ShreelekhyaG [Thu, 28 Jan 2021 10:10:27 +0000 (15:40 +0530)] 
[CARBONDATA-4113] Partition prune and cache fix when carbon.read.partition.hive.direct is disabled

Why is this PR needed?
When carbon.read.partition.hive.direct 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

19 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?
No

Is any new testcase added?
Yes

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- ObjectStreamReader.java 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?
No

Is any new testcase added?
Yes

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-
array<decimal(20,3)>

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?
No

Is any new testcase added?
Yes

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?
No

Is any new testcase added?
Yes

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/carbon.store/default/sdk.
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?
No

Is any new testcase added?
No

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?
Yes.
The PR introduces the MERGE INTO SQL Command.

Is any new testcase added?
Yes

This closes #4032

Co-authored-by: Zhangshunyu <zhangshunyu1990@126.com>
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?
No

Is any new testcase added?
Yes

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?
No

Is any new testcase added?
Yes

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?
No

Is any new testcase added?
Yes

This closes #4031

21 months ago[CARBONDATA-4100] Fix SI segments are in inconsistent state with maintable after...
Indhumathi27 [Mon, 28 Dec 2020 16:08:10 +0000 (21:38 +0530)] 
[CARBONDATA-4100] Fix SI segments are in inconsistent state with maintable after concurrent Load & Compaction operation

Why is this PR needed?
When Concurrent LOAD and COMPACTION is in progress on main table having SI, SILoadEventListenerForFailedSegments listener is called to repair SI failed segments if any. It will compare SI and main table segment status, if there is a mismatch, then it will add that specific load to failedLoads to be re-loaded again.

During Compaction, SI will be updated first and then maintable. So, in some cases, SI segment will be in compacted state and main table will be in SUCCESS state(the compaction can be still in progress or due to some operation failure). SI index repair will add those segments to failedLoads, by checking if segment lock can be acquired. But, if maintable compaction is finished by the time, SI repair comparison is done, then also, it can acquire segment lock and add those load to failedLoad(even though main table load is COMPACTED). After the concurrent operation is finished, some segments of SI are marked as INSERT_IN_PROGRESS. This will lead to inconsistent state between SI and mainTable segments.

What changes were proposed in this PR?
Acquire compaction lock on maintable(to ensure compaction is not running), and then compare SI and main table load details, to repair SI segments.

Does this PR introduce any user interface change?
No

Is any new testcase added?
No (concurrent scenario)

This closes #4067

21 months ago[CARBONDATA-4099] Fixed select query on main table with a SI table in case of concurr...
Vikram Ahuja [Mon, 28 Dec 2020 12:50:44 +0000 (18:20 +0530)] 
[CARBONDATA-4099] Fixed select query on main table with a SI table in case of concurrent load,
compact and clean files operation

Why is this PR needed?
There were 2 issues in the clean files post event listener:

1. In concurrent cases, while writing entry back to the table status file, wrong path was given,
due to which table status file was not updated in the case of SI table.
2. While writing the loadmetadetails to the table status file during concurrent scenarios,
we were only writing the unwanted segments and not all the segments, which could make segments
stale in the SI table
Due to these 2 issues, when selet query is executed on SI table, the tablestatus would have entry
for a segment but it's carbondata file would be deleted, thus throwing an IO Exception.
3. Segment ID is null when writing hive table

What changes were proposed in this PR?
1.& 2. Added correct table status path as well sending the correct loadmetadatadetails to be updated in
the table status file. Now when select query is fired on the SI table, it will not throw
carbondata file not found exception
3. set the load model after setup job of committer

Does this PR introduce any user interface change?
No

Is any new testcase added?
No

This closes #4066

21 months ago[CARBONDATA-4088] Drop metacache didn't clear some cache information which leads...
jack86596 [Thu, 17 Dec 2020 09:09:56 +0000 (17:09 +0800)] 
[CARBONDATA-4088] Drop metacache didn't clear some cache information which leads to memory leak

Why is this PR needed?
When there are two spark applications, one drop a table, some cache information of this table
stay in another application and cannot be removed with any method like "Drop metacache" command.
This leads to memory leak. With the passage of time, memory leak will also accumulate which
finally leads to driver OOM. Following are the leak points:
1) tableModifiedTimeStore in CarbonFileMetastore;
2) segmentLockMap in BlockletDataMapIndexStore;
3) absoluteTableIdentifierByteMap in SegmentPropertiesAndSchemaHolder;
4) tableInfoMap in CarbonMetadata.

What changes were proposed in this PR?
Using expiring map to cache the table information in CarbonMetadata and modified time in
CarbonFileMetaStore so that stale information will be cleared automatically after the expiration
time. Operations in BlockletDataMapIndexStore no need to be locked, remove all the logic
related to segmentLockMap.

Does this PR introduce any user interface change?
New configuration carbon.metacache.expiration.seconds is added.

Is any new testcase added?
No

This closes #4057

21 months ago[CARBONDATA-4095] Fix Select Query with SI filter fails, when columnDrift is Set
Indhumathi27 [Tue, 22 Dec 2020 13:22:00 +0000 (18:52 +0530)] 
[CARBONDATA-4095] Fix Select Query with SI filter fails, when columnDrift is Set

Why is this PR needed?
After converting expression to IN Expression for maintable with SI, expression
is not processed if ColumnDrift is enabled. Query fails with NPE during
resolveFilter. Exception is added in JIRA

What changes were proposed in this PR?
Process the filter expression after adding implicit expression

Does this PR introduce any user interface change?
No

Is any new testcase added?
Yes

This closes #4063

21 months ago[CARBONDATA-4089] Create table with location, if the location doesn't have scheme...
jack86596 [Tue, 22 Dec 2020 14:11:40 +0000 (22:11 +0800)] 
[CARBONDATA-4089] Create table with location, if the location doesn't have scheme, the default will be local file system, which is not the file system defined by fs.defaultFS

Why is this PR needed?
Create table with location, if the location doesn't have scheme, the default will be local file system, which is not the file system defined by fs.defaultFS.

What changes were proposed in this PR?
If the location doesn't have scheme, add the fs.defaultFS scheme to the beginning of the location.

Does this PR introduce any user interface change?
No

Is any new testcase added?
Yes

This closes #4065

21 months ago[CARBONDATA-4094]: Fix fallback count(*) issue on partition table with index server
Vikram Ahuja [Mon, 21 Dec 2020 08:00:11 +0000 (13:30 +0530)] 
[CARBONDATA-4094]: Fix fallback count(*) issue on partition table with index server

Why is this PR needed?
The used asJava converts to java "in place", without copying the whole data to save
time and memory and it just simply wraps the scala collection with a class that
conforms to the java interface and thus java serializer is not able to serialize it.

What changes were proposed in this PR?
Converting it to list, so that it is able to serialize a list.

Does this PR introduce any user interface change?
No

Is any new testcase added?
No

This closes #4061

21 months ago[CARBONDATA-4093] Added logs for MV and method to verify if mv is in Sync during...
Indhumathi27 [Sat, 19 Dec 2020 10:39:26 +0000 (16:09 +0530)] 
[CARBONDATA-4093] Added logs for MV and method to verify if mv is in Sync during query

Why is this PR needed?
Added logs for MV and method to verify if mv is in Sync during query

What changes were proposed in this PR?
1. Move MV Enable Check to beginning to avoid transform logical plan
2. Add Logger if exception is occurred during fetching mv schema
3. Check if MV is in Sync and allow Query rewrite
4. Reuse reading LoadMetadetails to get mergedLoadMapping
5. Set NO-Dict Schema types for insert-partition flow - missed from [CARBONDATA-4077]

Does this PR introduce any user interface change?
No

Is any new testcase added?
Yes

This closes #4060

21 months ago[CARBONDATA-4092] Fix concurrent issues in delete segment API's and MV flow
Vikram Ahuja [Fri, 18 Dec 2020 11:37:36 +0000 (17:07 +0530)] 
[CARBONDATA-4092] Fix concurrent issues in delete segment API's and MV flow

Why is this PR needed?
They are multiple issues with the Delete segment API:

Not using the latest loadmetadatadetails while writing to table status file, thus can remove table status entry of any concurrently loaded Insert In progress/success segment.
The code reads the table status file 2 times
When in concurrent queries, they both access checkAndReloadSchema for MV on all databases, 2 different queries try to create a file on same location, HDFS takes the lock for one and fails for another, thus failing the query

What changes were proposed in this PR?
Only reading the table status file once.
Using the latest tablestatus to mark the segment Marked for delete, thus no concurrent issues will come
Made touchMDT and checkAndReloadSchema methods syncronized, so that only instance can access it at one time.

Does this PR introduce any user interface change?
No

Is any new testcase added?
No

This closes #4059

21 months ago[CARBONDATA-4084] Fixed data corruption issue after fallback of Local dictionary
kumarvishal09 [Fri, 18 Dec 2020 10:18:58 +0000 (15:48 +0530)] 
[CARBONDATA-4084] Fixed data corruption issue after fallback of Local dictionary

Why is this PR needed?
Data is getting corrupted when fallback happens for local dictionary encoded page.

What changes were proposed in this PR?
In LVByteBufferColumnPage Length getting added inside put method. In case of fallback when reverse lookup is done and encoded page is replaced with actual value[Dictionary values]. As actual Dictionary value is already present in LV format again one more length is getting added[LLV], so during query it's showing extra character for those columns

Does this PR introduce any user interface change?
No

Is any new testcase added?
No

This closes #4058

21 months ago[CARBONDATA-4076] Fix MV having Subquery alias used in query projection #4038
Indhumathi27 [Thu, 3 Dec 2020 12:14:50 +0000 (17:44 +0530)] 
[CARBONDATA-4076] Fix MV having Subquery alias used in query projection #4038

Why is this PR needed?
If alias is used in subquery and that alias is used in main query projection,
then the query is not hitting MV after creation.

For example:

Select a, sum(b) from (select c, d b from t1)

This is because, currently, we are not checking for subquery alias child node
for matching the query.

What changes were proposed in this PR?
1. If the outputList contains Alias, then compare the alias child of subsume/subsumer
2. In GroupbyNoselect, compare the alias.sql subsume/subsumer
3. Added logs for MV Rewrite and matching

This closes #4038

21 months ago[CARBONDATA-4071] Fix wrong values of date or timestamp child columns on reading...
Karan980 [Mon, 7 Dec 2020 14:02:48 +0000 (19:32 +0530)] 
[CARBONDATA-4071] Fix wrong values of date or timestamp child columns on reading through SDK

Why is this PR needed?
When date or timestamp column is present inside complex columns (for eg : Array(Date)),
it gives wrong result on reading through SDK.

What changes were proposed in this PR?
Fix the conversion of INT into date and LONG into timestamp column

Does this PR introduce any user interface change?
No

Is any new testcase added?
Yes

This closes #4046

21 months ago[CARBONDATA-4072] Clean files command is not deleting .segment files for the
Karan980 [Tue, 8 Dec 2020 10:43:16 +0000 (16:13 +0530)] 
[CARBONDATA-4072] Clean files command is not deleting .segment files for the
segments added through alter table add segment query.

Why is this PR needed?
Clean files command is not deleting .segment files present at
tablePath/Metadata/Segments for the compacted/marked for delete segments
added through alter table add segment query.

What changes were proposed in this PR?
Added code for deleting the segment file for the segments added
through alter table add segment query.

Does this PR introduce any user interface change?
No

Is any new testcase added?
Yes

This closes #4048

21 months ago[CARBONDATA-4078] Add external segment and query with index server fails
ShreelekhyaG [Mon, 7 Dec 2020 13:38:01 +0000 (19:08 +0530)] 
[CARBONDATA-4078] Add external segment and query with index server fails

Why is this PR needed?
Query after adding an external segment to carbon table tries to getSplits from Index server
and throws an exception as it cannot read the external(orc/parquet) file format.
When the fallback mode is disabled, it throws an exception and fails.

What changes were proposed in this PR?
To avoid the exception, filtered only valid carbon segments to cache in the index server.

Does this PR introduce any user interface change?
No

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

This closes #4047

21 months ago[CARBONDATA-4080] Wrong results for select count on invalid segments
akkio-97 [Wed, 9 Dec 2020 09:45:51 +0000 (15:15 +0530)] 
[CARBONDATA-4080] Wrong results for select count on invalid segments

Why is this PR needed?
Wrong results for
1. select count on marked for delete segment
2. select count on compacted segment
Issue comes only when the user explicitly sets deleted/compacted
segments using the property carbon.input.segments.
As select * on such segments gives 0 rows as output, in order to
maintain consistency, select count should also give 0 rows.

What changes were proposed in this PR?
So this PR focuses on considering only valid segments to be accessed
during select count query.

This closes #4050

21 months ago[CARBONDATA-4077] Refactor and Fix Insert into partition issue with FileMergeSortComp...
Indhumathi27 [Sat, 5 Dec 2020 14:05:58 +0000 (19:35 +0530)] 
[CARBONDATA-4077] Refactor and Fix Insert into partition issue with FileMergeSortComparator

Why is this PR needed?
From PR-3995 changes, insert into partition flow scenario is missed. Using Map for getting
Dict/No-Dict sort column info during final sort task will affect load performance,
if number of sort columns is more.

What changes were proposed in this PR?
Handled the insert into partition flow
Refactored the code, to use list of only Dict/No-Dict sort column indexes instead of
Map to fix performance issue.

This closes #4039

21 months ago[CARBONDATA-4087] Handled issue with huge data (exceeding 32K records) after enabling...
akkio-97 [Wed, 16 Dec 2020 08:46:03 +0000 (14:16 +0530)] 
[CARBONDATA-4087] Handled issue with huge data (exceeding 32K records) after enabling local dictionary in Presto

Why is this PR needed?
After enabling local dictionary, this issue appears while doing SELECT on array(varchar) types, for data exceeding the batch size - 32k.
The int array used to store the surrogate values of dictionary has a default size of 32K only. ArrayOutOfBounds exception is thrown if the page size exceeds 32k.

What changes were proposed in this PR?
If its size is not sufficient to accommodate all the string values then increase the default size to the desired page size.

Does this PR introduce any user interface change?
No

Is any new testcase added?
Yes

This closes #4055

21 months ago[CARBONDATA-4081] Fix multiple issues with clean files command
Vikram Ahuja [Thu, 10 Dec 2020 09:08:17 +0000 (14:38 +0530)] 
[CARBONDATA-4081] Fix multiple issues with clean files command

Why is this PR needed?
While getting stale segment, we do a list files and take all the files, if there is any folder/file other than .segment file, it will lead to further issues while copying data to the trash folder.

In the case when AbstractDFSCarbonFile is created with path and HadoopConf instead of fileStatus and if the file does not exist, since fileStatus is empty ListDirs returns empty result and getAbsolutePath throws file does not exist exception

Clean files is not allowed with concurrent insert overwrite in progress, In case with concurrent loading to MV is by default an insert overwrite operation, clean files operation on that MV would fail and throw exception.

What changes were proposed in this PR?
Added a filter, to only consider the files ending with ".segment"
Using listfiles instead of list dirs in the trash folder
No need to throw exceptions, just put a info message in case of such MV tables and continue blocking clean files for such MV.
Does this PR introduce any user interface change?
No

Is any new testcase added?
No

This closes #4051