Commit Graph

5755 Commits

Author SHA1 Message Date
96f60ea6ca Add some log to detect deadlock of routine load job 2019-11-06 15:57:51 +08:00
7ad72bbcb8 Enable decimalV2 cast to different precision (#2131)
The precision of cast function is useless. For example,
Query: select cast(10 as decimal(1,0));
Result: 10
Although numeric field is overflow, the numeric could be return.

So, the cast function from decimal(a,b) to decimal(c,d) could not be executed.
2019-11-05 20:31:23 +08:00
65c3b0907a Support aggregation type of REPLACE_IF_NOT_NULL (#2127)
Some use has the requirment that only some of columns will be update in
one load operation, and others will retain as original. However, Doris
can't handle this situation, because user must specify value for all
columns. Then if a column aggregation method is REPLACE, use must query
original value to overwrite it. This often needs some work for user to
do.

If this CL is applied, user can use REPLACE_IF_NOT_NULL instead of
REPLACE. Then when load data to table, if user don't intent to change
value of this column, user can specify NULL for this column. Doris will
retain original value for this column.
2019-11-05 18:08:34 +08:00
d2e34310ef Fix bug that UpdateTabletMetaInfoTask not returned (#2119) 2019-11-05 09:23:41 +08:00
d83eec7a14 Fix META read (#2125)
PR #2083 introduce a meta read bug, which will ignore already written data.
2019-11-04 18:44:04 +08:00
ac5dd0c9f2 Support sql mode (#2083)
At present, we do not support SQL MODE which is similar to MySQL. In MySQL, SQL MODE is stored in global session and session with a 64 bit address,and every bit 0 or 1 on this address represents a mode state. Besides, MySQL supports combine mode which is composed of several modes.

We should support SQL MODE to deal with sql dialect problems. We can heuristically use the MySQL way to store SQL MODE in session and parse it into string when we need to return it back to client.

This commit suggests a solution to support SQL MODE. But it's just a sample, and the mode types in SqlModeHelper.java are not really meaningful from now on.
2019-11-01 23:21:00 +08:00
45df6aae08 Fix some routine load bugs (#2093)
Mainly fix the following issues:

1. A null pointer exception is raised when a database or table is dropped. The expected behavior is that the routine load job is stopped.

2. Memory leaks. Batch routine load task submissions are no longer performed, and modifications are submitted separately for each task.

3. Unreasonable task timeout.
    Routine load tasks should not be queued in the BE thread pool for execution. The task sent to the BE should be executed immediately, otherwise the task in the FE will be timeout first. Eventually leads to constant timeout for all subsequent tasks.

4. All routine load job should be scheduled once it being submitted. Not waiting the available BE slot. Otherwise, all later submitted jobs may not be scheduled forever.
2019-10-31 21:53:03 +08:00
95a3b4ccfe Add object type (#1948)
Add a new type: Object. Currently, it's mainly for complex aggregate metrics(HLL , Bitmap).

The Object type has the following constraints:
1 Object type could not as key column type
2 Object type doesn't support all indices (BloomFilter, short key, zone map, invert index)
3 Object type doesn't support filter and group by

In the implementation:

The Object type reuse the StringValue and StringVal, because in storage engine, the Object type is binary, it has a pointer and length.
2019-10-31 21:42:58 +08:00
e7d6bbd336 Fix explain InsertStmt NPE in FOLLOWER node (#2097) 2019-10-31 14:10:43 +08:00
5e8c96f28b Optimize FE start logic (#2052) 2019-10-31 11:11:50 +08:00
03d384ac51 Add .rat_excludes file, and modify related documents (#2031) (#2105) 2019-10-31 10:34:22 +08:00
6fd63a8f3c Add the cast function for if function in outer join (#2087)
[QUERY]
The type of function which is different from the type of expr will return the incorrect result in query.

Example:
  the type of expr is date
  the type of function is int
  So, the upper fragment will receive a int value instead of date while the result expr is date.
  If there is no cast function, the result of query will be incorrect.
2019-10-29 11:07:17 +08:00
5e3ba03b52 Awareness of Backend down when loading data (#2076) 2019-10-28 20:18:44 +08:00
b6e3725c5d Fix bug that tablet failed to be committed when no data is loaded (#2064) 2019-10-25 16:36:35 +08:00
78a5a84e06 Remove drop repository name toLowerCase (#2060)
Repository's name is case sensitive
2019-10-24 20:06:13 +08:00
4848c94262 Fix bug that unable to add bloom filter columns (#2054) 2019-10-24 14:08:52 +08:00
751a219f0a Add the unchecked cast from date literal to others (#2021)
Fix the ISSUE:2017
This commit enable the cast function in date.
The date literal can be cast to target type which is implicitly castable such as int, bigint, largeint.
2019-10-21 13:57:50 +08:00
3f325e001a Change the priority of different type in function (#2003)
This commit fix the issue [ISSUE-2002].
It changes the priority of coalesce, ifnull, nullif function etc.
The priority of decimal is higher then varchar in the IS_SUPERTYPE_OF compare mode.

Example:
select coalesce(decimal_column, 1) from table;
    the return type of coalesce should be decimal instead of varchar.

Add supertype about datetime and date
The supertype of datetime is bigint, largeint etc.
In IS_SUPERTYPE_OF compare mode, the function(bigint, bigint, bigint) is a supertype of function(datetime, bigint, int).

Example:
select coalesce(now(), 1)) from web_returns;
    the return type of coalesce should be bigint instead of varchar.
2019-10-18 09:35:49 +08:00
c3b5046940 Fix bug of invalid stream load task rollback (#1999)
If stream load be committed with result PUBLISH_TIMEOUT, it should not rollback
this transaction, but only return this message to user.
2019-10-17 21:08:29 +08:00
d9bb494d7f Fix bug that insert stmt with label return label already exist. (#2006) 2019-10-17 20:00:12 +08:00
3c12af4dcc Limit the memory consumption of broker scan node (#1996)
If memory exceed limit, no more row batch will be pushed to batch queue
2019-10-17 14:40:16 +08:00
ac16318c9b [Bug-fix][Broker-load] Fix the bug of the label already exists when the txn has been finished (#1992)
If FE is restarted between txn committed and visible, the load job will be rescheduled and failed with label already exists.
The reason is that there are inconsistency between transaction of load job and meta of load job.
So, the replay of the txn attachment need to be done in function replayOnCommitted.
The load job state and progress is correct after that.
2019-10-16 16:35:18 +08:00
41e55cfca9 Modify fixed partition feature (#1989)
1. Not support MAVALUE in multi partition column.
2. Fix the incorrect show create table stmt.
2019-10-16 16:03:46 +08:00
63fa260d3f Support prepare/close in UDF (#1985)
The prepare/close step of scalar function is already supported in execution framework, We only need to do is that support it in syntax and meta in frontend.

In addition, 'Hive' binary type of scalar function NOT supports prepare/close step, we need to make it supports.
2019-10-16 07:19:20 +08:00
ec7c8a2c6f Support adding fixed range partition
eg: ALTER TABLE test_table ADD PARTITION p0125 VALUES [("20190125"), ("20190126"));
2019-10-15 09:50:30 +08:00
62acf5d098 Limit the memory usage of Loading process (#1954) 2019-10-15 09:26:20 +08:00
c3a3212ae5 Bump netty-all from 4.1.25.Final to 4.1.42.Final in /fe (#1959)
Bumps [netty-all](https://github.com/netty/netty) from 4.1.25.Final to 4.1.42.Final.
- [Release notes](https://github.com/netty/netty/releases)
- [Commits](https://github.com/netty/netty/compare/netty-4.1.25.Final...netty-4.1.42.Final)

Signed-off-by: dependabot[bot] <support@github.com>
2019-10-14 23:05:00 +08:00
ccc236484b Fix bug that failed to add KEY column to DUPLICATE KEY table (#1973) 2019-10-14 16:40:34 +08:00
463b462b8d Add create_time to information_schema.tables 2019-10-12 21:45:14 +08:00
ce236bfcd4 add alter table modify limit: Cannot change DATETIME to DATE (#1963) 2019-10-12 19:11:17 +08:00
bbb3fdef8c Fix bug that OlapTableSink use invalid column as distribution column for RANDOM distribution table. (#1956)
RANDOM distribution is deprecated long time ago, this is just for compatibility and bug fix.
2019-10-11 20:07:25 +08:00
4a17152f40 Add tdigest compression param for pencentile_approx function (#1939) 2019-10-11 18:56:59 +08:00
e267d031bb Enhance the speed of avg function (#1889)
This commit enable the avg operator in fe instead of converting the avg function into sum/count.
Also, this commit fix the bug of deciamlv2 avg which cause the core in be.
The int128 could not be assinged directly.

The speed of avg function is similar to sum function after enhancement.
2019-10-10 22:43:46 +08:00
d46fc59cc3 Add send_clear_alter_tasks operation
ALTER TABLE tbl SET ("send_clear_alter_tasks" = "true");
2019-10-09 22:32:48 +08:00
1c99e88fc0 Invalid hash value of DateLiteral (#1933) 2019-10-08 11:07:02 +08:00
0d729b1191 Filter empty strings of properties in file fe.conf (#1932) 2019-10-07 23:21:05 +08:00
0072712c80 Add address reuesd option for http server (#1915)
Avoid test failure accidentally because of the BindException (Address already in use)
2019-09-30 20:34:10 +08:00
c8abdf8989 Fix length equal restrict in schema change (#1921) 2019-09-30 20:32:32 +08:00
8f016d3ab2 Make HLL be able to handle invalid data (#1908)
In this change list
1. validate HLL column when loading data, if data is invalid, this row
will be filtered.
2. seems as empty HLL when serializing invalid type of HLL data, with
this change, all ingested data will be valid.
3. seems as empty HLL when deserializing nullptr or invalid type of HLL data.
With this change, dirty data can be handled normally.
4. rename function empty_hll to hll_empty.
5. disable memtable_flush_execute_test because this will fails
sometimes. When tearing down, some thread is not joined, and they will
visit destroyed resource, which is invalid.
2019-09-29 10:55:23 +08:00
58f1d79597 Make batchEndId default value to zero instead (#1907) 2019-09-28 23:12:59 +08:00
bdd9c31766 Remove default value for HLL column (#1901)
1.fixed hll default column to no default value (#1901)
2. Don't allow insert stmt insert default values into Doris except hll_empty
2019-09-28 11:19:25 +08:00
de8f273217 Add hardware info in fe httpserver home page #1894 (#1896) 2019-09-28 11:17:08 +08:00
e67b398916 Fix bug that backup may create an empty file on remote storage. (#1869)
Sometime the broker writer failed to close, but we do not handle this failure.
This may create an empty file on remote storage but be treated as normal.

Also enhance some usabilities:
1. getting latest 2000 transactions instead of getting the earliest.
2. Show backend which download and upload tasks are being executed.
2019-09-28 00:11:43 +08:00
b970290ae4 Reduce memory usage of View object (#1878) 2019-09-26 14:57:46 +08:00
f3bbdfe7d3 Fix bug that load statistic in show load result is incorrect (#1871)
Each load job has several load tasks, and each task is a query plan
with serveral plan fragments. Each plan fragment report query profile
independently.
So we need to collect each plan fragment's report, separately.
2019-09-25 22:56:59 +08:00
ce6fb1cfba Fix bug: broker load not support inline function in hll_hash (#1873)
hll_hash should support the inline function in broker load and should not support the inline function in hadoop load.
2019-09-25 22:00:02 +08:00
e43f1a2766 Fix NPE error when creating table with bool column (#1864) 2019-09-25 14:40:13 +08:00
c643cbd30c Optimize the load performance for large file (#1798)
The current load process is:

Tablet Sink -> Tablet Channel Mgr -> Tablets Channel -> Delta Writer -> MemTable -> Flush to disk

In the path of Tablets Channel -> DeltaWriter -> MemTable -> Flush to disk, the following operations are performed:

Insert tuple into different memtables according to tablet ID
When the memtable size reaches the threshold, it is written to disk.
The above operations are equivalent to single thread execution for a single load task.
In fact, the insertion of memtable and the flush of memtable can be executed synchronously.
Perform these operation in single thread prevents the insertion of memtable from being delayed due to slow disk writing.

In the new implementation, I added a MemTableFlushExecutor class with a set of flush queues and corresponding worker threads.
By default, each data directory uses two worker threads for flush, which can be modified by the parameter flush_thread_num_per_store of BE.
DeltaWriter will push the full memtable to MemTableFlushExecutor for flush operation and generate a new memtable for receiving new data.

This design can improve the performance of load large files.
In single host testing, the time to load a 1GB text file is reduced from 48 seconds to 29 seconds.
2019-09-25 13:49:32 +08:00
dd02382abd Check buckets limit: buckets > 0 when adding partition (#1855) 2019-09-25 13:02:09 +08:00
40b9c3571b Support hll_empty function (#1825) 2019-09-25 09:28:02 +08:00