2 years ago[maven-release-plugin] prepare release apache-CarbonData-1.6.0-rc3 apache-CarbonData-1.6.0-rc3
Raghunandan S [Tue, 13 Aug 2019 06:11:44 +0000 (11:41 +0530)] 
[maven-release-plugin] prepare release apache-CarbonData-1.6.0-rc3

2 years ago[CARBONDATA-3490] Fix concurrent data load failure with carbondata FileNotFound exception
ajantha-bhat [Fri, 9 Aug 2019 04:49:32 +0000 (10:19 +0530)] 
[CARBONDATA-3490] Fix concurrent data load failure with carbondata FileNotFound exception

problem: When two load is happening concurrently, one load is cleaning the temp directory of the concurrent load

cause: temp directory to store the carbon files is created using system.get nano time, due to this two load have same store location. when one load is completed, it cleaned the temp directory. causing dataload failure for other load.

use UUID instead of nano time while creating the temp directory to have each load a unique directory.

This closes #3352

2 years ago[CARBONDATA-3488] Check the file size after move local file to carbon path
Zhang Zhichao [Thu, 8 Aug 2019 06:02:41 +0000 (14:02 +0800)] 
[CARBONDATA-3488] Check the file size after move local file to carbon path

the row num saved in carbonindex file is non zero but the file size of relevant carbondata file is 0.

In CarbonUtil.copyCarbonDataFileToCarbonStorePath, check the file size of carbon file whether is the same as the size fo local file after move local file to carbon path.

This closes #3350

2 years ago[HOTFIX] Fix dictionary include issue with codegen failure
ajantha-bhat [Fri, 9 Aug 2019 12:03:34 +0000 (17:33 +0530)] 
[HOTFIX] Fix dictionary include issue with codegen failure

problem: when whole codegen is false, query on dictionary include column fails.

cause: This is because, the data type is not updated for dictionary include column.

solution: return the updated expression when data type is changed for the dictionary include column

This closes #3353

2 years ago[CARBONDATA-3482] Fixed NPE in Concurrent query
kunal642 [Mon, 29 Jul 2019 09:01:31 +0000 (14:31 +0530)] 
[CARBONDATA-3482] Fixed NPE in Concurrent query

Problem: In case of concurrent queries if Q1 is loading cache and Q2 is removing from cache then Q2 may remove the segmentPropertiesIndex which Q1 has allocated and is about to access. This will cause NullPointerException .

Solution: Instead of adding index in BlockDataMap keep the reference of segmentPropertiesWrapper to be used.

This closes #3351

2 years ago[CARBONDATA-3486] Fix Serialization/Deserialization issue with DataType
manishnalla1994 [Fri, 2 Aug 2019 11:50:56 +0000 (17:20 +0530)] 
[CARBONDATA-3486] Fix Serialization/Deserialization issue with DataType

When we use old store and do alter add sort columns on it then query on the old segment,
serialization/de-serialization issue comes for Filter Column of Measure type which has been changed
in Sort Column as it is being de-serialized by ObjectSerialization. This fails the check and the query.

Checked the datatype based on Datatype ID and not on the object.

This closes #3348

2 years ago[CARBONDATA-3487] wrong Input metrics (size/record) displayed in spark UI during...
ajantha-bhat [Thu, 1 Aug 2019 11:46:44 +0000 (17:16 +0530)] 
[CARBONDATA-3487] wrong Input metrics (size/record) displayed in spark UI during insert into

Problem: wrong Input metrics (size/record) displayed in spark UI during insert into

a) size metrics was wrong as the update didn't happen to spark input metrics because of below problem
NewDataFrameRDD was setting thread local id, which was override by ScanRDD thread local id
due to multi level RDD.
b) Record metrics was not proper because, during insert into scanRDD will be called by multiple threads.
Hence synchronisation was not there as one spark input metric (task level) is used by all the concurrent scanRDD.

a) To fix the size, set threadlocal for parent RDD and don't set threadlocal for child RDD If it is already registered.
b) To fix record, add synchronisation for record metrics (decrease the frequency by checking after interval)

This closes #3345

2 years ago[CARBONDATA-3452] Fix select query failure when substring on dictionary column with...
ajantha-bhat [Tue, 25 Jun 2019 10:18:06 +0000 (15:48 +0530)] 
[CARBONDATA-3452] Fix select query failure when substring on dictionary column with join

Problem: select query failure when substring on dictionary column with join.

Cause: when dictionary include is present, data type is updated to int from string in plan attribute.
so substring was unresolved on int column. Join operation try to reference this attribute which is unresolved.

Solution: skip updating datatype if dictionary is included in the plan

This closes #3306

2 years ago[CARBONDATA-3476] Fix Read time and scan time stats in executor log for filter query
vikram-ahuja [Wed, 24 Jul 2019 09:43:55 +0000 (15:13 +0530)] 
[CARBONDATA-3476] Fix Read time and scan time stats in executor log for filter query

Root cause: Projection read time is added in scan time because of this scan time and
read time is not correct in stats

Solution: Added projection read time for both measure and dimension column in read
stats seperately.

This closes #3333

2 years ago[CARBONDATA-3485] Data loading is failed from S3 to hdfs table having ~2K carbonfiles
BJangir [Thu, 1 Aug 2019 14:50:07 +0000 (20:20 +0530)] 
[CARBONDATA-3485] Data loading is failed from S3 to hdfs table having ~2K carbonfiles

This closes #3346

2 years ago[CARBONDATA-3483] don't require update.lock and compaction.lock again when execute...
Zhang Zhichao [Thu, 1 Aug 2019 01:53:14 +0000 (09:53 +0800)] 
[CARBONDATA-3483] don't require update.lock and compaction.lock again when execute 'IUD_UPDDEL_DELTA' compaction

After PR#3166, horizontal compaction will not actually run when execute update sql.
When it runs update sql and will run horizontal compaction if needs, it will require update.lock and compaction.lock when execute CarbonAlterTableCompactionCommand.alterTableForCompaction, but these two locks already are locked when it starts to execute update sql. so it will require locks failed and can't execute compaction.

Don't require update.lock and compaction.lock again when execute 'IUD_UPDDEL_DELTA' compaction

This closes #3343

2 years ago[CARBONDATA-3477] deal line break chars correctly after 'select' in 'update ... selec...
Zhang Zhichao [Fri, 26 Jul 2019 15:57:53 +0000 (23:57 +0800)] 
[CARBONDATA-3477] deal line break chars correctly after 'select' in 'update ... select columns' sql

When use below sql to update table:
UPDATE IUD_table2 a
 SET (a.IUD_table2_country, a.IUD_table2_salary) = (select
 b.IUD_table1_country, b.IUD_table1_salary from IUD_table1 b where b.IUD_table1_id = 8)
 WHERE a.IUD_table2_id < 6 or a.IUD_table2_id > 15

It will throw out exception.

deal line break chars correctly after 'select' in 'update ... select columns' sql

This closes #3338

2 years ago[HOTFIX] Removed the hive-exec and commons dependency from hive module
ravipesala [Fri, 2 Aug 2019 05:45:05 +0000 (11:15 +0530)] 
[HOTFIX] Removed the hive-exec and commons dependency from hive module

Removed the hive-exec and commons dependency from hive module as spark has its own hive-exec.
Because of external hive-exec dependency, some tests are failing.

This closes #3347

2 years ago[CARBONDATA-3481] Multi-thread pruning fails when datamaps count is just near numOfTh...
ajantha-bhat [Thu, 25 Jul 2019 13:20:19 +0000 (18:50 +0530)] 
[CARBONDATA-3481] Multi-thread pruning fails when datamaps count is just near numOfThreadsForPruning

Cause : When the datamaps count is just near numOfThreadsForPruning,
As code is checking '>= ', last thread may not get the datamaps for prune.
Hence array out of index exception is thrown in this scenario.
There is no issues with higher number of datamaps.

Solution: In this scenario launch threads based on the distribution value,
not on the hardcoded value

This closes #3336

2 years ago[HOTFIX] CLI test case failed during release because of space differences
ravipesala [Thu, 1 Aug 2019 12:42:50 +0000 (18:12 +0530)] 
[HOTFIX] CLI test case failed during release because of space differences

CLI test case is failed if the release name is short and without snapshot, it adds more space.
That's why changed test check the individual contains instead of a batch of lines.

This closes #3344

2 years ago[CARBONDATA-3478]Fix ArrayIndexOutOfBound Exception on compaction after alter operation
Indhumathi27 [Fri, 26 Jul 2019 11:21:32 +0000 (16:51 +0530)] 
[CARBONDATA-3478]Fix ArrayIndexOutOfBound Exception on compaction after alter operation

In case of alter add, drop, rename operation, restructuredBlockExists will be true.
Currently, to get RawResultIterator for a block, we check if block has ColumnDrift
or not, by comparing SegmentProperties and columndrift columns.
SegmentProperties will be formed based on restructuredBlockExists.
if restructuredBlockExists is true, we will take current column schema to form SegmentProperties,
else, we will use datafilefooter columnschema to form SegmentProperties.

In the example given in CARBONDATA-3478 for both blocks, we use current column
schema to form SegmentProperties, as restructuredBlockExists will be true.
Hence, while iterating block 1, it throws ArrayIndexOutOfBound exception,
as it uses RawResultIterator instead of ColumnDriftRawResultIterator

Use schema from datafilefooter of each block to check if it has columndrift or not

This closes #3337

2 years ago[HOTFIX] Fixed date filter issue for fileformat
ravipesala [Mon, 15 Jul 2019 16:00:37 +0000 (21:30 +0530)] 
[HOTFIX] Fixed date filter issue for fileformat

In fileformat spark converts date to date object and sends to the carbon, carbon converts it to string and
then generates miliseconds. But there is a milli second gap of spark generated milli and carbon generated milli.
This causes date filters are not working properly.

Convert the date to millis in spark side before give to carbon.

This closes #3327

2 years ago[HOTFIX] Fix failing CI test cases
kunal642 [Mon, 29 Jul 2019 16:16:41 +0000 (21:46 +0530)] 
[HOTFIX] Fix failing CI test cases

Problem: Bloom and lucene dependency was removed due to which mvn was downloaded the old jar.

Solution: Add bloom and lucene dependency to the main pom

This closes #3341

2 years ago[CARBONDATA-3474]Fix validate mvQuery having filter expression and correct error...
Indhumathi27 [Tue, 16 Jul 2019 10:17:13 +0000 (15:47 +0530)] 
[CARBONDATA-3474]Fix validate mvQuery having filter expression and correct error message

1. Create mv datamap with select query having predicate expression like &&, AND, OR with predicate not present in projection.
Executing the same query throws exception
2. For UDF functions like histogram_numeric, collect_set, collect_list etc., return type is complex type.
Creating mv with above functions throws improper exception

3. Validate mv queries having predicate as expression and throw exception on create datamap if predicate is not given in projection
4. Correct unsupported error message for functions like histogram_numeric, collect_set, collect_list etc.,
whose return type is of complex data type with mv

This closes #3329

2 years ago[HOTFIX] Fixed sk/ak not found for datasource table
kunal642 [Mon, 15 Jul 2019 12:11:48 +0000 (17:41 +0530)] 
[HOTFIX] Fixed sk/ak not found for datasource table

Fixed sk/ak not found for datasource table

This closes #3326

2 years ago[HOTFIX] Included MV module in assembly jar
ravipesala [Tue, 16 Jul 2019 09:29:31 +0000 (14:59 +0530)] 
[HOTFIX] Included MV module in assembly jar

Curently MV module is not included in assembly jar and
it needed add mv profile, since carbon supports mv for
all spark versions we are removing the profile and
add it to assembly jar also.

This closes #3328

2 years ago[HOTFIX] Added taskid as UUID while writing files in fileformat to avoid corrupting.
ravipesala [Sat, 13 Jul 2019 10:43:53 +0000 (16:13 +0530)] 
[HOTFIX] Added taskid as UUID while writing files in fileformat to avoid corrupting.

Problem: In FIleFormat write, carbon is using task id as System.nanoTime()
when multiple tasks launched concurrently, there is a chance that two task
can have same id very rarely. Due to this, two spark task launched for one
insert will have same carbondata file name. so, when both tasks write to one file,
chances are more to corrupt the file. which leads in query failure

solution: use unique uuid task id instead of nano seconds.

This closes #3325

2 years ago[HOTFIX] Fix json to carbon writer
Jacky Li [Thu, 11 Jul 2019 07:33:12 +0000 (15:33 +0800)] 
[HOTFIX] Fix json to carbon writer

When using SDK to write carbon files with json input, there is a NullPointerException.

This closes #3323

2 years ago[HOTFIX] Reset the hive catalog table stats to none even after refresh lookup relation.
ravipesala [Tue, 9 Jul 2019 13:59:19 +0000 (19:29 +0530)] 
[HOTFIX] Reset the hive catalog table stats to none even after refresh lookup relation.

Spark plan picks up the catalog table stats in case of relookup of relation in case of modification time is updated.

Even in case of relookup of relation set the stats to none.

This closes #3321

2 years ago[CARBONDATA-3462][DOC]Added documentation for index server
kunal642 [Tue, 18 Jun 2019 21:35:34 +0000 (03:05 +0530)] 
[CARBONDATA-3462][DOC]Added documentation for index server

Added documentation for index server

This closes #3294

2 years ago[CARBONDATA-3460] Fixed EOFException in CarbonScanRDD
kunal642 [Wed, 3 Jul 2019 05:24:08 +0000 (10:54 +0530)] 
[CARBONDATA-3460] Fixed EOFException in CarbonScanRDD

Problem: Delete delta information was not written properly in the OutputStream due the flag based writing.

Solution: Always write the delete delta info, the size of the array will be the deciding factor whether to read further or not.

This closes #3316

2 years ago[CARBONDATA-3459] Fixed id based distribution for showcache command
kunal642 [Tue, 2 Jul 2019 19:23:43 +0000 (00:53 +0530)] 
[CARBONDATA-3459] Fixed id based distribution for showcache command

Problem: Currently tasks are not being fired based on the executor ID because getPrefferedLocation was not overridden.

Solution: override getPreferredLocations in the ShowCache and InvalidateCacheRDD to fire tasks at the appropriate location

This closes #3315

2 years ago[HOTFIX] Fixed MinMax Based Pruning for Measure column in case of Legacy store
Indhumathi27 [Tue, 9 Jul 2019 08:31:07 +0000 (14:01 +0530)] 
[HOTFIX] Fixed MinMax Based Pruning for Measure column in case of Legacy store

This closes #3320

2 years ago[CARBONDATA-3467] Fix count(*) with filter on string column
Indhumathi27 [Tue, 9 Jul 2019 03:40:24 +0000 (09:10 +0530)] 
[CARBONDATA-3467] Fix count(*) with filter on string column

count(*) with filter on string column throws Unresolved Exception
Added check for UnresolvedAlias in MVAnalyzer

This closes #3319

2 years ago[CARBONDATA-3457][MV] Fix Column not found issue with Query having Cast Expression
Indhumathi27 [Thu, 27 Jun 2019 11:39:20 +0000 (17:09 +0530)] 
[CARBONDATA-3457][MV] Fix Column not found issue with Query having Cast Expression

For Cast(exp), alias reference is not included, hence throws column not found exception for column given inside cast expression.

AliasMap has to be created for CAST[EXP] also and should be replaced with subsmer alias map references.

This closes #3312

2 years ago[CARBONDATA-3456] Fix DataLoading to MV table when Yarn-Application is killed
Indhumathi27 [Thu, 27 Jun 2019 12:46:04 +0000 (18:16 +0530)] 
[CARBONDATA-3456] Fix DataLoading to MV table when Yarn-Application is killed

When dataLoad is triggered on datamaptable and new LoadMetaDetail with SegmentStatus as InsertInProgress and segmentMappingInfo is created and then yarn-application is killed. Then on next load, stale loadMetadetail is still in InsertInProgress state and mainTableSegemnts mapped to that loadMetaDetail is not considered for nextLoad resulted in dataMismatch between main table and datamap table

Clean up the old invalid segment before creating a new entry for new Load.

This closes #3310

2 years ago[CARBONDATA-3458] Setting Spark Execution Id to null only for Spark version 2.2 and...
shivamasn [Tue, 2 Jul 2019 10:15:54 +0000 (15:45 +0530)] 
[CARBONDATA-3458] Setting Spark Execution Id to null only for Spark version 2.2 and below.

Problem: Spark Execution_ID should not be set to null in Spark 2.3.

Solution: Set EXECUTION_ID to null in spark version 2.2 and below.
In 2.3 version, EXECUTION_ID is to be set by spark code.

This closes #3313

2 years ago[DOCUMENTATION] Document update for new configurations.
manishnalla1994 [Tue, 2 Jul 2019 05:59:19 +0000 (11:29 +0530)] 
[DOCUMENTATION] Document update for new configurations.

Added documentation for new configurations.

This closes #3314

2 years ago[CARBONDATA-3455] Job Group ID is not displayed for the IndexServer Jobs
dhatchayani [Thu, 27 Jun 2019 10:29:13 +0000 (15:59 +0530)] 
[CARBONDATA-3455] Job Group ID is not displayed for the IndexServer Jobs

Job Group ID is not displayed for the IndexServer Jobs as it is not set.

This closes #3309

2 years ago[CARBONDATA-3453] Fix set segment issue in adaptive execution
ajantha-bhat [Thu, 27 Jun 2019 05:01:30 +0000 (10:31 +0530)] 
[CARBONDATA-3453] Fix set segment issue in adaptive execution

Cause: For set segments, driver will check carbon property and
carbon property will look for segments in session params, which
is not set in current thread incase of adaptive execution.

Solution: Use the session params from RDD's session info,
where it will be set correctly.

This closes #3307

2 years ago[CARBONDATA-3437] Changed implementation of Map datatype
manishnalla1994 [Fri, 14 Jun 2019 07:17:11 +0000 (12:47 +0530)] 
[CARBONDATA-3437] Changed implementation of Map datatype

Problem: Insert into map should override the old values in case of new duplicate value, which it was not doing.
Solution: Changed the implementation to work fine in case of duplicate values inside map to show the latest values.

This closes #3288

2 years ago[CARBONDATA-3443] Update hive guide with Read from hive
dhatchayani [Wed, 19 Jun 2019 07:36:19 +0000 (13:06 +0530)] 
[CARBONDATA-3443] Update hive guide with Read from hive

This closes #3296

2 years ago[CARBONDATA-3440] Updated alter table DDL to accept upgrade_segments as a compaction...
kunal642 [Tue, 11 Jun 2019 14:27:23 +0000 (19:57 +0530)] 
[CARBONDATA-3440] Updated alter table DDL to accept upgrade_segments as a compaction type

Updated alter table DDL to accept upgrade_segments as a compaction type.
made legacy segment distribution round-robin based.

This closes #3277

2 years ago[TESTCASE] Test Case fix for Spark 2.1
manishnalla1994 [Mon, 24 Jun 2019 09:22:29 +0000 (14:52 +0530)] 
[TESTCASE] Test Case fix for Spark 2.1

Problem: Testcase not handled for Spark 2.1/2.3 separately.

This closes #3305

2 years ago[CARBONDATA-3435] Show-Metacache behaviour change
namanrastogi [Thu, 13 Jun 2019 14:05:42 +0000 (19:35 +0530)] 
[CARBONDATA-3435] Show-Metacache behaviour change

Behaviour of SHOW METACACHE ON TABLE tblName is not same for Driver
and Index-Server. Need same behavior for both.

Old behaviour: Show all the entries for all the child tables,
even if the size is zero.
New behaviour: Don't show any entry with size 0 in both Driver and Index-Server.

This closes #3286

2 years ago[CARBONDATA-3449] Synchronize the initialization of listeners in case of concuurent...
manishnalla1994 [Sat, 22 Jun 2019 05:57:41 +0000 (11:27 +0530)] 
[CARBONDATA-3449] Synchronize the initialization of listeners in case of concuurent scenarios

Problem: Initialization of listeners in case of concurrent scenarios is not synchronized.

Solution: Changed the function to a val due to which the synchronization will be handled by scala and init will only occur once.

This closes #3304

2 years ago[CARBONDATA-3448] Fix wrong results in preaggregate query with spark adaptive execution
ajantha-bhat [Fri, 21 Jun 2019 05:05:06 +0000 (10:35 +0530)] 
[CARBONDATA-3448] Fix wrong results in preaggregate query with spark adaptive execution

problem: Wrong results in preaggregate query with spark adaptive execution

Spark2TestQueryExecutor.conf.set(SQLConf.ADAPTIVE_EXECUTION_ENABLED.key, "true")

cause: For preaggreagate, segment info is set into threadLocal. when adaptive execution is called, spark is calling getInternalPartition in
another thread where updated segment conf is not set. Hence it is not using the updated segments.

solution: CarbonScanRdd is already having the sessionInfo, use it instead of taking session info from the current thread.

This closes #3303

2 years ago[CARBONDATA-3427] Beautify DAG by showing less text
manhua [Wed, 12 Jun 2019 01:47:17 +0000 (09:47 +0800)] 
[CARBONDATA-3427] Beautify DAG by showing less text

beautify DAG by showing less text

This closes #3278

3 years ago[CARBONDATA-3398] Added a new Column to show Cache Location
kunal642 [Tue, 28 May 2019 10:00:49 +0000 (15:30 +0530)] 
[CARBONDATA-3398] Added a new Column to show Cache Location

   Handled show cache for index server and MV

This closes #3259

3 years ago[CARBONDATA-3412] Empty results are displayed for non-transactional tables
kunal642 [Tue, 4 Jun 2019 12:16:59 +0000 (17:46 +0530)] 
[CARBONDATA-3412] Empty results are displayed for non-transactional tables

Added a check for nonTransactional table when generating the read committed scope.

Empty results are displayed for non-transactional tables

Fixed TableNotFoundException for embedded mode

This closes #3255

3 years ago[CARBONDATA-3380] Fix missing appName and AnalysisException bug in DirectSQLExample
lamber-ken [Sun, 12 May 2019 15:53:19 +0000 (23:53 +0800)] 
[CARBONDATA-3380] Fix missing appName and AnalysisException bug in DirectSQLExample

Fix missing appName and AnalysisException bug in DirectSQLExample

This closes #3213

3 years ago[CARBONDATA-3441] Aggregate queries are failing on Reading from Hive
dhatchayani [Tue, 18 Jun 2019 05:09:27 +0000 (10:39 +0530)] 
[CARBONDATA-3441] Aggregate queries are failing on Reading from Hive

Aggregate queries are failing on Reading from Hive, as the table_name, db_name are not set to the conf.

Set table_name, db_name to the conf and handle NullPointerException.

This closes #3292

3 years ago[CARBONDATA-3398]Fix drop metacache on table having mv datamap
Indhumathi27 [Mon, 10 Jun 2019 07:08:16 +0000 (12:38 +0530)] 
[CARBONDATA-3398]Fix drop metacache on table having mv datamap

Fixed drop metacache on table having mv datamap

This closes #3274

3 years ago[CARBONDATA-3444]Fix MV query failure when projection has cast expression with alias
akashrn5 [Wed, 19 Jun 2019 08:08:20 +0000 (13:38 +0530)] 
[CARBONDATA-3444]Fix MV query failure when projection has cast expression with alias

MV datamap creation fails when the project column as cast expression with multiple arithmetic functions on
one of main table columns with alias. It throws the field does not exists error.
when create datamap DDL has DM provider name as capital letters, the query was not hitting the MV table

When making fieldRelationMap, handling the above case was missed, added a case to handle this scenario.
When loading the datamapCatalogs, take care to convert to lower case

This closes #3298

3 years ago[CARBONDATA-3398] Handled show cache for index server and MV
kunal642 [Tue, 28 May 2019 10:00:49 +0000 (15:30 +0530)] 
[CARBONDATA-3398] Handled show cache for index server and MV

Added support to show/drop metacahe information from index server.
Added tableNotFoundException fix when dbName and tableName have '' in their names, while splitting using '' the dbName was extracted wrongly. Instead now dbname and tableName would be seperated by '-' internally for show cache

This closes #3245

3 years ago[CARBONDATA-3442]Fix creating mv datamap with column name having length more than 128
Indhumathi27 [Tue, 18 Jun 2019 15:01:45 +0000 (20:31 +0530)] 
[CARBONDATA-3442]Fix creating mv datamap with column name having length more than 128

creating mv datamap with column name having length more than 128 fails
If column name is more than 128, then take substring and append a counter

This closes #3290

3 years ago[CARBONDATA-3432] Added property for enable/disable Range column compaction and broad...
manishnalla1994 [Thu, 13 Jun 2019 04:41:41 +0000 (10:11 +0530)] 
[CARBONDATA-3432] Added property for enable/disable Range column compaction and broadcast all splits

Added property for enable/disable Range column compaction for which default value is true.
Instead of sending all splits to all executors one by one, broadcast all splits from driver.

This closes #3284

3 years ago[CARBONDATA-3247] Support to select all columns when creating MV datamap
qiuchenjian [Fri, 14 Jun 2019 14:49:25 +0000 (22:49 +0800)] 
[CARBONDATA-3247] Support to select all columns when creating MV datamap

ColumnPruning rule will not generate Project LogicalPlan when select all
columns, So carbon can't generate SELECT node when transforming LogicalPlan
to ModularPlan, then it can't create mv datamap

Add a executor rule to change the logical plan to support this scene

This closes #3072

3 years ago[CARBONDATA-3444]Fix MV query failure when column name and table name is same in...
akashrn5 [Wed, 19 Jun 2019 07:22:30 +0000 (12:52 +0530)] 
[CARBONDATA-3444]Fix MV query failure when column name and table name is same in case of join scenario

when there are columns with same in different table, after sql generation, the project column will be like gen_subsumer_0.product ,
it fails during logical plan generation from rewritten query, as column names will be ambigous

update the outputlist when there are duplicate columns present in query. Here we can form the qualified name for the Attribute reference.
So when qualifier is defined for column, the qualified name wil be like <col_qualifier_name>_<>,
if qualifier is not defined, then it will be <col_exprId_id>_<>. So update for all the nodes like groupby , select nodes,
so that it will be handled when there will be amguity in columns.

This closes #3297

3 years ago[CARBONDATA-3445] Aggregate query empty list error fix.
manishnalla1994 [Wed, 19 Jun 2019 15:13:59 +0000 (20:43 +0530)] 
[CARBONDATA-3445] Aggregate query empty list error fix.

In Aggregate query, CountStarPlan throws head of empty list error.
When right node of join node has Aggregate node with the empty aggregate and group expression then it matches with the count() plan
and we try to get the Head of the aggregate expression assuming only one aggregate expression is present.
This happens only in Spark 2.3 so added an empty list check that if aggregate expression is empty, it will not treat as count() plan.

Aggregate query empty list error fix.

This closes #3300

3 years ago[CARBONDATA-3365] SDK Arrow integration document update
ajantha-bhat [Tue, 18 Jun 2019 13:01:05 +0000 (18:31 +0530)] 
[CARBONDATA-3365] SDK Arrow integration document update

SDK Arrow integration document update

This closes #3293

3 years ago[CARBONDATA-3373] Fixed measure column filter perf
manhua [Wed, 19 Jun 2019 03:15:30 +0000 (11:15 +0800)] 
[CARBONDATA-3373] Fixed measure column filter perf

when sql with 'in numbers' and spark.sql.codegen.wholeStage is falseļ¼Œthe query is slow,
the reason is that canbonscan row level filter's time complexity is O(n^2), we can replace list with hashset to improve query performance

sql example: select * from xx where filed in (1,2,3,4,5,6)

This closes #3295

3 years ago[CARBONDATA-3398]Block show/drop metacache directly on child table
Indhumathi27 [Fri, 21 Jun 2019 03:44:58 +0000 (09:14 +0530)] 
[CARBONDATA-3398]Block show/drop metacache directly on child table

show/drop metacache directly on mv child table is not blocked
Blocked show/drop metacache directly on mv child table

This closes #3302

3 years ago[CARBONDATA-3447]Index server performance improvement
kumarvishal09 [Wed, 12 Jun 2019 15:22:00 +0000 (20:52 +0530)] 
[CARBONDATA-3447]Index server performance improvement

When number of splits are high, index server performance is slow as
compared to old flow(Driver caching). This is because data is transferred
over network is more and causing performance bottleneck.

1. If data transferred is less we can sent through network, but when it
grows we can write to file and only send file name and in Main driver
it will read the file and construct input split.
2. Use snappy to compress the data, so data transferred through network/written
to file size will be less, so IO time wont impact performance
3. In main driver pruning is done in multiple thread, added same for
index executor as now index executor will do the pruning
4. In case of block cache no need to send blockletdetailinfo object as
size is more and same can be constructed in executor from file footer

This closes #3281

Co-authored-by: kunal642 <>
3 years ago[DOC] Improve java doc for DataSkewRangePartitioner
QiangCai [Wed, 10 Apr 2019 03:39:52 +0000 (11:39 +0800)] 
[DOC] Improve java doc for DataSkewRangePartitioner

Improve java doc for DataSkewRangePartitioner

This closes #3175

3 years ago[CARBONDATA-3422] fix missing complex dimensions when prepare the data from raw object
lamber-ken [Mon, 10 Jun 2019 07:34:51 +0000 (15:34 +0800)] 
[CARBONDATA-3422] fix missing complex dimensions when prepare the data from raw object

fix missing complex dimensions when prepare the data from raw object

This closes #3270

3 years ago[CARBONDATA-3425] Added documentation for mv
Indhumathi27 [Tue, 4 Jun 2019 12:38:20 +0000 (18:08 +0530)] 
[CARBONDATA-3425] Added documentation for mv

This closes #3275

3 years ago[CARBONDATA-3433]Fix MV issues related to duplicate columns, limit and constant columns
akashrn5 [Thu, 13 Jun 2019 08:12:19 +0000 (13:42 +0530)] 
[CARBONDATA-3433]Fix MV issues related to duplicate columns, limit and constant columns

MV has below issues:
when has duplicate columns in select query, MV creation fails, but select is valid query
when used constant column in ctas for datamap creation, it fails
when limit is used in ctas for datamap creation, it fails

since duplicate columns in query is valid, MV should support, so when creating columns, better take distinct columns
handle getting field relation map when we have constant column in query
block MV creation for limit ctas query, as it is not a valid case to use MV datamap.

This closes #3285

3 years ago[CARBONDATA-3436] update insert into rule as per spark
ajantha-bhat [Wed, 29 May 2019 10:16:34 +0000 (15:46 +0530)] 
[CARBONDATA-3436] update insert into rule as per spark

Problem: Carbon is not following hive syntax for one row insert into strictly.
Cause: For insert into, carbon has its own rule. CarbonAnalysisRule[CarbonPreInsertionCasts]
In CarbonPreInsertionCasts, data type cast is missed. Hence carbon was not following hive syntax.
solution: Add data type cast rule for insert into.

This closes #3244

Co-authored-by: shivamasn <>
3 years ago[HOTFIX] fix error describe of decimal
lamber-ken [Mon, 6 May 2019 06:51:39 +0000 (14:51 +0800)] 
[HOTFIX] fix error describe of decimal

fix error describe of decimal

This closes #3204

3 years ago[CARBONDATA-3434] Fix Data Mismatch between MainTable and MV DataMap table during...
Indhumathi27 [Wed, 12 Jun 2019 11:07:31 +0000 (16:37 +0530)] 
[CARBONDATA-3434] Fix Data Mismatch between MainTable and MV DataMap table during compaction

Fix Data Mismatch between MainTable and DataMap table during compaction

checkIfSegmentsToBeReloaded method of DataMapProvider was ignoring one main table segment to be loaded, considering it as already loaded
Get all segments merged to given segment and check if it contains all list of segments stored in SegmentMapInfo. If true, then no need to load the segment, only update segment mapping

Block delete operation on datamap table

This closes #3282

3 years ago[CARBONDATA-3415] Merge index is not working for partition table. Merge index for...
dhatchayani [Thu, 6 Jun 2019 10:34:05 +0000 (16:04 +0530)] 
[CARBONDATA-3415] Merge index is not working for partition table. Merge index for partition table is taking significantly longer time than normal table.

(1) Merge index is not working for partition table.
(2) Merge index for partition table is significantly more than the normal carbon table.

Root cause:
(1) Merge index event listener is moved to preStatusUpdateEvent in #3221 . But preStatusUpdateEvent is not triggered in case of partition table. Test case to validate merge index on partition table is also wrong. Not caught in the test builders.
(2) Currently, merge index job will trigger tasks like one segment one task. But for a partition table, there are partitions in a segments and merge index is for partitions. So per segment it has to iterate and merge the index files inside partitions, because of this the time is little more when the number of partitions are high. Number of Tasks = Number of Segments.

(1) Correct the test case and trigger merge index listener for partition table.
(2) Parallelize the tasks launched to the partitions. Number of tasks = Number of partitions in a segment

This closes #3262

3 years ago[HOTFIX] Fixed count(*) issue when MV is created with simple projection
ravipesala [Tue, 21 May 2019 12:10:56 +0000 (17:40 +0530)] 
[HOTFIX] Fixed count(*) issue when MV is created with simple projection

When MV is created with simple projection and select count(*) is fired
on main table then it is wrongly taking MV table with wrong projections.

Simple projection MV should not be selected when count(*) is fired.

This closed #3229

3 years ago[CARBONDATA-3423] Validate dictionary for binary data type
xubo245 [Mon, 10 Jun 2019 08:32:03 +0000 (16:32 +0800)] 
[CARBONDATA-3423] Validate dictionary for binary data type

Add validation for dictionary Include doesn't support binary data type.

This closes #3271

3 years ago[CARBONDATA-3309]Fix MV modular plan generation failure for spark 2.1
akashrn5 [Wed, 5 Jun 2019 03:48:50 +0000 (09:18 +0530)] 
[CARBONDATA-3309]Fix MV modular plan generation failure for spark 2.1

In Spark2.1 version, we have Metastore relation instead of HiveTableRelation
as in current spark. So this case is not handled.

When it is MetastoreRelaton, get the catalogTable and get all the info from
it to form the ModularRelation, to form the modular plan. Reflection is used to fix this.

This closes #3257

3 years ago[CARBONDATA-3416]Correct the preparing of carbon analyzer with custom rules with...
akashrn5 [Thu, 6 Jun 2019 10:45:49 +0000 (16:15 +0530)] 
[CARBONDATA-3416]Correct the preparing of carbon analyzer with custom rules with spark analyzer

When new analyzer rule added in spark, not reflecting in carbon.
Carbon prepares the session state builder by extending the
hivesession state builder, and create new analyzer by overiding
all the rules added by spark, so when new rule is added in spark,
it will not be reflected in carbon as we have overridden the complete analyzer

While making the new analyzer in carbon side, better to get all the
rules from super class and add the carbon rules in analyzer,
so that when new rules are added in spark side, since we take super.rules,
we get all the updated rules from spark, before adding the carbon custom rules.

This closes #3261

3 years ago[CARBONDATA-3356] Support decimal for json schema and Provide better exception
xubo245 [Mon, 29 Apr 2019 03:00:14 +0000 (11:00 +0800)] 
[CARBONDATA-3356] Support decimal for json schema and Provide better exception
for users to solve problem when carbonData DataSource read SDK files with varchar

Support decimal by json schema and refactor exceptions

This closes #3181

3 years ago[CARBONDATA-3426] Fix load performance by fixing task distribution issue
ajantha-bhat [Mon, 10 Jun 2019 10:22:31 +0000 (15:52 +0530)] 
[CARBONDATA-3426] Fix load performance by fixing task distribution issue

Problem: Consider 3 node cluster (host name a,b,c with IP1, IP2, IP3 as ip address),
 to launch load task, host name is required from NewCarbonDataLoadRDD in getPreferredLocations().
 But if the driver is 'a' (IP1),
 Result is IP1, b,c instead of a,b,c. Hence task was not launching to one executor which is same ip as driver.

Solution: Revert the change in getLocalhostIPs as it is not used in any other flow.

This closes #3276

3 years ago[CARBONDATA-3429] Updated error for CarbonCli when path is wrong
namanrastogi [Wed, 12 Jun 2019 14:50:18 +0000 (20:20 +0530)] 
[CARBONDATA-3429] Updated error for CarbonCli when path is wrong

Problem: Execute CarbonCli with an invalid path. The output even
for invalid path is "unsorted", which is wrong.

Solution: It should throw that it segment path is invalid.

This closes #3280

3 years ago[CARBONDATA-3424] Carbon should throw proper exception when Select query
xubo245 [Wed, 12 Jun 2019 07:13:46 +0000 (15:13 +0800)] 
[CARBONDATA-3424] Carbon should throw proper exception when Select query
with average function for substring of binary column

Carbon should throw proper exception when Select query with
average function for substring of binary column

This closes #3272

3 years ago[CARBONDATA-3413] Fix io.netty out of direct memory exception in arrow integration
ajantha-bhat [Tue, 4 Jun 2019 13:30:22 +0000 (19:00 +0530)] 
[CARBONDATA-3413] Fix io.netty out of direct memory exception in arrow integration

problem : io.netty out of direct memory exception in arrow integration

cause: In ArrowConverter, allocator is not closed

solution: close the allocator in arrowConverter.
Also handle the problems in test utility API

This closes #3256

3 years ago[CARBONDATA-3410] Add UDF, Hex/Base64 SQL functions for binary
xubo245 [Fri, 31 May 2019 12:33:25 +0000 (20:33 +0800)] 
[CARBONDATA-3410] Add UDF, Hex/Base64 SQL functions for binary

Add UDF, Hex/Base64 SQL functions for binary

This closes # 3253

3 years ago[CARBONDATA-3421] Fix create table without column with properties failed, but throw...
jack86596 [Mon, 10 Jun 2019 01:53:49 +0000 (09:53 +0800)] 
[CARBONDATA-3421] Fix create table without column with properties failed, but throw incorrect exception

Create table without column with properties failed, but throw incorrect exception: Invalid table properties. The exception should be "create table without column."

In CarbonSparkSqlParserUtil.createCarbonTable, we will do some validations like checking tblproperties, is column provided for external table so on.
 We can add one more validation here to check is column provided for normal table. If not, throw MalformedCarbonCommandException.

This closes #3268

3 years ago[CARBONDATA-3419] Desc Formatted not showing Range Column
manishnalla1994 [Fri, 7 Jun 2019 05:43:16 +0000 (11:13 +0530)] 
[CARBONDATA-3419] Desc Formatted not showing Range Column

Desc Formatted not showing Range Column

This closes #3265

3 years ago[CARBONDATA-3417] Changed the number of cores for load and compaction in Range Column
manishnalla1994 [Thu, 6 Jun 2019 12:20:46 +0000 (17:50 +0530)] 
[CARBONDATA-3417] Changed the number of cores for load and compaction in Range Column

Changed the number of cores for load and compaction in Range Column

This closes #3263

3 years ago[CARBONDATA-3408] CarbonSession partition support binary data type
xubo245 [Fri, 31 May 2019 09:14:40 +0000 (17:14 +0800)] 
[CARBONDATA-3408] CarbonSession partition support binary data type

CarbonSession partition support binary data type

This closes #3251

3 years ago[CARBONDATA-3418] Inherit Column Compressor Property from parent table to its child...
Indhumathi27 [Thu, 6 Jun 2019 13:12:12 +0000 (18:42 +0530)] 
[CARBONDATA-3418] Inherit Column Compressor Property from parent table to its child table's

Inherited Column Compressor Property from parent table to its child table's
Fixed Describe formatted command to show inverted_index column, even if sort_scope is 'no_sort'
Fixed inheriting sort_scope to child tables, when sort_columns is provided and sort_scope is not provided
Alter set sort_columns="",when sort_scope is not no_sort is not supported. the same
behavior is added for create table with sort_columns="" and sort_scope is not no_sort

This closes #3264

3 years ago[HOTFIX] Fix compatibility issue with page size
ajantha-bhat [Thu, 6 Jun 2019 07:28:28 +0000 (12:58 +0530)] 
[HOTFIX] Fix compatibility issue with page size

Problem: Array Out of bound exception when old store is read from latest code.
Cause: #3239 partially fix the problem, After this change,
 For old store, length is written as zero. so in BlockletInfo,
 numberOfRowsPerPage will be array of zero elements. Hence the ArrayOutOfBound exception.
Solution: Fill the numberOfRowsPerPage only when length is non-zero,
 when length is zero, it will be filled from setNumberOfRowsPerPage in
 BlockletDataRefNode as numberOfRowsPerPage is null.

This closes #3260

3 years ago[CARBONDATA-3411] [CARBONDATA-3414] Fix clear datamaps logs an exception in SDK
ajantha-bhat [Tue, 4 Jun 2019 05:47:20 +0000 (11:17 +0530)] 
[CARBONDATA-3411] [CARBONDATA-3414] Fix clear datamaps logs an exception in SDK

problem: In sdk when datamaps are cleared, below exception is logged File does not exist: ../carbondata/store/sdk/testWriteFiles/771604793030370/Metadata/schema

cause: CarbonTable is required for only launching the job, SDK there is no need to launch job. so , no need to build a carbon table.

solution: build carbon table only when need to launch job.

problem [CARBONDATA-3411]: when Insert into partition table fails, exception doesn't print reason.

cause: Exception was caught , but error message was not from that exception.

solution: throw the exception directly

This closes #3254

3 years ago[CARBONDATA-3258] Add more test cases for mv datamap
qiuchenjian [Sun, 20 Jan 2019 13:33:20 +0000 (21:33 +0800)] 
[CARBONDATA-3258] Add more test cases for mv datamap

This closes #3084

3 years ago[CARBONDATA-3409] Fix Concurrent dataloading Issue with mv
Indhumathi27 [Fri, 31 May 2019 10:23:01 +0000 (15:53 +0530)] 
[CARBONDATA-3409] Fix Concurrent dataloading Issue with mv

While performing concurrent dataloading to MV datamap, if any of the loads was not able to get TableStatusLock, then because newLoadName and segmentMap was empty, it was doing full rebuild.

If load was not able to take tablestatuslock, then disable the datamap and return

This closes #3252

3 years ago[CARBONDATA-3407]Fix distinct, count, Sum query failure when MV is created on single...
akashrn5 [Thu, 30 May 2019 08:45:44 +0000 (14:15 +0530)] 
[CARBONDATA-3407]Fix distinct, count, Sum query failure when MV is created on single projection column

when MV datamap is created on single column as simple projection, sum, distinct,count queries are failing during sql conversion of modular plan. Basically there is no case to handle the modular plan when we have group by node without alias info and has select child node which is rewritten.

the sql generation cases should take this case also, after that the rewritten query will wrong as alias will be present inside count or aggregate function.
So actually rewritten query should be like:
SELECT count(limit_fail_dm1_table.limit_fail_designation) AS count(designation) FROM default.limit_fail_dm1_table

This closes #3249

3 years ago[CARBONDATA-3404] Support CarbonFile API through FileTypeInterface to use custom...
KanakaKumar [Wed, 29 May 2019 07:09:06 +0000 (12:39 +0530)] 
[CARBONDATA-3404] Support CarbonFile API through FileTypeInterface to use custom FileSystem

Currently CarbonData supports few set of FileSystems like HDFS,S3,VIEWFS schemes.
If user configures table path from different file systems apart from supported, FileFactory takes CarbonLocalFile as default and causes errors.

This PR proposes to support a API for user to extend CarbonFile which override the required methods from AbstractCarbonFile if a specific handling required for operations like renameForce.

This closes #3246

3 years ago[CARBONDATA-3350] Enhance custom compaction to resort old single segment by new sort_...
QiangCai [Wed, 15 May 2019 08:46:20 +0000 (16:46 +0800)] 
[CARBONDATA-3350] Enhance custom compaction to resort old single segment by new sort_columns

This closes #3202

3 years ago[CARBONDATA-3405] Fix getSplits() should clear the cache in SDK
ajantha-bhat [Wed, 29 May 2019 12:14:11 +0000 (17:44 +0530)] 
[CARBONDATA-3405] Fix getSplits() should clear the cache in SDK

Problem: when getsplits is called back to back once with blocklet
and once with block cache, block cache is not set.
Cause: cache key was dbname_tableName, but table_name was always hardcoded to null.
Solution: set the table name in cache key, clear cache after
getting splits in the getsplits()

This closes #3247

3 years ago[CARBONDATA-3403]Fix MV is not working for like and filter AND and OR queries
akashrn5 [Tue, 28 May 2019 06:25:13 +0000 (11:55 +0530)] 
[CARBONDATA-3403]Fix MV is not working for like and filter AND and OR queries

MV table is not hit during query for like and filter AND and OR queries,
When we have like or filter queries, the queries will have literals which will be case sensitive to fetch the data.
But dring MV modular plan generation, we register the schema for datamap where we convert the complete datamap query to lower case, which will even convert the literals.
So after modular plan generation of user query, during matching pahse of modular plan of datamap and user query, the semantic equals fails for literals, that is Attribute reference type.
Solution: Do not convert the query to lower case when registering schema, that is when adding the preagg fun to query. So it will be handled for MV
For preaggregate, instead converting complete query to lowercase, convert to lower case during ColumnTableRelation generation and createField for preaggregate generation, so it will be handled for preaggregate.

This closes #3242

3 years ago[CARBONDATA-3399] Implement executor id based distribution for indexserver
kunal642 [Mon, 27 May 2019 07:11:54 +0000 (12:41 +0530)] 
[CARBONDATA-3399] Implement executor id based distribution for indexserver

This closes #3237

3 years ago[CARBONDATA-3406] Support Binary, Boolean,Varchar, Complex data types read and Dictio...
dhatchayani [Thu, 30 May 2019 12:25:16 +0000 (17:55 +0530)] 
[CARBONDATA-3406] Support Binary, Boolean,Varchar, Complex data types read and Dictionary columns read

1. Support Read for Binary, Boolean, Varchar, Complex data types.
2. Support Read for Dictionary columns.

This closes #3250

3 years ago[CARBONDATA-3402] Added Inherit Inverted Index Property from Parent Table for Preagg...
Indhumathi27 [Thu, 30 May 2019 05:42:38 +0000 (11:12 +0530)] 
[CARBONDATA-3402] Added Inherit Inverted Index Property from Parent Table for Preagg & MV

1. Inherit Inverted Index Property from Parent Table for Preagg & MV datamap
2. When Preaggregate and mv datamap are present, while loading data to
preaggregate table, we should skip applying mv plan

This closes #3248

3 years ago[CARBONDATA-3349] support carboncli show sort_columns for a segment folder
QiangCai [Wed, 15 May 2019 08:16:54 +0000 (16:16 +0800)] 
[CARBONDATA-3349] support carboncli show sort_columns for a segment folder

carboncli support to show sort_columns for a segment folder.
carboncli -cmd sort_columns -p <segment_folder>

This closes #3183

3 years ago[CARBONDATA-3336] Support configurable decode for loading binary data, support base64...
xubo245 [Tue, 23 Apr 2019 07:45:25 +0000 (15:45 +0800)] 
[CARBONDATA-3336] Support configurable decode for loading binary data, support base64 and Hex decode.

Support configurable decode for loading binary data, support base64 and Hex decode.
1. support configurable decode for loading
2. test datamap: mv, preaggregate, timeseries, bloomfilter, lucene
3. test datamap and configurable decode

Default non decoder for loading binary data, this PR support base64 and hex decoder

This closes #3188

3 years ago[CARBONDATA-3382] Fixed compressor type display in desc formatted
RamKrishnan77 [Mon, 13 May 2019 15:07:46 +0000 (20:37 +0530)] 
[CARBONDATA-3382] Fixed compressor type display in desc formatted

Problem :
Describe formatted table does not display the correct compression
type when its is configured in instead it always
shows the default compressor type.

Solution :
Get the compressor type from the instance of CarbonProperties.

This closes #3214

3 years ago[HOTFIX] Fixed Compatibilty Issue
manishnalla1994 [Mon, 27 May 2019 09:22:03 +0000 (14:52 +0530)] 
[HOTFIX] Fixed Compatibilty Issue

Problem : EOF exception was being thrown in case of old store while reading the blocklet Info.
Solution : Added a fix by writing the number of rows per page in case of old store.

This closes #3239

3 years ago[CARBONDATA-3378]Display original query in Indexserver Job
BJangir [Tue, 7 May 2019 13:36:36 +0000 (19:06 +0530)] 
[CARBONDATA-3378]Display original query in Indexserver Job

When any query fired in main jdbcserver , in Index server
there is no mapping of it.
It is difficult to find which job in index server belong to which
query specially in concurrent queries.
This PR will display query in index server also along with Executionid .

This closes #3208

3 years ago[CARBONDATA-3394]Clean files command optimization
akashrn5 [Mon, 27 May 2019 06:54:33 +0000 (12:24 +0530)] 
[CARBONDATA-3394]Clean files command optimization

Clean files is taking of lot of time to finish, even though there are no segments to delete
Tested for 5000 segments, and clean files takes 15 minutes time to finish

Root cause and Solution
Lot of table status read operations are were happening during clean files
lot of listing operations are happening, even though they are not required.

Read and list operations are reduced to reduce overall time for clean files.
After changes, for the same store, it takes 35 seconds in same 3 node cluste

This closes #3227