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

12 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

12 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

12 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

15 months ago[CARBONDATA-4217] Fix rename SI table, other applications didn't get reflected issue
jack86596 [Sat, 19 Jun 2021 16:52:58 +0000 (00:52 +0800)] 
[CARBONDATA-4217] Fix rename SI table, other applications didn't get reflected issue

Why is this PR needed?
After one application rename SI table, other application cannot be reflected
of this change, which leads to query on SI column failed.

What changes were proposed in this PR?
After update index info of parent table, persist schema info so that other
applications can refresh table metadata in time.

This closes #4155

15 months ago[CARBONDATA-4211] Fix - from xx Insert into select fails if an SQL statement contains...
ShreelekhyaG [Mon, 14 Jun 2021 15:36:16 +0000 (21:06 +0530)] 
[CARBONDATA-4211] Fix - from xx Insert into select fails if an SQL statement contains multiple inserts

Why is this PR needed?
When multiple inserts with single query is used, it fails from SparkPlan with: java.lang.ClassCastException:
GenericInternalRow cannot be cast to UnsafeRow.
For every successful insert/load we return Segment ID as a row. For multiple inserts also, we are returning
a row containing Segment ID but while processing in spark ClassCastException is thrown.

What changes were proposed in this PR?
When multiple insert query is given, it has Union node in the plan. Based on its presence, made changes
to use flag isMultipleInserts to call class UnionCommandExec and implemented custom sideEffectResult which
converts GenericInternalRow to UnsafeRow and return.

Does this PR introduce any user interface change?
No

Is any new testcase added?
Yes

This closes #4151

15 months ago[CARBONDATA-4213] Fix update/delete issue in index server
Vikram Ahuja [Wed, 16 Jun 2021 10:54:56 +0000 (16:24 +0530)] 
[CARBONDATA-4213] Fix update/delete issue in index server

Why is this PR needed?
During update/delete, the segment file in the segment would come as an empty
string due to which it was not able to read the segment file.

What changes were proposed in this PR?
1. Changed the empty string to NULL
2. Added empty segment file condition while creating SegmentFileStore.

Does this PR introduce any user interface change?
No

Is any new testcase added?
No

This closes #4153

15 months ago[CARBONDATA-4212] Fix case sensitive issue with Update query having Alias Table name
Indhumathi27 [Wed, 16 Jun 2021 10:10:07 +0000 (15:40 +0530)] 
[CARBONDATA-4212] Fix case sensitive issue with Update query having Alias Table name

Why is this PR needed?
Update Query having Alias Table name, fails with Unsupported complex types error,
even if table does not any.

What changes were proposed in this PR?
Check the columnName irrespective of case

Does this PR introduce any user interface change?
No

Is any new testcase added?
Yes

This closes #4152

15 months ago[CARBONDATA-4208] Wrong Exception received for complex child long string columns
Mahesh Raju Somalaraju [Fri, 11 Jun 2021 19:47:27 +0000 (01:17 +0530)] 
[CARBONDATA-4208] Wrong Exception received for complex child long string columns

Why is this PR needed?
When we create a table with complex columns with child columns with long string
data type then receiving column not found in table exception. Normally it should
throw an exception in the above case by saying that complex child columns will
not support long string data type.

What changes were proposed in this PR?
Added a case if complex child column has long string data type then throw correct
exception.
Exception: MalformedCarbonCommandException
Exception Message: Complex child column cannot be set as LONG_STRING_COLUMNS

Does this PR introduce any user interface change?
No

Is any new testcase added?
Yes

This closes #4150

15 months ago[CARBONDATA-4206] Support rename SI table
jack86596 [Thu, 10 Jun 2021 11:35:39 +0000 (19:35 +0800)] 
[CARBONDATA-4206] Support rename SI table

Why is this PR needed?
Currently rename SI table can succeed, but after rename, insert and query on main table
failed, throw no such table exception. This is because after SI table renamed, main
table's tblproperties didn't get update, it still stores the old SI table name, when
refering to SI table, it tries to find the SI table by old name, which leads to no such table exception.

What changes were proposed in this PR?
After SI table renamed, update the main table's tblproperties with new SI information.

Does this PR introduce any user interface change?
No

Is any new testcase added?
Yes

This closes #4149

15 months ago[CARBONDATA-4202] Fix issue when refresh main table with MV
ShreelekhyaG [Fri, 4 Jun 2021 09:25:13 +0000 (14:55 +0530)] 
[CARBONDATA-4202] Fix issue when refresh main table with MV

Why is this PR needed?
When trying to register a table of old store which has MV, it fails parser
error(syntax issue while creating table). It is trying to create table with
relatedmvtablesmap property which is not valid.

What changes were proposed in this PR?
1. Removed relatedmvtablesmap from table properties in RefreshCarbonTableCommand
2. After Main table has registered, to register MV made changes to get the schema
   from the system folder and register.

Does this PR introduce any user interface change?
No

Is any new testcase added?
Yes

This closes #4147

15 months ago[CARBONDATA-4179] Support renaming of complex columns (array/struct)
akkio-97 [Tue, 4 May 2021 06:00:23 +0000 (11:30 +0530)] 
[CARBONDATA-4179] Support renaming of complex columns (array/struct)

Why is this PR needed?
This PR enables renaming of complex columns - parent as well as children columns with nested levels
example: if the schema contains columns - str1 struct<a:int, b:string>, arr1 array<long>
1. alter table <table_name> change str1 str2 struct<a:int, b:string>
2. alter table <table_name> change arr1 arr2 array<long>
3. Changing parent name as well as child name
4. alter table <table_name> change str1 str2 struct<abc:int, b:string>
NOTE- Rename operation fails if the structure of the complex column has been altered.
This check ensures the old and new columns are compatible with each other. Meaning
the number of children and complex levels should be unaltered while attempting to rename.

What changes were proposed in this PR?
1. Parses the incoming new complex type. Create a nested DatatypeInfo structure.
2. This DatatypeInfo is then passed on to the AlterTableDataTypeChangeModel.
3. Validation for compatibility, duplicate columns happens here.
4. Add the parent column to the schema evolution entry.
5. Update the spark catalog table.
Limitation - Renaming is not supported for Map types yet

Does this PR introduce any user interface change?
Yes

Is any new testcase added?
Yes

This closes #4129

15 months ago[CARBONDATA-4143] Enable UT with index server and fix related issues
ShreelekhyaG [Thu, 25 Feb 2021 09:57:30 +0000 (15:27 +0530)] 
[CARBONDATA-4143] Enable UT with index server and fix related issues

Why is this PR needed?
enable to run UT with index server.
Fix below issues:
1. With index server enabled, select query gives incorrect result with
   SI when parent and child table segments are not in sync.
2. When reindex is triggered, if stale files are present in the segment
   directory the segment file is being written with incorrect file names.
   (both valid index and stale mergeindex file names). As a result, duplicate
   data is present in SI table but there are no error/incorrect query results.

What changes were proposed in this PR?
usage of flag useIndexServer. excluded some of the test cases to not run with index server.
1. While pruning from index server, missingSISegments values were not
   getting considered. Have passed down and set those values to filter.
2. Before loading data to SI segment, added changes to delete the segment
   directory if already present.

Does this PR introduce any user interface change?
No

Is any new testcase added?
Yes

This closes #4098

15 months ago[CARBONDATA-4196] Allow zero or more white space in GEO UDFs
Nihal ojha [Fri, 4 Jun 2021 05:09:31 +0000 (10:39 +0530)] 
[CARBONDATA-4196] Allow zero or more white space in GEO UDFs

Why is this PR needed?
Currently, regex of geo UDF is not allowing zero space between
UDF name and parenthesis. It always expects a single space in
between. For ex: linestring (120.184179 30.327465). Because of
this sometimes using the UDFs without space is not giving
the expected result.

What changes were proposed in this PR?
Allow zero space between UDFs and parenthesis.

Does this PR introduce any user interface change?
No

Is any new testcase added?
Yes

This closes #4145

15 months ago[CARBONDATA-4193] Fix compaction failure after alter add complex column.
ShreelekhyaG [Wed, 26 May 2021 13:44:40 +0000 (19:14 +0530)] 
[CARBONDATA-4193] Fix compaction failure after alter add complex column.

Why is this PR needed?
1. When we perform compaction after alter add a complex column, the query fails with
   ArrayIndexOutOfBounds exception. While converting and adding row after merge step
   in WriteStepRowUtil.fromMergerRow, As complex dimension is present, the complexKeys
   array is accessed but doesnt have any values in array and throws exception.
2. Creating SI with globalsort on newly added complex column throws TreenodeException
   (Caused by: java.lang.RuntimeException: Couldn't find positionId#172 in [arr2#153])

What changes were proposed in this PR?
1. While restructuring row, added changes to fill complexKeys with default values(null
   values to children) according to the latest schema.
   In SI queryresultprocessor, used the column property isParentColumnComplex to identify
   any complex type. If complex index column not present in the parent table block,
   assigned the SI row value to empty bytes.
2. For SI with globalsort, In case of complex type projection, TableProperties object in
   carbonEnv is not same as in carbonTable object and hence requiredColumns is not
   updated with positionId. So updating tableproperties from carbon env itself.

Does this PR introduce any user interface change?
No

Is any new testcase added?
Yes

This closes #4142

15 months ago[CARBONDATA-4192] UT cases correction for validating the exception message correctly
Mahesh Raju Somalaraju [Thu, 20 May 2021 18:55:54 +0000 (00:25 +0530)] 
[CARBONDATA-4192] UT cases correction for validating the exception message correctly

Why is this PR needed?
Currently, when we check the exception message like below, it is not asserting/failing/
catching if the message content is different.
`intercept[UnsupportedOperationException](
 sql("update test set(a)=(4) where id=1").collect()).getMessage.contains("abc")`

What changes were proposed in this PR?
1. Added assert condition like below for validating the exception message correctly
   `assert(intercept[UnsupportedOperationException](
    sql("update test set(a)=(4) where id=1").collect()).getMessage.contains("abc"))`
2. Added assert condition to check exception message for some test cases which are
   not checking exception message
3. Fixed add segment doc heading related issues

This closes #4140

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

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

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

This closes #4136

15 months ago[CARBONDATA-4191] update table for primitive column not working when complex child
Mahesh Raju Somalaraju [Mon, 24 May 2021 12:31:34 +0000 (18:01 +0530)] 
[CARBONDATA-4191] update table for primitive column not working when complex child
column name and primitive column name match

Why is this PR needed?
Update primitive column not working when complex column child name and primitive
data type name same.
When an update for primitive is received, we are checking in complex child columns
if column name matches then returning UnsupportedOperationbException.

What changes were proposed in this PR?
Currently, we are ignoring the prefix of all columns and passing only columns/child
column info to the update command.
New Changes: Passing full column(alias name/table name.columnName) name which is given
by the user and added checks for handling the unsupported update operation of complex columns.

This closes #4139

15 months ago[CARBONDATA-4186] Fixed insert failure when partition column present in local sort...
Nihal ojha [Wed, 12 May 2021 06:56:42 +0000 (12:26 +0530)] 
[CARBONDATA-4186] Fixed insert failure when partition column present in local sort scope

Why is this PR needed?
Currently when we create table with partition column and put the same column as part of
local sort scope then Insert query fails with ArrayIndexOutOfBounds exception.

What changes were proposed in this PR?
Handle ArrayIndexOutOfBound exception, earlier array size was not increasing because data
was inconsistence and in the wrong order for sortcolumn and isDimNoDictFlags.

This closes #4132

16 months ago[CARBONDATA-4183] Local sort Partition Load and Compaction fix
Indhumathi27 [Fri, 2 Apr 2021 14:47:55 +0000 (20:17 +0530)] 
[CARBONDATA-4183] Local sort Partition Load and Compaction fix

Why is this PR needed?
Currently, number of tasks for partition table local sort load, is decided based on input file size. In this case, the data will not be properly sorted, as tasks launched is more. For compaction, number of tasks is equal to number of partitions. If data is huge for a partition, then there can be chances, that compaction will fail with OOM with less memory configurations.

What changes were proposed in this PR?
When local sort task level property is enabled,

For local sort load, divide input files based on the node locality (num of task = num of nodes), which will properly do the local sorting.
For compaction, launch task based on task id for a partition, so the task launched for a partition will be more.

Does this PR introduce any user interface change?
No

Is any new testcase added?
Yes

This closes #4130

16 months ago[CARBONDATA-4189] alter table validation issues
Mahesh Raju Somalaraju [Tue, 18 May 2021 10:32:38 +0000 (16:02 +0530)] 
[CARBONDATA-4189] alter table validation issues

Why is this PR needed?
1. Alter table duplicate columns check for dimensions/complex columns missed
2. Alter table properties with long strings for complex columns should not support

What changes were proposed in this PR?
1. Changed the dimension columns list type in preparing dimensions columns
   [LinkedHashSet to Scala Seq] for handling the duplicate columns
2. Added check for throwing an exception in case of long strings for complex columns

Does this PR introduce any user interface change?
No

Is any new testcase added?
Yes

This closes #4138

16 months ago[CARBONDATA-4184] alter table Set TBLPROPERTIES for RANGE_COLUMN sets unsupported
Karan980 [Wed, 12 May 2021 11:34:53 +0000 (17:04 +0530)] 
[CARBONDATA-4184] alter table Set TBLPROPERTIES for RANGE_COLUMN sets unsupported
datatype(complex_datatypes/Binary/Boolean/Decimal) as RANGE_COLUMN

Why is this PR needed?
Alter table set command was not validating unsupported dataTypes for range column.

What changes were proposed in this PR?
Added validation for unsupported dataTypes before setting range column value.

Does this PR introduce any user interface change?
No

Is any new testcase added?
Yes

This closes #4133

16 months ago[CARBONDATA-4185] Doc Changes for Heterogeneous format segments in carbondata
Mahesh Raju Somalaraju [Wed, 12 May 2021 17:41:57 +0000 (23:11 +0530)] 
[CARBONDATA-4185] Doc Changes for Heterogeneous format segments in carbondata

Why is this PR needed?
Heterogeneous format segments in carbondata documenation.

What changes were proposed in this PR?
Add segment feature background and impact on existed carbondata features

This closes #4134

16 months ago[CARBONDATA-4188] Fixed select query with small table page size after alter add column
Nihal ojha [Mon, 17 May 2021 10:00:24 +0000 (15:30 +0530)] 
[CARBONDATA-4188] Fixed select query with small table page size after alter add column

Why is this PR needed?
Select query on table with long string data type and small page size throws
ArrayIndexOutOfBoudException after alter add columns.
Query fails because after changing the schema, the number of rows set in
bitsetGroup(RestructureIncludeFilterExecutorImpl.applyFilter()) for pages is not correct.

What changes were proposed in this PR?
Set the correct number of rows inside every page of bitsetGroup.

This closes #4137

16 months ago[CARBONDATA-4175] [CARBONDATA-4162] Leverage Secondary Index till segment level
Nihal ojha [Wed, 24 Mar 2021 09:47:44 +0000 (15:17 +0530)] 
[CARBONDATA-4175] [CARBONDATA-4162] Leverage Secondary Index till segment level

Why is this PR needed?
In the existing architecture, if the parent(main) table and SI table don’t have
the same valid segments then we disable the SI table. And then from the next query
onwards, we scan and prune only the parent table until we trigger the next load or
REINDEX command (as these commands will make the parent and SI table segments in sync).
Because of this, queries take more time to give the result when SI is disabled.

What changes were proposed in this PR?
Instead of disabling the SI table(when parent and child table segments are not in sync)
we will do pruning on SI tables for all the valid segments(segments with status success,
marked for update and load partial success) and the rest of the segments will be pruned by the parent table.
As of now, query on the SI table can be pruned in two ways:
a) With SI as data map.
b) WIth spark plan rewrite.
This PR contains changes to support both methods of SI to leverage till segment level.

This closes #4116

16 months ago[CARBONDATA-4166] Geo spatial Query Enhancements
Indhumathi27 [Fri, 12 Mar 2021 02:49:43 +0000 (08:19 +0530)] 
[CARBONDATA-4166] Geo spatial Query Enhancements

Why is this PR needed?
Currently, for IN_POLYGON_LIST and IN_POLYLINE_LIST udf’s, polygons need to be
specified in SQL. If the polygon list grows in size, then the SQL will also be too long,
which may affect query performance, as SQL analysing cost will be more.
If Polygons are defined as a Column in a new dimension table, then, Spatial dimension
table join can be supported in order to support aggregation on spatial table columns
based on polygons.

What changes were proposed in this PR?
Support IN_POLYGON_LIST and IN_POLYLINE_LIST with SELECT QUERY on the
polygon table.
Support IN_POLYGON filter as join condition for spatial JOIN queries.

Does this PR introduce any user interface change?
Yes.

Is any new testcase added?
Yes

This closes #4127

17 months ago[HOTFIX] Remove hitcount link due to not working
Liang Chen [Fri, 30 Apr 2021 03:06:54 +0000 (11:06 +0800)] 
[HOTFIX] Remove hitcount link due to not working

Why is this PR needed?
hitcount link in readme md file is not working

What changes were proposed in this PR?
Remove the hitcount link as its not required.

Does this PR introduce any user interface change?
No

Is any new testcase added?
No

This closes #4128

17 months ago[CARBONDATA-4170] Support dropping of parent complex columns(array/struct/map)
akkio-97 [Wed, 31 Mar 2021 15:11:26 +0000 (20:41 +0530)] 
[CARBONDATA-4170] Support dropping of parent complex columns(array/struct/map)

Why is this PR needed?
This PR supports dropping of parent complex columns (single and multi-level)
from the carbon table. Dropping of parent column will in turn drop all of
its children columns too.

What changes were proposed in this PR?
Children columns are prefixed with its parent column name. So the identified
columns are added to the delete-column-list and the schema is updated based
on that.Test cases have been written up to 3-levels.

Does this PR introduce any user interface change?
No

Is any new testcase added?
Yes

This closes #4121

17 months ago[CARBONDATA-4167][CARBONDATA-4168] Fix case sensitive issues and input validation...
ShreelekhyaG [Tue, 6 Apr 2021 08:42:40 +0000 (14:12 +0530)] 
[CARBONDATA-4167][CARBONDATA-4168] Fix case sensitive issues and input validation for Geo values.

Why is this PR needed?
1. SPATIAL_INDEX property, POLYGON, LINESTRING, and RANGELIST UDF's are case sensitive.
2. SPATIAL_INDEX.xx.gridSize and SPATIAL_INDEX.xxx.conversionRatio is accepting negative values.
3. Accepting invalid values in geo UDF's.

What changes were proposed in this PR?
1. converted properties to lower case and made UDF's case insensitive.
2. added validation.
3. refactored readAllIIndexOfSegment

Does this PR introduce any user interface change?
No

Is any new testcase added?
Yes

This closes #4118

17 months ago[CARBONDATA-4172] Select query having parent and child struct column in projection...
Indhumathi27 [Thu, 22 Apr 2021 08:20:39 +0000 (13:50 +0530)] 
[CARBONDATA-4172] Select query having parent and child struct column in projection returns incorrect results

Why is this PR needed?
After PR-3574, a scenario has been missed while code refactor.
Currently, if select query has both Parent and its child struct column in projection,
only child column is pushed down to carbon for filling result. For other columns in parent Struct, data output is null.

What changes were proposed in this PR?
If parent struct column is also present in projection, then push down only parent column to carbon.

This closes #4123

17 months ago[CARBONDATA-4173][CARBONDATA-4174] Fix inverted index query issue and handle exceptio...
ShreelekhyaG [Thu, 22 Apr 2021 14:53:37 +0000 (20:23 +0530)] 
[CARBONDATA-4173][CARBONDATA-4174] Fix inverted index query issue and handle exception for desc column

Why is this PR needed?
After creating an Inverted index on the dimension column, some of the filter queries give incorrect results.
handle exception for higher level non-existing children column in desc column.

What changes were proposed in this PR?
While sorting byte arrays with inverted index, we use compareTo method of ByteArrayColumnWithRowId. Here, it was sorting based on the last byte only. Made changes to sort properly based on the entire byte length when dictionary is used.
handled exception and added in testcase.

Does this PR introduce any user interface change?
No

Is any new testcase added?
Yes

This closes #4124

17 months ago[CARBONDATA-4037] Improve the table status and segment file writing
ShreelekhyaG [Fri, 16 Oct 2020 18:03:15 +0000 (23:33 +0530)] 
[CARBONDATA-4037] Improve the table status and segment file writing

Why is this PR needed?
Currently, we update table status and segment files multiple times for a
single iud/merge/compact operation and delete the index files immediately after
merge. When concurrent queries are run, there may be situations like user query
is trying to access the segment index files and they are not present, which is
availability issue.

What changes were proposed in this PR?
1. Generate segment file after merge index and update table status at beginning
   and after merge index. If mergeindex/ table status update fails , load will also fail.
   order:
   create table status file => index files => merge index => generate segment file => update table status
 * Same order is now maintained for SI, compaction, IUD, addHivePartition, addSegment scenarios.
 * Whenever segment file needs to be updated for main table, a new segment file is created
   instead of updating existing one.
2. When compact 'segment_index' is triggered,
   For new tables - if no index files to merge, then logs warn message and exits.
   For old tables - index files not deleted.
3. After SI small files merge,
   For newly loaded SI segments - DeleteOldIndexOrMergeFiles deletes immediately after merge.
   For segments that are already present (rebuild) - old index files and data files are not deleted.
4. Removed carbon.merge.index.in.segment property from config-parameters. This property
   to be used for debugging/test purposes.

Note: Cleaning of stale index/segment files to be handled in - CARBONDATA -4074

This closes #3988

17 months ago[CARBONDATA-4158]Add Secondary Index as a coarse-grain index and use secondary indexe...
Venu Reddy [Tue, 9 Mar 2021 18:53:07 +0000 (00:23 +0530)] 
[CARBONDATA-4158]Add Secondary Index as a coarse-grain index and use secondary indexes for Presto queries

Why is this PR needed?
At present, secondary indexes are leveraged for query pruning via spark plan modification.
This approach is tightly coupled with spark because the plan modification is specific to
spark engine. In order to use secondary indexes for Presto or Hive queries, it is not
feasible to modify the query plans as we desire in the current approach. Thus need arises
for an engine agnostic approach to use secondary indexes in query pruning.

What changes were proposed in this PR?
1. Add Secondary Index as a coarse grain index.
2. Add a new insegment() UDF to support query within the particular segments
3. Control the use of Secondary Index as a coarse grain index pruning with
property('carbon.coarse.grain.secondary.index')
4. Use Index Server driver for Secondary Index pruning
5. Use Secondary Indexes with Presto Queries

This closes #4110

17 months ago[CARBONDATA-4163] Support adding of single-level complex columns(array/struct)
akkio-97 [Wed, 31 Mar 2021 15:11:26 +0000 (20:41 +0530)] 
[CARBONDATA-4163] Support adding of single-level complex columns(array/struct)

Why is this PR needed?
This PR enables adding of single-level complex columns(only array and struct)
to carbon table. Command -
ALTER TABLE <table_name> ADD COLUMNS(arr1 ARRAY (double) )
ALTER TABLE <table_name> ADD COLUMNS(struct1 STRUCT<a:int, b:string>)
The default value for the column in case of old rows will be null.

What changes were proposed in this PR?
1. Create instances of ColumnSchema for each of the children, By doing this
   each child column will have its own ordinal. The new columns are first
   identified and stored in a flat structure. For example, for arr1 array(int)
   --> 2 column schemas are created - arr1 and arr1.val. First being the parent
   and second being its child. Each of which will have its own ordinals.
2. Later while updating the Schema evolution entry we only account for the newly
   added parent columns while discarding children columns (As they are no longer
   required. Otherwise we will have the child as a separate column in the schema ).
3. Using the schema evolution entry the final schema is updated. Since ColumnSchemas
   are stored as a flat structure we later convert them to a nested structure of type Dimensions.

Does this PR introduce any user interface change?
No

Is any new testcase added?
Yes

This closes #4115

17 months ago[CARBONDATA-4161] Describe complex columns
ShreelekhyaG [Tue, 23 Mar 2021 09:40:23 +0000 (15:10 +0530)] 
[CARBONDATA-4161] Describe complex columns
Why is this PR needed?
Currently describe formatted displays the column information
of a table and some additional information. When complex
types such as ARRAY, STRUCT, and MAP types are present in the
table, column definition can be long and it’s difficult to
read in a nested format.

What changes were proposed in this PR?
The DESCRIBE output can be formatted to avoid long lines
for multiple fields. We can pass the column name to the
command and visualize its structure with child fields.

Does this PR introduce any user interface change?
Yes ,
DDL Commands:
DESCRIBE COLUMN fieldname ON [db_name.]table_name;
DESCRIBE short [db_name.]table_name;

Is any new testcase added?
Yes

This closes #4113

17 months agoEnable github's merge function This closes #4119
chenliang613 [Thu, 15 Apr 2021 09:29:40 +0000 (17:29 +0800)] 
Enable github's merge function This closes #4119

17 months agoEnable github's merge function 4119/head
Liang Chen [Thu, 15 Apr 2021 08:09:51 +0000 (16:09 +0800)] 
Enable github's merge function

Enable github's merge function

18 months ago[maven-release-plugin] prepare for next development iteration
ajantha-bhat [Fri, 26 Mar 2021 07:37:20 +0000 (13:07 +0530)] 
[maven-release-plugin] prepare for next development iteration

18 months ago[maven-release-plugin] prepare release apache-carbondata-2.1.1-rc2
ajantha-bhat [Fri, 26 Mar 2021 07:35:52 +0000 (13:05 +0530)] 
[maven-release-plugin] prepare release apache-carbondata-2.1.1-rc2

18 months agoadd .asf.yaml
chenliang613 [Sun, 28 Mar 2021 09:20:08 +0000 (17:20 +0800)] 
add .asf.yaml

18 months ago[CARBONDATA-4154] Fix various concurrent issues with clean files
Vikram Ahuja [Tue, 16 Mar 2021 11:27:10 +0000 (16:57 +0530)] 
[CARBONDATA-4154] Fix various concurrent issues with clean files

Why is this PR needed?
There are 2 issues in clean files operation when ran concurrently with multiple load operations:

Dry run can show negative space freed for clean files with concurrent load.
Accidental deletion of Insert in progress(ongoing load) during clean files operation.
What changes were proposed in this PR?
To solve the dry run negative result, saving the old metadatadetails before the clean files operation and comparing it with loadmetadetails after the clean files operation and just ignoring any new entry that has been added, basically doing an intersection of new and old metadatadetails to show the correct space freed.
In case of load failure issue, there can be scenarios where load in going on(insert in progress state and segment lock is occupied) and as during clean files operation when the final table status lock is removed, there can be scenarios where the load has completed and the segment lock is released but in the clean files in the final list of loadmetadatadetails to be deleted, that load can still be in Insert In Progress state with segment lock released by the load. The clean files operation will delete such loads. To solve this issue, instead of sending a boolean which check if update is required or not in the tablestatus, can send a list of load numbers and will only delete those loadnumbers.

Does this PR introduce any user interface change?
No

Is any new testcase added?
No

This closes #4109

18 months ago[CARBONDATA-4156] Fix Writing Segment Min max with all blocks of a segment
Indhumathi27 [Tue, 9 Mar 2021 10:39:37 +0000 (16:09 +0530)] 
[CARBONDATA-4156] Fix Writing Segment Min max with all blocks of a segment

Why is this PR needed?
PR-3999 has removed some code related to getting segment min max from all blocks.
Because of this, if segment has more than one block, currently, it is writing
min max considering one block only.

What changes were proposed in this PR?
Reverted specific code from above PR. Removed unwanted synchronization for some methods

This closes #4101

18 months ago[CARBONDATA-4149] Fix query issues after alter add empty partition location
ShreelekhyaG [Tue, 23 Mar 2021 09:05:56 +0000 (14:35 +0530)] 
[CARBONDATA-4149] Fix query issues after alter add empty partition location

Why is this PR needed?
Query with SI after add partition based on empty location on partition
table gives incorrect results. pr- 4107 fixes the issue for add
partition if the location is not empty.

What changes were proposed in this PR?
while creating blockid, get segment number from the file name for
the external partition. This blockid will be added to SI and used
for pruning. To identify as an external partition during the compaction
process, instead of checking with loadmetapath, checking with
filepath.startswith(tablepath) format.

Does this PR introduce any user interface change?
No

Is any new testcase added?
Yes

This closes #4112

18 months ago[CARBONDATA-4155] Fix Create table like table with MV
Indhumathi27 [Mon, 22 Mar 2021 15:12:35 +0000 (20:42 +0530)] 
[CARBONDATA-4155] Fix Create table like table with MV

Why is this PR needed?
PR-4076 has added a new table property to fact table.
While executing create table like command, this property
is not excluded, which leads to parsing exception.

What changes were proposed in this PR?
Remove MV related info from destination table properties

This closes #4111