carbondata.git
2 years ago[maven-release-plugin] prepare release apache-carbondata-2.0.0-rc2 apache-carbondata-2.0.0-rc2
kunal642 [Thu, 30 Apr 2020 16:39:13 +0000 (22:09 +0530)] 
[maven-release-plugin] prepare release apache-carbondata-2.0.0-rc2

2 years ago[CARBONDATA-3461] Carbon SDK support filter equal values set
xubo245 [Sun, 22 Mar 2020 16:01:14 +0000 (00:01 +0800)] 
[CARBONDATA-3461] Carbon SDK support filter equal values set

Add support in Carbon SDK for filter equal values set.

1.prepareEqualToExpression(String columnName, String dataType, Object value)
2.prepareOrExpression(List expressions).
3.prepareEqualToExpressionSet(String columnName, DataType dataType, List values)
4.prepareEqualToExpressionSet(String columnName, String dataType, List values).

This closes #3317

2 years ago[CARBONDATA-3342] Fix the IllegalArgumentException when using filter and result is...
xubo245 [Wed, 20 Mar 2019 14:54:20 +0000 (22:54 +0800)] 
[CARBONDATA-3342] Fix the IllegalArgumentException when using filter and result is null.

This PR fixs the IllegalArgumentException when using filter and result is null.

This closes #3273

2 years ago[CARBONDATA-3788] Fix insert failure during global sort with huge data in new insert...
ajantha-bhat [Thu, 30 Apr 2020 03:56:10 +0000 (09:26 +0530)] 
[CARBONDATA-3788] Fix insert failure during global sort with huge data in new insert flow

Why is this PR needed?
Spark is resuing the internalRow in global sort partition flow with huge data.
As RDD of Internal row is persisted for global sort.

What changes were proposed in this PR?
Need to have a copy and work on the internalRow before the last transform for global sort partition flow.
Already this was doing for insert stage command (which uses global sort partition)

This closes  #3732

2 years ago[CARBONDATA-3446] Support read schema of complex data type from carbon file folder...
xubo245 [Thu, 20 Jun 2019 04:08:11 +0000 (12:08 +0800)] 
[CARBONDATA-3446] Support read schema of complex data type from carbon file folder path

Backgroud:

SDK can't read schema of complex data type from carbon file folder path

Support:

Support read schema of complex data type from carbon file folder path

This closes #3301

2 years ago[CARBONDATA-3787] Fixed MemoryLeak in data load and compaction
kumarvishal09 [Tue, 14 Apr 2020 01:40:55 +0000 (09:40 +0800)] 
[CARBONDATA-3787] Fixed MemoryLeak in data load and compaction

Why is this PR needed?
PR #3638 uses direct byte buffer. This PR is for fixing Offheap memory leak during load/compaction

What changes were proposed in this PR?
DirectByteBuffer are cleaned in offheap memory by JVM, when GC happens (when heap is full). Consider a scenario, where heap is not full, but offheap is getting full. In this case DirectByteBuffers is not cleaned as GC not happened. This time we may get OOM from offheap memory and yarn may kill the jvm process. So, it is better to clean up the DirectByteBuffers after the usage by calling a reflection method.

Does this PR introduce any user interface change?
No

Is any new testcase added?
No

This closes #3706

2 years ago[CARBONDATA-3784] Added spark binary version to related modules
kunal642 [Wed, 8 Apr 2020 10:02:39 +0000 (15:32 +0530)] 
[CARBONDATA-3784] Added spark binary version to related modules

Why is this PR needed?
For deploying multiple carbon jars version with different spark versions, the jar/module names should be different

What changes were proposed in this PR?
Add spark binary version to the related modules to distinguish the jars based on spark version

Does this PR introduce any user interface change?
No

Is any new testcase added?
No

This closes #3700

2 years ago[CARBONDATA-3778] Change conf.getProperty("carbon.storelocation") to CarbonEvn.getDat...
liuzhi [Mon, 27 Apr 2020 02:11:48 +0000 (10:11 +0800)] 
[CARBONDATA-3778] Change conf.getProperty("carbon.storelocation") to CarbonEvn.getDatabaseLocation in mv module

Why is this PR needed?
Change the way of mv module get database location to recommend way.

Currently , the recommend way is using CarbonEvn.getDatabaseLocation,not using carbon.storelocation variable.

What changes were proposed in this PR?
Change all code which use carbon.storelocation variable to use CarbonEvn.getDatabaseLocation.

This closes #3727

2 years ago[CARBONDATA-3773] Skip Validate partition info in Indexserver count star flow
Indhumathi27 [Thu, 16 Apr 2020 07:57:14 +0000 (13:27 +0530)] 
[CARBONDATA-3773] Skip Validate partition info in Indexserver count star flow

Why is this PR needed?
BlockIndex.ValidatePartitionInfo check was added for IUD scenario as part of countStar query
performance improvement in PR-3148. For count(*) flow with indexserver, validatePartitionInfo
is called multiple times (No. of Blocks * No. of Partitions), which is not required.

What changes were proposed in this PR?
Skip ValidatePartition check in case of Count(*) query with indexserver

This coses #3714

2 years ago[HOTFIX]Compilation error in assembly module as it could not
Venu Reddy [Mon, 27 Apr 2020 13:36:45 +0000 (19:06 +0530)] 
[HOTFIX]Compilation error in assembly module as it could not
resolve the mv-core dependency

Why is this PR needed?
Recent PR #3692 removes carbondata-mv-core module and part of the
code is moved to carbondata-spark module.
But assembly module still has dependency to mv-core in its pom.

What changes were proposed in this PR?
Removed carbondata-mv-core dependency from assembly module.

This closes #3728

2 years ago[CARBONDATA-3779]BlockletIndexInputFormat object instantiation failed due to mismatch...
Venu Reddy [Wed, 22 Apr 2020 07:09:42 +0000 (12:39 +0530)] 
[CARBONDATA-3779]BlockletIndexInputFormat object instantiation failed due to mismatch in constructor params

Why is this PR needed?
BlockletIndexInputFormat object instantiation failed due to mismatch in params passed to reflection constructor
instantiation and actual parameters of BlockletIndexInputFormat constructor.

What changes were proposed in this PR?
1. Have modified to pass the correct parameters while instanting the BlockletIndexInputFormat through reflections
2. Segment min-max based pruning to happen when CARBON_LOAD_INDEXES_PARALLEL is enabled.

This closes #3723

2 years ago[CARBONDATA-3783]Alter table drop column on main table is not dropping the eligible...
Venu Reddy [Thu, 23 Apr 2020 09:45:13 +0000 (15:15 +0530)] 
[CARBONDATA-3783]Alter table drop column on main table is not dropping the eligible secondary index tables

Why is this PR needed?
Alter table drop column on main table when droping columns match to a secondary index table columns is actually
not dropping secondary index table.

What changes were proposed in this PR?
1. Have corrected the dropApplicableSITables to check if the drop columns are matching the index table columns.
If all columns of a index table match to drop columns, then drop the index table itself.

2. Index table refresh was missed in CarbonCreateSecondaryIndexCommand. It was missed in secondary index feature PR.

This closes #3725

2 years ago[CARBONDATA-3777] Add HDFSLocalCarbonFile implementation to Use FileSystem's LocalFil...
akashrn5 [Tue, 21 Apr 2020 08:53:41 +0000 (14:23 +0530)] 
[CARBONDATA-3777] Add HDFSLocalCarbonFile implementation to Use FileSystem's LocalFileSystem in cluster mode

Why is this PR needed?
Currently LocalFile file implementation is JAVA's file implementation, which will give problem if we want to load the local file in cluster for instance.

What changes were proposed in this PR?
Implement a new class HDFSLocalCarbonFile, which extends HDFSCarbonFIle and when a file with local file scheme "file://" is given and trying to load in cluster, it takes the file as HDFSLocalCarbonFile and go ahead instead of failing which is current behaviour.

Does this PR introduce any user interface change?
Yes. (Doc update is not needed)

Is any new testcase added?
No(Existing HDFSCarbonFile tests will take care)

This closes #3721

2 years ago[CARBONDATA-3785]update the scala version for spark-2.4 in compliance to open source...
akashrn5 [Thu, 23 Apr 2020 08:47:38 +0000 (14:17 +0530)] 
[CARBONDATA-3785]update the scala version for spark-2.4 in compliance to open source spark

Why is this PR needed?
update the scala version for spark-2.4 in compliance to open source spark

What changes were proposed in this PR?
update scala version to 2.11.12

This closes #3724

2 years ago[CARBONDATA-3680]Add NI as a function not as udf
akashrn5 [Fri, 17 Apr 2020 05:36:19 +0000 (11:06 +0530)] 
[CARBONDATA-3680]Add NI as a function not as udf

Why is this PR needed?
NI is registered as udf, so it is handled for both case of scalaUDF and HiveSimpleUDF

What changes were proposed in this PR?
Register NI as a functionand remove unwanted case for ScalaUDF for NI functionality.

This closes #3718

2 years ago[CARBONDATA-3781] Refactor code to optimize partition pruning
Indhumathi27 [Tue, 14 Apr 2020 11:07:45 +0000 (16:37 +0530)] 
[CARBONDATA-3781] Refactor code to optimize partition pruning

Why is this PR needed?
If number of partitions is more on a segment, cost of checking if (indexPath equalsIgnoreCase partitionsToPrune)
in BlockletIndexFactory.getTableBlockUniqueIdentifierWrappers() is high.

What changes were proposed in this PR?
1.Store location of partition filter in a SET and check if it contains indexPath.
2. Remove unused variables

This closes #3707

2 years ago[CARBONDATA-3775] Update materialized view document
liuzhi [Sat, 18 Apr 2020 08:14:12 +0000 (16:14 +0800)] 
[CARBONDATA-3775] Update materialized view document

Why is this PR needed?
Update materialized view document synchronously, after the materialized view is separated from the DataMap module.

What changes were proposed in this PR?
Update materialized view syntax comment.
Add comment about usage of time series.
Move document to document root directory from index directory.

This closes #3720

2 years ago[CARBONDATA-3776] Clean old materialized view implementation
liuzhi [Fri, 3 Apr 2020 01:09:24 +0000 (09:09 +0800)] 
[CARBONDATA-3776] Clean old materialized view implementation

Why is this PR needed?
After the materialized view is separated from the DataMap module, the old materialized view implementation in DataMap module is not used. Should clean those code to keep code clean.

What changes were proposed in this PR?
Move materialized view test case to carbondata-spark module.
Remove carbondata-mv-core module, because of the main code in this module have moved to carbondata-spark module.
Remove old materialized view metadata manage implementation which doesn't support multi-tenant.

This closes #3692

2 years ago[CARBONDATA-3754]avoid listing index files during SI rebuild
akashrn5 [Fri, 17 Apr 2020 07:47:24 +0000 (13:17 +0530)] 
[CARBONDATA-3754]avoid listing index files during SI rebuild

Why is this PR needed?
List files was done during rebuild of SI, which will be costly in case of S3 and OBS

What changes were proposed in this PR?
avoided list files and delete files handled through segmentFileStore

This closes #3719

2 years ago[CARBONDATA-3782] changes to reflect default behaviour in case of invalid configuration
akkio-97 [Tue, 21 Apr 2020 08:03:46 +0000 (13:33 +0530)] 
[CARBONDATA-3782] changes to reflect default behaviour in case of invalid configuration

Why is this PR needed?
Invalid configuration values in carbon.properties causes operation failure instead of reflecting
default configuration value behaviour.

What changes were proposed in this PR?
when invalid configurations are provided, instead of failing consider the default behavior.

This closes #3722

2 years ago[CARBONDATA-3772] Update index documents
Gampa Shreelekhya [Tue, 14 Apr 2020 13:10:03 +0000 (18:40 +0530)] 
[CARBONDATA-3772] Update index documents

Why is this PR needed?
update index documentation to comply with recent changes

What changes were proposed in this PR?
Does this PR introduce any user interface change?
No
Yes. (please explain the change and update document)
Is any new testcase added?
No
Yes

This closes #3708

2 years ago[HOTFIX] Avoid reading table status file again per query
ajantha-bhat [Wed, 15 Apr 2020 06:11:47 +0000 (11:41 +0530)] 
[HOTFIX] Avoid reading table status file again per query

Why is this PR needed?
After add segment feature, we take snapshot twice (which leads in two times table status IO),
we can refuse the original snapshot
a. First time snapshot in LateDecodeStrategy.pruneFilterProjectRaw()
b. second time in CarbonTableInputFormat.getSplits()

What changes were proposed in this PR?
Take snapshot only once and reuse in the second place

This closes #3709

2 years ago[HOTFIX] Fixed task distribution issue in SegmentPruneRDD
kunal642 [Thu, 16 Apr 2020 05:59:36 +0000 (11:29 +0530)] 
[HOTFIX] Fixed task distribution issue in SegmentPruneRDD

Why is this PR needed?
SI queries are degraded because getPrefferedLocation is
not overridden in SegmentPruneRDD due to which tasks are fired randomly to any executors

What changes were proposed in this PR?
override getPrefferedLocation so that tasks are fired to correct executors.

Does this PR introduce any user interface change?
No

Is any new testcase added?
No

This closes #3712

2 years ago[CARBONDATA-3774]Fix hiding the actual exceptions during tableExists check
akashrn5 [Thu, 16 Apr 2020 14:20:03 +0000 (19:50 +0530)] 
[CARBONDATA-3774]Fix hiding the actual exceptions during tableExists check

Why is this PR needed?
In table exists API, we catch all exceptions and say table does not exists which is wrong

What changes were proposed in this PR?
Catch only NoSuchTableException fro spark and return false, for other exceptions, throw it to caller

Does this PR introduce any user interface change?
No

Is any new testcase added?
No(existing test will take care)

This closes #3716

2 years ago[CARBONDATA-3765] Refactor Index Metadata for CG and FG Indexes
Indhumathi27 [Mon, 30 Mar 2020 13:46:55 +0000 (19:16 +0530)] 
[CARBONDATA-3765] Refactor Index Metadata for CG and FG Indexes

Why is this PR needed?

1. Refactor is required to make CG and FG Indexes support multi-tenant
2. Refactor DataMap to Index

What changes were proposed in this PR?

CG and FG Indexes support multi-tenant
-> Remove writing datamapschema for cg and fg indexes to system folder
-> Add index related information to tableProperties of main table and hive, as similar to SI, to support multi-tenancy.
-> All indexes - CG,FG and Secondary Index information will be stored in main table

Does this PR introduce any user interface change?
Yes.

Is any new testcase added?
No

This closes #3688

2 years ago[CARBONDATA-3597] Missed commit from PR-3483 (SCD2)
ravipesala [Fri, 3 Jan 2020 16:26:50 +0000 (00:26 +0800)] 
[CARBONDATA-3597] Missed commit from PR-3483 (SCD2)

There is a commit missed during PR merge of #3483

Why is this PR needed?
SCD can use insert flow to write data insted of calling the writer
directly

What changes were proposed in this PR?
using insert flow for SCD to write data

Does this PR introduce any user interface change?
No

Is any new testcase added?
Yes.

This closes #3704

2 years ago[CARBONDATA-3768] Fix query not hitting mv without alias, with mv having Alias
Indhumathi27 [Wed, 8 Apr 2020 09:50:24 +0000 (15:20 +0530)] 
[CARBONDATA-3768] Fix query not hitting mv without alias, with mv having Alias

Why is this PR needed?
create MV with select query having alias. Query without alias is not hitting mv.

What changes were proposed in this PR?
While query matching, check if outputlist with alias contains all user outputlist.

This closes #3699

2 years ago[HOTFIX] Fix some issues in doc
Zhichao Zhang [Fri, 10 Apr 2020 02:46:11 +0000 (10:46 +0800)] 
[HOTFIX] Fix some issues in doc

fix some issues on chinese doc

This closes #3703

2 years ago[CARBONDATA-3771] Fixed date filter issue and use hive constants instead of hard...
kunal642 [Sat, 11 Jan 2020 21:00:15 +0000 (02:30 +0530)] 
[CARBONDATA-3771] Fixed date filter issue and use hive constants instead of hard-coded values

Why is this PR needed?
Filter on date column is giving wrong results due to incorrect carbon expression.

What changes were proposed in this PR?
For date column getExprString is giving the filter value as 'DATE2020-01-01' which causes the filter to fail.
Changed to ((ExprNodeConstantDesc) exprNodeDesc).getValue().toString() for ConstantDesc for better handling

Does this PR introduce any user interface change?
No

Is any new testcase added?
No

This closes #3705

2 years ago[CARBONDATA-3751] Segments are not Marked for delete if everything is deleted in...
Vikram Ahuja [Wed, 25 Mar 2020 11:26:54 +0000 (16:56 +0530)] 
[CARBONDATA-3751] Segments are not Marked for delete if everything is deleted in a segment with index server enabled

Why is this PR needed?
When all the rows are deleted from a segment with index server enabled, the segment is not Marked for delete.

What changes were proposed in this PR?
Rowcount was always being sent as 0 from the index server DistributedPruneRDD. Getting that value from DataMapRow now

Does this PR introduce any user interface change?
No

Is any new testcase added?
No

This closes #3679

2 years ago[CARBONDATA-3736] Support show segment by query
Jacky Li [Wed, 18 Mar 2020 05:06:04 +0000 (13:06 +0800)] 
[CARBONDATA-3736] Support show segment by query

Why is this PR needed?
There are many fields in segment that not shown in SHOW SEGMENTS command.

What changes were proposed in this PR?
This PR change SHOW SEGMENTS command to:

 SHOW [HISTORY] SEGMENTS
 [FOR TABLE | ON] [db_name.]table_name
 [AS select_query]

User can query the segments as it is a table. A sample output as following:

show segments on source as
select id, status, dataSize from source_segments where status = 'Success' order by dataSize

+------------------------+
|output                  |
+------------------------+
|id  | status  | dataSize|
|4.1 | Success | 1762    |
|0.2 | Success | 3524    |
+------------------------+

Does this PR introduce any user interface change?
Yes

Is any new testcase added?
Yes

This closes #3657

2 years ago[CARBONDATA-3724] Secondary Index enable on partition Table
maheshrajus [Tue, 25 Feb 2020 16:00:53 +0000 (21:30 +0530)] 
[CARBONDATA-3724] Secondary Index enable on partition Table

Why is this PR needed?
Currently Secondary index is not supported for partition table.
Secondary index should support on non partition columns instead of blocking full partition table.

What changes were proposed in this PR?
Secondary index should support on non partition columns

This closes #3639

2 years ago[CARBONDATA-3761] Remove redundant conversion for complex type insert
ajantha-bhat [Mon, 30 Mar 2020 13:38:25 +0000 (19:08 +0530)] 
[CARBONDATA-3761] Remove redundant conversion for complex type insert

Why is this PR needed?

In PrimitiveDataType#writeByteArray
DataTypeUtil.parseValue(**input.toString()**, carbonDimension)
Here we convert every complex child element to string and then parse as an object to handle bad records. Which leads to heavy GC

DatatypeUtil#getBytesDataDataTypeForNoDictionaryColumn -> double,float, byte, decimal case is missing. so we convert them to string and then convert to bytes. which create more redundant objects

What changes were proposed in this PR?

For new Insert into flow, no need to handle bad records for complex types as it is already validated in source table. So, use object directly. This can decrease the memory foot print for complex type insert
Add a case for double,float, byte, decimal data type.

Does this PR introduce any user interface change?
No

Is any new testcase added?
No

This closes #3687

2 years ago[CARBONDATA-3753] optimize double/float stats collector
ajantha-bhat [Thu, 26 Mar 2020 09:37:57 +0000 (15:07 +0530)] 
[CARBONDATA-3753] optimize double/float stats collector

Why is this PR needed?
For every double/float column's value. we call
PrimitivePageStatsCollector.getDecimalCount(double value)
problem is, here we create new bigdecimal object and plain string object every time.
Which leads in huge memory usage during insert.

What changes were proposed in this PR?
Create only Bigdecimal object and use scale from that.

This closes #3682

2 years ago[CARBONDATA-3763] Fix wrong insert result during insert stage command
ajantha-bhat [Fri, 3 Apr 2020 14:51:52 +0000 (20:21 +0530)] 
[CARBONDATA-3763] Fix wrong insert result during insert stage command

Why is this PR needed?
For insertStageCommand, spark is reusing the internalRow as two times we transform from RDD[InternalRow] -> dataframe -> logical Plan -> RDD[InternalRow]. So, same data is inserted on other rows

What changes were proposed in this PR?
Copy the internalRow after the last transform.

This closes #3694

2 years ago[CARBONDATA-3759] Refactor segmentRefreshInfo and fix cache issue in multiple applica...
akashrn5 [Sat, 28 Mar 2020 11:51:30 +0000 (17:21 +0530)] 
[CARBONDATA-3759] Refactor segmentRefreshInfo and fix cache issue in multiple application scenario

Why is this PR needed?
currently the segmentRefreshInfo is helping to clear the cache only in update cases and it fails to refresh the cache if any segment files changes or get updates.
when two applications are running on same store. One application changes some segment files changes and removes old cache and may be delete files, which wont be reflected in other application, which may result in either wrong results or query failure.

What changes were proposed in this PR?
refactor the segmentRefreshInfo to clear the cache and update when there are any updates on segments and if the segment files of respective segments changes.

Does this PR introduce any user interface change?
No

Is any new testcase added?
No
Tested in cluster and existing test cases will be enough.

This closes #3686

2 years ago[HOTFIX] Fix Repeated access to getSegmentProperties
haomarch [Sat, 4 Apr 2020 14:35:43 +0000 (22:35 +0800)] 
[HOTFIX] Fix Repeated access to getSegmentProperties

Why is this PR needed?
getSegmentProperties is accessed repeated in query processing, which leads to heavy time overhead.

What changes were proposed in this PR?
Reuse the segmentProperty.

Does this PR introduce any user interface change?
No

Is any new testcase added?
No

This closes #3696

2 years ago[CARBONDATA-3743] Added pre-priming check in the Spark job description page
Vikram Ahuja [Fri, 13 Mar 2020 09:50:29 +0000 (15:20 +0530)] 
[CARBONDATA-3743] Added pre-priming check in the Spark job description page

Why is this PR needed?
Added pre-priming check in the Spark job description page

What changes were proposed in this PR?
Added pre-priming check in the Spark job description page

This closes #3669

2 years ago[CARBONDATA-3754]Clean up the data file and index files after SI rebuild
akashrn5 [Tue, 24 Mar 2020 09:47:18 +0000 (15:17 +0530)] 
[CARBONDATA-3754]Clean up the data file and index files after SI rebuild

Why is this PR needed?
Clean up not happening for the data file and index files after SI rebuild

What changes were proposed in this PR?
every task should clear the old data and index files once task finishes.

This closes #3676

2 years ago[CARBONDATA-3565] Fix complex binary data broken issue when loading dataframe data
IceMimosa [Tue, 7 Jan 2020 05:24:57 +0000 (13:24 +0800)] 
[CARBONDATA-3565] Fix complex binary data broken issue when loading dataframe data

Why is this PR needed?
When binary data is DataOutputStream#writeDouble and so on.
Spark DataFrame(SQL) load it to a table, the data will be broken (EF BF BD) when reading out.

What changes were proposed in this PR?
If data is byte[], no need to convert to string and decode to byte[]
again

Does this PR introduce any user interface change?
No

Is any new testcase added?
Yes

This closes #3430

2 years ago[CARBONDATA-3738] : Delete seg. by ID is displaying as failed with invalid ID upon
Vikram Ahuja [Thu, 5 Mar 2020 10:24:20 +0000 (15:54 +0530)] 
[CARBONDATA-3738] : Delete seg. by ID is displaying as failed with invalid ID upon
deleting a added parquet segment

Why is this PR needed?
Unable to delete segment in case of SI when table status file is not present.

What changes were proposed in this PR?
Checking for the table status file before triggering delete for that segment.

This closes #3659

2 years ago[CARBONDATA-3762] Block creating Materialized view's with duplicate column
Indhumathi27 [Wed, 1 Apr 2020 13:34:08 +0000 (19:04 +0530)] 
[CARBONDATA-3762] Block creating Materialized view's with duplicate column

Why is this PR needed?
Currently, materialized views with duplicate column
1. On creation, we are taking distinct of Project columns.
2. Because of this, during load, data is inserted wrongly and query gives wrong results.

Materilaized views can be mapped against queries having duplicate columns, without having duplicate columns in mv table.

What changes were proposed in this PR?
1. Block creating materialized views with duplicate columns
2. Fix bug in matching mv against queries having duplicate columns.

Does this PR introduce any user interface change?
Yes.

Is any new testcase added?
Yes

This closes #3690

2 years ago[CARBONDATA-3766] Fixed desc formatted and show segment data size issues
kunal642 [Thu, 26 Mar 2020 09:25:34 +0000 (14:55 +0530)] 
[CARBONDATA-3766] Fixed desc formatted and show segment data size issues

Why is this PR needed?
Show segments shows the datasize as index size for non carbon segments in show segments command.

What changes were proposed in this PR?
Take data size from indexsize variable and show in show segments as non carbon segmnets do not have
index files. Index Size wil be shown as 0.

This closes #3680

2 years ago[CARBONDATA-3744] Fix select query failure issue when warehouse directory is default...
ajantha-bhat [Fri, 20 Mar 2020 05:44:04 +0000 (11:14 +0530)] 
[CARBONDATA-3744] Fix select query failure issue when warehouse directory is default (not configured) in cluster

Why is this PR needed?

select query fails when warehouse directory is default (not configured) with below callstak.

0: jdbc:hive2://localhost:10000> create table ab(age int) stored as carbondata;
---------+
Result
---------+
---------+
No rows selected (0.093 seconds)
0: jdbc:hive2://localhost:10000> select count from ab;
Error: org.apache.spark.sql.catalyst.analysis.NoSuchTableException: Table or view 'ab' not found in database 'tpch'; (state=,code=0)

caused by
java.io.FileNotFoundException: File hdfs://localhost:54311/home/root1/tools/spark-2.3.4-bin-hadoop2.7/spark-warehouse/tpch.db/ab/Metadata does not exist.

What changes were proposed in this PR?

When the spark.sql.warehouse.dir is not configured, default local file system SPARK_HOME is used. But the describe table shows with HDFS prefix in cluster.

Reason is we are removing the local filesystem scheme , so when table path is read we add HDFS prefix in cluster. instead if we keep the scheme issue will not come.

Does this PR introduce any user interface change?
No

Is any new testcase added?
No. Happens only in cluster with HDFS or OBS.

This closes #3675

2 years ago[CARBONDATA-3764] Reduce Reusable buffer creation when few projections selected out...
ajantha-bhat [Fri, 3 Apr 2020 07:01:34 +0000 (12:31 +0530)] 
[CARBONDATA-3764] Reduce Reusable buffer creation when few projections selected out of many columns

Why is this PR needed?

If few projections selected out of many columns, reusable buffer is based on columns count instead of projections count. Hence many unused objects were created.

What changes were proposed in this PR?

Create reusable buffers only as per the projection count.
Fix spelling error from Resusable to Reusable

Does this PR introduce any user interface change?
No

Is any new testcase added?
No. Internal change

This closes #3693

2 years ago[CARBONDATA-3755]Fix clean up issue with respect to segmentMetadaInfo
akashrn5 [Thu, 26 Mar 2020 18:30:23 +0000 (00:00 +0530)] 
[CARBONDATA-3755]Fix clean up issue with respect to segmentMetadaInfo
after update and clean files

Why is this PR needed?
1. segmentMetadaInfo is not getting copied to new segment files written
after multiple updates and clean files opearation.
2. old segment files are not getting deleted and getting accumulated.

What changes were proposed in this PR?
1. update the segmentMetadaInfo to new files
2. once we write new segment file, delete the old invalid segment files.

This closes #3683

2 years ago[CARBONDATA-3680] Add Secondary Index Document
akashrn5 [Tue, 31 Mar 2020 12:02:09 +0000 (17:32 +0530)] 
[CARBONDATA-3680] Add Secondary Index Document

Why is this PR needed?
No documentation present for Secondary index.

What changes were proposed in this PR?
Added documentation for secondary index.

Does this PR introduce any user interface change?
No

Is any new testcase added?
No

This closes #3689

2 years ago[CARBONDATA-3760] Enable prefetch in presto to improve query performance
akashrn5 [Wed, 1 Apr 2020 14:21:30 +0000 (19:51 +0530)] 
[CARBONDATA-3760] Enable prefetch in presto to improve query performance

Why is this PR needed?
Prefetch was set to false explicitly.

What changes were proposed in this PR?
Improve the query performance with prefetch enabled

Does this PR introduce any user interface change?
No

Is any new testcase added?
TPCDS queries executed and some queries time was improved by almost 50%

This closes #3691

2 years ago[CARBONDATA-3704] Support create materialized view on all type table, and make mv...
Jacky Li [Sat, 7 Mar 2020 01:33:06 +0000 (09:33 +0800)] 
[CARBONDATA-3704] Support create materialized view on all type table, and make mv support mutil-tenant.

Why is this PR needed?
Support create materialized view on all table, include parquest table, orc table, hive table and carbon table.
Materialized view DDL is common in databases, carbondata should change its materialized view related SQL syntax as other database.
Materialized view support mutil-tenant.

What changes were proposed in this PR?
Define materialized view related commands: CREATE MATERIALIZED VIEW, DROP MATERIALIZED VIEW, REFRESH MATERIALIZED VIEW and SHOW MATERIALIZED VIEW.
Move materialized view schema files to each database directory.
Support create materialized view on all table, remove carbon table related check.
Include some datamap rename change, rename datamap to index.

This closes #3661

Co-authored-by: niuge01 <371684521@qq.com>
2 years ago[CARBONDATA-3740] Add line separator option to load command to configure the line...
jack86596 [Wed, 11 Mar 2020 07:36:45 +0000 (15:36 +0800)] 
[CARBONDATA-3740] Add line separator option to load command to configure the line separator during csv parsing.

Why is this PR needed?
Sometime univocity parser will detect the line separator incorrectly. In this case, user should be able to set line separator explicitly.
Issue: During loading, if in the first line, there is one field has a '\r' character and this '\r' appears before the first '\n',
line separator detection will treat '\r' as line separator. This is not the intention.
Example:
Data file has two lines, ^M is '\r':
1,2^M,3
4,5,6
After loading,
The records in table will be:
| 1 | 2 | null |
| null | 3
4 | 5 |
Correct should be:
| 1 | 2^M | 3 |
| 4 | 5 | 6 |

What changes were proposed in this PR?
Allow user to specify line separator explicitly in load command, add one new option to load command named "line_separator".

Does this PR introduce any user interface change?
Yes. New load option "line_separator" is added.

Is any new testcase added?
Yes.

This closes #3664

2 years ago[CARBONDATA-3548] Add spatial-index user guid to doc
litao [Thu, 19 Dec 2019 13:12:21 +0000 (21:12 +0800)] 
[CARBONDATA-3548] Add spatial-index user guid to doc

Why is this PR needed?
Spatial index feature document is not updated yet.

What changes were proposed in this PR?
updated the document for spatial index feature

Does this PR introduce any user interface change?
updated the document for psatial index feature.

Is any new testcase added?
No

This closes #3520

Co-authored-by: VenuReddy2103 <venugopalreddyk@huawei.com>
2 years ago[CARBONDATA-3756] Fix stage query bug it only read the first blocklet of each carbond...
QiangCai [Fri, 27 Mar 2020 08:35:38 +0000 (16:35 +0800)] 
[CARBONDATA-3756] Fix stage query bug it only read the first blocklet of each carbondata file

Why is this PR needed?
The query of stage files only read the first blocklet of each carbondata file.
So when the file contains multiple blocklets, the query result will be wrong.

What changes were proposed in this PR?
The query of stage files should read the all blocklets of all carbondata files.

Does this PR introduce any user interface change?
No

Is any new testcase added?
No

This closes #3684

2 years ago[HOTFIX] Fix all flink test case failure and enable UT in CI
ajantha-bhat [Fri, 27 Mar 2020 12:11:18 +0000 (17:41 +0530)] 
[HOTFIX] Fix all flink test case failure and enable UT in CI

Why is this PR needed?
After #3628, default BATCH_FILE_ORDER is wrong [it is not ASC or DSC].
so, all the test case in flink module failed due as no order is set in stage command.
Also flink UT is not running in CI, hence it is not caught

What changes were proposed in this PR?
Fix the default value to Ascending order.
Enable UT running for flink module.

Does this PR introduce any user interface change?
No

Is any new testcase added?
No

This closes #3685

2 years ago[CARBONDATA-3752] Reuse Exchange to fix performance issue
QiangCai [Thu, 26 Mar 2020 09:18:36 +0000 (17:18 +0800)] 
[CARBONDATA-3752] Reuse Exchange to fix performance issue

Why is this PR needed?
Spark ReusedExchange rule can't recognition the same Exchange plan on carbon table.
So the query on the carbon table doesn't reuse Exchange, it leads to bad performance.

For Example:

create table t1(c1 int, c2 string) using carbondata

explain
select c2, sum(c1) from t1 group by c2
union all
select c2, sum(c1) from t1 group by c2
physical plan as following:

Union
:- *(2) HashAggregate(keys=[c2#37], functions=[sum(cast(c1#36 as bigint))])
: +- Exchange hashpartitioning(c2#37, 200)
: +- *(1) HashAggregate(keys=[c2#37], functions=[partial_sum(cast(c1#36 as bigint))])
: +- *(1) FileScan carbondata default.t1[c1#36,c2#37] ReadSchema: struct<c1:int,c2:string>
+- *(4) HashAggregate(keys=[c2#37], functions=[sum(cast(c1#36 as bigint))])
 +- Exchange hashpartitioning(c2#37, 200)
 +- *(3) HashAggregate(keys=[c2#37], functions=[partial_sum(cast(c1#36 as bigint))])
 +- *(3) FileScan carbondata default.t1[c1#36,c2#37] ReadSchema: struct<c1:int,c2:string>
after change, physical plan as following:

Union
:- *(2) HashAggregate(keys=[c2#37], functions=[sum(cast(c1#36 as bigint))])
:  +- Exchange hashpartitioning(c2#37, 200)
:     +- *(1) HashAggregate(keys=[c2#37], functions=[partial_sum(cast(c1#36 as bigint))])
:        +- *(1) FileScan carbondata default.t1[c1#36,c2#37] ReadSchema: struct<c1:int,c2:string>
+- *(4) HashAggregate(keys=[c2#37], functions=[sum(cast(c1#36 as bigint))])
   +- ReusedExchange [c2#37, sum#54L], Exchange hashpartitioning(c2#37, 200)
What changes were proposed in this PR?
change CarbonFileIndex class to case class.

Does this PR introduce any user interface change?
No

Is any new testcase added?
Yes

This closes #3681

2 years ago[CARBONDATA-3718] Support SegmentLevel MinMax for better Pruning and less driver...
Indhumathi27 [Thu, 9 Jan 2020 10:11:44 +0000 (15:41 +0530)] 
[CARBONDATA-3718] Support SegmentLevel MinMax for better Pruning and less driver memory usage for cache

Why is this PR needed?
In Cloud scenarios, index is too big to store in SparkDriver, since VM may not have
so much memory. Currently in Carbon, we will load all indexes to cache for first time query.
Since Carbon LRU Cache does not support time-based expiration, indexes will be removed from
cache based on LeastRecentlyUsed mechanism, when the carbon lru cache is full.

In some scenarios, where user's table has more segments and if user queries only very
few segments often, we no need to load all indexes to cache. For filter queries,
if we prune and load only matched segments to cache,
then driver's memory will be saved.

What changes were proposed in this PR?
Added all block minmax with column-id and sort_column info to segment metadata file
and prune segment based on segment files and load index only for matched segment. Added a configurable carbon property 'carbon.load.all.index.to.cache'
to allow user to load all indexes to cache if needed. BY default, value will
be true, which loads all indexes to cache.

Does this PR introduce any user interface change?
Yes.

Is any new testcase added?
Yes

This closes #3584

2 years ago[CARBONDATA-3742] Support spark 2.4.5 integration
Jacky Li [Tue, 17 Mar 2020 08:37:58 +0000 (16:37 +0800)] 
[CARBONDATA-3742] Support spark 2.4.5 integration

Why is this PR needed?
Currently CarbonData does not support integration with spark 2.4.5

What changes were proposed in this PR?
Support integration with spark 2.4.5

Does this PR introduce any user interface change?
No

Is any new testcase added?
No

This closes #3671

2 years ago[HOTFIX] Fix ClassName for load datamaps parallel job
Indhumathi27 [Wed, 18 Mar 2020 10:22:18 +0000 (15:52 +0530)] 
[HOTFIX] Fix ClassName for load datamaps parallel job

Why is this PR needed?
Load Datamap parallel was not launching job, because the class name was not correct

What changes were proposed in this PR?
Change className for load datamaps parallel job

Does this PR introduce any user interface change?
No

Is any new testcase added?
No

This closes #3674

2 years ago[CARBONDATA-3733] Fix Incorrect query results on mv with limit
Indhumathi27 [Mon, 2 Mar 2020 15:58:40 +0000 (21:28 +0530)] 
[CARBONDATA-3733] Fix Incorrect query results on mv with limit

Why is this PR needed?
Issue 1:
After creating an materilaised view, queries with simple projection and limit gives incorrect results.
Issue 2:
Compact IUD_DELTA on materilaised view throws NullPointerException, because SegmentUpdateStatusManager is not set
Issue 3:
Queries with order by columns not in projection for create mv's, gives incorrect results.

What changes were proposed in this PR?
Issue 1:
Copy subsume Flag and FlagSpec to subsumerPlan while rewriting with summarydatasets.
Update the flagSpec as per the mv attributes and copy to relation.
Issue 2:
Set SegmentUpdateStatusManager to CarbonLoadModel using carbonTable in case of IUD_DELTA compaction
Issue 3:
Order by columns has to be present in projection list during create mv.

This closes #3651

2 years agoWhy is this PR needed?
akashrn5 [Wed, 4 Mar 2020 09:47:02 +0000 (15:17 +0530)] 
Why is this PR needed?
When add segment is done on main table which has SI also on it. Then filter query is fired on SI column,
only segments which are loaded can be considered for SI pruning and external segment should be queried from main table.

What changes were proposed in this PR?
Handle while pruning for external segment. if external segment, get the filter from extersegment filter tree.

This closes #3656

2 years ago[CARBONDATA-3741] Fix ParseException from hive during ALTER SET TBLPROERTIES if datab...
Indhumathi27 [Fri, 13 Mar 2020 09:47:59 +0000 (15:17 +0530)] 
[CARBONDATA-3741] Fix ParseException from hive during ALTER SET TBLPROERTIES if database name starts with Underscore

Why is this PR needed?
After creating table, on next query, we will fire alter query to alter schema if table has index table or not. If database name contains underscore as first letter, hive alter query fails with parsing exception.

What changes were proposed in this PR?
Format Database name with `` , before firing the query to avoid parsing exception

Does this PR introduce any user interface change?
No

Is any new testcase added?
Yes

This closes #3668

2 years ago[CARBONDATA-3665] Support TimeBased Cache expiration using ExpiringMap
Indhumathi27 [Tue, 11 Feb 2020 12:50:38 +0000 (18:20 +0530)] 
[CARBONDATA-3665] Support TimeBased Cache expiration using ExpiringMap

Why is this PR needed?

Currently, in Carbon, we follow LRU cache based mechanism. An least-recently used entry will be removed from the cache when it is full. There is no time-based cache expiration supported in carbon. In cloud, all vm's may not have enough memory to cache everything we could cache.
In that case, we can clear cache after a specified duration. This can be achieved by using cache libraries available.

One of the caching library is ExpringMap, which provides flexible and powerful caching features. Please refer ExpiringMap for more info.

What changes were proposed in this PR?

1. Replaced LinkedHashMap with ExpringMap
2. Added a table property to allow user to specify cache expiration duration in minutes, to clear cache entries for that table.
Newly added carbon table property:
index_cache_expiration_seconds which takes long value.
For example:
index_cache_expiration_seconds="300" -> After 5 minutes, cache will be cleared.

Does this PR introduce any user interface change?
Yes. (table property is added)

Is any new testcase added?
Yes

This closes #3653

2 years ago[CARBONDATA-3737] support prestodb and prestosql
ajantha-bhat [Thu, 27 Feb 2020 05:28:11 +0000 (10:58 +0530)] 
[CARBONDATA-3737] support prestodb and prestosql

Why is this PR needed?

Currently, carbondata supports only prestodb. As presto is divided into two communities prestodb and prestosql. It is necessary for carbondata to support the users from both the community.
Hence support prestodb-0.217 and prestosql-316 integration in carbon

What changes were proposed in this PR?

Keep a single presto module and have subfolders of common, prestodb, prestosql code (similar to latest spark integration structure)
support two profiles, prestodb and prestosql
Make prestoql as the default profile along with spark-2.3 default profile

Does this PR introduce any user interface change?
Yes. (updated the documents)

Is any new testcase added?
No (current testcases are enough for prestodb and prestosql) integration.
Manually run UT for both prestodb and prestosql.

This closes #3641

2 years ago[HOTFIX] Fix CarbonHive CI Failures
haomarch [Wed, 11 Mar 2020 09:34:02 +0000 (17:34 +0800)] 
[HOTFIX] Fix CarbonHive CI Failures

Why is this PR needed?
1. In some cases, the carbonhive ci failes because of the permission issue.
2. The csv filepath in the TestCase is wrong.
3. The complex type parsing has bugs.
4. When rowcount of resultset is zero, no error is throwed.

What changes were proposed in this PR?
1. Give 777 permission to carbonhive warehouse dirs.
2. Repair the csv filepath and complex typeparsing.
3. Verify the rowcount of resultset

Does this PR introduce any user interface change?
No

Is any new testcase added?
No

This closes #3665

2 years ago[HOTFIX] Exclude netty-all in lower version which could conflict with higher version
Zhangshunyu [Thu, 12 Mar 2020 03:37:55 +0000 (11:37 +0800)] 
[HOTFIX] Exclude netty-all in lower version which could conflict with higher version

Why is this PR needed?
exclude netty-all in lower version which could conflict with higher version

What changes were proposed in this PR?
pom is modified

Does this PR introduce any user interface change?
No

Is any new testcase added?
No

This closes #3666

2 years ago[CARBONDATA-3734] Fix insert failure on partition table when parition column is in...
ajantha-bhat [Mon, 2 Mar 2020 14:14:45 +0000 (19:44 +0530)] 
[CARBONDATA-3734] Fix insert failure on partition table when parition column is in sort column

Why is this PR needed?

When partition column is a sort column.

a) currently sort columns won't be the head of attributes, so need to add logic as per that, as partition columns will be in the end for global sort.

b) While rearranging the data fields at executor, need to keep partition column in the end even though it is in sort column.

What changes were proposed in this PR?
prepare sort columns for global sort based on the table sort columns.
Keep partition in the end, even though it is in sort columns for data field attributes

Does this PR introduce any user interface change?
No

Is any new testcase added?
No (already this scenario present in mv test case)

This closes #3654

2 years ago[CARBONDATA-3726] Add CDC and Data Dedup example
Jacky Li [Fri, 28 Feb 2020 06:39:58 +0000 (14:39 +0800)] 
[CARBONDATA-3726] Add CDC and Data Dedup example

Why is this PR needed?
Change Data Capture and Data Duplication is common tasks for data management, we should add examples for user to reference
We can leverage CarbonData's Merge API to implement these use cases

What changes were proposed in this PR?
1.Two examples are added
2.A performance improvement: earlier carbon always use 'full_outer' join to do Merge, in this PR we decide Join type based on match condition
3.Make auditor enable dynamically, user can disable it.

The output of CDCExample as following. By default in the example, target table has 200,000 rows and each change batch contains 9000 rows update, 1000 rows insert and 1000 rows delete

start CDC example using hive solution
generating target table...done! 10.43 s
applying change batch1...done! 5.94 s
applying change batch2...done! 3.99 s
applying change batch3...done! 3.58 s
applying change batch4...done! 3.31 s
applying change batch5...done! 3.22 s
applying change batch6...done! 4.31 s
applying change batch7...done! 5.00 s
applying change batch8...done! 4.02 s
applying change batch9...done! 5.88 s
applying change batch10...done! 5.33 s
total update takes 44.59 s
total query takes 1.33 s

start CDC example using carbon solution
generating target table...done! 10.03 s
applying change batch1...done! 4.48 s
applying change batch2...done! 2.35 s
applying change batch3...done! 2.00 s
applying change batch4...done! 1.99 s
applying change batch5...done! 1.80 s
applying change batch6...done! 1.81 s
applying change batch7...done! 1.59 s
applying change batch8...done! 1.70 s
applying change batch9...done! 1.74 s
applying change batch10...done! 1.70 s
total update takes 21.18 s
total query takes 0.81 s

Does this PR introduce any user interface change?
No

Is any new testcase added?
No

This closes #3643

2 years ago[CARBONDATA-3687] Support writing non-transactional carbondata files through hive
kunal642 [Sat, 11 Jan 2020 21:00:15 +0000 (02:30 +0530)] 
[CARBONDATA-3687] Support writing non-transactional carbondata files through hive

Why is this PR needed?
1. Support creating non-transactional carbon tables through hive.
2. Support writting data(insert into) in carbondata format through hive.

What changes were proposed in this PR?
1. Implemented MapredCarbonOutputFormat for data writing
2, Supported Map data type.

Does this PR introduce any user interface change?
No

Is any new testcase added?
Yes

This closes #3583

2 years ago[CARBONDATA-3730] Avoid data conversion and remove duplicate codes in BlockIndexerStorage
Manhua [Fri, 6 Mar 2020 02:39:05 +0000 (10:39 +0800)] 
[CARBONDATA-3730] Avoid data conversion and remove duplicate codes in BlockIndexerStorage

Why is this PR needed?

The initial purpose of this PR was to remove the conversion between byte[][] and List when applying RLE on datapage in BlockIndexerStorageForNoInvertedIndexForShort, especially case when rle won't give any benefit. After checking other subclass of BlockIndexerStorage whether has similar problem, we found many duplicate codes and clean them up also.

What changes were proposed in this PR?

avoid some conversion between byte[][] and List
refactor classes of BlockIndexerStorage to remove duplicate codes

Does this PR introduce any user interface change?
No

Is any new testcase added?
No

This closes #3649

2 years ago[HOTFIX] Remove Useless filepath truncation During prunning
haomarch [Fri, 6 Mar 2020 13:08:42 +0000 (21:08 +0800)] 
[HOTFIX] Remove Useless filepath truncation During prunning

Why is this PR needed?
During prunning, it will truncate the filepath with the keyword "/Part0". But it is useless.
Specially, for partition table, the filepath is like '/tablename/partitionkey=value/segment0/.carbondata', it even have no keywork '/Part0'.
Then for non-partition table, it is also meaningless to do this work.
If there are a huge amount of blocklets, such as 400 million blocklets are going to do prunned, the truncation hampers the query performance heavily.

What changes were proposed in this PR?
Remove the filepath truncation.

Does this PR introduce any user interface change?
No

Is any new testcase added?
No

This closes #3660

2 years ago[CARBONDATA-3728] Fix insert failure on partition table with local sort
ajantha-bhat [Sat, 29 Feb 2020 14:15:22 +0000 (19:45 +0530)] 
[CARBONDATA-3728] Fix insert failure on partition table with local sort

Why is this PR needed?

In the new Insert flow, partition column data is maintained at the end till convert to 3 steps of the write step.

But when local sort happens before the write step, The mapping is derived based on original internal order instead of partition internal order. Hence insert fails during sorting.

What changes were proposed in this PR?

Use internal partition order instead of internal order.

Support 1.1 compatibility

avoid impact for sort step of load flow partition.

Does this PR introduce any user interface change?
No

Is any new testcase added?
Yes

This closes #3645

2 years ago[CARBONDATA-3714] Support specify order type when list stage files
liuzhi [Tue, 18 Feb 2020 08:46:35 +0000 (16:46 +0800)] 
[CARBONDATA-3714] Support specify order type when list stage files

Why is this PR needed?
Sometimes, user want load the lastest data to table first.

What changes were proposed in this PR?
Add "batch_file_order" option for CarbonInsertFromStagesCommand.

Does this PR introduce any user interface change?
Yes. (One option "batch_file_order" is added for CarbonInsertFromStageCommand, document added)

Is any new testcase added?
Yes

This closes #3628

2 years ago[CARBONDATA-3700] Optimize prune performance when prunning with multi-threads
h00424960 [Fri, 14 Feb 2020 15:25:59 +0000 (23:25 +0800)] 
[CARBONDATA-3700] Optimize prune performance when prunning with multi-threads

Why is this PR needed?
1. When pruning with multi-threads, there is a bug hambers the prunning performance heavily.
When the pruning results in no blocklets to map the query filter, The getExtendblocklet function will be triggered to get the extend blocklet metadata, when the Input of this function is an empty blocklet list, this function is expected to return an empty extendblocklet list directyly , but now there is a bug leading to "a hashset add operation" overhead which is meaningless.
Meanwhile, When pruning with multi-threads, the getExtendblocklet function will be triggerd for each blocklet, which should be avoided by triggerring this function for each segment.
2. When pruning, there is a bug hambers the prunning performance heavily.
ValidatePartitionInfo operation is executed by every blocklet, and it iterates all the partitions info for each blocklet. sIf there are millions blocklets, and hundreds partitions, the compatutaion complexity will be hundreds millions.
3. In the prunning, It will create filterexecuter pre blocklet, which involves a huge performance degrade when there are serveral millions blocklet.
Specically, The creating of filterexecuter is a heavy operation which involves a lot of time cost init works.

What changes were proposed in this PR?
1.1 if the input is an empty blocklet list in the getExtendblocklet function, we return an empty extendblocklet list directyly
1.2 We trigger the getExtendblocklet functon for each segment instead of each blocklet.
2.1 Remove validatePartitionInfo. Add the validatePartiionInfo in the getDataMap processing
3.1 We create filterexecuter per segment instead of that per blocklet, and share the filterexecuter between all blocklets.
In the case, add column or change sort column, then update the segment, there will be serveral different columnschemas of blocklets which exist in the segment, only if the columnshemas of all the blocklets are same, the filterexecuter can be shared. So we add a fingerprinter for each blocklet, to identify the columnschema. If the fingerprinters are same, which means that the columnschema are equal with each other, so the filterexecuter can be reused

Does this PR introduce any user interface change?
No.

Is any new testcase added?
Yes.

This closes #3620

2 years ago[CARBONDATA-3731] Avoid data copy in Writer
Jacky Li [Sat, 29 Feb 2020 06:38:38 +0000 (14:38 +0800)] 
[CARBONDATA-3731] Avoid data copy in Writer

Why is this PR needed?
For variable length column like String and Binary, currently there are 5 data copies during data write process, in CarbonFactDataHandlerColumnar.processDataRows

What changes were proposed in this PR?
This PR avoids unnecessary copies:

reduce from 5 copy to 1 copy by using DirectByteBuffer: copy data into column page backed by a ByteBuffer (DirectBuffer)
use Snappy to compress DirectBuffer directly and output compressed data in another ByteBuffer (DirectBuffer)

Does this PR introduce any user interface change?
No

Is any new testcase added?
Yes

This closes #3638

2 years ago[CARBONDATA-3735] Avoid listing all tables in metastore
Jacky Li [Wed, 4 Mar 2020 08:30:44 +0000 (16:30 +0800)] 
[CARBONDATA-3735] Avoid listing all tables in metastore

Why is this PR needed?
In CarbonCreateDataSourceTableCommand.scala, RegisterIndexTableCommand.scala, carbon is trying to list all tables in a database.
It will be slow if there are many tables in the db, thus should be avoided.

What changes were proposed in this PR?
This PR uses catalog tableExists API instead of listing all tables

Does this PR introduce any user interface change?
No

Is any new testcase added?
No

This closes #3655

2 years ago[CARBONDATA-3721] use centrol repo #3658
Zhangshunyu [Thu, 5 Mar 2020 07:14:58 +0000 (15:14 +0800)] 
[CARBONDATA-3721] use centrol repo #3658

use centrol repo

This closes #3658

2 years ago[CARBONDATA-3721][CARBONDATA-3590] Optimize Bucket Table
Zhangshunyu [Sun, 9 Feb 2020 14:04:48 +0000 (22:04 +0800)] 
[CARBONDATA-3721][CARBONDATA-3590] Optimize Bucket Table

Why is this PR needed?

Support Bucket Table consistent with spark to improve the join performance by avoid shuffle for bucket column. The same time, fix bugs about load/compact query of bucket.

What changes were proposed in this PR?

Support Bucket Table and consistent with spark to improve the join performance by avoid shuffle for bucket column. Fix bugs also.

1. For create table, ddl support both tblproperties and clustered by like hive.
2. For loading, fix some problems in loading when bucket column specified, make it clusterd into diff files based on bucket column.
3. For query, the hash impl should either keep the same for a given value or keep same with parquet table, so that the join result of diff bucket tables give correct result. By the way, the hash impl is configurable.
4. For compaction, group the block files based on bucket id, the data should hash into diff carbondata files also, otherwise the query flow will group the files based on bucket num, all data compacted will com into 1 partition and the join result will mismatch, the performace will very slow.
5. For tests, add 19 test cases in TableBucketingTestCase

Does this PR introduce any user interface change?
No

Is any new testcase added?
Yes

This closes #3637

2 years ago[CARBONDATA-3732] Fix ClassCastException with rand() udf function
Indhumathi27 [Mon, 2 Mar 2020 07:02:44 +0000 (12:32 +0530)] 
[CARBONDATA-3732] Fix ClassCastException with rand() udf function

Why is this PR needed?
ClassCastException is thrown, while running queries with cast of rand() function. This is because, while making a deterministic expression, we are converting an alias of CustomDeterministic expression to CustomDeterministic expression again, which is not needed.

What changes were proposed in this PR?
Do not convert an Alias of CustomDeterministic expression to CustomDeterministic expression again

Does this PR introduce any user interface change?
No

Is any new testcase added?
Yes

This closes #3648

2 years ago[CARBONDATA-3696] Avoid list db's all Tables to check table exists in the db
ShuMingLi [Thu, 13 Feb 2020 02:37:49 +0000 (10:37 +0800)] 
[CARBONDATA-3696] Avoid list db's all Tables to check table exists in the db

Why is this PR needed?

I found a lot of listTables of the db to check if table exists like this:

sparkSession.sessionState.catalog.listTables(databaseName)
  .exists(_.table.equalsIgnoreCase(tableName)
This may affect performances if there are lots of tables in one database. In spark, we can check this by tableExists function.

What changes were proposed in this PR?
use exits(db, table) to replace iterate tables in a db.

Does this PR introduce any user interface change?
No

Is any new testcase added?
No

This closes #3631

2 years ago[CARBONDATA-3725]fix concurrent creation of Materialized Views issue
akashrn5 [Fri, 28 Feb 2020 07:00:39 +0000 (12:30 +0530)] 
[CARBONDATA-3725]fix concurrent creation of Materialized Views issue

Why is this PR needed?
When two create MVs are running concurrently in two different sessions with two different databases, then in any create fails in any session, other sessions's current database is changed and corresponding queries fails with table not found exception.

What changes were proposed in this PR?
When the session is changed we need to clear the datamap catalog map which may lead to this problem. Initially it was handled only for query and other flows, it wasnt handled in create MV flow. Handled same, make proper synchronisations to avoid these problems.

Does this PR introduce any user interface change?
Yes. (added a isSchemaRegistered in DatamapCatalog Interface, which is required to avoid multiple registration of same datamap schemas)

Is any new testcase added?
No, existing test cases will take care

This closes #3642

2 years ago[HOTFIX] optimize module dependency
QiangCai [Tue, 3 Mar 2020 09:21:11 +0000 (17:21 +0800)] 
[HOTFIX] optimize module dependency

Why is this PR needed?
there are many redundancy module dependencies

What changes were proposed in this PR?
1.optimize module dependency
2.fix HiveExample testcase
3.avoid to getOrCreate sparkSession in testcase again
4.add more testcases

Does this PR introduce any user interface change?
No

Is any new testcase added?
Yes

This closes #3652

2 years ago[CARBONDATA-3716] Fixed spark 2.4 UT failures
akkio-97 [Mon, 2 Mar 2020 07:02:32 +0000 (12:32 +0530)] 
[CARBONDATA-3716] Fixed spark 2.4 UT failures

Why is this PR needed?

Issue:
a) In 2.4 subquery alias produces an output set with alias identifier(that is both database_name and table_name) which causes failures.
Solution- Get subquery alias output with only table_name as alias
b) In 2.4 a new variable was introduced "spark.sql.legacy.allowCreatingManagedTableUsingNonemptyLocation" which is by default set to "false".
While refreshing table In 2.4 we need to set this variable to "true" in order to create table in non empty location.

Does this PR introduce any user interface change?
No

Is any new testcase added?
No

This closes #3629

2 years ago[CARBONDATA-3348] Fix the case insensitive validation for duplicate sort column.
Nihal kumar ojha [Mon, 2 Mar 2020 04:16:50 +0000 (09:46 +0530)] 
[CARBONDATA-3348] Fix the case insensitive validation for duplicate sort column.

Why is this PR needed?
Currently the column name with different case(upper and lower)
is getting considered as different columns for sort properties.

What changes were proposed in this PR?
Added the case insensitive validation for duplicate sort column.

Does this PR introduce any user interface change?
No

Is any new testcase added?
Yes

This closes #3647

2 years ago[CARBONDATA-3715]Fix Timeseries Query Rollup failure for timeseries column of Date...
Indhumathi27 [Fri, 21 Feb 2020 05:59:32 +0000 (11:29 +0530)] 
[CARBONDATA-3715]Fix Timeseries Query Rollup failure for timeseries column of Date type

Why is this PR needed?

Issue 1:
Timeseries query with timeseries column as date,is throwing parsing exception after rollup, because while forming sql for cast expression, it is taking wrong attribute name

Issue 2:
to_date() function has case sensitive issues while rewriting the plan

What changes were proposed in this PR?

Issue 1:
If query is rolled up for date, then take attribute name for forming sql for cast expression.

Issue 2:
Convert cast expression child to lower case during rewrite

Does this PR introduce any user interface change?
No

Is any new testcase added?
Yes

This closes #3630

2 years ago[HOTFIX] Remove spark dependency in Processing module
Indhumathi27 [Mon, 2 Mar 2020 08:24:20 +0000 (13:54 +0530)] 
[HOTFIX] Remove spark dependency in Processing module

Why is this PR needed?
Remove spark dependency in Processing module, as it is not required

What changes were proposed in this PR?
Removed spark dependency in Processing module

Does this PR introduce any user interface change?
No

Is any new testcase added?
No

This closes #3650

2 years ago[CARBONDATA-3719] upgraded hive version to 3.1.0
kunal642 [Sun, 23 Feb 2020 08:24:29 +0000 (13:54 +0530)] 
[CARBONDATA-3719] upgraded hive version to 3.1.0

Why is this PR needed?
Upgrade hive version to take advantages of new optimizatons n hive.

What changes were proposed in this PR?
Version upgrade and compilation fixes for same

Does this PR introduce any user interface change?
No

Is any new testcase added?
No

This closes #3636

2 years ago[CARBONDATA-3723] Fix insert failure when partition column is a first column of proje...
ajantha-bhat [Wed, 26 Feb 2020 06:55:43 +0000 (12:25 +0530)] 
[CARBONDATA-3723] Fix insert failure when partition column is a first column of projection in MV

Why is this PR needed?
For Alter table drop and add column scenarios, partition columns
may not be in the end of create-order column. So, added a logic
to keep the partition column in the end in #3634.

But partition may not be the last projection column during mv creation.
So now, create order partition is kept last, but the projection is not last.
Hence the insert gives wrong data or fails.

What changes were proposed in this PR?
rearrage partition to last in create order columns, only for alter table scenarios

This closes #3640

2 years ago[CARBONDATA-3720] Support alter table scenario for new insert into flow
ajantha-bhat [Sun, 23 Feb 2020 05:34:30 +0000 (11:04 +0530)] 
[CARBONDATA-3720] Support alter table scenario for new insert into flow

Why is this PR needed?
Currently, the rearrange logic is based on schema ordinal.

For alter table drop and add columns with/without partition, schema ordinal based re arrange may not work as index will be outside the projection size. This logic become complex to handle.

Hence don't use schema ordinal for rerrange, implemented a position map based rearrange.

What changes were proposed in this PR?
Implemented a position map based rearrange.

Does this PR introduce any user interface change?
No

Is any new testcase added?
No

This closes #3634

2 years ago[CARBONDATA-3637] Use optimized insert flow for MV and insert stage command
ajantha-bhat [Sat, 15 Feb 2020 03:12:42 +0000 (08:42 +0530)] 
[CARBONDATA-3637] Use optimized insert flow for MV and insert stage command

Why is this PR needed?
MV and insert stage can use the new optimized insert into flow.

Also In the new insert into flow, found one issue with the partition column. Fixed it.

If the catalog table schema is already rearranged, don't rearrange again.
Timestamp converter was not handled for 0 value. Need to set it to Null when it is 0.
While deriving the index for the convert to 3 step for new insert flow, order was based on internal partition order, instead of internal order.

What changes were proposed in this PR?

changed MV and insert stage command to use optimized insert flow.

After this changes,
b. CarbonInsertIntoCommand -- insert DML, CTAS DML, MV, insert stage command.
c. CarbonInsertIntoWithDf -- old flow which supports bad record handling with converter step method that process update, compaction, df writer, alter table scenarios [some problem in rearranging now]

Does this PR introduce any user interface change?
No

Is any new testcase added?
No

This closes #3615

2 years ago[CARBONDATA-3710] Make stage files queryable
Jacky Li [Mon, 17 Feb 2020 11:06:37 +0000 (19:06 +0800)] 
[CARBONDATA-3710] Make stage files queryable

Why is this PR needed?
Currenlty, stage files are written by SDK to a temp folder inside carbondata table path, but it is only queryable after calling "INSERT INTO tableName STAGE" command, it makes data latency longer.

What changes were proposed in this PR?
This PR is to add a feature to make stage files queryable before inserting them into the table.
Since these stage files do not have index, they need to be scanned like normal columnar files

Does this PR introduce any user interface change?
Yes (One configuration called "carbon.query.stage.input.enable" is added, document added)

Is any new testcase added?
No (current testcase is enhanced to test querying the stage files, see TestCarbonWriter)

This closes #3627

2 years ago[CARBONDATA-3705] Support create and load MV for spark datasource table
Jacky Li [Tue, 18 Feb 2020 13:01:29 +0000 (21:01 +0800)] 
[CARBONDATA-3705] Support create and load MV for spark datasource table

Why is this PR needed?
Materialized View is a feature built on top of Spark, it should support not only carbondata format but also other formats.

What changes were proposed in this PR?
Added an API in CarbonMetaStore to lookup any relation, not just carbon relation
When creating MV, use newly added lookup relation to get all parent table relations. Use CatalogTable instead of CarbonTable whenever possible
Skip the segment handling when loading MV

Does this PR introduce any user interface change?
No

Is any new testcase added?
Yes

This closes #3625

2 years ago[Re-factory] Re-factory modules
QiangCai [Mon, 24 Feb 2020 09:31:18 +0000 (17:31 +0800)] 
[Re-factory] Re-factory modules

Why is this PR needed?
there are too many spark-related modules.

What changes were proposed in this PR?
1. update docs
2. merge spark-common, spark2, spark-datasource and spark-common-test
into integration/spark
3. fix all testcases after moving modules

Does this PR introduce any user interface change?
No

Is any new testcase added?
No

This closes #3592

2 years ago[Re-factory] Re-factory modules
QiangCai [Mon, 24 Feb 2020 09:19:38 +0000 (17:19 +0800)] 
[Re-factory] Re-factory modules

Why is this PR needed?
There are too many spark-related modules.

What changes were proposed in this PR?
1. move carbondata/store to carbondata/sdk
2. move examples/spark2 to examples/spark
3. move secondary_index to index/secondary-index
4. move datamap/mv to mv
5. move datamap to index

Does this PR introduce any user interface change?
No

Is any new testcase added?
No

2 years ago[CARBONDATA-3688] Add compressor name in data file name
Jacky Li [Sat, 22 Feb 2020 12:27:07 +0000 (20:27 +0800)] 
[CARBONDATA-3688] Add compressor name in data file name

Why is this PR needed?
Currently there is no easy way to tell what compressor is used given one carbondata file unless to read the FileFooter in the file.

What changes were proposed in this PR?
Added compressor name in the carbondata file name, now the file name pattern is
partNo-taskNo-batchNo-bucketNo-segmentNo-timestamp.compressorName.carbondata

Does this PR introduce any user interface change?
No

Is any new testcase added?
Yes

This closes #3606

2 years ago[CARBONDATA-3695] Integrating deep learning framework PyTorch
xubo245 [Wed, 12 Feb 2020 15:38:18 +0000 (23:38 +0800)] 
[CARBONDATA-3695]  Integrating deep learning framework PyTorch

Why is this PR needed?
Nowadays AI model training is getting more and more popular. Currently many AI framework uses raw data files or row format data files for model training, it could not provide projection, filtering, and fast scan capability like in columnar store. So, if CarbonData supports AI framework, it can speed up model training by increase IO throughput, and provide more flexible training set selection ability to AI developers

What changes were proposed in this PR?

Does this PR introduce any user interface change?
Yes. Added a new interface for pytorch

def make_data_loader(reader, batch_size=1, collate_fn=decimal_friendly_collate):

Is any new testcase added?
Yes
pytorch_example_carbon_unified_api.py . and so on.

This closes #3617

2 years ago[HOTFIX] exclude servlet-api.jar and jsp-api.jar from dependency
Zhang Zhichao [Sun, 23 Feb 2020 07:19:58 +0000 (15:19 +0800)] 
[HOTFIX] exclude servlet-api.jar and jsp-api.jar from dependency

Why is this PR needed?
When run app in idea, spark ui will throw exception.

What changes were proposed in this PR?
servlet-api.jar 2.5 and jsp-api.jar 2.1 conflict with jetty, so exclude these two jars from dependencies.

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

This closes #3635

2 years ago[CARBONDATA-3717] Fix inconsistent configs in docs
勉一 [Fri, 21 Feb 2020 11:35:30 +0000 (19:35 +0800)] 
[CARBONDATA-3717] Fix inconsistent configs in docs

Why is this PR needed?
Now there are more and more configs in CarbonData(maybe is too many that is hard to maintain).

I found a lot of confusing configs when I was using Carbon:

- `table_block_size` -> `table_blocksize`
- `sort.inmemory.size.in.mb` -> `sort.inmemory.size.inmb`
- unused config(useless):
  - carbon.number.of.cores
  - carbon.graph.rowset.size
  - carbon.enableXXHash
  - ....
What changes were proposed in this PR?
Fix wrong config docs;
Remove unused/meaningless config docs;

Does this PR introduce any user interface change?
No

Is any new testcase added?
No

This closes #3632

2 years ago[CARBONDATA-3679] Optimize local sort performance
Manhua [Sat, 15 Feb 2020 02:46:59 +0000 (10:46 +0800)] 
[CARBONDATA-3679] Optimize local sort performance

Why is this PR needed?
In local sort, multi-threads is used for each partition but adding rows to a same object with lock. Only after that, sort and write operations run.
For better performance, we want to do the sort and write(sortTemp file) operations in parallel.

What changes were proposed in this PR?
remove object lock when adding rows to (Unsafe)SortDataRows.
keep object lock in (Unsafe)IntermediateMerger to collect results of all threads.

For unsafe local sort, about 40% time is reduced with multi-cores in one case.

Performance related configuration includes: carbon.number.of.cores.while.loading & yarn.nodemanager.local-dirs

Does this PR introduce any user interface change?
No

Is any new testcase added?
No

This closes #3603

2 years ago[CARBONDATA-3689][CARBONDATA-3694] Separate Materialized View command from DataMap...
Jacky Li [Fri, 14 Feb 2020 10:01:20 +0000 (18:01 +0800)] 
[CARBONDATA-3689][CARBONDATA-3694] Separate Materialized View command from DataMap command

Why is this PR needed?
To better promote Materialized View usage, we can make Materialized View as an independent extension for Apache Spark
Many databases has materialized view command, carbondata should also use similar syntax instead of datamap syntax

What changes were proposed in this PR?
This PR adds Materialized View extension for spark:
Following SQL command are supported:

1. CREATE MATERIALIZED VIEW
2. DROP MATERIALIZED VIEW
3. SHOW MATERIALIZED VIEW
4. REFRESH MATERIALIZED VIEW

Following optimizer rules are added:
1. Rewrite SQL statement by matching existing MV and
select the lowest cost MV
This PR adds implementation of Materialized View related command, which is independent of DataMap command

This closes #3612

2 years ago[CARBONDATA-3709] Move stage_data directory to the $tablePath/ from $tablePath/Metadata/
liuzhi [Mon, 17 Feb 2020 13:02:31 +0000 (21:02 +0800)] 
[CARBONDATA-3709] Move stage_data directory to the $tablePath/ from $tablePath/Metadata/

Why is this PR needed?
The stage_data directory is data directory, but under the $tablePath/Metadata/ directory, it cause the metadata directory is not clean.

What changes were proposed in this PR?
Move stage_data directory to the $tablePath/ from $tablePath/Metadata/, and keep the $tablePath/Metadata/ directory not include any data.

This closes #3626

2 years ago[CARBONDATA-3637] Optimize insert into flow
ajantha-bhat [Thu, 26 Dec 2019 07:17:13 +0000 (15:17 +0800)] 
[CARBONDATA-3637] Optimize insert into flow

Why is this PR needed?
Currently insert performance is slow and memory usage is high as it is using load flow itself.
Hence optimizing insert flow in this PR.

What changes were proposed in this PR?
Optimize insert into flow

Separated load and insert command;
a. CarbonLoadDataCommand -- Command to process only Load DML
b. CarbonInsertIntoCommand -- Command to process insert DML and CTAS DML. This is the new optimized flow. It will be explained in detail later
c. CarbonInsertIntoWithDf -- old flow which supports bad record handling with converter step method that process update, compaction, df writer, Insert from stage, mv datamap, insert with values, alter table scenarios [some problem in rearranging now], insert from hive external table (raw data)

Note: In future many flows which are in CarbonInsertIntoWithDf will use optimized flow, once optimized flow is stable and well tested and performance is measured.

Added a carbon property carbon.enable.bad.record.handling.for.insert, by default this is false. Assuming user knows the data and no need of bad record handling. If insert has to go to old flow. Enable this property to true

Changes done for CarbonInsertIntoCommand
a. Avoid re-arranging of every row, by rearranging the projection itself.
b. Avoid converting each row from spark internal row to spark row. Directly using internal row till write step.
c. Avoid converting each row to string object and converter step. Just kept object level converter for direct dictionary and time stamp columns and complex data types, static partition.
d. New convert to 3 step logic as old logic cannot be used on rearranged schema.
e. Handled for all the flows like local sort, no sort, global sort, partition + all sort combination + complex data types.

This closes #3538