carbondata.git
2 months ago[CARBONDATA-4338] Moving dropped partition data to trash master
Mahesh Raju Somalaraju [Mon, 6 Jun 2022 11:22:28 +0000 (16:52 +0530)] 
[CARBONDATA-4338] Moving dropped partition data to trash

Why is this PR needed?
When drop partition operation is performed carbon data will
modify only table status file and can not delete the actual
partition folder which contains data and index files. As
comply with hive behaviour carbon data also should delete
the deleted partition folder in storage[hdfs/obs/etc..].
Before deleting carbon data will keep copy in Trash folder.
User can restore it by checking the partition name and time stamp.

What changes were proposed in this PR?
Moved the deleted partition folder files to trash folder

Does this PR introduce any user interface change?
No

Is any new testcase added?
Yes

This closes #4276

2 months ago[CARBONDATA-4342] Fix Desc Columns shows New Column added, even though ALter ADD...
Indhumathi27 [Thu, 9 Jun 2022 15:24:30 +0000 (20:54 +0530)] 
[CARBONDATA-4342] Fix Desc Columns shows New Column added, even though ALter ADD column query failed

Why is this PR needed?
1. When spark.carbon.hive.schema.store property is enabled, alter operations fails
with Class Cast Exception.
2. When Alter add/drop/rename column operation failed due to the issue mentioned above,
the revert schema operation is not reverting back to the old schema

What changes were proposed in this PR?
1. Use org.apache.spark.sql.hive.CarbonSessionCatalogUtil#getClient to get HiveClient
to avoid ClassCast Exception
2. Revert the schema in the spark Catalog table also, in case of failure

Does this PR introduce any user interface change?
No

Is any new testcase added?
Yes

This closes #4277

3 months ago[CARBONDATA-4345] update/delete operations failed when other format segemnt deleted...
Mahesh Raju Somalaraju [Tue, 28 Jun 2022 11:33:39 +0000 (17:03 +0530)] 
[CARBONDATA-4345] update/delete operations failed when other format segemnt deleted from carbon table

Why is this PR needed?
Update/delete operations failed when other format segments deleted from carbon table
Steps to reproduce:
1. create carbon table and load the data
2. create parquet/orc tables and load the data
3. add parquet/orc format segments in carbon table by alter add segment command
4. perform update/delete operations in carbon table and they will fail as table
   contains mixed format segments. This is expected behaviour only.
5. delete the other format segments which is added in step3
6. try to perform update/delete operation in carbon data. They should not fail

For update/delete operations we are checking if other format segments present
in table path. If found then carbon data throwing exception by saying mixed
format segments exists even though the other format segments deleted from table.

What changes were proposed in this PR?
When we are checking other format segment present in carbon table then it
should check only for SUCCESS/PARTIAL_SUCCESS segments.

Does this PR introduce any user interface change?
No

Is any new testcase added?
Yes

This closes #4285

3 months ago[CARBONDATA-4344] Create MV fails with "LOCAL_DICTIONARY_INCLUDE/LOCAL _DICTIONARY_EX...
ShreelekhyaG [Wed, 22 Jun 2022 11:41:23 +0000 (17:11 +0530)] 
[CARBONDATA-4344] Create MV fails with "LOCAL_DICTIONARY_INCLUDE/LOCAL _DICTIONARY_EXCLUDE column: does not exist in table. Please check the DDL" error

Why is this PR needed?
Create MV fails with "LOCAL_DICTIONARY_INCLUDE/LOCAL _DICTIONARY_EXCLUDE column: does not exist in table.
Please check the DDL" error.
Error occurs only in this scenario: Create Table --> Load --> Alter Add Columns --> Drop table --> Refresh Table --> Create MV
and not in direct scenario like: Create Table --> Load --> Alter Add Columns --> Create MV

What changes were proposed in this PR?
1. After add column command, LOCAL_DICTIONARY_INCLUDE and LOCAL_DICTIONARY_EXCLUDE properties
   are added to the table even if the columns are empty. So, when MV is created next as
   LOCAL_DICTIONARY_EXCLUDE column is defined it tries to access its columns and fails.
   --> Added empty check before adding properties to the table to resolve this.
2. In a direct scenario after add column, the schema gets updated in catalog table but
   the table properties are not updated. Made changes to update table properties to catalog table.

Does this PR introduce any user interface change?
No

Is any new testcase added?
Yes

This closes #4282

3 months ago[CARBONDATA-4339]Fix NullPointerException in load overwrite on partition table
akashrn5 [Thu, 16 Jun 2022 13:21:37 +0000 (18:51 +0530)] 
[CARBONDATA-4339]Fix NullPointerException in load overwrite on partition table

Why is this PR needed?
After delete segment and clean files with force option true, the load overwrite
operation throws nullpointer exception. This is because when clean files with
force is done, except the 0th segment and last segment remaining marked for
delete will be moved to tablestatus.history file irrespective of the status of
the 0th and last segment. During overwrite load, the overwritten partition
will be dropped. Since all the segments are physically deleted with clean
files, and load model's load metadata details list contains 0th segment
which is marked for delete also leading to failure.

What changes were proposed in this PR?
When the valid segments are collected, filter using the segment's status to avoid the failure.

This closes #4280

3 months ago[CARBONDATA-4341] Drop Index Fails after TABLE RENAME
ShreelekhyaG [Wed, 15 Jun 2022 06:38:41 +0000 (12:08 +0530)] 
[CARBONDATA-4341] Drop Index Fails after TABLE RENAME

Why is this PR needed?
Drop Index Fails after TABLE RENAME

What changes were proposed in this PR?
After table rename, its si tables property - parentTableName is updated
with latest name and index metadata gets updated. Dropping the table
from the metadata cache so that it would be reloaded and gets updated
property when fetched next time.

Does this PR introduce any user interface change?
No

Is any new testcase added?
Yes

This closes #4279

4 months ago[CARBONDATA-4335] Disable MV by default
Mahesh Raju Somalaraju [Tue, 10 May 2022 14:16:44 +0000 (19:46 +0530)] 
[CARBONDATA-4335] Disable MV by default

Why is this PR needed?
Currently materialized view(mv) is enabled by default. In concurrent scenarios
with default mv enabled each session is going through the list of databases
even though mv not used. Due to this query time increased.

What changes were proposed in this PR?
Disable mv by default as users using mv rarely. If user required then enable
and use it.

Does this PR introduce any user interface change?
No

Is any new testcase added?
Yes

This closes #4264

4 months ago[CARBONDATA-4336] Table Status Versioning
Indhumathi27 [Fri, 22 Apr 2022 13:29:03 +0000 (18:59 +0530)] 
[CARBONDATA-4336] Table Status Versioning

Why is this PR needed?
Currently, carbondata will store the records of a transaction (load/insert/IUD/Add/drop segment)
in a metadata file named `tablestatus’ which will be present in the Metadata directory.
If the tablestatus file is lost, then the metadata for the transactions cannot be recovered
directly, as there is no previous version file available for tablestatus. Hence, if we support
versioning for tablestatus files, then it will be easy to recover the current version tablestatus
meta from previous version tablestatus files.

Please refer Table Status Versioning & Recovery Tool for more info.

What changes were proposed in this PR?
-> On each transaction commit, committed the latest load metadata details to a new version file
-> Updated the latest tablestatus version timestamp in the table properties [CarbonTable cache] and in the hive metastore
-> Added a table status version tool which can recover the latest transaction details based on old version file

Does this PR introduce any user interface change?
Yes

Is any new testcase added?
Yes

This closes #4261

5 months ago[CARBONDATA-4330] Incremental Dataload of Average aggregate in MV
ShreelekhyaG [Mon, 24 Jan 2022 09:47:48 +0000 (15:17 +0530)] 
[CARBONDATA-4330] Incremental Dataload of Average aggregate in MV

Why is this PR needed?
Currently, whenever MV is created with average aggregate, a full
refresh is done meaning it reloads the whole MV for any newly
added segments. This will slow down the loading. With incremental
data load, only the segments that are newly added can be loaded to the MV.

What changes were proposed in this PR?
If avg is present, rewrite the query with the sum and count of the
columns to create MV and use them to derive avg.
Refer: https://docs.google.com/document/d/1kPEMCX50FLZcmyzm6kcIQtUH9KXWDIqh-Hco7NkTp80/edit

Does this PR introduce any user interface change?
No

Is any new testcase added?
Yes

This closes #4257

6 months ago[CARBONDATA-4329] Fix multiple issues with External table
Indhumathi27 [Wed, 23 Mar 2022 05:46:01 +0000 (11:16 +0530)] 
[CARBONDATA-4329] Fix multiple issues with External table

Why is this PR needed?
Issue 1:
When we create external table on transactional table location,
schema file will be present. While creating external table,
which is also transactional, the schema file is overwritten

Issue 2:
If external table is created on a location, where the source table
already exists, on drop external table, it is deleting the table data.
Query on the source table fails

What changes were proposed in this PR?
Avoid writing schema file if table type is external and transactional
Dont drop external table location data, if table_type is external

This closes #4255

6 months ago[CARBONDATA-4328] Load parquet table with options error message fix
ShreelekhyaG [Mon, 14 Mar 2022 09:10:35 +0000 (14:40 +0530)] 
[CARBONDATA-4328] Load parquet table with options error message fix

Why is this PR needed?
If parquet table is created and load statement with options is
triggerred, then its failing with NoSuchTableException:
Table ${tableIdentifier.table} does not exist.

What changes were proposed in this PR?
As parquet table load is not handled, added a check to filter out
non-carbon tables in the parser. So that, the spark parser can handle the statement.

This closes #4253

6 months ago[CARBONDATA-4327] Update documentation related to partition
ShreelekhyaG [Thu, 17 Mar 2022 14:11:05 +0000 (19:41 +0530)] 
[CARBONDATA-4327] Update documentation related to partition

Why is this PR needed?
Drop partition with data is not supported and a few of the links are not working.

What changes were proposed in this PR?
Removed unsupported syntax , duplicate headings and updated the header with proper linkage.

This closes #4254

6 months ago[CARBONDATA-4306] Fix Query Performance issue for Spark 3.1
Indhumathi27 [Fri, 4 Mar 2022 07:55:36 +0000 (13:25 +0530)] 
[CARBONDATA-4306] Fix Query Performance issue for Spark 3.1

Why is this PR needed?
Some non-partition filters, which cannot be handled by carbon, is not pushed down to spark.

What changes were proposed in this PR?
If partition filters is non empty, then the filter column is not partition column, then push the filter to spark

This closes #4252

6 months ago[maven-release-plugin] prepare for next development iteration
kunal642 [Wed, 19 Jan 2022 11:20:11 +0000 (16:50 +0530)] 
[maven-release-plugin] prepare for next development iteration

6 months ago[maven-release-plugin] prepare release apache-carbondata-2.3.0-rc2
kunal642 [Wed, 19 Jan 2022 11:18:56 +0000 (16:48 +0530)] 
[maven-release-plugin] prepare release apache-carbondata-2.3.0-rc2

6 months ago[CARBONDATA-4326] MV not hitting with multiple sessions issue fix
ShreelekhyaG [Wed, 2 Mar 2022 15:28:14 +0000 (20:58 +0530)] 
[CARBONDATA-4326] MV not hitting with multiple sessions issue fix

Why is this PR needed?
MV created in beeline not hitting in sql/shell and vice versa if both
beeline and sql/shell are running in parallel. Currently, If the view
catalog for a particular session is already initialized then the schemas
are not reloaded each time. So when mv is created in another session
and queried from the currently open session, mv is not hit.

What changes were proposed in this PR?
1.Reload mv catalog every time to getSchemas from the path. Register the
schema if not present in the catalog and deregister the schema if it's dropped.
2. When create SI is triggered, no need to try rewriting the plan and
check for mv schemas. So, returning plan if DeserializeToObject is present.

Does this PR introduce any user interface change?
No

Is any new testcase added?
No, tested in cluster

This closes #4251

6 months ago[CARBONDATA-4325] Update Data frame supported options in document and fix partition...
ShreelekhyaG [Mon, 28 Feb 2022 09:27:34 +0000 (14:57 +0530)] 
[CARBONDATA-4325] Update Data frame supported options in document and fix partition table creation with df spatial property

Why is this PR needed?
1. Only specific properties are supported using dataframe options. Need to update the documentation.
2. Create partition table fails with Spatial index property for carbon table created with dataframe in spark-shell.

What changes were proposed in this PR?
1. Added data frame supported properties in the documentation.
2. Using spark-shell, the table gets created with carbon session and catalogTable.properties
is empty here. Getting the properties from catalogTable.storage.properties to access the properties set.

Does this PR introduce any user interface change?
No

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

This closes #4250

7 months ago[CARBONDATA-4322] Apply local sort task level property for insert
ShreelekhyaG [Mon, 24 Jan 2022 12:37:19 +0000 (18:07 +0530)] 
[CARBONDATA-4322] Apply local sort task level property for insert

Why is this PR needed?
Currently, When carbon.partition.data.on.tasklevel is enabled with
local sort, the number of tasks launched for load will be based on
node locality. But for insert command, the local sort task level
property is not applied which is causing the number of tasks
launched based on the input files.

What changes were proposed in this PR?
Included changes to apply carbon.partition.data.on.tasklevel property
for insert command as well. Used DataLoadCoalescedRDD to coalesce
the partitions and a DataLoadCoalescedUnwrapRDDto unwrap partitions
from DataLoadPartitionWrap and iterate.

Does this PR introduce any user interface change?
No

Is any new testcase added?
Yes

This closes #4248

8 months ago[CARBONDATA-4320] Fix clean files removing wrong delta files
Vikram Ahuja [Tue, 4 Jan 2022 11:08:12 +0000 (16:38 +0530)] 
[CARBONDATA-4320] Fix clean files removing wrong delta files

Why is this PR needed?
In the case where there are multiple delete delta files in a partition
in a partition table, some delta files were being ignored and deleted,
thus changing the value during the query

What changes were proposed in this PR?
Fixed the logic which checks which delta file to delete. Now checking
the deltaStartTime and comparing it with deltaEndTime to check consider
all the delta files during clean files.

Does this PR introduce any user interface change?
No

Is any new testcase added?
Yes, one test case has been added.

This closes #4246

9 months ago[CARBONDATA-4318]Improve load overwrite performance for partition tables
akashrn5 [Wed, 8 Dec 2021 10:19:47 +0000 (15:49 +0530)] 
[CARBONDATA-4318]Improve load overwrite performance for partition tables

Why is this PR needed?
With the increase in the number of overwrite loads for the partition table,
the time takes for each load keeps on increasing over time. This is because,

1. whenever a load overwrite for partition table is fired, it basically means
that we need to overwrite or drop the partitions if anything overlaps with
current partitions getting loaded. Since carbondata stores the partition
information in the segments file, to identify and drop partitions, it's
reading all the previous segment files to identify and drop the overwriting
partitions, which leads to a decrease in performance.

2. After partition load is completed, a cleanSegments method is called which
again reads segment file and table status file to identify MArked for delete
segments to clean. But Since the force clean is false and timeout also is
more than a day by default, it's not necessary to call this method.
Clean files should handle this part.

What changes were proposed in this PR?
1. we already have the information about current partitions, so with that first
identify if there are any partitions to overwrite, if yes then only we read segment
files to call dropParitition, else we don't read the segment files unnecessarily.
It also contains other refactoring to avoid reading table status file also.
2. no need to call clean segments after every load. Clean files will take care
to delete the expired ones.

This closes #4242

9 months ago[CARBONDATA-4308]: added docs for streamer tool configs
pratyakshsharma [Fri, 10 Dec 2021 13:59:49 +0000 (19:29 +0530)] 
[CARBONDATA-4308]: added docs for streamer tool configs

Why is this PR needed?
Documentation for the CDC streamer tool is missing

What changes were proposed in this PR?
Add th documentation for the cdc streamer tool contains the configs
and all the image and example command to try out.

Does this PR introduce any user interface change?
No

Is any new testcase added?
No

This closes #4243

9 months ago[CARBONDATA-4319] Fixed clean files not deleteting stale delete delta files after...
Vikram Ahuja [Wed, 22 Dec 2021 07:51:06 +0000 (13:21 +0530)] 
[CARBONDATA-4319] Fixed clean files not deleteting stale delete delta files after horizontal compaction

Why is this PR needed?
After horizontal compaction was performed on partition and non partition tables, the clean files
operation was not deleting the stale delete delta files. the code was removed as the part of clean
files refactoring done previously.

What changes were proposed in this PR?
Clean files with force option now handles removal of these stale delta files as well as the stale
tableupdatestatus file for both partition and non partition table.

This closes #4245

9 months ago[CARBONDATA-4317] Fix TPCDS performance issues carbon3.0
Indhumathi27 [Tue, 7 Dec 2021 15:02:05 +0000 (20:32 +0530)] 
[CARBONDATA-4317] Fix TPCDS performance issues

Why is this PR needed?
The following issues has degraded the TPCDS query performance
1. If dynamic filters is not present in partitionFilters Set, then that filter is skipped, to pushdown to spark.
2. In some cases, some nodes like Exchange / Shuffle is not reused, because the CarbonDataSourceSCan plan is not mached
3. While accessing the metadata on the canonicalized plan throws NPE

What changes were proposed in this PR?
1. Check if dynamic filters is present in PartitionFilters set. If not, pushdown the filter
2. Match the plans, by converting them to canonicalized and by normalising the expressions
3. Move variables used in metadata(), to avoid NPE while comparing plans

This closes #4241

9 months ago[CARBONDATA-4316]Fix horizontal compaction failure for partition tables
akashrn5 [Tue, 7 Dec 2021 13:25:13 +0000 (18:55 +0530)] 
[CARBONDATA-4316]Fix horizontal compaction failure for partition tables

Why is this PR needed?
Horizontal compaction fails for partition table leading to many delete
delta files for a single block, leading to slower query performance.
This is happening because during horizontal compaction the delta file
path prepared for the partition table is wrong which fails to identify
the path and fails the operation.

What changes were proposed in this PR?
If it is a partition table, read the segment file and identity the
partition where the block is present to prepare a proper partition path.

This closes #4240

9 months ago[CARBONDATA-4315] Supplementary information for add segment syntax This closes #4239
chenliang613 [Mon, 20 Dec 2021 14:55:16 +0000 (22:55 +0800)] 
[CARBONDATA-4315] Supplementary information for add segment syntax This closes #4239

9 months ago[maven-release-plugin] Reverted the pom changes to 2.2.0-SNAPSHOT
kunal642 [Mon, 20 Dec 2021 10:35:26 +0000 (16:05 +0530)] 
[maven-release-plugin] Reverted the pom changes to 2.2.0-SNAPSHOT

9 months ago[maven-release-plugin] prepare for next development iteration
kunal642 [Mon, 20 Dec 2021 10:55:30 +0000 (16:25 +0530)] 
[maven-release-plugin] prepare for next development iteration

9 months ago[maven-release-plugin] prepare release apache-carbondata-2.3.0-rc1
kunal642 [Mon, 20 Dec 2021 10:50:15 +0000 (16:20 +0530)] 
[maven-release-plugin] prepare release apache-carbondata-2.3.0-rc1

9 months ago[maven-release-plugin] Reverted the pom changes to 2.2.0-SNAPSHOT
kunal642 [Mon, 20 Dec 2021 10:35:26 +0000 (16:05 +0530)] 
[maven-release-plugin] Reverted the pom changes to 2.2.0-SNAPSHOT

9 months ago[maven-release-plugin] prepare for next development iteration
kunal642 [Mon, 20 Dec 2021 09:45:19 +0000 (15:15 +0530)] 
[maven-release-plugin] prepare for next development iteration

9 months ago[maven-release-plugin] prepare release apache-carbondata-2.3.0-rc1
kunal642 [Mon, 20 Dec 2021 09:41:10 +0000 (15:11 +0530)] 
[maven-release-plugin] prepare release apache-carbondata-2.3.0-rc1

9 months agoUpdate docs/addsegment-guide.md 4239/head
bieremayi [Sat, 18 Dec 2021 13:01:36 +0000 (21:01 +0800)] 
Update docs/addsegment-guide.md

ths!

Co-authored-by: Indhumathi27 <34215196+Indhumathi27@users.noreply.github.com>
9 months agoUpdate docs/addsegment-guide.md
bieremayi [Sat, 18 Dec 2021 13:00:33 +0000 (21:00 +0800)] 
Update docs/addsegment-guide.md

ths!

Co-authored-by: Indhumathi27 <34215196+Indhumathi27@users.noreply.github.com>
9 months agoSupplementary information for add segment syntax
bieremayi [Tue, 7 Dec 2021 09:18:58 +0000 (17:18 +0800)] 
Supplementary information for add segment syntax

9 months agoRevert "Supplementary information for add segment syntax ."
bieremayi [Tue, 7 Dec 2021 09:07:39 +0000 (17:07 +0800)] 
Revert "Supplementary information for add segment syntax ."

This reverts commit 81c2e29604d66e35f3757122cbc7cda0ed463cac.

9 months agoRevert "Add FAQ How to manage mix file format in carbondata table."
bieremayi [Tue, 7 Dec 2021 09:07:28 +0000 (17:07 +0800)] 
Revert "Add FAQ How to manage mix file format in carbondata table."

This reverts commit 598d1cee348887538a0d5a20dce6c2106a2b23f6.

9 months agoRevert "FAQ: carbon rename to carbondata"
bieremayi [Tue, 7 Dec 2021 09:07:15 +0000 (17:07 +0800)] 
Revert "FAQ: carbon rename to carbondata"

This reverts commit 885a21c413508a9ef959d329c56872d1cfc48b66.

9 months agoRevert "remove add segment refer"
bieremayi [Tue, 7 Dec 2021 09:07:01 +0000 (17:07 +0800)] 
Revert "remove add segment refer"

This reverts commit 69ab06ce2724649af49708ee55ff2e6abacad46e.

9 months agoRevert "remove useless numerical value , revert some typo issues"
bieremayi [Tue, 7 Dec 2021 09:06:29 +0000 (17:06 +0800)] 
Revert "remove useless numerical value , revert some typo issues"

This reverts commit 7af81adbf6800655902754c9b1dac5c1fb263f9d.

9 months agoremove useless numerical value , revert some typo issues
bieremayi [Sat, 4 Dec 2021 08:42:07 +0000 (16:42 +0800)] 
remove useless numerical value , revert some typo issues

9 months agoremove add segment refer
bieremayi [Thu, 2 Dec 2021 11:26:07 +0000 (19:26 +0800)] 
remove add segment refer

10 months agoFAQ: carbon rename to carbondata
bieremayi [Mon, 29 Nov 2021 10:39:07 +0000 (18:39 +0800)] 
FAQ: carbon rename to carbondata

10 months agoAdd FAQ How to manage mix file format in carbondata table.
bieremayi [Mon, 29 Nov 2021 10:18:05 +0000 (18:18 +0800)] 
Add FAQ How to manage mix file format in carbondata table.

1. add segment example.
2. faq.md link to addsegment-guide.md

10 months ago[CARBONDATA-4305] Support Carbondata Streamer tool for incremental fetch and merge...
akashrn5 [Wed, 1 Sep 2021 13:54:24 +0000 (19:24 +0530)] 
[CARBONDATA-4305] Support Carbondata Streamer tool for incremental fetch and merge from kafka and DFS Sources

Why is this PR needed?
In the current Carbondata CDC solution, if any user wants to integrate it with a streaming source then he
need to write a separate spark application to capture changes which is an overhead. We should be able to
incrementally capture the data changes from primary databases and should be able to incrementally ingest
the same in the data lake so that the overall latency decreases. The former is taken care of using
log-based CDC systems like Maxwell and Debezium. Here is a solution for the second aspect using Apache Carbondata.

What changes were proposed in this PR?
Carbondata streamer tool is a spark streaming application which enables users to incrementally ingest data
from various sources, like Kafka(standard pipeline would be like MYSQL => debezium => (kafka + Schema registry) => Carbondata Streamer tool)
and DFS into their data lakes. The tool comes with out-of-the-box support for almost all types of schema
evolution use cases. With the streamer tool only add column support is given with drop column and
other schema changes capability in line in the upcoming days. Please refer to design document for
more details about usage and working of the tool.

This closes #4235

10 months agoSupplementary information for add segment syntax .
bieremayi [Thu, 25 Nov 2021 09:46:57 +0000 (17:46 +0800)] 
Supplementary information for add segment syntax .

1. add segment option (partition)
2. segment-management-on-carbondata.md link addsegment-guide.md

10 months ago[CARBONDATA-4296]: schema evolution, enforcement and deduplication utilities added
pratyakshsharma [Wed, 27 Oct 2021 08:24:37 +0000 (13:54 +0530)] 
[CARBONDATA-4296]: schema evolution, enforcement and deduplication utilities added

Why is this PR needed?
This PR adds schema enforcement, schema evolution and deduplication capabilities for
carbondata streamer tool specifically. For the existing IUD scenarios, some work
needs to be done to handle it completely, for example -
1. passing default values and storing them in table properties.

Changes proposed for the phase 2 -
1. Handling delete use cases with upsert operation/command itself. Right now we
consider update as delete + insert. With the new streamer tool, it is possible that
user sets upsert as the operation type and incoming stream has delete records as well.
What changes were proposed in this PR?

Configs and utility methods are added for the following use cases -
1. Schema enforcement
2. Schema evolution - add column, delete column, data type change scenario
3. Deduplicate the incoming dataset against incoming dataset itself. This is useful
in scenarios where incoming stream of data has multiple updates for the same record
and we want to pick the latest.
4. Deduplicate the incoming dataset against existing target dataset. This is useful
when operation type is set as INSERT and user does not want to insert duplicate records.

This closes #4227

11 months ago[CARBONDATA-4194] Fixed presto read after update/delete from spark
nihal0107 [Fri, 24 Sep 2021 11:31:29 +0000 (17:01 +0530)] 
[CARBONDATA-4194] Fixed presto read after update/delete from spark

Why is this PR needed?
After update/delete with spark on the table which contains array/struct column,
when we are trying to read from presto then it is throwing class cast exception.
It is because when we perform update/delete then it contains vector of type
ColumnarVectorWrapperDirectWithDeleteDelta which we are trying to typecast to
CarbonColumnVectorImpl and because of this it is throwing typecast exception.
After fixing this(added check for instanceOf) it started throwing IllegalArgumentException.
It is because:

1. In case of local dictionary enable CarbondataPageSource.load is calling
ComplexTypeStreamReader.putComplexObject before setting the correct number
of rows(doesn't subtrat deleted rows). And it throws IllegalArgument while
block building for child elements.
2. position count is wrong in the case of the struct. It should subtract
the number of deleted rows in LocalDictDimensionDataChunkStore.fillVector.
While this is not required to be changed in the case of the array because
datalength of the array already taking care of deleted rows in
ColumnVectorInfo.getUpdatedPageSizeForChildVector.

What changes were proposed in this PR?
First fixed class cast exception after putting instanceOf condition in if block.
Then subtracted the deleted row count before calling ComplexTypeStreamReader.putComplexObject
in DirectCompressCodec.decodeAndFillVector. Also handle deleted rows in case of struct
in LocalDictDimensionDataChunkStore.fillVector

Does this PR introduce any user interface change?
No

Is any new testcase added?
No

This Closes #4224

11 months ago[CARBONDATA-4240]: Added missing properties on the configurations page
pratyakshsharma [Wed, 27 Oct 2021 08:21:07 +0000 (13:51 +0530)] 
[CARBONDATA-4240]: Added missing properties on the configurations page

Why is this PR needed?
Few properties which were not present on configurations page but are
user facing properties have been added.

What changes were proposed in this PR?
Addition of missing properties

Does this PR introduce any user interface change?
No

Is any new testcase added?
No

This Closes #4210

11 months ago[CARBONDATA-4303] Columns mismatch when insert into table with static partition
jack86596 [Tue, 12 Oct 2021 03:22:44 +0000 (11:22 +0800)] 
[CARBONDATA-4303] Columns mismatch when insert into table with static partition

Why is this PR needed?
When insert into table with static partition, source projects should not contain
static partition column, target table will have all columns, the columns number
comparison between source table and target table is: source table column
number = target table column number - static partition column number.

What changes were proposed in this PR?
Before do the column number comparison, remove the static partition column
from target table.

This Closes #4233

11 months ago[CARBONDATA-4306] Fix Query Performance issue for Spark 3.1
Indhumathi27 [Thu, 30 Sep 2021 09:11:35 +0000 (14:41 +0530)] 
[CARBONDATA-4306] Fix Query Performance issue for Spark 3.1

Why is this PR needed?
Currently, with Spark 3.1, some rules are applied many times resulting in performance degrade.

What changes were proposed in this PR?
Changed Rules apply strategy from Fixed to Once and CarbonOptimizer can directly extend SparkOptimizer avoiding applying same rules many times

This Closes #4229

11 months ago[CARBONDATA-4298][CARBONDATA-4281] Empty bad record support for complex type
ShreelekhyaG [Wed, 29 Sep 2021 15:48:13 +0000 (21:18 +0530)] 
[CARBONDATA-4298][CARBONDATA-4281] Empty bad record support for complex type

Why is this PR needed?
1. IS_EMPTY_DATA_BAD_RECORD property not supported for complex types.
2. To update documentation that COLUMN_META_CACHE and RANGE_COLUMN
   doesn't support complex datatype

What changes were proposed in this PR?
1. Made changes to pass down IS_EMPTY_DATA_BAD_RECORD property and
   throw exception. Store empty complex type instead of storing
   null value which matches with hive table result.
2. Updated document and added testcase.

Does this PR introduce any user interface change?
No

Is any new testcase added?
Yes

This closes #4228

11 months ago[CARBONDATA-4292] Spatial index creation using spark dataframe
ShreelekhyaG [Wed, 22 Sep 2021 06:11:11 +0000 (11:41 +0530)] 
[CARBONDATA-4292] Spatial index creation using spark dataframe

Why is this PR needed?
To support spatial index creation using spark data frame

What changes were proposed in this PR?
Added spatial properties in carbonOptions and edited existing testcases.

Does this PR introduce any user interface change?
Yes

Is any new testcase added?
Yes

This closes #4222

11 months ago[CARBONDATA-4215] Fix query issue after add segment other formats with vector read...
ShreelekhyaG [Tue, 28 Sep 2021 13:48:11 +0000 (19:18 +0530)] 
[CARBONDATA-4215] Fix query issue after add segment other formats with vector read disabled

Why is this PR needed?
If carbon.enable.vector.reader is disabled and parquet/orc segments are added
to carbon table. Then on query, it fails with java.lang.ClassCastException:
org.apache.spark.sql.vectorized.ColumnarBatch cannot be cast to
org.apache.spark.sql.catalyst.InternalRow. When vector reader property is
disabled, while scanning ColumnarBatchScan supportBatch would be overridden
to false but external file format like ParuetFileFormat supportBatch is not
overriden and it takes default as true.

What changes were proposed in this PR?
Made changes to override supportBatch of external file formats based on
carbon.enable.vector.reader property.

This closes #4226

11 months ago[CARBONDATA-4293] Make Table created without external keyword as Transactional table
Indhumathi27 [Wed, 22 Sep 2021 17:43:23 +0000 (23:13 +0530)] 
[CARBONDATA-4293] Make Table created without external keyword as Transactional table

Why is this PR needed?
Currently, when you create a table with location( without external keyword) in cluster,
the corresponding table is created as transactional table. If External keyword is
present, then it is created as non-transactional table. This scenario is not handled
in local mode.

What changes were proposed in this PR?
Made changes, to check if external keyword is present or not. If present, then make
the corresponding table as transactional table.

This closes #4221

11 months ago[CARBONDATA-4228] [CARBONDATA-4203] Fixed update/delete after alter add segment
nihal0107 [Tue, 21 Sep 2021 12:44:21 +0000 (18:14 +0530)] 
[CARBONDATA-4228] [CARBONDATA-4203] Fixed update/delete after alter add segment

Why is this PR needed?
Deleted records are reappearing or updated records are showing old values in select
queries. It is because after horizontal compaction delete delta file for the external
segment is written to the default path which is Fact\part0\segment_x\ while if the
segment is an external segment then delete delta file should be written to the path
where the segment is present.

What changes were proposed in this PR?
After delete/update operation on the segment, horizontal compaction will be triggered.
Now after horizontal compaction for external segments, the delete delta file will be
written to the segment path at the place of the default path.

This closes #4220

11 months ago[CARBONDATA-4243] Fixed si with column meta cache on same column
nihal0107 [Mon, 27 Sep 2021 13:06:52 +0000 (18:36 +0530)] 
[CARBONDATA-4243] Fixed si with column meta cache on same column

Why is this PR needed?
Currently, the select query fails when table contains SI and column_meta_cache
on the same columns with to date() UDF. This is happening because pushdownfilters
is null in CarbonDataSourceScanHelper and it is causing null pointer exception.

What changes were proposed in this PR?
At place of passing null value for pushdownfilters in CarbonDataSourceScan.doCanonicalize passed Seq.empty.

This closes #4225

12 months ago[CARBONDATA-4288][CARBONDATA-4289] Fix various issues with Index Server caching mecha...
Vikram Ahuja [Fri, 17 Sep 2021 07:24:01 +0000 (12:54 +0530)] 
[CARBONDATA-4288][CARBONDATA-4289] Fix various issues with Index Server caching mechanism.

Why is this PR needed?
There are 2 issues in the Index Server flow:
In case when there is a main table with a SI table with prepriming disabled and index serve
enabled, new load to main table and SI table put the cache for the main table in the index
server. Cache is also getting again when a select query is fired. This issue happens because
during load to SI table, getSplits is called on the main table segment which is in Insert In
Progress state. Index server considers this segment as a legacy segment because it's index
size = 0 and does not put it's entry in the tableToExecutor mapping. In the getsplits method
isRefreshneeded is false the first time getSplits is called. During the select query, in
getSplits method isRefreshNeeded is true and the previous loaded entry is removed from the
driver but since there is no entry for that table in tableToExecutor mapping, the previous
cache value becomes dead cache and always stays in the index server. The newly loaded cache
is loaded to a new executor and 2 copies of cache for the same segment is being mantained.
Concurrent select queries to the index server shows wrong cache values in the Index server.

What changes were proposed in this PR?
The following changes are proposed to the index server code:
Removing cache object from the index server in case the segment is INSERT IN PROGRESS and
in the case of legacy segment adding the value in tabeToExecutor mappping so that the cache
is also removed from the executor side.
Concurrent queries were able adding duplicate cache values to other executors. Changed logic
of assign executors method so that concurrent queries are not able to add cache for same segment
in other executors

This closes #4219

12 months ago[CARBONDATA-4285] Fix alter add complex columns with global sort compaction failure
Mahesh Raju Somalaraju [Thu, 16 Sep 2021 17:11:54 +0000 (22:41 +0530)] 
[CARBONDATA-4285] Fix alter add complex columns with global sort compaction failure

Why is this PR needed?
Alter add complex columns with global sort compaction is failing due to

AOI exception : Currently creating default complex delimiter list in global sort compaction
with size of 3. For map case need extra complex delimiter for handling the key-value
bad record handling: When we add complex columns after insert the data, complex columns
has null data for previously loaded segments. this null value is going to treat as bad
record and compaction is failed.

What changes were proposed in this PR?
In Global sort compaction flow create default complex delimiter with 4, as already
doing in load flow.
Bad records handling pruned for compaction case. No need to check bad records for
compaction as they are already checked while loading. previously loaded segments data
we are inserting again in compaction case

This closes #4218

12 months ago[CARBONDATA-4286] Fixed measure comparator
nihal0107 [Wed, 15 Sep 2021 15:36:25 +0000 (21:06 +0530)] 
[CARBONDATA-4286] Fixed measure comparator

Why is this PR needed?
Select query on a table with and filter condition returns an empty result
while valid data present in the table.

Root cause: Currently when we are building the min-max index at block level,
that time we are using unsafe byte comparator for either dimension or measure
column which returns incorrect result for measure columns.

What changes were proposed in this PR?
We should use different comparators for dimensions and measure columns which
we are already doing at time of writing the min-max index at blocklet level.

Does this PR introduce any user interface change?
No

Is any new testcase added?
No

This closes #4217

12 months ago[CARBONDATA-4284] Load/insert after alter add column on partition table with complex...
ShreelekhyaG [Mon, 13 Sep 2021 13:14:19 +0000 (18:44 +0530)] 
[CARBONDATA-4284] Load/insert after alter add column on partition table with complex column fails

Why is this PR needed?
Insert after alter add column on partition table with complex column fails with bufferUnderFlowException
List of columns order in TableSchema is different after alter add column.
Ex: If partition is of dimension type, when table is created the schema columns order is as
dimension columns(partition column also) + complex column
After alter add, we are changing the order of columns in schema by moving the partition column to last.
complex column + partition column
Due to this change in order, while fillDimensionAndMeasureDetails, the indexing is wrong as it
expects complex column to be last always which causes bufferUnderFlowException while flattening complex row.

What changes were proposed in this PR?
After alter add, removed changes to add partition column at last.

This closes #4215

12 months ago[CARBONDATA-4277] geo instance compatability fix
ShreelekhyaG [Tue, 14 Sep 2021 08:07:48 +0000 (13:37 +0530)] 
[CARBONDATA-4277] geo instance compatability fix

Why is this PR needed?
The CustomIndex interface extends Serializable and for different
version store, if the serialization id doesn't match, it throws
java.io.InvalidClassException during load/update/query operations.

What changes were proposed in this PR?
As the instance is stored in table properties, made changes to
initialize and update instance while refresh table. Also added
static serialId for the CustomIndex interface.

Does this PR introduce any user interface change?
No

Is any new testcase added?
No, tested in cluster

This closes #4216

12 months ago[CARBONDATA-4282] Fix issues with table having complex columns related to long string...
ShreelekhyaG [Mon, 6 Sep 2021 18:24:07 +0000 (23:54 +0530)] 
[CARBONDATA-4282] Fix issues with table having complex columns related to long string, SI, local dictionary

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

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

Does this PR introduce any user interface change?
No

Is any new testcase added?
Yes

This closes #4214

13 months ago[CARBONDATA-4278] Avoid refetching all indexes to get segment properties
Mahesh Raju Somalaraju [Mon, 23 Aug 2021 14:18:09 +0000 (19:48 +0530)] 
[CARBONDATA-4278] Avoid refetching all indexes to get segment properties

Why is this PR needed?
When block index[BlockIndex] is available then no need to prepare indexes[List[BlockIndex] from available segments and partition locations which might cause delay in query performance.

What changes were proposed in this PR?
Call directly get segment properties if block index[BlockIndex] available.

      if (segmentIndices.get(0) instanceof BlockIndex) {
        segmentProperties =
            segmentPropertiesFetcher.getSegmentPropertiesFromIndex(segmentIndices.get(0));
      } else {
        segmentProperties =
            segmentPropertiesFetcher.getSegmentProperties(segment, partitionLocations);
      }
getSegmentPropertiesFromIndex is calling directly block index segment properties.

Does this PR introduce any user interface change?
No

Is any new testcase added?
No. Already index related test cases are present which can cover the added code.

This closes #4209

13 months ago[CARBONDATA-4273] Fix Cannot create external table with partitions
Indhumathi27 [Fri, 27 Aug 2021 13:13:09 +0000 (18:43 +0530)] 
[CARBONDATA-4273] Fix Cannot create external table with partitions

Why is this PR needed?
Create partition table with location fails with unsupported message.

What changes were proposed in this PR?
This scenario works in cluster mode. This check can be moved in local
mode also and partition table can be created with table with location

Does this PR introduce any user interface change?
No

Is any new testcase added?
Yes

This closes #4211

13 months ago[CARBONDATA-4271] Support DPP for carbon
Indhumathi27 [Tue, 13 Jul 2021 11:37:39 +0000 (17:07 +0530)] 
[CARBONDATA-4271] Support DPP for carbon

Why is this PR needed?
This PR enables Dynamic Partition Pruning for carbon.

What changes were proposed in this PR?
CarbonDatasourceHadoopRelation has to extend HadoopFsRelation,
because spark has added a check to use DPP only for relation matching HadoopFsRelation
Apply Dynamic filter and get runtimePartitions and set this to CarbonScanRDD for pruning

This closes #4199

13 months ago[CARBONDATA-4274] Fix create partition table error with spark 3.1
ShreelekhyaG [Thu, 19 Aug 2021 14:56:00 +0000 (20:26 +0530)] 
[CARBONDATA-4274] Fix create partition table error with spark 3.1

Why is this PR needed?
With spark 3.1, we can create a partition table by giving partition
columns from schema.
Like below example:
create table partitionTable(c1 int, c2 int, v1 string, v2 string)
stored as carbondata partitioned by (v2,c2)

When the table is created by SparkSession with CarbonExtension,
catalog table is created with the specified partitions.
But in cluster/ with carbon session, when we create partition
table with above syntax it is creating normal table with no partitions.

What changes were proposed in this PR?
partitionByStructFields is empty when we directly give partition
column names. So it was not creating a partition table. Made
changes to identify the partition column names and get the struct
field and datatype info from table columns.

This closes #4208

13 months ago[CARBONDATA-4164][CARBONDATA-4198][CARBONDATA-4199][CARBONDATA-4234] Support alter...
ShreelekhyaG [Wed, 14 Jul 2021 16:31:14 +0000 (22:01 +0530)] 
[CARBONDATA-4164][CARBONDATA-4198][CARBONDATA-4199][CARBONDATA-4234] Support alter add map, multilevel complex columns and rename/change datatype.

Why is this PR needed?
Support alter add map, multilevel complex columns, and Change datatype for complex type.

What changes were proposed in this PR?
1. Support adding of single-level and multi-level map columns
2. Support adding of multi-level complex columns(array/struct)
3. Support renaming of map columns including nested levels
4. Alter change datatype at nested levels (array/map/struct)

Does this PR introduce any user interface change?
No

Is any new testcase added?
Yes

This closes #4180

13 months ago[CARBONDATA-4119][CARBONDATA-4238][CARBONDATA-4237][CARBONDATA-4236] Support geo...
ShreelekhyaG [Mon, 16 Aug 2021 17:40:56 +0000 (23:10 +0530)] 
[CARBONDATA-4119][CARBONDATA-4238][CARBONDATA-4237][CARBONDATA-4236] Support geo insert without geoId and document changes

Why is this PR needed?
1. To insert without geoid (like load) on geo table.
2. [CARBONDATA-4119] : User Input for GeoID column not validated.
3. [CARBONDATA-4238] : Documentation Issue in ddl-of-carbondata.md#add-columns
4. [CARBONDATA-4237] : Documentation issues in streaming-guide.md, file-structure-of-carbondata.md and sdk-guide.md.
5. [CARBONDATA-4236] : Documenatation issues in configuration-parameters.md.
6. import processing class in streaming-guide.md is wrong

What changes were proposed in this PR?
1. Made changes to support insert on geo table with auto-generated geoId.
2. [CARBONDATA-4119] : Added documentation about insert with custom geoId. Changes in docs/spatial-index-guide.md
3. Other documentation changes added.

Does this PR introduce any user interface change?
No

Is any new testcase added?
Yes

This closes #4205

13 months ago[CARBONDATA-4272]carbondata test case not including the load command with overwrite...
chenliang613 [Sun, 22 Aug 2021 04:12:05 +0000 (12:12 +0800)] 
[CARBONDATA-4272]carbondata test case not including the load command with overwrite This closes #4207

13 months ago[CARBONDATA-4272]carbondata test case not including the load command with overwrite 4207/head
litao [Thu, 19 Aug 2021 06:53:09 +0000 (14:53 +0800)] 
[CARBONDATA-4272]carbondata test case not including the load command with overwrite

13 months ago[CARBONDATA-4269] Update url and description for new prestosql-guide.md
czy006 [Fri, 13 Aug 2021 14:46:09 +0000 (22:46 +0800)] 
[CARBONDATA-4269] Update url and description for new prestosql-guide.md

Why is this PR needed?
PrestoSQL has now changed its name to Trino. Because Facebook established the Presto Foundation at The Linux Foundation®,Led to prestosql Must be change the name
More information can see here : https://trino.io/blog/2020/12/27/announcing-trino.html

What changes were proposed in this PR?
1. Change the url to prestosql 333
2. Added a description indicating that the user prestoSQL has been renamed to Trino

Does this PR introduce any user interface change?
No

Is any new testcase added?
No

This closes #4202

13 months ago[CARBONDATA-4091] support prestosql 333 integartion with carbon 4200/head
ajantha-bhat [Mon, 9 Mar 2020 10:51:41 +0000 (16:21 +0530)] 
[CARBONDATA-4091] support prestosql 333 integartion with carbon

Why is this PR needed?
Currently carbondata is integrated with presto-sql 316, which is 1.5 years older.
There are many good features and optimization that came into presto
like dynamic filtering, Rubix data cache and some performance improvements.

It is always good to use latest version, latest version is presto-sql 348.
But jumping from 316 to 348 will be too many changes.
So, to utilize these new features and based on customer demand, I suggest
to upgrade presto-sql to 333 version. Later it will be again upgraded
to more latest version in few months.

Note:
This is a plain integration to support all existing features of presto316,
deep integration to support new features like dynamic filtering,
Rubix cache will be handled in another PR.

What changes were proposed in this PR?
1. Adapt to the new hive adapter changes like some constructor changes,
   Made a carbonDataConnector to support CarbonDataHandleResolver
2. Java 11 removed ConstructorAccessor class, so using unsafe class for
   reflection. (presto333 depend on java 11 for runtime)
3. POM changes to support presto333

Note: JAVA 11 environment is needed for running presto333 with carbon and also
need add this jvm property "--add-opens=java.base/jdk.internal.ref=ALL-UNNAMED"

This closes #4034

13 months ago[CARBONDATA-4256] Fixed parsing failure on SI creation for complex column
Nihal ojha [Thu, 29 Jul 2021 10:19:59 +0000 (15:49 +0530)] 
[CARBONDATA-4256] Fixed parsing failure on SI creation for complex column

Why is this PR needed?
Currently, SI creation on a complex column that includes child column
with a dot(.) fails with parse exception.

What changes were proposed in this PR?
Handled parsing for create index on complex column.

Does this PR introduce any user interface change?
No

Is any new testcase added?
Yes

This closes #4187

13 months ago[CARBONDATA-4267][Doc][summer-2021]Update and modify some content in quick-start...
chenliang613 [Sun, 8 Aug 2021 12:00:09 +0000 (20:00 +0800)] 
[CARBONDATA-4267][Doc][summer-2021]Update and modify some content in quick-start-guide.md This closes #4197

13 months agoUpdate quick-start-guide.md
CHEN XIN [Thu, 5 Aug 2021 11:57:12 +0000 (19:57 +0800)] 
Update quick-start-guide.md

Modify minor errors and correct some misunderstandings in the document

Create quick-start-guide.md

13 months ago[CARBONDATA-4266][Doc][summer-2021] Add TOC and format how-to-contribute-to-apache...
chenliang613 [Sat, 7 Aug 2021 08:59:52 +0000 (16:59 +0800)] 
[CARBONDATA-4266][Doc][summer-2021] Add TOC and format how-to-contribute-to-apache-carbondata.md This closes #4192

13 months ago[Doc][summer-2021] Add TOC and format how-to-contribute-to-apache-carbondata.md
Jerome [Sun, 1 Aug 2021 10:07:51 +0000 (18:07 +0800)] 
[Doc][summer-2021] Add TOC and format how-to-contribute-to-apache-carbondata.md

Due to Github Flavored Markdown, Github does't support TOC automatic generation in Markdown file. Use  anchors to implement  TOC of headings.

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

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

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

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

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

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

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

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

Does this PR introduce any user interface change?
No

Is any new testcase added?
Yes

This closes #4186

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

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

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

Does this PR introduce any user interface change?
No

Is any new testcase added?
Yes

This closes #4148

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

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

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

Does this PR introduce any user interface change?
No

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

This closes #4177

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

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

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

Does this PR introduce any user interface change?
No

Is any new testcase added?
Yes

This closes #4175

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

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

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

This closes #4183

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

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

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

This closes #4176

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

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

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

This closes #4157

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

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

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

This closes #4162

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

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

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

This closes #4164

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

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

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

This closes #4167

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

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

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

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

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

Does this PR introduce any user interface change?
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