From 4ba7912b9992bb9eb0136572df337a901bb048f7 Mon Sep 17 00:00:00 2001 From: AKIRA <33112463+Kikyou1997@users.noreply.github.com> Date: Thu, 23 Nov 2023 00:52:33 +0900 Subject: [PATCH 01/33] [fix](stats) Fix update rows for unique table didn't get updated properly #26968 (#27337) --- .../doris/statistics/TableStatsMeta.java | 2 +- .../suites/statistics/analyze_stats.groovy | 26 +++++++++++++++++++ 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/fe/fe-core/src/main/java/org/apache/doris/statistics/TableStatsMeta.java b/fe/fe-core/src/main/java/org/apache/doris/statistics/TableStatsMeta.java index 0e32d03039307a..6f50802f395653 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/statistics/TableStatsMeta.java +++ b/fe/fe-core/src/main/java/org/apache/doris/statistics/TableStatsMeta.java @@ -136,7 +136,7 @@ public void update(AnalysisInfo analyzedJob, TableIf tableIf) { } jobType = analyzedJob.jobType; if (tableIf != null && analyzedJob.colToPartitions.keySet() - .containsAll(tableIf.getColumns().stream().map(Column::getName).collect( + .containsAll(tableIf.getBaseSchema().stream().map(Column::getName).collect( Collectors.toSet()))) { updatedRows.set(0); } diff --git a/regression-test/suites/statistics/analyze_stats.groovy b/regression-test/suites/statistics/analyze_stats.groovy index 0dfb9d180c5ff1..3f0e5862ba0355 100644 --- a/regression-test/suites/statistics/analyze_stats.groovy +++ b/regression-test/suites/statistics/analyze_stats.groovy @@ -1249,4 +1249,30 @@ PARTITION `p599` VALUES IN (599) assert all_finished(show_result) + // unique table update rows + sql """ + CREATE TABLE unique_tbl_update_rows_test (col1 varchar(11451) not null, + col2 int not null, col3 int not null, col4 int not null) + DUPLICATE KEY(`col1`) + DISTRIBUTED BY HASH(col1) + BUCKETS 3 + PROPERTIES( + "replication_num"="1" + ); + """ + + sql """insert into unique_tbl_update_rows_test values('21',5,1,7); """ + sql """ANALYZE TABLE unique_tbl_update_rows_test WITH SYNC""" + sql """insert into unique_tbl_update_rows_test values('21',5,1,7); """ + sql """ANALYZE TABLE unique_tbl_update_rows_test WITH SYNC""" + def unique_table_update_rows_result = sql """SHOW TABLE STATS unique_tbl_update_rows_test""" + def check_update_rows = { r -> + for (int i = 0; i < r.size; i++) { + if (r[i][0] == "0") { + return true + } + } + return false + } + check_update_rows(unique_table_update_rows_result) } From c7f729abd1cfc6dab2562eecdae001e61e6d886f Mon Sep 17 00:00:00 2001 From: amory Date: Wed, 22 Nov 2023 23:54:05 +0800 Subject: [PATCH 02/33] [FIX](jsonb) fix jsonb in predict column #27325 (#27424) --- be/src/olap/schema.cpp | 1 + .../json_p0/test_json_predict_is_null.out | 85 ++++++++++++++++++ .../jsonb_p0/test_jsonb_predict_is_null.out | 85 ++++++++++++++++++ .../json_p0/test_json_predict_is_null.groovy | 89 +++++++++++++++++++ .../test_jsonb_predict_is_null.groovy | 88 ++++++++++++++++++ 5 files changed, 348 insertions(+) create mode 100644 regression-test/data/json_p0/test_json_predict_is_null.out create mode 100644 regression-test/data/jsonb_p0/test_jsonb_predict_is_null.out create mode 100644 regression-test/suites/json_p0/test_json_predict_is_null.groovy create mode 100644 regression-test/suites/jsonb_p0/test_jsonb_predict_is_null.groovy diff --git a/be/src/olap/schema.cpp b/be/src/olap/schema.cpp index d6c737de03c6ca..9677f94d5c88af 100644 --- a/be/src/olap/schema.cpp +++ b/be/src/olap/schema.cpp @@ -180,6 +180,7 @@ vectorized::IColumn::MutablePtr Schema::get_predicate_column_ptr(const Field& fi break; case FieldType::OLAP_FIELD_TYPE_VARCHAR: case FieldType::OLAP_FIELD_TYPE_STRING: + case FieldType::OLAP_FIELD_TYPE_JSONB: if (config::enable_low_cardinality_optimize && reader_type == ReaderType::READER_QUERY) { ptr = doris::vectorized::ColumnDictionary::create( field.type()); diff --git a/regression-test/data/json_p0/test_json_predict_is_null.out b/regression-test/data/json_p0/test_json_predict_is_null.out new file mode 100644 index 00000000000000..e472118b03690c --- /dev/null +++ b/regression-test/data/json_p0/test_json_predict_is_null.out @@ -0,0 +1,85 @@ +-- This file is automatically generated. You should know what you did if you want to edit this +-- !select_extract -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} "v31" +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} "v31" +26 \N \N +27 {"k1":"v1","k2":200} "v1" +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N +29 12524337771678448270 \N +30 -9223372036854775808 \N +31 18446744073709551615 \N + +-- !select_pred -- +1 \N +26 \N + +-- !select_delete -- +0 + +-- !select_pred -- +2 null +3 true +4 false +5 100 +6 10000 +7 1000000000 +8 1152921504606846976 +9 6.18 +10 "abcd" +11 {} +12 {"k1":"v31","k2":300} +13 [] +14 [123,456] +15 ["abc","def"] +16 [null,true,false,100,6.18,"abc"] +17 [{"k1":"v41","k2":400},1,"a",3.14] +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} +27 {"k1":"v1","k2":200} +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} +29 12524337771678448270 +30 -9223372036854775808 +31 18446744073709551615 + +-- !select_drop -- +0 + +-- !select -- +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +27 +28 +29 +30 +31 + diff --git a/regression-test/data/jsonb_p0/test_jsonb_predict_is_null.out b/regression-test/data/jsonb_p0/test_jsonb_predict_is_null.out new file mode 100644 index 00000000000000..e472118b03690c --- /dev/null +++ b/regression-test/data/jsonb_p0/test_jsonb_predict_is_null.out @@ -0,0 +1,85 @@ +-- This file is automatically generated. You should know what you did if you want to edit this +-- !select_extract -- +1 \N \N +2 null \N +3 true \N +4 false \N +5 100 \N +6 10000 \N +7 1000000000 \N +8 1152921504606846976 \N +9 6.18 \N +10 "abcd" \N +11 {} \N +12 {"k1":"v31","k2":300} "v31" +13 [] \N +14 [123,456] \N +15 ["abc","def"] \N +16 [null,true,false,100,6.18,"abc"] \N +17 [{"k1":"v41","k2":400},1,"a",3.14] \N +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} "v31" +26 \N \N +27 {"k1":"v1","k2":200} "v1" +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} \N +29 12524337771678448270 \N +30 -9223372036854775808 \N +31 18446744073709551615 \N + +-- !select_pred -- +1 \N +26 \N + +-- !select_delete -- +0 + +-- !select_pred -- +2 null +3 true +4 false +5 100 +6 10000 +7 1000000000 +8 1152921504606846976 +9 6.18 +10 "abcd" +11 {} +12 {"k1":"v31","k2":300} +13 [] +14 [123,456] +15 ["abc","def"] +16 [null,true,false,100,6.18,"abc"] +17 [{"k1":"v41","k2":400},1,"a",3.14] +18 {"k1":"v31","k2":300,"a1":[{"k1":"v41","k2":400},1,"a",3.14]} +27 {"k1":"v1","k2":200} +28 {"a.b.c":{"k1.a1":"v31","k2":300},"a":"niu"} +29 12524337771678448270 +30 -9223372036854775808 +31 18446744073709551615 + +-- !select_drop -- +0 + +-- !select -- +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +27 +28 +29 +30 +31 + diff --git a/regression-test/suites/json_p0/test_json_predict_is_null.groovy b/regression-test/suites/json_p0/test_json_predict_is_null.groovy new file mode 100644 index 00000000000000..ed47a2934f8a8b --- /dev/null +++ b/regression-test/suites/json_p0/test_json_predict_is_null.groovy @@ -0,0 +1,89 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + +import org.codehaus.groovy.runtime.IOGroovyMethods + +suite("test_json_predict_is_null", "p0") { + sql """ set experimental_enable_nereids_planner = false """ + + sql """ set experimental_enable_nereids_planner = true """ + sql """ set enable_fallback_to_original_planner = true """ + + sql "DROP TABLE IF EXISTS j_pred" + + sql """ + CREATE TABLE IF NOT EXISTS j_pred ( + id INT, + j JSON + ) + DUPLICATE KEY(id) + DISTRIBUTED BY HASH(id) BUCKETS 10 + PROPERTIES("replication_num" = "1", "disable_auto_compaction" = "true"); + """ + + // insert into valid json rows + sql """INSERT INTO j_pred VALUES(26, NULL)""" + sql """INSERT INTO j_pred VALUES(27, '{"k1":"v1", "k2": 200}')""" + sql """INSERT INTO j_pred VALUES(28, '{"a.b.c":{"k1.a1":"v31", "k2": 300},"a":"niu"}')""" + // int64 value + sql """INSERT INTO j_pred VALUES(29, '12524337771678448270')""" + // int64 min value + sql """INSERT INTO j_pred VALUES(30, '-9223372036854775808')""" + // int64 max value + sql """INSERT INTO j_pred VALUES(31, '18446744073709551615')""" + + // load the jsonb data from csv file + streamLoad { + table "j_pred" + + file "test_json.csv" // import csv file + set 'max_filter_ratio', '0.3' + time 10000 // limit inflight 10s + set 'strict_mode', 'true' + + // if declared a check callback, the default check condition will ignore. + // So you must check all condition + check { result, exception, startTime, endTime -> + if (exception != null) { + throw exception + } + log.info("Stream load result: ${result}".toString()) + def json = parseJson(result) + + def (code, out, err) = curl("GET", json.ErrorURL) + log.info("error result: " + out) + + assertEquals("success", json.Status.toLowerCase()) + assertEquals(25, json.NumberTotalRows) + assertEquals(18, json.NumberLoadedRows) + assertEquals(7, json.NumberFilteredRows) + assertTrue(json.LoadBytes > 0) + } + } + + qt_select_extract "SELECT id, j, jsonb_extract(j, '\$.k1') FROM j_pred ORDER BY id" + + qt_select_pred "select * from j_pred where j is null order by id" + + qt_select_delete "delete from j_pred where j is null" + + qt_select_pred "select * from j_pred order by id" + + qt_select_drop "alter table j_pred DROP COLUMN j" + + qt_select "select * from j_pred order by id" +} diff --git a/regression-test/suites/jsonb_p0/test_jsonb_predict_is_null.groovy b/regression-test/suites/jsonb_p0/test_jsonb_predict_is_null.groovy new file mode 100644 index 00000000000000..c97d0469908320 --- /dev/null +++ b/regression-test/suites/jsonb_p0/test_jsonb_predict_is_null.groovy @@ -0,0 +1,88 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + +import org.codehaus.groovy.runtime.IOGroovyMethods + +suite("test_jsonb_predict_is_null", "p0") { + sql """ set experimental_enable_nereids_planner = false """ + + sql """ set experimental_enable_nereids_planner = true """ + sql """ set enable_fallback_to_original_planner = true """ + + sql "DROP TABLE IF EXISTS jb_pred" + + sql """ + CREATE TABLE IF NOT EXISTS jb_pred ( + id INT, + j JSONB + ) + DUPLICATE KEY(id) + DISTRIBUTED BY HASH(id) BUCKETS 10 + PROPERTIES("replication_num" = "1", "disable_auto_compaction" = "true"); + """ + + // insert into valid json rows + sql """INSERT INTO jb_pred VALUES(26, NULL)""" + sql """INSERT INTO jb_pred VALUES(27, '{"k1":"v1", "k2": 200}')""" + sql """INSERT INTO jb_pred VALUES(28, '{"a.b.c":{"k1.a1":"v31", "k2": 300},"a":"niu"}')""" + // int64 value + sql """INSERT INTO jb_pred VALUES(29, '12524337771678448270')""" + // int64 min value + sql """INSERT INTO jb_pred VALUES(30, '-9223372036854775808')""" + // int64 max value + sql """INSERT INTO jb_pred VALUES(31, '18446744073709551615')""" + + // load the jsonb data from csv file + streamLoad { + table "jb_pred" + + file "test_jsonb.csv" // import csv file + set 'max_filter_ratio', '0.3' + time 10000 // limit inflight 10s + set 'strict_mode', 'true' + + // if declared a check callback, the default check condition will ignore. + // So you must check all condition + check { result, exception, startTime, endTime -> + if (exception != null) { + throw exception + } + log.info("Stream load result: ${result}".toString()) + def json = parseJson(result) + def (code, out, err) = curl("GET", json.ErrorURL) + log.info("error result: " + out) + + assertEquals("success", json.Status.toLowerCase()) + assertEquals(25, json.NumberTotalRows) + assertEquals(18, json.NumberLoadedRows) + assertEquals(7, json.NumberFilteredRows) + assertTrue(json.LoadBytes > 0) + } + } + + qt_select_extract "SELECT id, j, jsonb_extract(j, '\$.k1') FROM jb_pred ORDER BY id" + + qt_select_pred "select * from jb_pred where j is null order by id" + + qt_select_delete "delete from jb_pred where j is null" + + qt_select_pred "select * from jb_pred order by id" + + qt_select_drop "alter table jb_pred DROP COLUMN j" + + qt_select "select * from jb_pred order by id" +} From ca96a2e26d29cc7949623f1161b0167c6bd69df0 Mon Sep 17 00:00:00 2001 From: Jerry Hu Date: Wed, 22 Nov 2023 23:55:33 +0800 Subject: [PATCH 03/33] [fix](fe) slots in having clause should be set to need materialized(#27412) (#27429) --- .../org/apache/doris/analysis/SelectStmt.java | 5 ++ .../test_two_phase_read_with_having.out | 5 ++ .../test_two_phase_read_with_having.groovy | 57 +++++++++++++++++++ 3 files changed, 67 insertions(+) create mode 100644 regression-test/data/query_p0/test_two_phase_read_with_having.out create mode 100644 regression-test/suites/query_p0/test_two_phase_read_with_having.groovy diff --git a/fe/fe-core/src/main/java/org/apache/doris/analysis/SelectStmt.java b/fe/fe-core/src/main/java/org/apache/doris/analysis/SelectStmt.java index 5d7fd605785447..8f34046401cca9 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/analysis/SelectStmt.java +++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/SelectStmt.java @@ -701,6 +701,11 @@ public void analyze(Analyzer analyzer) throws UserException { if (whereClause != null) { whereClause.collect(SlotRef.class, conjuntSlots); } + + if (havingClauseAfterAnalyzed != null) { + havingClauseAfterAnalyzed.collect(SlotRef.class, conjuntSlots); + } + resultSlots.removeAll(orderingSlots); resultSlots.removeAll(conjuntSlots); // reset slots need to do fetch column diff --git a/regression-test/data/query_p0/test_two_phase_read_with_having.out b/regression-test/data/query_p0/test_two_phase_read_with_having.out new file mode 100644 index 00000000000000..39ab3b251ba881 --- /dev/null +++ b/regression-test/data/query_p0/test_two_phase_read_with_having.out @@ -0,0 +1,5 @@ +-- This file is automatically generated. You should know what you did if you want to edit this +-- !test -- +10003 1 +10001 1 + diff --git a/regression-test/suites/query_p0/test_two_phase_read_with_having.groovy b/regression-test/suites/query_p0/test_two_phase_read_with_having.groovy new file mode 100644 index 00000000000000..eda2240d4ba9bb --- /dev/null +++ b/regression-test/suites/query_p0/test_two_phase_read_with_having.groovy @@ -0,0 +1,57 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +suite("test_two_phase_read_with_having") { + + sql """ set enable_partition_topn = 1; """ + sql """ set topn_opt_limit_threshold = 1024; """ + sql """ set enable_two_phase_read_opt = 1; """ + + sql """ + drop table if exists `test_two_phase_read_with_having_tbl`; + """ + + sql """ + CREATE TABLE `test_two_phase_read_with_having_tbl` ( + `id` bigint(20) NOT null, + `account_id` bigint(20) DEFAULT NULL, + `queue_id` int(11) DEFAULT NULL, + `call_date` datetime DEFAULT NULL, + `loan_id_list` varchar(200) DEFAULT NULL + ) DUPLICATE KEY (`id`,`account_id`) + DISTRIBUTED BY HASH (`id`) BUCKETS 3 + PROPERTIES("replication_num" = "1"); + """ + + sql """ + INSERT INTO `test_two_phase_read_with_having_tbl` (id,`account_id`, `queue_id`, `call_date`, `loan_id_list`) VALUES + (10001, 10001, 23, '2023-08-24 10:00:00', '249073260533940345,249073260533940346'), + (10002, 10002, 23, '2023-08-25 12:00:00', '249073260533940347,249073260533940348'), + (10003, 10003, 23, '2023-08-26 14:00:00', '249073260533940345,249073260533940350'), + (10004, 10004, 23, '2023-08-27 16:00:00', '249073260533940351,249073260533940352'), + (10005, 10005, 23, '2023-08-28 18:00:00', '249073260533940346,249073260533940353'); + """ + + qt_test """ + select + `account_id` + ,FIND_IN_SET(249073260533940345,loan_id_list) as loan_id + from `test_two_phase_read_with_having_tbl` + where + `queue_id` in (23) and `call_date` >= '2023-08-23 20:33:11' and `call_date` <= '2023-11-20 20:33:11' having loan_id >= 1 + order by `id` desc limit 20 offset 0; + """ +} \ No newline at end of file From d1119058455b8533e9bd8141c1e65fc6862f716e Mon Sep 17 00:00:00 2001 From: Pxl Date: Thu, 23 Nov 2023 01:48:03 +0800 Subject: [PATCH 04/33] [Bug](insert)fix insert wrong data on mv when stmt have multiple values (#27297) (#27382) fix insert wrong data on mv when stmt have multiple values --- .../doris/analysis/NativeInsertStmt.java | 59 +++++++++++-------- .../test_insert_multi/test_insert_multi.out | 9 +++ .../test_insert_multi.groovy | 39 ++++++++++++ 3 files changed, 84 insertions(+), 23 deletions(-) create mode 100644 regression-test/data/mv_p0/test_insert_multi/test_insert_multi.out create mode 100644 regression-test/suites/mv_p0/test_insert_multi/test_insert_multi.groovy diff --git a/fe/fe-core/src/main/java/org/apache/doris/analysis/NativeInsertStmt.java b/fe/fe-core/src/main/java/org/apache/doris/analysis/NativeInsertStmt.java index cc2d13413770f7..391d8c6820f0e3 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/analysis/NativeInsertStmt.java +++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/NativeInsertStmt.java @@ -595,25 +595,6 @@ private void analyzeSubquery(Analyzer analyzer) throws UserException { checkColumnCoverage(mentionedColumns, targetTable.getBaseSchema()); realTargetColumnNames = targetColumns.stream().map(Column::getName).collect(Collectors.toList()); - Map slotToIndex = Maps.newTreeMap(String.CASE_INSENSITIVE_ORDER); - for (int i = 0; i < queryStmt.getResultExprs().size(); i++) { - Expr expr = queryStmt.getResultExprs().get(i); - if (!(expr instanceof StringLiteral && ((StringLiteral) expr).getValue() - .equals(SelectStmt.DEFAULT_VALUE))) { - slotToIndex.put(realTargetColumnNames.get(i), queryStmt.getResultExprs().get(i) - .checkTypeCompatibility(targetTable.getColumn(realTargetColumnNames.get(i)).getType())); - } - } - - for (Column column : targetTable.getBaseSchema()) { - if (!slotToIndex.containsKey(column.getName())) { - if (column.getDefaultValue() == null) { - slotToIndex.put(column.getName(), new NullLiteral()); - } else { - slotToIndex.put(column.getName(), new StringLiteral(column.getDefaultValue())); - } - } - } // handle VALUES() or SELECT constant list if (isValuesOrConstantSelect) { @@ -622,7 +603,7 @@ private void analyzeSubquery(Analyzer analyzer) throws UserException { // INSERT INTO VALUES(...) List> rows = selectStmt.getValueList().getRows(); for (int rowIdx = 0; rowIdx < rows.size(); ++rowIdx) { - analyzeRow(analyzer, targetColumns, rows, rowIdx, origColIdxsForExtendCols, slotToIndex); + analyzeRow(analyzer, targetColumns, rows, rowIdx, origColIdxsForExtendCols, realTargetColumnNames); } // clear these 2 structures, rebuild them using VALUES exprs @@ -640,7 +621,7 @@ private void analyzeSubquery(Analyzer analyzer) throws UserException { // `selectStmt.getResultExprs().clear();` will clear the `rows` too, causing // error. rows.add(Lists.newArrayList(selectStmt.getResultExprs())); - analyzeRow(analyzer, targetColumns, rows, 0, origColIdxsForExtendCols, slotToIndex); + analyzeRow(analyzer, targetColumns, rows, 0, origColIdxsForExtendCols, realTargetColumnNames); // rows may be changed in analyzeRow(), so rebuild the result exprs selectStmt.getResultExprs().clear(); for (Expr expr : rows.get(0)) { @@ -651,6 +632,8 @@ private void analyzeSubquery(Analyzer analyzer) throws UserException { // INSERT INTO SELECT ... FROM tbl if (!origColIdxsForExtendCols.isEmpty()) { // extend the result expr by duplicating the related exprs + Map slotToIndex = buildSlotToIndex(queryStmt.getResultExprs(), realTargetColumnNames, + analyzer); for (Pair entry : origColIdxsForExtendCols) { if (entry.second == null) { queryStmt.getResultExprs().add(queryStmt.getResultExprs().get(entry.first)); @@ -680,6 +663,8 @@ private void analyzeSubquery(Analyzer analyzer) throws UserException { // expand colLabels in QueryStmt if (!origColIdxsForExtendCols.isEmpty()) { if (queryStmt.getResultExprs().size() != queryStmt.getBaseTblResultExprs().size()) { + Map slotToIndex = buildSlotToIndex(queryStmt.getBaseTblResultExprs(), + realTargetColumnNames, analyzer); for (Pair entry : origColIdxsForExtendCols) { if (entry.second == null) { queryStmt.getBaseTblResultExprs().add(queryStmt.getBaseTblResultExprs().get(entry.first)); @@ -718,8 +703,34 @@ private void analyzeSubquery(Analyzer analyzer) throws UserException { } } - private void analyzeRow(Analyzer analyzer, List targetColumns, List> rows, - int rowIdx, List> origColIdxsForExtendCols, Map slotToIndex) + private Map buildSlotToIndex(ArrayList row, List realTargetColumnNames, + Analyzer analyzer) throws AnalysisException { + Map slotToIndex = Maps.newTreeMap(String.CASE_INSENSITIVE_ORDER); + for (int i = 0; i < row.size(); i++) { + Expr expr = row.get(i); + expr.analyze(analyzer); + if (expr instanceof DefaultValueExpr || expr instanceof StringLiteral + && ((StringLiteral) expr).getValue().equals(SelectStmt.DEFAULT_VALUE)) { + continue; + } + expr.analyze(analyzer); + slotToIndex.put(realTargetColumnNames.get(i), + expr.checkTypeCompatibility(targetTable.getColumn(realTargetColumnNames.get(i)).getType())); + } + for (Column column : targetTable.getBaseSchema()) { + if (!slotToIndex.containsKey(column.getName())) { + if (column.getDefaultValue() == null) { + slotToIndex.put(column.getName(), new NullLiteral()); + } else { + slotToIndex.put(column.getName(), new StringLiteral(column.getDefaultValue())); + } + } + } + return slotToIndex; + } + + private void analyzeRow(Analyzer analyzer, List targetColumns, List> rows, int rowIdx, + List> origColIdxsForExtendCols, List realTargetColumnNames) throws AnalysisException { // 1. check number of fields if equal with first row // targetColumns contains some shadow columns, which is added by system, @@ -729,6 +740,8 @@ private void analyzeRow(Analyzer analyzer, List targetColumns, List row = rows.get(rowIdx); + Map slotToIndex = buildSlotToIndex(row, realTargetColumnNames, analyzer); + if (!origColIdxsForExtendCols.isEmpty()) { /** * we should extend the row for shadow columns. diff --git a/regression-test/data/mv_p0/test_insert_multi/test_insert_multi.out b/regression-test/data/mv_p0/test_insert_multi/test_insert_multi.out new file mode 100644 index 00000000000000..46af15050874a5 --- /dev/null +++ b/regression-test/data/mv_p0/test_insert_multi/test_insert_multi.out @@ -0,0 +1,9 @@ +-- This file is automatically generated. You should know what you did if you want to edit this +-- !select_star -- +1 1 1 2020-02-02 1 +1 2 2 2020-02-02 1 + +-- !select_mv -- +1 1 +2 1 + diff --git a/regression-test/suites/mv_p0/test_insert_multi/test_insert_multi.groovy b/regression-test/suites/mv_p0/test_insert_multi/test_insert_multi.groovy new file mode 100644 index 00000000000000..3f0d648f7c4e87 --- /dev/null +++ b/regression-test/suites/mv_p0/test_insert_multi/test_insert_multi.groovy @@ -0,0 +1,39 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + +import org.codehaus.groovy.runtime.IOGroovyMethods + +suite ("test_insert_multi") { + + sql """ DROP TABLE IF EXISTS sales_records; """ + + sql """ + create table sales_records(record_id int, seller_id int, store_id int, sale_date date, sale_amt bigint) distributed by hash(record_id) properties("replication_num" = "1"); + """ + + createMV ("create materialized view store_amt as select store_id, sum(sale_amt) from sales_records group by store_id;") + + sql """insert into sales_records values(1,1,1,"2020-02-02",1),(1,2,2,"2020-02-02",1);""" + + qt_select_star "select * from sales_records order by 1,2;" + + explain { + sql(" SELECT store_id, sum(sale_amt) FROM sales_records GROUP BY store_id order by 1;") + contains "(store_amt)" + } + qt_select_mv " SELECT store_id, sum(sale_amt) FROM sales_records GROUP BY store_id order by 1;" +} From 9c49c2dd15152f99dc5c556dfb09e2682cf6685a Mon Sep 17 00:00:00 2001 From: Xinyi Zou Date: Thu, 23 Nov 2023 10:39:52 +0800 Subject: [PATCH 05/33] [fix](fe ut) Fix OlapQueryCacheTest failed (#27305) (#27406) 1. ``` java.lang.NullPointerException: null at org.apache.doris.catalog.Env.getCurrentSystemInfo(Env.java:793) ~[classes/:?] at org.apache.doris.qe.SimpleScheduler$UpdateBlacklistThread.run(SimpleScheduler.java:206) ~[classes/:?] at java.lang.Thread.run(Thread.java:750) ~[?:1.8.0_382] java.lang.NullPointerException at org.apache.doris.qe.OlapQueryCacheTest.setUp(OlapQueryCacheTest.java:226) ``` 2. ``` [ERROR] testSqlCacheKeyWithNestedViewForNereids Time elapsed: 1.962 s <<< FAILURE! java.lang.AssertionError: SELECT command denied to user 'testCluster:testUser'@'192.168.1.1' for table 'internal: testCluster:testDb: appevent' at org.apache.doris.qe.OlapQueryCacheTest.parseSqlByNereids(OlapQueryCacheTest.java:579) at org.apache.doris.qe.OlapQueryCacheTest.testSqlCacheKeyWithNestedViewForNereids(OlapQueryCacheTest.java:1338) ``` 3. ``` [ERROR] Tests run: 28, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 113.63 s <<< FAILURE! - in org.apache.doris.qe.OlapQueryCacheTest [ERROR] testCacheModeTable Time elapsed: 1.657 s <<< ERROR! java.lang.IllegalArgumentException: Value of type org.apache.doris.qe.QueryState incompatible with return type org.apache.doris.system.SystemInfoService of org.apache.doris.catalog.Env#getCurrentSystemInfo() at org.apache.doris.qe.OlapQueryCacheTest.setUp(OlapQueryCacheTest.java:156) ``` --- .../main/java/org/apache/doris/DorisFE.java | 3 + .../org/apache/doris/qe/SimpleScheduler.java | 2 +- .../apache/doris/qe/OlapQueryCacheTest.java | 197 ++++++------------ .../apache/doris/qe/SimpleSchedulerTest.java | 1 + 4 files changed, 69 insertions(+), 134 deletions(-) diff --git a/fe/fe-core/src/main/java/org/apache/doris/DorisFE.java b/fe/fe-core/src/main/java/org/apache/doris/DorisFE.java index f52a5252ffa7d0..d757ec1711d293 100755 --- a/fe/fe-core/src/main/java/org/apache/doris/DorisFE.java +++ b/fe/fe-core/src/main/java/org/apache/doris/DorisFE.java @@ -34,6 +34,7 @@ import org.apache.doris.journal.bdbje.BDBToolOptions; import org.apache.doris.persist.meta.MetaReader; import org.apache.doris.qe.QeService; +import org.apache.doris.qe.SimpleScheduler; import org.apache.doris.service.ExecuteEnv; import org.apache.doris.service.FeServer; import org.apache.doris.service.FrontendOptions; @@ -192,6 +193,8 @@ public static void start(String dorisHomeDir, String pidDir, String[] args, Star Env.getCurrentEnv().setHttpReady(true); } + SimpleScheduler.init(); + if (options.enableQeService) { QeService qeService = new QeService(Config.query_port, ExecuteEnv.getInstance().getScheduler()); qeService.start(); diff --git a/fe/fe-core/src/main/java/org/apache/doris/qe/SimpleScheduler.java b/fe/fe-core/src/main/java/org/apache/doris/qe/SimpleScheduler.java index b0c4d70ca7445b..ace88c8ac0da1c 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/qe/SimpleScheduler.java +++ b/fe/fe-core/src/main/java/org/apache/doris/qe/SimpleScheduler.java @@ -53,7 +53,7 @@ public class SimpleScheduler { private static Map> blacklistBackends = Maps.newConcurrentMap(); private static UpdateBlacklistThread updateBlacklistThread; - static { + public static void init() { updateBlacklistThread = new UpdateBlacklistThread(); updateBlacklistThread.start(); } diff --git a/fe/fe-core/src/test/java/org/apache/doris/qe/OlapQueryCacheTest.java b/fe/fe-core/src/test/java/org/apache/doris/qe/OlapQueryCacheTest.java index a0a3c9565212a7..62ef7d5ee0e528 100644 --- a/fe/fe-core/src/test/java/org/apache/doris/qe/OlapQueryCacheTest.java +++ b/fe/fe-core/src/test/java/org/apache/doris/qe/OlapQueryCacheTest.java @@ -17,6 +17,7 @@ package org.apache.doris.qe; +import org.apache.doris.analysis.AccessTestUtil; import org.apache.doris.analysis.Analyzer; import org.apache.doris.analysis.PartitionValue; import org.apache.doris.analysis.SqlParser; @@ -24,6 +25,7 @@ import org.apache.doris.analysis.StatementBase; import org.apache.doris.analysis.TupleDescriptor; import org.apache.doris.analysis.TupleId; +import org.apache.doris.analysis.UserIdentity; import org.apache.doris.catalog.Column; import org.apache.doris.catalog.Database; import org.apache.doris.catalog.Env; @@ -49,13 +51,10 @@ import org.apache.doris.common.telemetry.Telemetry; import org.apache.doris.common.util.SqlParserUtils; import org.apache.doris.common.util.Util; -import org.apache.doris.datasource.CatalogMgr; import org.apache.doris.datasource.InternalCatalog; import org.apache.doris.metric.MetricRepo; import org.apache.doris.mysql.MysqlChannel; import org.apache.doris.mysql.MysqlSerializer; -import org.apache.doris.mysql.privilege.AccessControllerManager; -import org.apache.doris.mysql.privilege.MockedAuth; import org.apache.doris.nereids.NereidsPlanner; import org.apache.doris.nereids.StatementContext; import org.apache.doris.nereids.glue.LogicalPlanAdapter; @@ -76,7 +75,6 @@ import org.apache.doris.qe.cache.SqlCache; import org.apache.doris.service.FrontendOptions; import org.apache.doris.system.Backend; -import org.apache.doris.system.SystemInfoService; import org.apache.doris.thrift.TStorageType; import org.apache.doris.thrift.TUniqueId; @@ -95,17 +93,15 @@ import java.io.StringReader; import java.net.UnknownHostException; +import java.nio.ByteBuffer; import java.util.ArrayList; import java.util.Collection; import java.util.List; -import java.util.function.Function; public class OlapQueryCacheTest { private static final Logger LOG = LogManager.getLogger(OlapQueryCacheTest.class); public static String clusterName = "testCluster"; - public static String dbName = "testDb"; public static String fullDbName = "testCluster:testDb"; - public static String tableName = "testTbl"; public static String userName = "testUser"; private static ConnectContext context; @@ -114,21 +110,12 @@ public class OlapQueryCacheTest { private Cache.HitRange hitRange; private Analyzer analyzer; private Database db; - - @Mocked - private AccessControllerManager accessManager; - @Mocked - private SystemInfoService service; - @Mocked private Env env; - @Mocked - private InternalCatalog catalog; - @Mocked private ConnectContext ctx; + private QueryState state; + private ConnectScheduler scheduler; @Mocked - MysqlChannel channel; - @Mocked - ConnectScheduler scheduler; + private MysqlChannel channel = null; @BeforeClass public static void start() { @@ -149,8 +136,15 @@ public static void start() { @Before public void setUp() throws Exception { - MockedAuth.mockedAccess(accessManager); - MockedAuth.mockedConnectContext(ctx, "root", "192.168.1.1"); + state = new QueryState(); + scheduler = new ConnectScheduler(10); + ctx = new ConnectContext(); + + SessionVariable sessionVariable = new SessionVariable(); + Deencapsulation.setField(sessionVariable, "beNumberForTest", 1); + MysqlSerializer serializer = MysqlSerializer.newInstance(); + env = AccessTestUtil.fetchAdminCatalog(); + new MockUp() { @Mock public boolean showHiddenColumns() { @@ -159,98 +153,28 @@ public boolean showHiddenColumns() { }; new MockUp() { @Mock - public SystemInfoService getCurrentSystemInfo() { - return service; - } - }; - db = new Database(1L, fullDbName); - - OlapTable tbl1 = createOrderTable(); - OlapTable tbl2 = createProfileTable(); - OlapTable tbl3 = createEventTable(); - db.createTable(tbl1); - db.createTable(tbl2); - db.createTable(tbl3); - - View view1 = createEventView1(); - View view2 = createEventView2(); - View view3 = createEventView3(); - View view4 = createEventNestedView(); - db.createTable(view1); - db.createTable(view2); - db.createTable(view3); - db.createTable(view4); - - new Expectations(catalog) { - { - catalog.getDbNullable(fullDbName); - minTimes = 0; - result = db; - - catalog.getDbNullable(dbName); - minTimes = 0; - result = db; - - catalog.getDbNullable(db.getId()); - minTimes = 0; - result = db; - - catalog.getDbNames(); - minTimes = 0; - result = Lists.newArrayList(fullDbName); + Env getCurrentEnv() { + return env; } }; - CatalogMgr dsMgr = new CatalogMgr(); - new Expectations(dsMgr) { - { - dsMgr.getCatalog((String) any); - minTimes = 0; - result = catalog; - - dsMgr.getCatalogOrException((String) any, (Function) any); - minTimes = 0; - result = catalog; - - dsMgr.getCatalogOrAnalysisException((String) any); - minTimes = 0; - result = catalog; - } - }; - - new Expectations(env) { - { - env.getAccessManager(); - minTimes = 0; - result = accessManager; - - env.getCurrentCatalog(); - minTimes = 0; - result = catalog; - - env.getInternalCatalog(); - minTimes = 0; - result = catalog; - - env.getCatalogMgr(); - minTimes = 0; - result = dsMgr; - } - }; FunctionSet fs = new FunctionSet(); fs.init(); Deencapsulation.setField(env, "functionSet", fs); - QueryState state = new QueryState(); - channel.reset(); - SessionVariable sessionVariable = new SessionVariable(); - Deencapsulation.setField(sessionVariable, "beNumberForTest", 1); + channel.reset(); new Expectations(channel) { { + channel.sendOnePacket((ByteBuffer) any); + minTimes = 0; + + channel.reset(); + minTimes = 0; + channel.getSerializer(); minTimes = 0; - result = MysqlSerializer.newInstance(); + result = serializer; } }; @@ -305,7 +229,7 @@ public SystemInfoService getCurrentSystemInfo() { ctx.getDatabase(); minTimes = 0; - result = dbName; + result = fullDbName; ctx.getSessionVariable(); minTimes = 0; @@ -324,16 +248,50 @@ public SystemInfoService getCurrentSystemInfo() { ctx.getCurrentCatalog(); minTimes = 0; - result = catalog; + result = env.getCurrentCatalog(); ctx.getCatalog(anyString); minTimes = 0; - result = catalog; + result = env.getCurrentCatalog(); + + ConnectContext.get(); + minTimes = 0; + result = ctx; + + ctx.getRemoteIP(); + minTimes = 0; + result = "192.168.1.1"; + + ctx.getCurrentUserIdentity(); + minTimes = 0; + UserIdentity userIdentity = new UserIdentity(userName, "192.168.1.1"); + userIdentity.setIsAnalyzed(); + result = userIdentity; } }; analyzer = new Analyzer(env, ctx); newRangeList = Lists.newArrayList(); + + db = ((InternalCatalog) env.getCurrentCatalog()).getDbNullable(fullDbName); + // table and view init use analyzer, should init after analyzer build + OlapTable tbl1 = createOrderTable(); + db.createTable(tbl1); + OlapTable tbl2 = createProfileTable(); + db.createTable(tbl2); + OlapTable tbl3 = createEventTable(); + db.createTable(tbl3); + + // build view meta inline sql and create view directly, the originStmt from inline sql + // should be analyzed by create view statement analyzer and then to sql + View view1 = createEventView1(); + db.createTable(view1); + View view2 = createEventView2(); + db.createTable(view2); + View view3 = createEventView3(); + db.createTable(view3); + View view4 = createEventNestedView(); + db.createTable(view4); } private OlapTable createOrderTable() { @@ -584,7 +542,6 @@ private StatementBase parseSql(String sql) { @Test public void testCacheNode() throws Exception { - Env.getCurrentSystemInfo(); CacheCoordinator cp = CacheCoordinator.getInstance(); cp.debugModel = true; Backend bd1 = new Backend(1, "", 1000); @@ -610,7 +567,6 @@ public void testCacheNode() throws Exception { @Test public void testCacheModeNone() throws Exception { - Env.getCurrentSystemInfo(); StatementBase parseStmt = parseSql("select @@version_comment limit 1"); List scanNodes = Lists.newArrayList(); CacheAnalyzer ca = new CacheAnalyzer(context, parseStmt, scanNodes); @@ -620,7 +576,6 @@ public void testCacheModeNone() throws Exception { @Test public void testCacheModeTable() throws Exception { - Env.getCurrentSystemInfo(); StatementBase parseStmt = parseSql( "SELECT country, COUNT(userid) FROM userprofile GROUP BY country" ); @@ -634,7 +589,6 @@ public void testCacheModeTable() throws Exception { @Test public void testWithinMinTime() throws Exception { - Env.getCurrentSystemInfo(); StatementBase parseStmt = parseSql( "SELECT country, COUNT(userid) FROM userprofile GROUP BY country" ); @@ -648,7 +602,6 @@ public void testWithinMinTime() throws Exception { @Test public void testPartitionModel() throws Exception { - Env.getCurrentSystemInfo(); StatementBase parseStmt = parseSql( "SELECT eventdate, COUNT(DISTINCT userid) FROM appevent WHERE eventdate>=\"2020-01-12\" and " + "eventdate<=\"2020-01-15\" GROUP BY eventdate" @@ -664,7 +617,6 @@ public void testPartitionModel() throws Exception { @Test public void testParseByte() throws Exception { - Env.getCurrentSystemInfo(); RowBatchBuilder sb = new RowBatchBuilder(CacheMode.Partition); byte[] buffer = new byte[]{10, 50, 48, 50, 48, 45, 48, 51, 45, 49, 48, 1, 51, 2, 67, 78}; PartitionRange.PartitionKeyType key1 = sb.getKeyFromRow(buffer, 0, Type.DATE); @@ -677,7 +629,6 @@ public void testParseByte() throws Exception { @Test public void testPartitionIntTypeSql() throws Exception { - Env.getCurrentSystemInfo(); StatementBase parseStmt = parseSql( "SELECT `date`, COUNT(id) FROM `order` WHERE `date`>=20200112 and `date`<=20200115 GROUP BY date" ); @@ -721,7 +672,6 @@ public void testPartitionIntTypeSql() throws Exception { @Test public void testSimpleCacheSql() throws Exception { - Env.getCurrentSystemInfo(); StatementBase parseStmt = parseSql( "SELECT eventdate, COUNT(userid) FROM appevent WHERE eventdate>=\"2020-01-12\" and " + "eventdate<=\"2020-01-15\" GROUP BY eventdate" @@ -764,7 +714,6 @@ public void testSimpleCacheSql() throws Exception { @Test public void testHitSqlCache() throws Exception { - Env.getCurrentSystemInfo(); StatementBase parseStmt = parseSql( "SELECT eventdate, COUNT(userid) FROM appevent WHERE eventdate>=\"2020-01-12\" and " + "eventdate<=\"2020-01-14\" GROUP BY eventdate" @@ -779,7 +728,6 @@ public void testHitSqlCache() throws Exception { @Test public void testHitPartPartition() throws Exception { - Env.getCurrentSystemInfo(); StatementBase parseStmt = parseSql( "SELECT eventdate, COUNT(userid) FROM appevent WHERE eventdate>=\"2020-01-12\" and " + "eventdate<=\"2020-01-14\" GROUP BY eventdate" @@ -825,7 +773,6 @@ public void testHitPartPartition() throws Exception { @Test public void testNoUpdatePartition() throws Exception { - Env.getCurrentSystemInfo(); StatementBase parseStmt = parseSql( "SELECT eventdate, COUNT(userid) FROM appevent WHERE eventdate>=\"2020-01-12\" and " + "eventdate<=\"2020-01-14\" GROUP BY eventdate" @@ -867,7 +814,6 @@ public void testNoUpdatePartition() throws Exception { @Test public void testUpdatePartition() throws Exception { - Env.getCurrentSystemInfo(); StatementBase parseStmt = parseSql( "SELECT eventdate, COUNT(userid) FROM appevent WHERE eventdate>=\"2020-01-12\" and " + "eventdate<=\"2020-01-15\" GROUP BY eventdate" @@ -916,7 +862,6 @@ public void testUpdatePartition() throws Exception { @Test public void testRewriteMultiPredicate1() throws Exception { - Env.getCurrentSystemInfo(); StatementBase parseStmt = parseSql( "SELECT eventdate, COUNT(userid) FROM appevent WHERE eventdate>\"2020-01-11\" and " + "eventdate<\"2020-01-16\"" @@ -960,7 +905,6 @@ public void testRewriteMultiPredicate1() throws Exception { @Test public void testRewriteJoin() throws Exception { - Env.getCurrentSystemInfo(); StatementBase parseStmt = parseSql( "SELECT appevent.eventdate, country, COUNT(appevent.userid) FROM appevent" + " INNER JOIN userprofile ON appevent.userid = userprofile.userid" @@ -1005,7 +949,6 @@ public void testRewriteJoin() throws Exception { @Test public void testSubSelect() throws Exception { - Env.getCurrentSystemInfo(); StatementBase parseStmt = parseSql( "SELECT eventdate, sum(pv) FROM (SELECT eventdate, COUNT(userid) AS pv FROM appevent WHERE " + "eventdate>\"2020-01-11\" AND eventdate<\"2020-01-16\"" @@ -1058,7 +1001,6 @@ public void testSubSelect() throws Exception { @Test public void testNotHitPartition() throws Exception { - Env.getCurrentSystemInfo(); StatementBase parseStmt = parseSql( "SELECT eventdate, COUNT(userid) FROM appevent WHERE eventdate>=\"2020-01-12\" and " + "eventdate<=\"2020-01-14\" GROUP BY eventdate" @@ -1087,7 +1029,6 @@ public void testNotHitPartition() throws Exception { @Test public void testSqlCacheKey() { - Env.getCurrentSystemInfo(); StatementBase parseStmt = parseSql( "SELECT eventdate, COUNT(userid) FROM appevent WHERE eventdate>=\"2020-01-12\" and " + "eventdate<=\"2020-01-14\" GROUP BY eventdate" @@ -1109,7 +1050,6 @@ public void testSqlCacheKey() { @Test public void testSqlCacheKeyWithChineseChar() { - Env.getCurrentSystemInfo(); StatementBase parseStmt = parseSql( "SELECT eventdate, COUNT(userid) FROM appevent WHERE eventdate>=\"2020-01-12\" and " + "eventdate<=\"2020-01-14\" and city=\"北京\" GROUP BY eventdate" @@ -1129,7 +1069,6 @@ public void testSqlCacheKeyWithChineseChar() { @Test public void testSqlCacheKeyWithView() { - Env.getCurrentSystemInfo(); StatementBase parseStmt = parseSql("SELECT * from testDb.view1"); ArrayList selectedPartitionIds = Lists.newArrayList(20200112L, 20200113L, 20200114L); @@ -1148,7 +1087,6 @@ public void testSqlCacheKeyWithView() { @Test public void testSqlCacheKeyWithViewForNereids() { - Env.getCurrentSystemInfo(); StatementBase parseStmt = parseSqlByNereids("SELECT * from testDb.view1"); ArrayList selectedPartitionIds = Lists.newArrayList(20200112L, 20200113L, 20200114L); @@ -1167,7 +1105,6 @@ public void testSqlCacheKeyWithViewForNereids() { @Test public void testSqlCacheKeyWithSubSelectView() { - Env.getCurrentSystemInfo(); StatementBase parseStmt = parseSql( "select origin.eventdate as eventdate, origin.userid as userid\n" + "from (\n" @@ -1195,7 +1132,6 @@ public void testSqlCacheKeyWithSubSelectView() { @Test public void testSqlCacheKeyWithSubSelectViewForNereids() { - Env.getCurrentSystemInfo(); StatementBase parseStmt = parseSqlByNereids( "select origin.eventdate as eventdate, origin.userid as userid\n" + "from (\n" @@ -1224,7 +1160,6 @@ public void testSqlCacheKeyWithSubSelectViewForNereids() { @Test public void testPartitionCacheKeyWithView() { - Env.getCurrentSystemInfo(); StatementBase parseStmt = parseSql("SELECT * from testDb.view3"); ArrayList selectedPartitionIds = Lists.newArrayList(20200112L, 20200113L, 20200114L, 20200115L); @@ -1250,7 +1185,6 @@ public void testPartitionCacheKeyWithView() { @Test public void testPartitionCacheKeyWithSubSelectView() { - Env.getCurrentSystemInfo(); StatementBase parseStmt = parseSql( "select origin.eventdate as eventdate, origin.cnt as cnt\n" + "from (\n" @@ -1274,7 +1208,8 @@ public void testPartitionCacheKeyWithSubSelectView() { Assert.assertEquals(cache.getSqlWithViewStmt(), "SELECT `origin`.`eventdate` AS `eventdate`, `origin`.`cnt` AS `cnt` FROM (SELECT " + " `eventdate` AS `eventdate`, count(`userid`) AS `cnt` FROM " - + "`testDb`.`view2` GROUP BY `eventdate`) origin|select eventdate, userid FROM appevent"); + + "`testCluster:testDb`.`view2` GROUP BY `eventdate`) origin|select eventdate, " + + "userid FROM appevent"); } catch (Exception e) { LOG.warn("ex={}", e); Assert.fail(e.getMessage()); @@ -1283,7 +1218,6 @@ public void testPartitionCacheKeyWithSubSelectView() { @Test public void testSqlCacheKeyWithNestedView() { - Env.getCurrentSystemInfo(); StatementBase parseStmt = parseSql("SELECT * from testDb.view4"); ArrayList selectedPartitionIds = Lists.newArrayList(20200112L, 20200113L, 20200114L); @@ -1303,7 +1237,6 @@ public void testSqlCacheKeyWithNestedView() { @Test public void testSqlCacheKeyWithNestedViewForNereids() { - Env.getCurrentSystemInfo(); StatementBase parseStmt = parseSqlByNereids("SELECT * from testDb.view4"); ArrayList selectedPartitionIds = Lists.newArrayList(20200112L, 20200113L, 20200114L); @@ -1323,7 +1256,6 @@ public void testSqlCacheKeyWithNestedViewForNereids() { @Test public void testCacheLocalViewMultiOperand() { - Env.getCurrentSystemInfo(); StatementBase parseStmt = parseSql( "SELECT COUNT(userid)\n" + "FROM (\n" @@ -1347,7 +1279,6 @@ public void testCacheLocalViewMultiOperand() { @Test // test that some partitions do not exist in the table public void testNotExistPartitionSql() { - Env.getCurrentSystemInfo(); StatementBase parseStmt = parseSql( "SELECT `date`, COUNT(id) FROM `order` WHERE `date`>=20200110 and `date`<=20200115 GROUP BY date" ); diff --git a/fe/fe-core/src/test/java/org/apache/doris/qe/SimpleSchedulerTest.java b/fe/fe-core/src/test/java/org/apache/doris/qe/SimpleSchedulerTest.java index 63b907006dc276..6ba2d2715663dd 100644 --- a/fe/fe-core/src/test/java/org/apache/doris/qe/SimpleSchedulerTest.java +++ b/fe/fe-core/src/test/java/org/apache/doris/qe/SimpleSchedulerTest.java @@ -46,6 +46,7 @@ public class SimpleSchedulerTest { @BeforeClass public static void setUp() { + SimpleScheduler.init(); FeConstants.heartbeat_interval_second = 2; be1 = new Backend(1000L, "192.168.100.0", 9050); be2 = new Backend(1001L, "192.168.100.1", 9050); From 43e371be68853d99197b819e225428bd12b233a3 Mon Sep 17 00:00:00 2001 From: Luwei <814383175@qq.com> Date: Thu, 23 Nov 2023 11:36:54 +0800 Subject: [PATCH 06/33] [regression test](schema change) add some schema change regression cases (#27112) (#27418) --- .../data/schema_change_p0/all_types.csv | 2500 +++++++++++++++++ .../test_schema_change_agg.groovy | 195 ++ .../test_schema_change_cold_heat.groovy | 271 ++ .../test_schema_change_duplicate.groovy | 215 ++ .../test_schema_change_unique.groovy | 215 ++ .../test_schema_change_unique_mow.groovy | 216 ++ 6 files changed, 3612 insertions(+) create mode 100644 regression-test/data/schema_change_p0/all_types.csv create mode 100644 regression-test/suites/schema_change_p0/test_schema_change_agg.groovy create mode 100644 regression-test/suites/schema_change_p0/test_schema_change_cold_heat.groovy create mode 100644 regression-test/suites/schema_change_p0/test_schema_change_duplicate.groovy create mode 100644 regression-test/suites/schema_change_p0/test_schema_change_unique.groovy create mode 100644 regression-test/suites/schema_change_p0/test_schema_change_unique_mow.groovy diff --git a/regression-test/data/schema_change_p0/all_types.csv b/regression-test/data/schema_change_p0/all_types.csv new file mode 100644 index 00000000000000..57ea871e4b7a57 --- /dev/null +++ b/regression-test/data/schema_change_p0/all_types.csv @@ -0,0 +1,2500 @@ +0,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +3,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +4,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +5,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +6,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +7,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +8,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +9,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +10,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +11,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +12,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +13,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +14,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +15,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +16,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +17,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +18,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +19,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +20,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +21,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +22,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +23,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +24,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +25,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +26,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +27,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +28,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +29,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +30,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +31,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +32,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +33,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +34,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +35,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +36,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +37,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +38,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +39,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +40,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +41,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +42,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +43,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +44,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +45,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +46,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +47,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +48,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +49,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +50,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +51,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +52,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +53,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +54,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +55,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +56,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +57,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +58,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +59,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +60,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +61,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +62,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +63,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +64,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +65,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +66,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +67,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +68,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +69,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +70,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +71,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +72,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +73,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +74,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +75,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +76,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +77,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +78,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +79,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +80,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +81,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +82,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +83,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +84,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +85,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +86,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +87,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +88,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +89,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +90,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +91,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +92,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +93,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +94,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +95,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +96,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +97,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +98,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +99,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +100,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +101,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +102,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +103,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +104,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +105,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +106,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +107,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +108,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +109,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +110,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +111,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +112,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +113,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +114,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +115,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +116,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +117,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +118,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +119,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +120,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +121,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +122,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +123,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +124,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +125,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +126,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +127,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +128,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +129,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +130,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +131,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +132,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +133,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +134,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +135,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +136,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +137,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +138,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +139,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +140,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +141,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +142,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +143,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +144,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +145,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +146,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +147,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +148,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +149,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +150,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +151,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +152,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +153,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +154,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +155,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +156,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +157,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +158,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +159,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +160,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +161,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +162,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +163,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +164,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +165,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +166,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +167,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +168,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +169,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +170,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +171,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +172,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +173,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +174,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +175,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +176,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +177,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +178,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +179,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +180,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +181,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +182,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +183,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +184,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +185,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +186,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +187,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +188,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +189,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +190,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +191,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +192,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +193,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +194,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +195,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +196,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +197,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +198,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +199,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +200,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +201,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +202,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +203,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +204,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +205,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +206,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +207,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +208,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +209,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +210,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +211,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +212,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +213,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +214,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +215,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +216,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +217,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +218,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +219,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +220,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +221,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +222,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +223,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +224,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +225,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +226,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +227,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +228,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +229,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +230,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +231,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +232,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +233,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +234,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +235,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +236,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +237,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +238,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +239,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +240,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +241,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +242,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +243,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +244,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +245,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +246,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +247,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +248,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +249,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +250,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +251,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +252,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +253,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +254,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +255,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +256,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +257,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +258,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +259,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +260,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +261,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +262,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +263,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +264,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +265,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +266,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +267,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +268,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +269,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +270,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +271,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +272,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +273,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +274,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +275,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +276,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +277,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +278,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +279,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +280,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +281,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +282,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +283,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +284,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +285,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +286,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +287,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +288,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +289,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +290,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +291,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +292,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +293,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +294,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +295,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +296,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +297,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +298,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +299,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +300,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +301,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +302,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +303,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +304,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +305,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +306,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +307,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +308,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +309,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +310,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +311,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +312,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +313,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +314,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +315,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +316,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +317,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +318,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +319,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +320,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +321,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +322,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +323,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +324,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +325,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +326,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +327,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +328,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +329,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +330,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +331,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +332,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +333,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +334,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +335,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +336,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +337,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +338,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +339,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +340,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +341,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +342,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +343,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +344,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +345,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +346,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +347,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +348,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +349,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +350,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +351,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +352,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +353,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +354,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +355,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +356,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +357,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +358,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +359,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +360,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +361,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +362,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +363,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +364,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +365,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +366,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +367,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +368,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +369,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +370,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +371,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +372,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +373,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +374,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +375,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +376,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +377,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +378,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +379,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +380,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +381,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +382,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +383,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +384,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +385,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +386,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +387,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +388,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +389,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +390,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +391,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +392,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +393,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +394,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +395,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +396,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +397,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +398,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +399,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +400,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +401,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +402,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +403,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +404,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +405,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +406,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +407,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +408,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +409,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +410,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +411,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +412,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +413,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +414,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +415,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +416,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +417,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +418,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +419,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +420,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +421,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +422,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +423,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +424,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +425,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +426,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +427,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +428,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +429,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +430,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +431,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +432,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +433,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +434,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +435,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +436,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +437,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +438,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +439,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +440,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +441,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +442,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +443,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +444,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +445,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +446,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +447,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +448,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +449,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +450,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +451,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +452,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +453,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +454,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +455,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +456,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +457,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +458,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +459,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +460,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +461,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +462,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +463,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +464,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +465,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +466,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +467,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +468,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +469,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +470,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +471,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +472,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +473,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +474,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +475,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +476,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +477,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +478,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +479,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +480,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +481,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +482,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +483,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +484,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +485,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +486,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +487,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +488,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +489,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +490,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +491,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +492,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +493,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +494,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +495,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +496,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +497,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +498,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +499,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +500,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +501,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +502,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +503,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +504,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +505,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +506,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +507,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +508,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +509,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +510,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +511,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +512,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +513,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +514,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +515,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +516,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +517,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +518,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +519,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +520,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +521,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +522,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +523,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +524,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +525,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +526,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +527,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +528,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +529,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +530,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +531,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +532,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +533,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +534,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +535,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +536,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +537,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +538,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +539,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +540,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +541,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +542,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +543,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +544,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +545,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +546,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +547,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +548,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +549,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +550,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +551,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +552,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +553,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +554,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +555,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +556,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +557,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +558,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +559,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +560,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +561,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +562,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +563,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +564,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +565,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +566,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +567,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +568,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +569,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +570,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +571,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +572,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +573,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +574,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +575,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +576,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +577,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +578,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +579,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +580,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +581,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +582,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +583,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +584,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +585,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +586,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +587,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +588,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +589,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +590,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +591,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +592,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +593,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +594,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +595,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +596,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +597,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +598,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +599,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +600,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +601,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +602,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +603,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +604,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +605,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +606,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +607,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +608,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +609,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +610,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +611,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +612,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +613,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +614,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +615,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +616,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +617,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +618,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +619,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +620,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +621,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +622,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +623,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +624,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +625,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +626,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +627,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +628,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +629,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +630,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +631,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +632,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +633,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +634,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +635,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +636,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +637,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +638,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +639,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +640,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +641,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +642,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +643,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +644,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +645,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +646,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +647,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +648,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +649,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +650,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +651,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +652,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +653,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +654,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +655,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +656,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +657,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +658,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +659,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +660,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +661,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +662,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +663,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +664,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +665,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +666,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +667,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +668,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +669,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +670,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +671,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +672,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +673,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +674,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +675,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +676,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +677,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +678,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +679,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +680,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +681,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +682,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +683,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +684,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +685,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +686,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +687,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +688,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +689,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +690,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +691,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +692,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +693,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +694,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +695,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +696,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +697,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +698,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +699,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +700,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +701,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +702,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +703,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +704,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +705,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +706,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +707,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +708,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +709,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +710,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +711,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +712,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +713,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +714,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +715,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +716,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +717,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +718,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +719,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +720,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +721,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +722,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +723,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +724,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +725,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +726,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +727,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +728,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +729,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +730,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +731,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +732,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +733,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +734,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +735,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +736,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +737,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +738,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +739,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +740,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +741,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +742,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +743,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +744,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +745,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +746,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +747,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +748,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +749,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +750,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +751,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +752,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +753,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +754,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +755,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +756,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +757,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +758,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +759,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +760,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +761,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +762,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +763,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +764,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +765,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +766,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +767,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +768,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +769,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +770,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +771,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +772,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +773,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +774,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +775,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +776,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +777,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +778,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +779,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +780,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +781,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +782,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +783,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +784,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +785,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +786,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +787,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +788,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +789,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +790,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +791,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +792,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +793,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +794,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +795,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +796,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +797,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +798,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +799,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +800,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +801,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +802,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +803,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +804,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +805,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +806,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +807,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +808,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +809,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +810,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +811,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +812,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +813,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +814,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +815,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +816,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +817,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +818,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +819,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +820,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +821,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +822,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +823,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +824,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +825,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +826,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +827,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +828,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +829,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +830,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +831,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +832,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +833,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +834,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +835,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +836,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +837,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +838,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +839,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +840,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +841,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +842,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +843,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +844,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +845,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +846,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +847,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +848,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +849,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +850,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +851,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +852,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +853,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +854,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +855,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +856,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +857,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +858,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +859,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +860,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +861,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +862,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +863,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +864,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +865,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +866,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +867,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +868,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +869,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +870,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +871,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +872,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +873,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +874,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +875,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +876,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +877,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +878,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +879,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +880,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +881,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +882,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +883,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +884,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +885,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +886,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +887,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +888,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +889,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +890,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +891,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +892,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +893,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +894,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +895,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +896,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +897,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +898,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +899,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +900,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +901,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +902,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +903,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +904,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +905,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +906,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +907,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +908,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +909,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +910,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +911,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +912,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +913,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +914,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +915,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +916,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +917,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +918,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +919,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +920,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +921,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +922,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +923,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +924,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +925,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +926,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +927,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +928,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +929,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +930,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +931,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +932,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +933,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +934,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +935,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +936,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +937,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +938,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +939,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +940,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +941,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +942,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +943,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +944,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +945,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +946,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +947,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +948,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +949,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +950,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +951,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +952,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +953,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +954,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +955,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +956,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +957,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +958,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +959,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +960,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +961,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +962,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +963,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +964,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +965,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +966,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +967,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +968,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +969,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +970,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +971,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +972,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +973,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +974,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +975,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +976,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +977,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +978,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +979,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +980,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +981,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +982,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +983,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +984,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +985,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +986,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +987,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +988,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +989,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +990,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +991,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +992,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +993,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +994,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +995,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +996,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +997,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +998,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +999,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1000,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1001,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1002,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1003,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1004,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1005,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1006,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1007,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1008,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1009,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1010,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1011,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1012,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1013,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1014,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1015,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1016,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1017,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1018,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1019,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1020,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1021,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1022,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1023,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1024,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1025,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1026,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1027,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1028,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1029,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1030,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1031,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1032,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1033,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1034,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1035,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1036,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1037,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1038,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1039,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1040,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1041,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1042,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1043,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1044,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1045,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1046,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1047,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1048,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1049,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1050,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1051,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1052,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1053,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1054,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1055,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1056,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1057,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1058,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1059,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1060,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1061,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1062,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1063,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1064,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1065,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1066,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1067,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1068,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1069,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1070,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1071,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1072,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1073,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1074,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1075,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1076,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1077,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1078,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1079,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1080,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1081,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1082,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1083,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1084,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1085,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1086,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1087,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1088,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1089,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1090,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1091,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1092,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1093,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1094,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1095,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1096,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1097,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1098,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1099,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1100,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1101,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1102,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1103,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1104,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1105,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1106,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1107,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1108,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1109,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1110,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1111,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1112,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1113,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1114,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1115,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1116,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1117,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1118,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1119,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1120,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1121,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1122,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1123,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1124,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1125,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1126,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1127,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1128,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1129,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1130,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1131,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1132,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1133,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1134,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1135,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1136,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1137,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1138,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1139,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1140,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1141,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1142,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1143,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1144,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1145,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1146,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1147,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1148,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1149,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1150,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1151,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1152,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1153,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1154,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1155,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1156,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1157,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1158,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1159,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1160,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1161,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1162,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1163,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1164,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1165,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1166,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1167,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1168,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1169,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1170,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1171,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1172,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1173,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1174,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1175,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1176,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1177,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1178,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1179,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1180,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1181,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1182,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1183,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1184,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1185,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1186,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1187,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1188,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1189,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1190,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1191,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1192,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1193,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1194,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1195,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1196,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1197,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1198,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1199,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1200,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1201,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1202,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1203,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1204,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1205,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1206,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1207,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1208,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1209,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1210,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1211,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1212,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1213,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1214,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1215,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1216,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1217,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1218,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1219,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1220,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1221,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1222,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1223,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1224,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1225,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1226,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1227,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1228,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1229,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1230,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1231,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1232,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1233,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1234,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1235,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1236,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1237,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1238,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1239,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1240,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1241,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1242,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1243,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1244,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1245,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1246,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1247,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1248,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1249,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1250,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1251,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1252,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1253,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1254,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1255,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1256,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1257,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1258,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1259,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1260,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1261,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1262,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1263,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1264,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1265,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1266,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1267,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1268,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1269,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1270,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1271,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1272,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1273,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1274,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1275,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1276,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1277,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1278,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1279,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1280,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1281,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1282,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1283,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1284,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1285,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1286,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1287,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1288,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1289,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1290,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1291,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1292,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1293,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1294,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1295,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1296,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1297,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1298,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1299,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1300,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1301,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1302,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1303,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1304,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1305,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1306,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1307,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1308,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1309,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1310,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1311,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1312,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1313,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1314,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1315,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1316,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1317,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1318,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1319,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1320,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1321,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1322,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1323,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1324,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1325,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1326,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1327,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1328,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1329,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1330,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1331,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1332,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1333,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1334,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1335,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1336,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1337,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1338,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1339,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1340,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1341,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1342,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1343,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1344,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1345,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1346,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1347,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1348,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1349,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1350,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1351,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1352,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1353,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1354,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1355,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1356,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1357,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1358,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1359,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1360,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1361,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1362,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1363,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1364,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1365,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1366,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1367,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1368,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1369,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1370,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1371,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1372,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1373,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1374,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1375,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1376,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1377,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1378,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1379,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1380,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1381,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1382,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1383,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1384,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1385,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1386,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1387,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1388,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1389,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1390,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1391,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1392,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1393,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1394,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1395,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1396,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1397,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1398,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1399,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1400,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1401,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1402,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1403,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1404,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1405,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1406,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1407,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1408,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1409,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1410,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1411,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1412,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1413,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1414,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1415,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1416,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1417,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1418,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1419,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1420,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1421,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1422,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1423,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1424,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1425,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1426,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1427,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1428,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1429,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1430,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1431,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1432,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1433,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1434,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1435,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1436,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1437,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1438,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1439,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1440,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1441,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1442,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1443,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1444,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1445,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1446,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1447,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1448,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1449,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1450,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1451,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1452,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1453,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1454,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1455,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1456,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1457,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1458,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1459,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1460,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1461,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1462,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1463,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1464,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1465,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1466,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1467,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1468,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1469,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1470,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1471,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1472,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1473,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1474,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1475,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1476,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1477,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1478,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1479,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1480,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1481,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1482,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1483,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1484,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1485,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1486,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1487,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1488,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1489,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1490,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1491,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1492,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1493,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1494,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1495,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1496,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1497,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1498,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1499,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1500,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1501,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1502,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1503,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1504,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1505,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1506,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1507,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1508,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1509,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1510,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1511,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1512,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1513,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1514,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1515,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1516,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1517,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1518,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1519,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1520,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1521,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1522,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1523,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1524,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1525,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1526,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1527,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1528,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1529,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1530,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1531,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1532,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1533,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1534,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1535,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1536,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1537,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1538,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1539,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1540,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1541,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1542,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1543,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1544,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1545,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1546,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1547,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1548,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1549,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1550,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1551,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1552,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1553,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1554,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1555,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1556,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1557,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1558,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1559,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1560,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1561,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1562,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1563,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1564,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1565,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1566,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1567,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1568,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1569,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1570,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1571,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1572,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1573,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1574,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1575,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1576,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1577,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1578,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1579,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1580,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1581,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1582,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1583,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1584,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1585,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1586,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1587,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1588,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1589,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1590,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1591,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1592,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1593,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1594,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1595,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1596,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1597,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1598,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1599,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1600,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1601,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1602,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1603,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1604,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1605,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1606,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1607,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1608,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1609,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1610,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1611,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1612,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1613,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1614,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1615,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1616,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1617,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1618,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1619,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1620,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1621,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1622,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1623,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1624,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1625,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1626,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1627,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1628,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1629,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1630,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1631,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1632,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1633,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1634,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1635,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1636,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1637,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1638,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1639,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1640,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1641,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1642,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1643,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1644,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1645,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1646,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1647,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1648,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1649,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1650,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1651,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1652,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1653,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1654,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1655,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1656,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1657,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1658,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1659,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1660,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1661,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1662,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1663,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1664,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1665,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1666,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1667,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1668,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1669,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1670,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1671,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1672,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1673,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1674,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1675,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1676,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1677,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1678,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1679,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1680,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1681,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1682,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1683,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1684,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1685,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1686,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1687,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1688,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1689,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1690,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1691,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1692,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1693,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1694,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1695,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1696,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1697,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1698,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1699,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1700,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1701,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1702,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1703,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1704,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1705,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1706,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1707,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1708,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1709,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1710,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1711,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1712,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1713,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1714,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1715,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1716,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1717,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1718,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1719,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1720,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1721,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1722,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1723,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1724,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1725,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1726,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1727,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1728,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1729,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1730,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1731,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1732,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1733,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1734,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1735,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1736,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1737,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1738,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1739,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1740,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1741,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1742,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1743,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1744,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1745,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1746,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1747,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1748,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1749,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1750,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1751,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1752,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1753,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1754,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1755,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1756,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1757,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1758,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1759,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1760,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1761,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1762,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1763,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1764,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1765,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1766,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1767,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1768,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1769,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1770,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1771,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1772,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1773,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1774,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1775,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1776,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1777,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1778,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1779,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1780,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1781,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1782,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1783,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1784,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1785,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1786,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1787,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1788,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1789,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1790,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1791,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1792,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1793,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1794,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1795,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1796,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1797,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1798,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1799,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1800,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1801,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1802,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1803,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1804,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1805,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1806,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1807,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1808,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1809,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1810,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1811,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1812,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1813,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1814,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1815,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1816,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1817,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1818,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1819,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1820,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1821,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1822,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1823,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1824,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1825,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1826,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1827,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1828,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1829,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1830,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1831,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1832,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1833,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1834,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1835,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1836,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1837,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1838,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1839,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1840,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1841,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1842,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1843,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1844,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1845,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1846,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1847,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1848,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1849,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1850,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1851,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1852,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1853,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1854,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1855,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1856,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1857,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1858,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1859,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1860,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1861,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1862,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1863,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1864,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1865,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1866,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1867,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1868,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1869,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1870,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1871,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1872,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1873,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1874,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1875,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1876,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1877,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1878,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1879,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1880,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1881,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1882,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1883,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1884,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1885,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1886,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1887,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1888,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1889,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1890,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1891,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1892,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1893,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1894,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1895,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1896,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1897,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1898,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1899,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1900,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1901,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1902,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1903,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1904,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1905,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1906,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1907,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1908,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1909,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1910,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1911,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1912,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1913,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1914,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1915,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1916,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1917,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1918,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1919,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1920,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1921,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1922,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1923,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1924,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1925,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1926,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1927,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1928,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1929,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1930,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1931,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1932,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1933,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1934,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1935,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1936,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1937,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1938,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1939,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1940,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1941,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1942,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1943,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1944,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1945,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1946,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1947,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1948,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1949,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1950,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1951,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1952,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1953,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1954,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1955,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1956,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1957,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1958,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1959,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1960,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1961,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1962,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1963,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1964,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1965,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1966,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1967,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1968,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1969,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1970,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1971,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1972,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1973,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1974,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1975,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1976,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1977,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1978,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1979,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1980,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1981,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1982,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1983,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1984,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1985,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1986,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1987,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1988,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1989,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1990,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1991,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1992,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1993,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1994,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1995,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1996,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1997,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1998,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +1999,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2000,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2001,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2002,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2003,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2004,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2005,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2006,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2007,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2008,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2009,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2010,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2011,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2012,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2013,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2014,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2015,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2016,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2017,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2018,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2019,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2020,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2021,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2022,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2023,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2024,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2025,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2026,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2027,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2028,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2029,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2030,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2031,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2032,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2033,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2034,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2035,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2036,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2037,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2038,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2039,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2040,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2041,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2042,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2043,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2044,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2045,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2046,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2047,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2048,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2049,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2050,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2051,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2052,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2053,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2054,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2055,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2056,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2057,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2058,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2059,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2060,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2061,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2062,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2063,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2064,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2065,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2066,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2067,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2068,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2069,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2070,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2071,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2072,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2073,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2074,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2075,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2076,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2077,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2078,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2079,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2080,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2081,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2082,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2083,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2084,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2085,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2086,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2087,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2088,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2089,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2090,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2091,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2092,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2093,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2094,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2095,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2096,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2097,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2098,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2099,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2100,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2101,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2102,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2103,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2104,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2105,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2106,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2107,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2108,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2109,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2110,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2111,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2112,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2113,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2114,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2115,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2116,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2117,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2118,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2119,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2120,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2121,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2122,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2123,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2124,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2125,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2126,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2127,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2128,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2129,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2130,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2131,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2132,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2133,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2134,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2135,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2136,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2137,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2138,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2139,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2140,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2141,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2142,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2143,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2144,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2145,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2146,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2147,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2148,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2149,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2150,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2151,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2152,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2153,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2154,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2155,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2156,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2157,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2158,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2159,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2160,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2161,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2162,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2163,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2164,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2165,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2166,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2167,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2168,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2169,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2170,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2171,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2172,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2173,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2174,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2175,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2176,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2177,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2178,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2179,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2180,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2181,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2182,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2183,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2184,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2185,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2186,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2187,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2188,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2189,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2190,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2191,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2192,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2193,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2194,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2195,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2196,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2197,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2198,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2199,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2200,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2201,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2202,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2203,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2204,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2205,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2206,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2207,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2208,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2209,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2210,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2211,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2212,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2213,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2214,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2215,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2216,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2217,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2218,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2219,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2220,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2221,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2222,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2223,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2224,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2225,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2226,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2227,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2228,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2229,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2230,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2231,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2232,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2233,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2234,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2235,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2236,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2237,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2238,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2239,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2240,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2241,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2242,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2243,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2244,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2245,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2246,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2247,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2248,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2249,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2250,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2251,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2252,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2253,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2254,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2255,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2256,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2257,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2258,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2259,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2260,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2261,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2262,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2263,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2264,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2265,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2266,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2267,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2268,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2269,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2270,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2271,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2272,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2273,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2274,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2275,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2276,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2277,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2278,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2279,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2280,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2281,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2282,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2283,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2284,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2285,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2286,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2287,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2288,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2289,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2290,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2291,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2292,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2293,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2294,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2295,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2296,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2297,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2298,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2299,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2300,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2301,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2302,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2303,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2304,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2305,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2306,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2307,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2308,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2309,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2310,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2311,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2312,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2313,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2314,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2315,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2316,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2317,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2318,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2319,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2320,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2321,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2322,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2323,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2324,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2325,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2326,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2327,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2328,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2329,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2330,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2331,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2332,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2333,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2334,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2335,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2336,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2337,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2338,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2339,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2340,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2341,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2342,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2343,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2344,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2345,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2346,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2347,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2348,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2349,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2350,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2351,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2352,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2353,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2354,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2355,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2356,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2357,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2358,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2359,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2360,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2361,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2362,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2363,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2364,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2365,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2366,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2367,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2368,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2369,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2370,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2371,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2372,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2373,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2374,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2375,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2376,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2377,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2378,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2379,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2380,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2381,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2382,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2383,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2384,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2385,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2386,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2387,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2388,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2389,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2390,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2391,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2392,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2393,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2394,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2395,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2396,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2397,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2398,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2399,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2400,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2401,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2402,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2403,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2404,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2405,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2406,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2407,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2408,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2409,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2410,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2411,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2412,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2413,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2414,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2415,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2416,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2417,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2418,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2419,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2420,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2421,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2422,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2423,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2424,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2425,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2426,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2427,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2428,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2429,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2430,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2431,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2432,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2433,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2434,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2435,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2436,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2437,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2438,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2439,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2440,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2441,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2442,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2443,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2444,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2445,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2446,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2447,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2448,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2449,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2450,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2451,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2452,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2453,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2454,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2455,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2456,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2457,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2458,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2459,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2460,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2461,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2462,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2463,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2464,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2465,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2466,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2467,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2468,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2469,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2470,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2471,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2472,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2473,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2474,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2475,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2476,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2477,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2478,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2479,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2480,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2481,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2482,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2483,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2484,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2485,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2486,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2487,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2488,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2489,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2490,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2491,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2492,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2493,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2494,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2495,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2496,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2497,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2498,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 +2499,2,3,4,5,6.6,7.7,8.8,abc,def,ghiaaaaaa,2020-10-10,2020-10-10 11:12:59 diff --git a/regression-test/suites/schema_change_p0/test_schema_change_agg.groovy b/regression-test/suites/schema_change_p0/test_schema_change_agg.groovy new file mode 100644 index 00000000000000..3b2526cfbc1a14 --- /dev/null +++ b/regression-test/suites/schema_change_p0/test_schema_change_agg.groovy @@ -0,0 +1,195 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + +import java.util.Date +import java.text.SimpleDateFormat +import org.apache.http.HttpResponse +import org.apache.http.client.methods.HttpPut +import org.apache.http.impl.client.CloseableHttpClient +import org.apache.http.impl.client.HttpClients +import org.apache.http.entity.ContentType +import org.apache.http.entity.StringEntity +import org.apache.http.client.config.RequestConfig +import org.apache.http.client.RedirectStrategy +import org.apache.http.protocol.HttpContext +import org.apache.http.HttpRequest +import org.apache.http.impl.client.LaxRedirectStrategy +import org.apache.http.client.methods.RequestBuilder +import org.apache.http.entity.StringEntity +import org.apache.http.client.methods.CloseableHttpResponse +import org.apache.http.util.EntityUtils + +suite("test_schema_change_agg", "p0") { + def tableName3 = "test_all_agg" + + def getJobState = { tableName -> + def jobStateResult = sql """ SHOW ALTER TABLE COLUMN WHERE IndexName='${tableName}' ORDER BY createtime DESC LIMIT 1 """ + return jobStateResult[0][9] + } + + def getCreateViewState = { tableName -> + def createViewStateResult = sql """ SHOW ALTER TABLE MATERIALIZED VIEW WHERE IndexName='${tableName}' ORDER BY createtime DESC LIMIT 1 """ + return createViewStateResult[0][8] + } + + def execStreamLoad = { + streamLoad { + table "${tableName3}" + + set 'column_separator', ',' + + file 'all_types.csv' + time 10000 // limit inflight 10s + + check { result, exception, startTime, endTime -> + if (exception != null) { + throw exception + } + log.info("Stream load result: ${result}".toString()) + def json = parseJson(result) + assertEquals("success", json.Status.toLowerCase()) + assertEquals(2500, json.NumberTotalRows) + assertEquals(0, json.NumberFilteredRows) + } + } + } + + sql """ DROP TABLE IF EXISTS ${tableName3} """ + + sql """ + CREATE TABLE IF NOT EXISTS ${tableName3} ( + `k1` int(11) NULL, + `k2` tinyint(4) NULL, + `k3` smallint(6) NULL, + `k4` int(30) sum NULL, + `k5` largeint(40) sum NULL, + `k6` float sum NULL, + `k7` double sum NULL, + `k8` decimal(9, 0) max NULL, + `k9` char(10) replace NULL, + `k10` varchar(1024) replace NULL, + `k11` text replace NULL, + `k12` date replace NULL, + `k13` datetime replace NULL + ) ENGINE=OLAP + AGGREGATE KEY(k1, k2, k3) + DISTRIBUTED BY HASH(`k1`) BUCKETS 1 + PROPERTIES ( + "replication_allocation" = "tag.location.default: 1" + ); + """ + + execStreamLoad() + + sql """ alter table ${tableName3} modify column k2 bigint(11) key NULL""" + sleep(10) + max_try_num = 60 + while (max_try_num--) { + String res = getJobState(tableName3) + if (res == "FINISHED" || res == "CANCELLED") { + assertEquals("FINISHED", res) + sleep(3000) + break + } else { + execStreamLoad() + if (max_try_num < 1) { + println "test timeout," + "state:" + res + assertEquals("FINISHED",res) + } + } + } + + /* + sql """ create materialized view view_1 as select k2, k1, k4, k5 from ${tableName3} """ + sleep(10) + max_try_num = 60 + while (max_try_num--) { + String res = getCreateViewState(tableName3) + if (res == "FINISHED" || res == "CANCELLED") { + assertEquals("FINISHED", res) + sleep(3000) + break + } else { + execStreamLoad() + if (max_try_num < 1) { + println "test timeout," + "state:" + res + assertEquals("FINISHED",res) + } + } + } + */ + + sql """ alter table ${tableName3} modify column k4 bigint(11) sum NULL""" + sleep(10) + max_try_num = 60 + while (max_try_num--) { + String res = getJobState(tableName3) + if (res == "FINISHED" || res == "CANCELLED") { + assertEquals("FINISHED", res) + sleep(3000) + break + } else { + execStreamLoad() + if (max_try_num < 1) { + println "test timeout," + "state:" + res + assertEquals("FINISHED",res) + } + } + } + + sql """ alter table ${tableName3} add column v14 int sum NOT NULL default "0" after k13 """ + sql """ insert into ${tableName3} values (10001, 2, 3, 4, 5, 6.6, 1.7, 8.8, + 'a', 'b', 'c', '2021-10-30', '2021-10-30 00:00:00', 10086) """ + + sql """ alter table ${tableName3} modify column v14 int sum NULL default "0" """ + sleep(10) + max_try_num = 6000 + while (max_try_num--) { + String res = getJobState(tableName3) + if (res == "FINISHED" || res == "CANCELLED") { + assertEquals("FINISHED", res) + sleep(3000) + break + } else { + int val = 100000 + max_try_num + sql """ insert into ${tableName3} values (${val}, 2, 3, 4, 5, 6.6, 1.7, 8.8, + 'a', 'b', 'c', '2021-10-30', '2021-10-30 00:00:00', 9527) """ + sleep(10) + if (max_try_num < 1) { + println "test timeout," + "state:" + res + assertEquals("FINISHED",res) + } + } + } + + sql """ alter table ${tableName3} drop column v14 """ + execStreamLoad() + + sql """ alter table ${tableName3} add column v14 int sum NOT NULL default "0" after k13 """ + + sql """ insert into ${tableName3} values (10002, 2, 3, 4, 5, 6.6, 1.7, 8.81, + 'a', 'b', 'c', '2021-10-30', '2021-10-30 00:00:00', 10086) """ + + sql """ alter table ${tableName3} drop column v14 """ + + List> result = sql """ select * from ${tableName3} """ + for (row : result) { + assertEquals(2, row[1]); + assertEquals(3, row[2]); + } +} + diff --git a/regression-test/suites/schema_change_p0/test_schema_change_cold_heat.groovy b/regression-test/suites/schema_change_p0/test_schema_change_cold_heat.groovy new file mode 100644 index 00000000000000..8f445698624276 --- /dev/null +++ b/regression-test/suites/schema_change_p0/test_schema_change_cold_heat.groovy @@ -0,0 +1,271 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + +import java.util.Date +import java.text.SimpleDateFormat +import org.apache.http.HttpResponse +import org.apache.http.client.methods.HttpPut +import org.apache.http.impl.client.CloseableHttpClient +import org.apache.http.impl.client.HttpClients +import org.apache.http.entity.ContentType +import org.apache.http.entity.StringEntity +import org.apache.http.client.config.RequestConfig +import org.apache.http.client.RedirectStrategy +import org.apache.http.protocol.HttpContext +import org.apache.http.HttpRequest +import org.apache.http.impl.client.LaxRedirectStrategy +import org.apache.http.client.methods.RequestBuilder +import org.apache.http.entity.StringEntity +import org.apache.http.client.methods.CloseableHttpResponse +import org.apache.http.util.EntityUtils + +suite("test_schema_change_cold_heat", "p0") { + def tableName3 = "test_all_sc_cold_heat" + + def getJobState = { tableName -> + def jobStateResult = sql """ SHOW ALTER TABLE COLUMN WHERE IndexName='${tableName}' ORDER BY createtime DESC LIMIT 1 """ + return jobStateResult[0][9] + } + + def getCreateViewState = { tableName -> + def createViewStateResult = sql """ SHOW ALTER TABLE MATERIALIZED VIEW WHERE IndexName='${tableName}' ORDER BY createtime DESC LIMIT 1 """ + return createViewStateResult[0][8] + } + + def execStreamLoad = { + streamLoad { + table "${tableName3}" + + set 'column_separator', ',' + + file 'all_types.csv' + time 10000 // limit inflight 10s + + check { result, exception, startTime, endTime -> + if (exception != null) { + throw exception + } + log.info("Stream load result: ${result}".toString()) + def json = parseJson(result) + assertEquals("success", json.Status.toLowerCase()) + assertEquals(2500, json.NumberTotalRows) + assertEquals(0, json.NumberFilteredRows) + } + } + } + + def check_storage_policy_exist = { name-> + def polices = sql""" + show storage policy; + """ + for (p in polices) { + if (name == p[0]) { + return true; + } + } + return false; + } + + def resource_name = "test_sc_resource" + def policy_name= "test_sc_policy" + + if (check_storage_policy_exist(policy_name)) { + sql """ + DROP STORAGE POLICY ${policy_name} + """ + } + + def has_resouce = sql """ + SHOW RESOURCES WHERE NAME = "${resource_name}"; + """ + if (has_resouce.size() > 0) { + sql """ + DROP RESOURCE ${resource_name} + """ + } + + sql """ + CREATE RESOURCE IF NOT EXISTS "${resource_name}" + PROPERTIES( + "type"="s3", + "AWS_ENDPOINT" = "${getS3Endpoint()}", + "AWS_REGION" = "${getS3Region()}", + "AWS_ROOT_PATH" = "regression/cooldown", + "AWS_ACCESS_KEY" = "${getS3AK()}", + "AWS_SECRET_KEY" = "${getS3SK()}", + "AWS_MAX_CONNECTIONS" = "50", + "AWS_REQUEST_TIMEOUT_MS" = "3000", + "AWS_CONNECTION_TIMEOUT_MS" = "1000", + "AWS_BUCKET" = "${getS3BucketName()}", + "s3_validity_check" = "true" + ); + """ + + sql """ + CREATE STORAGE POLICY IF NOT EXISTS ${policy_name} + PROPERTIES( + "storage_resource" = "${resource_name}", + "cooldown_ttl" = "0" + ) + """ + + sql """ DROP TABLE IF EXISTS ${tableName3} """ + + sql """ + CREATE TABLE IF NOT EXISTS ${tableName3} ( + `k1` int(11) NULL, + `k2` tinyint(4) NULL, + `k3` smallint(6) NULL, + `k4` int(30) NULL, + `k5` largeint(40) NULL, + `k6` float NULL, + `k7` double NULL, + `k8` decimal(9, 0) NULL, + `k9` char(10) NULL, + `k10` varchar(1024) NULL, + `k11` text NULL, + `k12` date NULL, + `k13` datetime NULL + ) ENGINE=OLAP + duplicate KEY(k1, k2, k3) + DISTRIBUTED BY HASH(`k1`) BUCKETS 1 + PROPERTIES ( + "replication_allocation" = "tag.location.default: 1", + "storage_policy" = "${policy_name}" + ); + """ + + execStreamLoad() + + sql """ alter table ${tableName3} modify column k4 string NULL""" + sleep(10) + int max_try_num = 60 + while (max_try_num--) { + String res = getJobState(tableName3) + if (res == "FINISHED" || res == "CANCELLED") { + assertEquals("FINISHED", res) + sleep(3000) + break + } else { + execStreamLoad() + if (max_try_num < 1) { + println "test timeout," + "state:" + res + assertEquals("FINISHED",res) + } + } + } + + sql """ alter table ${tableName3} modify column k2 bigint(11) key NULL""" + sleep(10) + max_try_num = 60 + while (max_try_num--) { + String res = getJobState(tableName3) + if (res == "FINISHED" || res == "CANCELLED") { + assertEquals("FINISHED", res) + sleep(3000) + break + } else { + execStreamLoad() + if (max_try_num < 1) { + println "test timeout," + "state:" + res + assertEquals("FINISHED",res) + } + } + } + + /* + sql """ create materialized view view_1 as select k2, k1, k4, k5 from ${tableName3} """ + sleep(10) + max_try_num = 60 + while (max_try_num--) { + String res = getCreateViewState(tableName3) + if (res == "FINISHED" || res == "CANCELLED") { + assertEquals("FINISHED", res) + sleep(3000) + break + } else { + execStreamLoad() + if (max_try_num < 1) { + println "test timeout," + "state:" + res + assertEquals("FINISHED",res) + } + } + } + */ + + sql """ alter table ${tableName3} modify column k5 string NULL""" + sleep(10) + max_try_num = 60 + while (max_try_num--) { + String res = getJobState(tableName3) + if (res == "FINISHED" || res == "CANCELLED") { + assertEquals("FINISHED", res) + sleep(3000) + break + } else { + execStreamLoad() + if (max_try_num < 1) { + println "test timeout," + "state:" + res + assertEquals("FINISHED",res) + } + } + } + + sql """ alter table ${tableName3} add column v14 int NOT NULL default "1" after k13 """ + sql """ insert into ${tableName3} values (10001, 2, 3, 4, 5, 6.6, 1.7, 8.8, + 'a', 'b', 'c', '2021-10-30', '2021-10-30 00:00:00', 10086) """ + + sql """ alter table ${tableName3} modify column v14 int NULL default "1" """ + sleep(10) + max_try_num = 6000 + while (max_try_num--) { + String res = getJobState(tableName3) + if (res == "FINISHED" || res == "CANCELLED") { + assertEquals("FINISHED", res) + sleep(3000) + break + } else { + int val = 100000 + max_try_num + sql """ insert into ${tableName3} values (${val}, 2, 3, 4, 5, 6.6, 1.7, 8.8, + 'a', 'b', 'c', '2021-10-30', '2021-10-30 00:00:00', 9527) """ + sleep(10) + if (max_try_num < 1) { + println "test timeout," + "state:" + res + assertEquals("FINISHED",res) + } + } + } + + sql """ alter table ${tableName3} drop column v14 """ + execStreamLoad() + + sql """ alter table ${tableName3} add column v14 int NOT NULL default "1" after k13 """ + + sql """ insert into ${tableName3} values (10002, 2, 3, 4, 5, 6.6, 1.7, 8.8, + 'a', 'b', 'c', '2021-10-30', '2021-10-30 00:00:00', 10086) """ + + sql """ alter table ${tableName3} drop column v14 """ + + List> result = sql """ select * from ${tableName3} """ + for (row : result) { + assertEquals(2, row[1]); + assertEquals(3, row[2]); + assertEquals("4", row[3]); + assertEquals("5", row[4]); + } +} + diff --git a/regression-test/suites/schema_change_p0/test_schema_change_duplicate.groovy b/regression-test/suites/schema_change_p0/test_schema_change_duplicate.groovy new file mode 100644 index 00000000000000..ea88208597d7d0 --- /dev/null +++ b/regression-test/suites/schema_change_p0/test_schema_change_duplicate.groovy @@ -0,0 +1,215 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + +import java.util.Date +import java.text.SimpleDateFormat +import org.apache.http.HttpResponse +import org.apache.http.client.methods.HttpPut +import org.apache.http.impl.client.CloseableHttpClient +import org.apache.http.impl.client.HttpClients +import org.apache.http.entity.ContentType +import org.apache.http.entity.StringEntity +import org.apache.http.client.config.RequestConfig +import org.apache.http.client.RedirectStrategy +import org.apache.http.protocol.HttpContext +import org.apache.http.HttpRequest +import org.apache.http.impl.client.LaxRedirectStrategy +import org.apache.http.client.methods.RequestBuilder +import org.apache.http.entity.StringEntity +import org.apache.http.client.methods.CloseableHttpResponse +import org.apache.http.util.EntityUtils + +suite("test_schema_change_duplicate", "p0") { + def tableName3 = "test_all_duplicate" + + def getJobState = { tableName -> + def jobStateResult = sql """ SHOW ALTER TABLE COLUMN WHERE IndexName='${tableName}' ORDER BY createtime DESC LIMIT 1 """ + return jobStateResult[0][9] + } + + def getCreateViewState = { tableName -> + def createViewStateResult = sql """ SHOW ALTER TABLE MATERIALIZED VIEW WHERE IndexName='${tableName}' ORDER BY createtime DESC LIMIT 1 """ + return createViewStateResult[0][8] + } + + def execStreamLoad = { + streamLoad { + table "${tableName3}" + + set 'column_separator', ',' + + file 'all_types.csv' + time 10000 // limit inflight 10s + + check { result, exception, startTime, endTime -> + if (exception != null) { + throw exception + } + log.info("Stream load result: ${result}".toString()) + def json = parseJson(result) + assertEquals("success", json.Status.toLowerCase()) + assertEquals(2500, json.NumberTotalRows) + assertEquals(0, json.NumberFilteredRows) + } + } + } + + sql """ DROP TABLE IF EXISTS ${tableName3} """ + + sql """ + CREATE TABLE IF NOT EXISTS ${tableName3} ( + `k1` int(11) NULL, + `k2` tinyint(4) NULL, + `k3` smallint(6) NULL, + `k4` int(30) NULL, + `k5` largeint(40) NULL, + `k6` float NULL, + `k7` double NULL, + `k8` decimal(9, 0) NULL, + `k9` char(10) NULL, + `k10` varchar(1024) NULL, + `k11` text NULL, + `k12` date NULL, + `k13` datetime NULL + ) ENGINE=OLAP + duplicate KEY(k1, k2, k3) + DISTRIBUTED BY HASH(`k1`) BUCKETS 1 + PROPERTIES ( + "replication_allocation" = "tag.location.default: 1" + ); + """ + + execStreamLoad() + + sql """ alter table ${tableName3} modify column k4 string NULL""" + sleep(10) + int max_try_num = 60 + while (max_try_num--) { + String res = getJobState(tableName3) + if (res == "FINISHED" || res == "CANCELLED") { + assertEquals("FINISHED", res) + sleep(3000) + break + } else { + execStreamLoad() + if (max_try_num < 1) { + println "test timeout," + "state:" + res + assertEquals("FINISHED",res) + } + } + } + + sql """ alter table ${tableName3} modify column k2 bigint(11) key NULL""" + sleep(10) + max_try_num = 60 + while (max_try_num--) { + String res = getJobState(tableName3) + if (res == "FINISHED" || res == "CANCELLED") { + assertEquals("FINISHED", res) + sleep(3000) + break + } else { + execStreamLoad() + if (max_try_num < 1) { + println "test timeout," + "state:" + res + assertEquals("FINISHED",res) + } + } + } + + /* + sql """ create materialized view view_1 as select k2, k1, k4, k5 from ${tableName3} """ + sleep(10) + max_try_num = 60 + while (max_try_num--) { + String res = getCreateViewState(tableName3) + if (res == "FINISHED" || res == "CANCELLED") { + assertEquals("FINISHED", res) + sleep(3000) + break + } else { + execStreamLoad() + if (max_try_num < 1) { + println "test timeout," + "state:" + res + assertEquals("FINISHED",res) + } + } + } + */ + + sql """ alter table ${tableName3} modify column k5 string NULL""" + sleep(10) + max_try_num = 60 + while (max_try_num--) { + String res = getJobState(tableName3) + if (res == "FINISHED" || res == "CANCELLED") { + assertEquals("FINISHED", res) + sleep(3000) + break + } else { + execStreamLoad() + if (max_try_num < 1) { + println "test timeout," + "state:" + res + assertEquals("FINISHED",res) + } + } + } + + sql """ alter table ${tableName3} add column v14 int NOT NULL default "1" after k13 """ + sql """ insert into ${tableName3} values (10001, 2, 3, 4, 5, 6.6, 1.7, 8.8, + 'a', 'b', 'c', '2021-10-30', '2021-10-30 00:00:00', 10086) """ + + sql """ alter table ${tableName3} modify column v14 int NULL default "1" """ + sleep(10) + max_try_num = 6000 + while (max_try_num--) { + String res = getJobState(tableName3) + if (res == "FINISHED" || res == "CANCELLED") { + assertEquals("FINISHED", res) + sleep(3000) + break + } else { + int val = 100000 + max_try_num + sql """ insert into ${tableName3} values (${val}, 2, 3, 4, 5, 6.6, 1.7, 8.8, + 'a', 'b', 'c', '2021-10-30', '2021-10-30 00:00:00', 9527) """ + sleep(10) + if (max_try_num < 1) { + println "test timeout," + "state:" + res + assertEquals("FINISHED",res) + } + } + } + + sql """ alter table ${tableName3} drop column v14 """ + execStreamLoad() + + sql """ alter table ${tableName3} add column v14 int NOT NULL default "1" after k13 """ + + sql """ insert into ${tableName3} values (10002, 2, 3, 4, 5, 6.6, 1.7, 8.8, + 'a', 'b', 'c', '2021-10-30', '2021-10-30 00:00:00', 10086) """ + + sql """ alter table ${tableName3} drop column v14 """ + + List> result = sql """ select * from ${tableName3} """ + for (row : result) { + assertEquals(2, row[1]); + assertEquals(3, row[2]); + assertEquals("4", row[3]); + assertEquals("5", row[4]); + } +} + diff --git a/regression-test/suites/schema_change_p0/test_schema_change_unique.groovy b/regression-test/suites/schema_change_p0/test_schema_change_unique.groovy new file mode 100644 index 00000000000000..8f10451c076a4f --- /dev/null +++ b/regression-test/suites/schema_change_p0/test_schema_change_unique.groovy @@ -0,0 +1,215 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + +import java.util.Date +import java.text.SimpleDateFormat +import org.apache.http.HttpResponse +import org.apache.http.client.methods.HttpPut +import org.apache.http.impl.client.CloseableHttpClient +import org.apache.http.impl.client.HttpClients +import org.apache.http.entity.ContentType +import org.apache.http.entity.StringEntity +import org.apache.http.client.config.RequestConfig +import org.apache.http.client.RedirectStrategy +import org.apache.http.protocol.HttpContext +import org.apache.http.HttpRequest +import org.apache.http.impl.client.LaxRedirectStrategy +import org.apache.http.client.methods.RequestBuilder +import org.apache.http.entity.StringEntity +import org.apache.http.client.methods.CloseableHttpResponse +import org.apache.http.util.EntityUtils + +suite("test_schema_change_unique", "p0") { + def tableName3 = "test_all_unique" + + def getJobState = { tableName -> + def jobStateResult = sql """ SHOW ALTER TABLE COLUMN WHERE IndexName='${tableName}' ORDER BY createtime DESC LIMIT 1 """ + return jobStateResult[0][9] + } + + def getCreateViewState = { tableName -> + def createViewStateResult = sql """ SHOW ALTER TABLE MATERIALIZED VIEW WHERE IndexName='${tableName}' ORDER BY createtime DESC LIMIT 1 """ + return createViewStateResult[0][8] + } + + def execStreamLoad = { + streamLoad { + table "${tableName3}" + + set 'column_separator', ',' + + file 'all_types.csv' + time 10000 // limit inflight 10s + + check { result, exception, startTime, endTime -> + if (exception != null) { + throw exception + } + log.info("Stream load result: ${result}".toString()) + def json = parseJson(result) + assertEquals("success", json.Status.toLowerCase()) + assertEquals(2500, json.NumberTotalRows) + assertEquals(0, json.NumberFilteredRows) + } + } + } + + sql """ DROP TABLE IF EXISTS ${tableName3} """ + + sql """ + CREATE TABLE IF NOT EXISTS ${tableName3} ( + `k1` int(11) NULL, + `k2` tinyint(4) NULL, + `k3` smallint(6) NULL, + `k4` int(30) NULL, + `k5` largeint(40) NULL, + `k6` float NULL, + `k7` double NULL, + `k8` decimal(9, 0) NULL, + `k9` char(10) NULL, + `k10` varchar(1024) NULL, + `k11` text NULL, + `k12` date NULL, + `k13` datetime NULL + ) ENGINE=OLAP + unique KEY(k1, k2, k3) + DISTRIBUTED BY HASH(`k1`) BUCKETS 1 + PROPERTIES ( + "replication_allocation" = "tag.location.default: 1" + ); + """ + + execStreamLoad() + + sql """ alter table ${tableName3} modify column k4 string NULL""" + sleep(10) + int max_try_num = 60 + while (max_try_num--) { + String res = getJobState(tableName3) + if (res == "FINISHED" || res == "CANCELLED") { + assertEquals("FINISHED", res) + sleep(3000) + break + } else { + execStreamLoad() + if (max_try_num < 1) { + println "test timeout," + "state:" + res + assertEquals("FINISHED",res) + } + } + } + + sql """ alter table ${tableName3} modify column k2 bigint(11) key NULL""" + sleep(10) + max_try_num = 60 + while (max_try_num--) { + String res = getJobState(tableName3) + if (res == "FINISHED" || res == "CANCELLED") { + assertEquals("FINISHED", res) + sleep(3000) + break + } else { + execStreamLoad() + if (max_try_num < 1) { + println "test timeout," + "state:" + res + assertEquals("FINISHED",res) + } + } + } + + /* + sql """ create materialized view view_1 as select k2, k1, k4, k5 from ${tableName3} """ + sleep(10) + max_try_num = 60 + while (max_try_num--) { + String res = getCreateViewState(tableName3) + if (res == "FINISHED" || res == "CANCELLED") { + assertEquals("FINISHED", res) + sleep(3000) + break + } else { + execStreamLoad() + if (max_try_num < 1) { + println "test timeout," + "state:" + res + assertEquals("FINISHED",res) + } + } + } + */ + + sql """ alter table ${tableName3} modify column k5 string NULL""" + sleep(10) + max_try_num = 60 + while (max_try_num--) { + String res = getJobState(tableName3) + if (res == "FINISHED" || res == "CANCELLED") { + assertEquals("FINISHED", res) + sleep(3000) + break + } else { + execStreamLoad() + if (max_try_num < 1) { + println "test timeout," + "state:" + res + assertEquals("FINISHED",res) + } + } + } + + sql """ alter table ${tableName3} add column v14 int NOT NULL default "1" after k13 """ + sql """ insert into ${tableName3} values (10001, 2, 3, 4, 5, 6.6, 1.7, 8.8, + 'a', 'b', 'c', '2021-10-30', '2021-10-30 00:00:00', 10086) """ + + sql """ alter table ${tableName3} modify column v14 int NULL default "1" """ + sleep(10) + max_try_num = 6000 + while (max_try_num--) { + String res = getJobState(tableName3) + if (res == "FINISHED" || res == "CANCELLED") { + assertEquals("FINISHED", res) + sleep(3000) + break + } else { + int val = 100000 + max_try_num + sql """ insert into ${tableName3} values (${val}, 2, 3, 4, 5, 6.6, 1.7, 8.8, + 'a', 'b', 'c', '2021-10-30', '2021-10-30 00:00:00', 9527) """ + sleep(10) + if (max_try_num < 1) { + println "test timeout," + "state:" + res + assertEquals("FINISHED",res) + } + } + } + + sql """ alter table ${tableName3} drop column v14 """ + execStreamLoad() + + sql """ alter table ${tableName3} add column v14 int NOT NULL default "1" after k13 """ + + sql """ insert into ${tableName3} values (10002, 2, 3, 4, 5, 6.6, 1.7, 8.8, + 'a', 'b', 'c', '2021-10-30', '2021-10-30 00:00:00', 10086) """ + + sql """ alter table ${tableName3} drop column v14 """ + + List> result = sql """ select * from ${tableName3} """ + for (row : result) { + assertEquals(2, row[1]); + assertEquals(3, row[2]); + assertEquals("4", row[3]); + assertEquals("5", row[4]); + } +} + diff --git a/regression-test/suites/schema_change_p0/test_schema_change_unique_mow.groovy b/regression-test/suites/schema_change_p0/test_schema_change_unique_mow.groovy new file mode 100644 index 00000000000000..a4e552044d63e2 --- /dev/null +++ b/regression-test/suites/schema_change_p0/test_schema_change_unique_mow.groovy @@ -0,0 +1,216 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + +import java.util.Date +import java.text.SimpleDateFormat +import org.apache.http.HttpResponse +import org.apache.http.client.methods.HttpPut +import org.apache.http.impl.client.CloseableHttpClient +import org.apache.http.impl.client.HttpClients +import org.apache.http.entity.ContentType +import org.apache.http.entity.StringEntity +import org.apache.http.client.config.RequestConfig +import org.apache.http.client.RedirectStrategy +import org.apache.http.protocol.HttpContext +import org.apache.http.HttpRequest +import org.apache.http.impl.client.LaxRedirectStrategy +import org.apache.http.client.methods.RequestBuilder +import org.apache.http.entity.StringEntity +import org.apache.http.client.methods.CloseableHttpResponse +import org.apache.http.util.EntityUtils + +suite("test_schema_change_unique_mow", "p0") { + def tableName3 = "test_all_unique_mow" + + def getJobState = { tableName -> + def jobStateResult = sql """ SHOW ALTER TABLE COLUMN WHERE IndexName='${tableName}' ORDER BY createtime DESC LIMIT 1 """ + return jobStateResult[0][9] + } + + def getCreateViewState = { tableName -> + def createViewStateResult = sql """ SHOW ALTER TABLE MATERIALIZED VIEW WHERE IndexName='${tableName}' ORDER BY createtime DESC LIMIT 1 """ + return createViewStateResult[0][8] + } + + def execStreamLoad = { + streamLoad { + table "${tableName3}" + + set 'column_separator', ',' + + file 'all_types.csv' + time 10000 // limit inflight 10s + + check { result, exception, startTime, endTime -> + if (exception != null) { + throw exception + } + log.info("Stream load result: ${result}".toString()) + def json = parseJson(result) + assertEquals("success", json.Status.toLowerCase()) + assertEquals(2500, json.NumberTotalRows) + assertEquals(0, json.NumberFilteredRows) + } + } + } + + sql """ DROP TABLE IF EXISTS ${tableName3} """ + + sql """ + CREATE TABLE IF NOT EXISTS ${tableName3} ( + `k1` int(11) NULL, + `k2` tinyint(4) NULL, + `k3` smallint(6) NULL, + `k4` int(30) NULL, + `k5` largeint(40) NULL, + `k6` float NULL, + `k7` double NULL, + `k8` decimal(9, 0) NULL, + `k9` char(10) NULL, + `k10` varchar(1024) NULL, + `k11` text NULL, + `k12` date NULL, + `k13` datetime NULL + ) ENGINE=OLAP + unique KEY(k1, k2, k3) + DISTRIBUTED BY HASH(`k1`) BUCKETS 1 + PROPERTIES ( + "replication_allocation" = "tag.location.default: 1", + "enable_unique_key_merge_on_write" = "true" + ); + """ + + execStreamLoad() + + sql """ alter table ${tableName3} modify column k4 string NULL""" + sleep(10) + int max_try_num = 60 + while (max_try_num--) { + String res = getJobState(tableName3) + if (res == "FINISHED" || res == "CANCELLED") { + assertEquals("FINISHED", res) + sleep(3000) + break + } else { + execStreamLoad() + if (max_try_num < 1) { + println "test timeout," + "state:" + res + assertEquals("FINISHED",res) + } + } + } + + sql """ alter table ${tableName3} modify column k2 bigint(11) key NULL""" + sleep(10) + max_try_num = 60 + while (max_try_num--) { + String res = getJobState(tableName3) + if (res == "FINISHED" || res == "CANCELLED") { + assertEquals("FINISHED", res) + sleep(3000) + break + } else { + execStreamLoad() + if (max_try_num < 1) { + println "test timeout," + "state:" + res + assertEquals("FINISHED",res) + } + } + } + + /* + sql """ create materialized view view_1 as select k2, k1, k4, k5 from ${tableName3} """ + sleep(10) + max_try_num = 60 + while (max_try_num--) { + String res = getCreateViewState(tableName3) + if (res == "FINISHED" || res == "CANCELLED") { + assertEquals("FINISHED", res) + sleep(3000) + break + } else { + execStreamLoad() + if (max_try_num < 1) { + println "test timeout," + "state:" + res + assertEquals("FINISHED",res) + } + } + } + */ + + sql """ alter table ${tableName3} modify column k5 string NULL""" + sleep(10) + max_try_num = 60 + while (max_try_num--) { + String res = getJobState(tableName3) + if (res == "FINISHED" || res == "CANCELLED") { + assertEquals("FINISHED", res) + sleep(3000) + break + } else { + execStreamLoad() + if (max_try_num < 1) { + println "test timeout," + "state:" + res + assertEquals("FINISHED",res) + } + } + } + + sql """ alter table ${tableName3} add column v14 int NOT NULL default "1" after k13 """ + sql """ insert into ${tableName3} values (10001, 2, 3, 4, 5, 6.6, 1.7, 8.8, + 'a', 'b', 'c', '2021-10-30', '2021-10-30 00:00:00', 10086) """ + + sql """ alter table ${tableName3} modify column v14 int NULL default "1" """ + sleep(10) + max_try_num = 6000 + while (max_try_num--) { + String res = getJobState(tableName3) + if (res == "FINISHED" || res == "CANCELLED") { + assertEquals("FINISHED", res) + sleep(3000) + break + } else { + int val = 100000 + max_try_num + sql """ insert into ${tableName3} values (${val}, 2, 3, 4, 5, 6.6, 1.7, 8.8, + 'a', 'b', 'c', '2021-10-30', '2021-10-30 00:00:00', 9527) """ + sleep(10) + if (max_try_num < 1) { + println "test timeout," + "state:" + res + assertEquals("FINISHED",res) + } + } + } + + sql """ alter table ${tableName3} drop column v14 """ + execStreamLoad() + + sql """ alter table ${tableName3} add column v14 int NOT NULL default "1" after k13 """ + + sql """ insert into ${tableName3} values (10002, 2, 3, 4, 5, 6.6, 1.7, 8.8, + 'a', 'b', 'c', '2021-10-30', '2021-10-30 00:00:00', 10086) """ + + sql """ alter table ${tableName3} drop column v14 """ + + List> result = sql """ select * from ${tableName3} """ + for (row : result) { + assertEquals(2, row[1]); + assertEquals(3, row[2]); + assertEquals("4", row[3]); + assertEquals("5", row[4]); + } +} + From a171f028a6515e54bc13d6d856d499202cfec7af Mon Sep 17 00:00:00 2001 From: morrySnow <101034200+morrySnow@users.noreply.github.com> Date: Thu, 23 Nov 2023 12:34:36 +0800 Subject: [PATCH 07/33] [fix](Nereids) result type of add precision is 1 more than expected (#27136) (#27426) --- .../apache/doris/nereids/trees/expressions/Add.java | 2 +- .../nereids/trees/expressions/BinaryArithmetic.java | 6 +++++- .../doris/nereids/trees/expressions/Subtract.java | 2 +- .../suites/nereids_arith_p0/decimal.groovy | 12 ++++++++++++ 4 files changed, 19 insertions(+), 3 deletions(-) diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/Add.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/Add.java index 2be8a3c2c0cb42..bf19192ff5c6fb 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/Add.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/Add.java @@ -50,7 +50,7 @@ public Expression withChildren(List children) { @Override public DecimalV3Type getDataTypeForDecimalV3(DecimalV3Type t1, DecimalV3Type t2) { DecimalV3Type decimalV3Type = (DecimalV3Type) DecimalV3Type.widerDecimalV3Type(t1, t2, false); - return (DecimalV3Type) DecimalV3Type.createDecimalV3Type(decimalV3Type.getPrecision() + 1, + return DecimalV3Type.createDecimalV3Type(decimalV3Type.getPrecision() + 1, decimalV3Type.getScale()); } diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/BinaryArithmetic.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/BinaryArithmetic.java index 501af7470cb8bd..61440f4147d800 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/BinaryArithmetic.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/BinaryArithmetic.java @@ -61,7 +61,11 @@ public DataType getDataType() throws UnboundException { return getDataTypeForDecimalV2((DecimalV2Type) t1, (DecimalV2Type) t2); } if (t1.isDecimalV3Type() && t2.isDecimalV3Type()) { - return getDataTypeForDecimalV3((DecimalV3Type) t1, (DecimalV3Type) t2); + if (this instanceof Add || this instanceof Subtract || this instanceof Mod) { + return t1; + } else { + return getDataTypeForDecimalV3((DecimalV3Type) t1, (DecimalV3Type) t2); + } } return getDataTypeForOthers(t1, t2); } diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/Subtract.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/Subtract.java index 1536d88d0284d9..0b38694769b777 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/Subtract.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/Subtract.java @@ -50,7 +50,7 @@ public Expression withChildren(List children) { @Override public DecimalV3Type getDataTypeForDecimalV3(DecimalV3Type t1, DecimalV3Type t2) { DecimalV3Type decimalV3Type = (DecimalV3Type) DecimalV3Type.widerDecimalV3Type(t1, t2, false); - return (DecimalV3Type) DecimalV3Type.createDecimalV3Type(decimalV3Type.getPrecision() + 1, + return DecimalV3Type.createDecimalV3Type(decimalV3Type.getPrecision() + 1, decimalV3Type.getScale()); } diff --git a/regression-test/suites/nereids_arith_p0/decimal.groovy b/regression-test/suites/nereids_arith_p0/decimal.groovy index a7f18705f2137d..12665ce86da816 100644 --- a/regression-test/suites/nereids_arith_p0/decimal.groovy +++ b/regression-test/suites/nereids_arith_p0/decimal.groovy @@ -2299,4 +2299,16 @@ suite('nereids_arith_p0_decimal') { // select id, BITAND(kdcml128v3, kbool), BITOR(kdcml128v3, kbool), BITXOR(kdcml128v3, kbool) from expr_test order by id""" // qt_sql_test_Decimal128V3_Boolean_notn_4 """ // select id, BITAND(kdcml128v3, kbool), BITOR(kdcml128v3, kbool), BITXOR(kdcml128v3, kbool) from expr_test_not_nullable order by id""" + + + // decimal add precision + sql """drop table if exists test_arithmetic_expressions""" + sql """ + CREATE TABLE IF NOT EXISTS test_arithmetic_expressions ( + `a` DECIMALV3(9, 3) NOT NULL, + `b` DECIMALV3(9, 3) NOT NULL + ) DISTRIBUTED BY HASH(a) PROPERTIES("replication_num" = "1"); + """ + sql "select a + b from test_arithmetic_expressions" + sql """drop table if exists test_arithmetic_expressions""" } \ No newline at end of file From 3d046631fecf8532af787e0171cd71f1cf93b8ef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B0=A2=E5=81=A5?= Date: Thu, 23 Nov 2023 17:00:49 +0800 Subject: [PATCH 08/33] [fix](Nereids): fill miss slot in having subquery (#27177) (#27394) --- .../nereids/rules/analysis/SubqueryToApply.java | 17 ++++++++++++----- .../nereids/trees/expressions/InSubquery.java | 6 ++++++ .../nereids_p0/subquery/test_subquery.groovy | 7 +++++++ 3 files changed, 25 insertions(+), 5 deletions(-) diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/analysis/SubqueryToApply.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/analysis/SubqueryToApply.java index 2852db11089a25..1b2f7c898bbab7 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/analysis/SubqueryToApply.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/analysis/SubqueryToApply.java @@ -21,11 +21,13 @@ import org.apache.doris.nereids.StatementContext; import org.apache.doris.nereids.rules.Rule; import org.apache.doris.nereids.rules.RuleType; +import org.apache.doris.nereids.trees.TreeNode; import org.apache.doris.nereids.trees.expressions.Alias; import org.apache.doris.nereids.trees.expressions.BinaryOperator; import org.apache.doris.nereids.trees.expressions.Exists; import org.apache.doris.nereids.trees.expressions.Expression; import org.apache.doris.nereids.trees.expressions.InSubquery; +import org.apache.doris.nereids.trees.expressions.ListQuery; import org.apache.doris.nereids.trees.expressions.MarkJoinSlotReference; import org.apache.doris.nereids.trees.expressions.NamedExpression; import org.apache.doris.nereids.trees.expressions.Or; @@ -73,7 +75,7 @@ public List buildRules() { LogicalFilter filter = ctx.root; ImmutableList> subqueryExprsList = filter.getConjuncts().stream() - .>map(e -> e.collect(SubqueryExpr.class::isInstance)) + .>map(e -> e.collect(SubqueryToApply::canConvertToSupply)) .collect(ImmutableList.toImmutableList()); if (subqueryExprsList.stream() .flatMap(Collection::stream).noneMatch(SubqueryExpr.class::isInstance)) { @@ -122,7 +124,7 @@ public List buildRules() { RuleType.PROJECT_SUBQUERY_TO_APPLY.build(logicalProject().thenApply(ctx -> { LogicalProject project = ctx.root; ImmutableList> subqueryExprsList = project.getProjects().stream() - .>map(e -> e.collect(SubqueryExpr.class::isInstance)) + .>map(e -> e.collect(SubqueryToApply::canConvertToSupply)) .collect(ImmutableList.toImmutableList()); if (subqueryExprsList.stream().flatMap(Collection::stream).count() == 0) { return project; @@ -191,7 +193,7 @@ public List buildRules() { } ImmutableList> subqueryExprsList = subqueryConjuncts.stream() - .>map(e -> e.collect(SubqueryExpr.class::isInstance)) + .>map(e -> e.collect(SubqueryToApply::canConvertToSupply)) .collect(ImmutableList.toImmutableList()); ImmutableList.Builder newConjuncts = new ImmutableList.Builder<>(); LogicalPlan applyPlan; @@ -238,7 +240,7 @@ public List buildRules() { private static boolean isValidSubqueryConjunct(Expression expression) { // only support 1 subquery expr in the expression // don't support expression like subquery1 or subquery2 - return expression.collectToList(SubqueryExpr.class::isInstance).size() == 1; + return expression.collectToList(SubqueryToApply::canConvertToSupply).size() == 1; } private enum RelatedInfo { @@ -264,7 +266,7 @@ private ImmutableList collectRelatedInfo(List subqueryC Set rightOutputSlots = rightChild.getOutputSet(); for (int i = 0; i < size; ++i) { Expression expression = subqueryConjuncts.get(i); - List subqueryExprs = expression.collectToList(SubqueryExpr.class::isInstance); + List subqueryExprs = expression.collectToList(SubqueryToApply::canConvertToSupply); RelatedInfo relatedInfo = RelatedInfo.UnSupported; if (subqueryExprs.size() == 1) { SubqueryExpr subqueryExpr = subqueryExprs.get(0); @@ -307,6 +309,11 @@ private ImmutableList collectRelatedInfo(List subqueryC return correlatedInfoList.build(); } + private static boolean canConvertToSupply(TreeNode expression) { + // The subquery except ListQuery can be converted to Supply + return expression instanceof SubqueryExpr && !(expression instanceof ListQuery); + } + private LogicalPlan subqueryToApply(List subqueryExprs, LogicalPlan childPlan, Map> subqueryToMarkJoinSlot, CascadesContext ctx, diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/InSubquery.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/InSubquery.java index 8f9732a2f711be..e04d1b2017a217 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/InSubquery.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/InSubquery.java @@ -23,6 +23,7 @@ import org.apache.doris.nereids.types.DataType; import com.google.common.base.Preconditions; +import com.google.common.collect.Lists; import java.util.List; import java.util.Objects; @@ -107,6 +108,11 @@ public InSubquery withChildren(List children) { return new InSubquery(children.get(0), (ListQuery) children.get(1), isNot); } + @Override + public List children() { + return Lists.newArrayList(compareExpr, listQuery); + } + @Override public boolean equals(Object o) { if (!super.equals(o)) { diff --git a/regression-test/suites/nereids_p0/subquery/test_subquery.groovy b/regression-test/suites/nereids_p0/subquery/test_subquery.groovy index 01e347031f82ef..c522adf43e104e 100644 --- a/regression-test/suites/nereids_p0/subquery/test_subquery.groovy +++ b/regression-test/suites/nereids_p0/subquery/test_subquery.groovy @@ -52,6 +52,13 @@ suite("test_subquery") { select * from nereids_test_query_db.baseall where k1 = (select k1 from nereids_test_query_db.baseall limit 1) """ + // test uncorrelated subquery in having + sql """ + select count(*) from nereids_test_query_db.baseall + group by k0 + having min(k0) in (select k0 from nereids_test_query_db.baseall) + """ + // test uncorrelated scalar subquery with more than one return rows test { sql """ From c1a71d4b079b47b68f87c38c78615a491c88b284 Mon Sep 17 00:00:00 2001 From: Xinyi Zou Date: Thu, 23 Nov 2023 17:18:01 +0800 Subject: [PATCH 09/33] [fix](memory) Fix make_top_consumption_snapshots heap-use-after-free #27434 (#27465) --- be/src/runtime/memory/mem_tracker.h | 6 ++++-- be/src/runtime/memory/mem_tracker_limiter.cpp | 9 ++++----- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/be/src/runtime/memory/mem_tracker.h b/be/src/runtime/memory/mem_tracker.h index 94d836015705ff..62c782946019db 100644 --- a/be/src/runtime/memory/mem_tracker.h +++ b/be/src/runtime/memory/mem_tracker.h @@ -48,12 +48,14 @@ class MemTrackerLimiter; class MemTracker { public: struct Snapshot { - std::string type = ""; + std::string type; std::string label; - std::string parent_label = ""; + std::string parent_label; int64_t limit = 0; int64_t cur_consumption = 0; int64_t peak_consumption = 0; + + bool operator<(const Snapshot& rhs) const { return cur_consumption < rhs.cur_consumption; } }; struct TrackerGroup { diff --git a/be/src/runtime/memory/mem_tracker_limiter.cpp b/be/src/runtime/memory/mem_tracker_limiter.cpp index e4b795d83662f0..15c55e3eca4e59 100644 --- a/be/src/runtime/memory/mem_tracker_limiter.cpp +++ b/be/src/runtime/memory/mem_tracker_limiter.cpp @@ -188,18 +188,17 @@ void MemTrackerLimiter::make_type_snapshots(std::vector* s void MemTrackerLimiter::make_top_consumption_snapshots(std::vector* snapshots, int top_num) { - std::priority_queue> max_pq; + std::priority_queue max_pq; // not include global type. for (unsigned i = 1; i < mem_tracker_limiter_pool.size(); ++i) { std::lock_guard l(mem_tracker_limiter_pool[i].group_lock); - for (auto tracker : mem_tracker_limiter_pool[i].trackers) { - max_pq.emplace(tracker->consumption(), tracker); + for (auto* tracker : mem_tracker_limiter_pool[i].trackers) { + max_pq.emplace(tracker->make_snapshot()); } } while (!max_pq.empty() && top_num > 0) { - auto tracker = max_pq.top().second; - (*snapshots).emplace_back(tracker->make_snapshot()); + (*snapshots).emplace_back(max_pq.top()); top_num--; max_pq.pop(); } From ae7340d5e233b819ca9b3ea24ce2333c7dddec19 Mon Sep 17 00:00:00 2001 From: Mryange <59914473+Mryange@users.noreply.github.com> Date: Thu, 23 Nov 2023 18:05:55 +0800 Subject: [PATCH 10/33] [fix](function) make TIMESTAMP function DEPEND_ON_ARGUMENT (#27343) (#27458) --- be/src/vec/functions/function_timestamp.cpp | 33 ++- gensrc/script/doris_builtins_functions.py | 6 +- .../test_from_millisecond_microsecond.out | 108 ++++++++-- .../test_from_millisecond_microsecond.groovy | 190 ++++++++++++++++-- 4 files changed, 287 insertions(+), 50 deletions(-) diff --git a/be/src/vec/functions/function_timestamp.cpp b/be/src/vec/functions/function_timestamp.cpp index e928e40ce3024f..9a42569dde4e5f 100644 --- a/be/src/vec/functions/function_timestamp.cpp +++ b/be/src/vec/functions/function_timestamp.cpp @@ -816,7 +816,10 @@ class DateTimeToTimestamp : public IFunction { size_t get_number_of_arguments() const override { return 1; } DataTypePtr get_return_type_impl(const ColumnsWithTypeAndName& arguments) const override { - return make_nullable(std::make_shared()); + if (arguments[0].type->is_nullable()) { + return make_nullable(std::make_shared()); + } + return std::make_shared(); } Status execute_impl(FunctionContext* context, Block& block, const ColumnNumbers& arguments, @@ -824,31 +827,23 @@ class DateTimeToTimestamp : public IFunction { const auto& arg_col = block.get_by_position(arguments[0]).column; const auto& column_data = assert_cast(*arg_col); auto res_col = ColumnInt64::create(); - auto null_vector = ColumnVector::create(); - res_col->get_data().resize_fill(input_rows_count, 0); - null_vector->get_data().resize_fill(input_rows_count, false); - NullMap& null_map = null_vector->get_data(); auto& res_data = res_col->get_data(); - const cctz::time_zone& time_zone = context->state()->timezone_obj(); + res_col->get_data().resize_fill(input_rows_count, 0); for (int i = 0; i < input_rows_count; i++) { - if (arg_col->is_null_at(i)) { - null_map[i] = true; - continue; - } StringRef source = column_data.get_data_at(i); const DateV2Value& dt = reinterpret_cast&>(*source.data); + const cctz::time_zone& time_zone = context->state()->timezone_obj(); int64_t timestamp {0}; - if (!dt.unix_timestamp(×tamp, time_zone)) { - null_map[i] = true; - } else { - auto microsecond = dt.microsecond(); - timestamp = timestamp * Impl::ratio + microsecond / ratio_to_micro; - res_data[i] = timestamp; - } + auto ret = dt.unix_timestamp(×tamp, time_zone); + // ret must be true + DCHECK(ret); + auto microsecond = dt.microsecond(); + timestamp = timestamp * Impl::ratio + microsecond / ratio_to_micro; + res_data[i] = timestamp; } - block.get_by_position(result).column = - ColumnNullable::create(std::move(res_col), std::move(null_vector)); + block.replace_by_position(result, std::move(res_col)); + return Status::OK(); } }; diff --git a/gensrc/script/doris_builtins_functions.py b/gensrc/script/doris_builtins_functions.py index f1a71ef6f9883b..e3338008fb7199 100644 --- a/gensrc/script/doris_builtins_functions.py +++ b/gensrc/script/doris_builtins_functions.py @@ -843,9 +843,9 @@ [['from_microsecond'], 'DATETIMEV2', ['BIGINT'], 'ALWAYS_NULLABLE'], [['from_millisecond'], 'DATETIMEV2', ['BIGINT'], 'ALWAYS_NULLABLE'], [['from_second'], 'DATETIMEV2', ['BIGINT'], 'ALWAYS_NULLABLE'], - [['second_timestamp'], 'BIGINT', ['DATETIMEV2'], 'ALWAYS_NULLABLE'], - [['millisecond_timestamp'], 'BIGINT', ['DATETIMEV2'], 'ALWAYS_NULLABLE'], - [['microsecond_timestamp'], 'BIGINT', ['DATETIMEV2'], 'ALWAYS_NULLABLE'], + [['second_timestamp'], 'BIGINT', ['DATETIMEV2'], 'DEPEND_ON_ARGUMENT'], + [['millisecond_timestamp'], 'BIGINT', ['DATETIMEV2'], 'DEPEND_ON_ARGUMENT'], + [['microsecond_timestamp'], 'BIGINT', ['DATETIMEV2'], 'DEPEND_ON_ARGUMENT'], [['now', 'current_timestamp', 'localtime', 'localtimestamp'], 'DATETIME', [], 'DEPEND_ON_ARGUMENT'], [['now', 'current_timestamp', 'localtime', 'localtimestamp'], 'DATETIMEV2', ['INT'], 'DEPEND_ON_ARGUMENT'], [['curtime', 'current_time'], 'TIME', [], 'ALWAYS_NOT_NULLABLE'], diff --git a/regression-test/data/correctness/test_from_millisecond_microsecond.out b/regression-test/data/correctness/test_from_millisecond_microsecond.out index 50861a9400bc29..42d533f29f9b91 100644 --- a/regression-test/data/correctness/test_from_millisecond_microsecond.out +++ b/regression-test/data/correctness/test_from_millisecond_microsecond.out @@ -1,18 +1,15 @@ -- This file is automatically generated. You should know what you did if you want to edit this -- !select1 -- -2030-11-02T08:35:14.514 2030-11-02T08:35:14.514 -4803-07-17T15:07:14.789 \N -2009-02-28T18:44:56.941 2009-02-28T18:44:56.941 -\N \N +2030-11-02T08:35:14.514 +4803-07-17T15:07:14.789 +2009-02-28T18:44:56.941 +\N -- !select2 -- -1970-01-23T13:16:50.114514 1970-01-23T13:16:50.114514 -1972-11-01T06:18:11.234789 1972-11-01T06:18:11.234789 -1970-01-15T15:16:57.896941 1970-01-15T15:16:57.896941 -\N \N - --- !select3 -- -2038-01-19 11:14:07 2038-01-19T11:14:07 \N 2038-01-19T11:14:08 \N 2650-07-06T16:21:10 +1970-01-23T13:16:50.114514 +1972-11-01T06:18:11.234789 +1970-01-15T15:16:57.896941 +\N -- !select4 -- 1919810114514 1919810114514 @@ -44,8 +41,83 @@ 1970-01-15T15:16:57.896941 \N --- !select9 -- -2038-01-19 11:14:07 2038-01-19T11:14:07 \N 2038-01-19T11:14:08 \N 2650-07-06T16:21:10 +-- !select10 -- +1919810114514 1919810114514 +89417891234789 488885820389 +1235817896941 1235817896941 +\N \N \N + +-- !select11 -- +1919810114514 2030-11-02T08:35:14.514 1919810114514 +89417891234789 4803-07-17T15:07:14.789 89417891234789 +1235817896941 2009-02-28T18:44:56.941 1235817896941 +\N \N \N + +-- !select12 -- +1919810114514 1970-01-23T13:16:50.114514 1919810114514 +89417891234789 1972-11-01T06:18:11.234789 89417891234789 +1235817896941 1970-01-15T15:16:57.896941 1235817896941 +\N \N \N + +-- !select13 -- +1700237372 + +-- !select14 -- +1700237372000 + +-- !select15 -- +1700237372000000 + +-- !select16 -- +1700237372 + +-- !select17 -- +1700237372000 + +-- !select18 -- +1700237372000000 + +-- !select1 -- +2030-11-02T08:35:14.514 +4803-07-17T15:07:14.789 +2009-02-28T18:44:56.941 +\N + +-- !select2 -- +1970-01-23T13:16:50.114514 +1972-11-01T06:18:11.234789 +1970-01-15T15:16:57.896941 +\N + +-- !select4 -- +1919810114514 1919810114514 +89417891234789 488885820389 +1235817896941 1235817896941 +\N \N \N + +-- !select5 -- +1919810114514 2030-11-02T08:35:14.514 1919810114514 +89417891234789 4803-07-17T15:07:14.789 89417891234789 +1235817896941 2009-02-28T18:44:56.941 1235817896941 +\N \N \N + +-- !select6 -- +1919810114514 1970-01-23T13:16:50.114514 1919810114514 +89417891234789 1972-11-01T06:18:11.234789 89417891234789 +1235817896941 1970-01-15T15:16:57.896941 1235817896941 +\N \N \N + +-- !select7 -- +2030-11-02T08:35:14.514 +4803-07-17T15:07:14.789 +2009-02-28T18:44:56.941 +\N + +-- !select8 -- +1970-01-23T13:16:50.114514 +1972-11-01T06:18:11.234789 +1970-01-15T15:16:57.896941 +\N -- !select10 -- 1919810114514 1919810114514 @@ -65,3 +137,13 @@ 1235817896941 1970-01-15T15:16:57.896941 1235817896941 \N \N \N +-- !select_null_datetime -- +1 1672502400 1672502400000 1672502400000000 +2 1672502400 1672502400123 1672502400123000 +3 1672502400 1672502400123 1672502400123456 + +-- !select_not_null_datetime -- +1 1672502400 1672502400000 1672502400000000 +2 1672502400 1672502400123 1672502400123000 +3 1672502400 1672502400123 1672502400123456 + diff --git a/regression-test/suites/correctness/test_from_millisecond_microsecond.groovy b/regression-test/suites/correctness/test_from_millisecond_microsecond.groovy index 15335cfd68b796..13727ff08a94db 100644 --- a/regression-test/suites/correctness/test_from_millisecond_microsecond.groovy +++ b/regression-test/suites/correctness/test_from_millisecond_microsecond.groovy @@ -49,25 +49,16 @@ suite("test_from_millisecond_microsecond") { qt_select1 """ select - from_millisecond(t) as t1 , - microseconds_add(cast(from_unixtime(t/1000) as datetime(3)), cast((t % 1000) * 1000 as int)) as t2 + from_millisecond(t) as t1 from millimicro order by id; """ qt_select2 """ select - from_microsecond(t) as t1 , - microseconds_add(cast(from_unixtime(t/1000000) as datetime(6)), cast((t % 1000000) as int)) as t2 + from_microsecond(t) as t1 from millimicro order by id; """ - qt_select3 """ - select - FROM_UNIXTIME(2147483647),from_second(2147483647), - FROM_UNIXTIME(2147483647 + 1),from_second(2147483647 + 1), - FROM_UNIXTIME(21474836470),from_second(21474836470); - """ - qt_select4 """ select t, @@ -100,12 +91,110 @@ suite("test_from_millisecond_microsecond") { select from_microsecond(t) as t1 from millimicro order by id; """ - qt_select9 """ + qt_select10 """ + select + t, + from_second(t), + second_timestamp(from_second(t)) + from millimicro order by id; + """ + qt_select11 """ + select + t, + from_millisecond(t), + millisecond_timestamp(from_millisecond(t)) + from millimicro order by id; + """ + qt_select12 """ + select + t, + from_microsecond(t), + microsecond_timestamp(from_microsecond(t)) + from millimicro order by id; + """ + qt_select13 """select SECOND_TIMESTAMP(cast('2023-11-18 00:09:32' as datetime));""" + qt_select14 """select MILLISECOND_TIMESTAMP(cast('2023-11-18 00:09:32' as datetime));""" + qt_select15 """select MICROSECOND_TIMESTAMP(cast('2023-11-18 00:09:32' as datetime));""" + sql """ + set enable_nereids_planner=false + """ + qt_select16 """select SECOND_TIMESTAMP(cast('2023-11-18 00:09:32' as datetime));""" + qt_select17 """select MILLISECOND_TIMESTAMP(cast('2023-11-18 00:09:32' as datetime));""" + qt_select18 """select MICROSECOND_TIMESTAMP(cast('2023-11-18 00:09:32' as datetime));""" + + // not null + sql """ DROP TABLE IF EXISTS millimicro """ + sql """ + CREATE TABLE IF NOT EXISTS millimicro ( + `id` INT(11) COMMENT "" , + `t` BigINT COMMENT "" + ) ENGINE=OLAP + DUPLICATE KEY(`id`) + DISTRIBUTED BY HASH(`id`) BUCKETS 1 + PROPERTIES ( + "replication_allocation" = "tag.location.default: 1", + "storage_format" = "V2" + ); + """ + + sql """ + insert into millimicro values(1,1919810114514); + """ + sql """ + insert into millimicro values(2,89417891234789); + """ + sql """ + insert into millimicro values(3,1235817896941); + """ + + sql """ + insert into millimicro values(4,NULL); + """ + + + qt_select1 """ + select + from_millisecond(t) as t1 + from millimicro order by id; + """ + + qt_select2 """ + select + from_microsecond(t) as t1 + from millimicro order by id; + """ + + qt_select4 """ + select + t, + from_second(t), + second_timestamp(from_second(t)) + from millimicro order by id; + """ + qt_select5 """ + select + t, + from_millisecond(t), + millisecond_timestamp(from_millisecond(t)) + from millimicro order by id; + """ + qt_select6 """ select - FROM_UNIXTIME(2147483647),from_second(2147483647), - FROM_UNIXTIME(2147483647 + 1),from_second(2147483647 + 1), - FROM_UNIXTIME(21474836470),from_second(21474836470); + t, + from_microsecond(t), + microsecond_timestamp(from_microsecond(t)) + from millimicro order by id; """ + sql """ + set enable_nereids_planner=true,enable_fold_constant_by_be = false,forbid_unknown_col_stats = false + """ + + qt_select7 """ + select from_millisecond(t) as t1 from millimicro order by id; + """ + qt_select8 """ + select from_microsecond(t) as t1 from millimicro order by id; + """ qt_select10 """ select @@ -128,4 +217,75 @@ suite("test_from_millisecond_microsecond") { microsecond_timestamp(from_microsecond(t)) from millimicro order by id; """ + + // null datetime + sql """ DROP TABLE IF EXISTS millimicro """ + sql """ + CREATE TABLE IF NOT EXISTS millimicro ( + `id` INT(11) NULL COMMENT "" , + `t` Datetime(6) NULL COMMENT "" + ) ENGINE=OLAP + DUPLICATE KEY(`id`) + DISTRIBUTED BY HASH(`id`) BUCKETS 1 + PROPERTIES ( + "replication_allocation" = "tag.location.default: 1", + "storage_format" = "V2" + ); + """ + + sql """ + insert into millimicro values(1,'2023-01-01 00:00:00'); + """ + sql """ + insert into millimicro values(2,'2023-01-01 00:00:00.123'); + """ + sql """ + insert into millimicro values(3,'2023-01-01 00:00:00.123456'); + """ + + qt_select_null_datetime """ + select + id, + SECOND_TIMESTAMP(t), + MILLISECOND_TIMESTAMP(t), + MICROSECOND_TIMESTAMP(t) + from millimicro + order by id; + """ + + + // not null datetime + sql """ DROP TABLE IF EXISTS millimicro """ + sql """ + CREATE TABLE IF NOT EXISTS millimicro ( + `id` INT(11) NULL COMMENT "" , + `t` Datetime(6) COMMENT "" + ) ENGINE=OLAP + DUPLICATE KEY(`id`) + DISTRIBUTED BY HASH(`id`) BUCKETS 1 + PROPERTIES ( + "replication_allocation" = "tag.location.default: 1", + "storage_format" = "V2" + ); + """ + + sql """ + insert into millimicro values(1,'2023-01-01 00:00:00'); + """ + sql """ + insert into millimicro values(2,'2023-01-01 00:00:00.123'); + """ + sql """ + insert into millimicro values(3,'2023-01-01 00:00:00.123456'); + """ + + qt_select_not_null_datetime """ + select + id, + SECOND_TIMESTAMP(t), + MILLISECOND_TIMESTAMP(t), + MICROSECOND_TIMESTAMP(t) + from millimicro + order by id; + """ } \ No newline at end of file From 6bb289743224a837f5934b351b014c3c606dc071 Mon Sep 17 00:00:00 2001 From: Jerry Hu Date: Thu, 23 Nov 2023 20:10:57 +0800 Subject: [PATCH 11/33] [fix](test) order by clause in test_map(#27390) (#27391) pick #27390 --- .../datatype_p0/complex_types/test_map.out | 26 +++++++++---------- .../datatype_p0/complex_types/test_map.groovy | 17 ++++++------ 2 files changed, 22 insertions(+), 21 deletions(-) diff --git a/regression-test/data/datatype_p0/complex_types/test_map.out b/regression-test/data/datatype_p0/complex_types/test_map.out index 00a74e74af0196..4ac971fb3a1590 100644 --- a/regression-test/data/datatype_p0/complex_types/test_map.out +++ b/regression-test/data/datatype_p0/complex_types/test_map.out @@ -1,16 +1,16 @@ -- This file is automatically generated. You should know what you did if you want to edit this -- !sql -- -1 {"key1":"value1"} 1 1 -1 {"key1_1":"value1_1"} 1 1 -1 {"key1":"value1"} 2 1 -1 {"key1_1":"value1_1"} 2 1 -2 {"key2":"value2", "key22":"value22"} 3 2 -2 {"key2_1":"value2_1", "key22_1":"value22_1"} 3 2 -2 {"key2_2":"value2_2", "key22_2":"value22_2"} 3 2 -2 {"key2":"value2", "key22":"value22"} 4 2 -2 {"key2_1":"value2_1", "key22_1":"value22_1"} 4 2 -2 {"key2_2":"value2_2", "key22_2":"value22_2"} 4 2 -3 {"key3":"value3", "key33":"value33", "key3333":"value333"} 5 3 -3 {"key3":"value3", "key33":"value33", "key3333":"value333"} 6 3 -4 {"key4":"value4", "key44":"value44", "key444":"value444", "key4444":"value4444"} \N \N +1 1 {"key1":"value1"} 1 1 +1 1 {"key1":"value1"} 2 1 +2 1 {"key1_1":"value1_1"} 1 1 +2 1 {"key1_1":"value1_1"} 2 1 +3 2 {"key2":"value2", "key22":"value22"} 3 2 +3 2 {"key2":"value2", "key22":"value22"} 4 2 +4 2 {"key2_1":"value2_1", "key22_1":"value22_1"} 3 2 +4 2 {"key2_1":"value2_1", "key22_1":"value22_1"} 4 2 +5 2 {"key2_2":"value2_2", "key22_2":"value22_2"} 3 2 +5 2 {"key2_2":"value2_2", "key22_2":"value22_2"} 4 2 +6 3 {"key3":"value3", "key33":"value33", "key3333":"value333"} 5 3 +6 3 {"key3":"value3", "key33":"value33", "key3333":"value333"} 6 3 +7 4 {"key4":"value4", "key44":"value44", "key444":"value444", "key4444":"value4444"} \N \N diff --git a/regression-test/suites/datatype_p0/complex_types/test_map.groovy b/regression-test/suites/datatype_p0/complex_types/test_map.groovy index 6a3d28c5ed0457..3c146e832e70b6 100644 --- a/regression-test/suites/datatype_p0/complex_types/test_map.groovy +++ b/regression-test/suites/datatype_p0/complex_types/test_map.groovy @@ -20,18 +20,19 @@ suite("test_map") { sql "DROP TABLE IF EXISTS `test_map_table`" sql """ create table `test_map_table` ( + `id` int, `k1` int, `value` map ) distributed by hash(`k1`) buckets 1 properties("replication_num" = "1"); """ - sql 'insert into `test_map_table` values (1, {"key1": "value1"});' - sql 'insert into `test_map_table` values (1, {"key1_1": "value1_1"});' - sql 'insert into `test_map_table` values (2, {"key2": "value2", "key22": "value22"});' - sql 'insert into `test_map_table` values (2, {"key2_1": "value2_1", "key22_1": "value22_1"});' - sql 'insert into `test_map_table` values (2, {"key2_2": "value2_2", "key22_2": "value22_2"});' - sql 'insert into `test_map_table` values (3, {"key3": "value3", "key33": "value33", "key3333": "value333"});' - sql 'insert into `test_map_table` values (4, {"key4": "value4", "key44": "value44", "key444": "value444", "key4444": "value4444"});' + sql 'insert into `test_map_table` values (1, 1, {"key1": "value1"});' + sql 'insert into `test_map_table` values (2, 1, {"key1_1": "value1_1"});' + sql 'insert into `test_map_table` values (3, 2, {"key2": "value2", "key22": "value22"});' + sql 'insert into `test_map_table` values (4, 2, {"key2_1": "value2_1", "key22_1": "value22_1"});' + sql 'insert into `test_map_table` values (5, 2, {"key2_2": "value2_2", "key22_2": "value22_2"});' + sql 'insert into `test_map_table` values (6, 3, {"key3": "value3", "key33": "value33", "key3333": "value333"});' + sql 'insert into `test_map_table` values (7, 4, {"key4": "value4", "key44": "value44", "key444": "value444", "key4444": "value4444"});' sql "DROP TABLE IF EXISTS `test_map_table_right`" sql """ @@ -49,6 +50,6 @@ suite("test_map") { sql 'insert into `test_map_table_right` values(6, 3);' qt_sql """ - select * from test_map_table left join test_map_table_right on test_map_table.k1 = test_map_table_right.value order by 1,3; + select * from test_map_table left join test_map_table_right on test_map_table.k1 = test_map_table_right.value order by 1,2,4,5; """ } From ff117fdd8757179639f659679fbd22641104a4b5 Mon Sep 17 00:00:00 2001 From: jakevin Date: Thu, 23 Nov 2023 22:03:57 +0800 Subject: [PATCH 12/33] [performance](Planner): optimize getStringValue() in DateLiteral (#27363) (#27470) - reduce cost of `getStringValue()` - original code don't consider `microsecond` part in `getStringValue()` (cherry picked from commit 044a295541c0a49b30278c9575d6f2bea1d5a339) --- .../apache/doris/analysis/DateLiteral.java | 56 +++++++++++++++---- 1 file changed, 45 insertions(+), 11 deletions(-) diff --git a/fe/fe-core/src/main/java/org/apache/doris/analysis/DateLiteral.java b/fe/fe-core/src/main/java/org/apache/doris/analysis/DateLiteral.java index 336fd314e0e5b3..811b8d257b709e 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/analysis/DateLiteral.java +++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/DateLiteral.java @@ -66,6 +66,14 @@ public class DateLiteral extends LiteralExpr { private static final Logger LOG = LogManager.getLogger(DateLiteral.class); + private static final double[] SCALE_FACTORS; + + static { + SCALE_FACTORS = new double[7]; + for (int i = 0; i < SCALE_FACTORS.length; i++) { + SCALE_FACTORS[i] = Math.pow(10, 6 - i); + } + } private static final DateLiteral MIN_DATE = new DateLiteral(0000, 1, 1); private static final DateLiteral MAX_DATE = new DateLiteral(9999, 12, 31); @@ -595,23 +603,49 @@ public String toSqlImpl() { return "'" + getStringValue() + "'"; } + private void fillPaddedValue(char[] buffer, int start, long value, int length) { + int end = start + length; + for (int i = end - 1; i >= start; i--) { + buffer[i] = (char) ('0' + value % 10); + value /= 10; + } + } + @Override public String getStringValue() { + char[] dateTimeChars = new char[26]; // Enough to hold "YYYY-MM-DD HH:MM:SS.mmmmmm" + + // Populate the date part + fillPaddedValue(dateTimeChars, 0, year, 4); + dateTimeChars[4] = '-'; + fillPaddedValue(dateTimeChars, 5, month, 2); + dateTimeChars[7] = '-'; + fillPaddedValue(dateTimeChars, 8, day, 2); + if (type.isDate() || type.isDateV2()) { - return String.format("%04d-%02d-%02d", year, month, day); - } else if (type.isDatetimeV2()) { + return new String(dateTimeChars, 0, 10); + } + + // Populate the time part + dateTimeChars[10] = ' '; + fillPaddedValue(dateTimeChars, 11, hour, 2); + dateTimeChars[13] = ':'; + fillPaddedValue(dateTimeChars, 14, minute, 2); + dateTimeChars[16] = ':'; + fillPaddedValue(dateTimeChars, 17, second, 2); + + if (type.isDatetimeV2()) { int scale = ((ScalarType) type).getScalarScale(); - long ms = Double.valueOf(microsecond / (int) (Math.pow(10, 6 - ((ScalarType) type).getScalarScale())) - * (Math.pow(10, 6 - ((ScalarType) type).getScalarScale()))).longValue(); - String tmp = String.format("%04d-%02d-%02d %02d:%02d:%02d", - year, month, day, hour, minute, second); - if (ms == 0) { - return tmp; + long scaledMicroseconds = (long) (microsecond / SCALE_FACTORS[scale]); + + if (scaledMicroseconds != 0) { + dateTimeChars[19] = '.'; + fillPaddedValue(dateTimeChars, 20, (int) scaledMicroseconds, scale); + return new String(dateTimeChars, 0, 20 + scale); } - return tmp + String.format(".%06d", ms).substring(0, scale + 1); - } else { - return String.format("%04d-%02d-%02d %02d:%02d:%02d", year, month, day, hour, minute, second); } + + return new String(dateTimeChars, 0, 19); } @Override From 63c46e74ba59f5404d4b2eed388a681a5072cd8a Mon Sep 17 00:00:00 2001 From: Pxl Date: Thu, 23 Nov 2023 22:28:13 +0800 Subject: [PATCH 13/33] [Chore](pick) do not push down agg on aggregate column (#27356) (#27498) --- be/src/olap/rowset/segment_v2/column_reader.cpp | 3 +++ be/src/olap/rowset/segment_v2/zone_map_index.cpp | 5 ----- be/src/olap/rowset/segment_v2/zone_map_index.h | 2 -- .../nereids/rules/implementation/AggregateStrategies.java | 7 ++----- .../main/java/org/apache/doris/planner/OlapScanNode.java | 7 +++++++ .../data/mv_p0/ssb/multiple_no_where/multiple_no_where.out | 3 +++ .../mv_p0/ssb/multiple_no_where/multiple_no_where.groovy | 1 + 7 files changed, 16 insertions(+), 12 deletions(-) diff --git a/be/src/olap/rowset/segment_v2/column_reader.cpp b/be/src/olap/rowset/segment_v2/column_reader.cpp index 6597cd2acf3f13..cf331ead84c876 100644 --- a/be/src/olap/rowset/segment_v2/column_reader.cpp +++ b/be/src/olap/rowset/segment_v2/column_reader.cpp @@ -301,6 +301,9 @@ Status ColumnReader::get_row_ranges_by_zone_map( } Status ColumnReader::next_batch_of_zone_map(size_t* n, vectorized::MutableColumnPtr& dst) const { + if (_segment_zone_map == nullptr) { + return Status::InternalError("segment zonemap not exist"); + } // TODO: this work to get min/max value seems should only do once FieldType type = _type_info->type(); std::unique_ptr min_value(WrapperField::create_by_type(type, _meta_length)); diff --git a/be/src/olap/rowset/segment_v2/zone_map_index.cpp b/be/src/olap/rowset/segment_v2/zone_map_index.cpp index 75f0a9d845c8b0..75d9ae5a2c98bc 100644 --- a/be/src/olap/rowset/segment_v2/zone_map_index.cpp +++ b/be/src/olap/rowset/segment_v2/zone_map_index.cpp @@ -82,11 +82,6 @@ void TypedZoneMapIndexWriter::reset_page_zone_map() { _page_zone_map.pass_all = true; } -template -void TypedZoneMapIndexWriter::reset_segment_zone_map() { - _segment_zone_map.pass_all = true; -} - template Status TypedZoneMapIndexWriter::flush() { // Update segment zone map. diff --git a/be/src/olap/rowset/segment_v2/zone_map_index.h b/be/src/olap/rowset/segment_v2/zone_map_index.h index 686b63a9de7175..d7dcc7d0c7422e 100644 --- a/be/src/olap/rowset/segment_v2/zone_map_index.h +++ b/be/src/olap/rowset/segment_v2/zone_map_index.h @@ -94,7 +94,6 @@ class ZoneMapIndexWriter { virtual uint64_t size() const = 0; virtual void reset_page_zone_map() = 0; - virtual void reset_segment_zone_map() = 0; }; // Zone map index is represented by an IndexedColumn with ordinal index. @@ -120,7 +119,6 @@ class TypedZoneMapIndexWriter final : public ZoneMapIndexWriter { uint64_t size() const override { return _estimated_size; } void reset_page_zone_map() override; - void reset_segment_zone_map() override; private: void _reset_zone_map(ZoneMap* zone_map) { diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/implementation/AggregateStrategies.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/implementation/AggregateStrategies.java index 6521929f164c13..89373cc95c3e49 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/implementation/AggregateStrategies.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/implementation/AggregateStrategies.java @@ -436,11 +436,8 @@ private LogicalAggregate storageLayerAggregate( for (SlotReference slot : usedSlotInTable) { Column column = slot.getColumn().get(); - if (logicalScan instanceof LogicalOlapScan) { - KeysType keysType = ((LogicalOlapScan) logicalScan).getTable().getKeysType(); - if (keysType == KeysType.AGG_KEYS && !column.isKey()) { - return canNotPush; - } + if (column.isAggregated()) { + return canNotPush; } // The zone map max length of CharFamily is 512, do not // over the length: https://github.com/apache/doris/pull/6293 diff --git a/fe/fe-core/src/main/java/org/apache/doris/planner/OlapScanNode.java b/fe/fe-core/src/main/java/org/apache/doris/planner/OlapScanNode.java index 4d5fb914a72c62..4523612eaac48d 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/planner/OlapScanNode.java +++ b/fe/fe-core/src/main/java/org/apache/doris/planner/OlapScanNode.java @@ -1663,6 +1663,13 @@ public boolean pushDownAggNoGroupingCheckCol(FunctionCallExpr aggExpr, Column co return false; } + if (aggExpr.getChild(0) instanceof SlotRef) { + SlotRef slot = (SlotRef) aggExpr.getChild(0); + if (CreateMaterializedViewStmt.isMVColumn(slot.getColumnName()) && slot.getColumn().isAggregated()) { + return false; + } + } + return true; } } diff --git a/regression-test/data/mv_p0/ssb/multiple_no_where/multiple_no_where.out b/regression-test/data/mv_p0/ssb/multiple_no_where/multiple_no_where.out index ceec2c123596c8..f402c4e2cc3305 100644 --- a/regression-test/data/mv_p0/ssb/multiple_no_where/multiple_no_where.out +++ b/regression-test/data/mv_p0/ssb/multiple_no_where/multiple_no_where.out @@ -26,3 +26,6 @@ ASIA ASIA 1992 1 1 4 1 1 2 8 2 2 +-- !select -- +1 2 + diff --git a/regression-test/suites/mv_p0/ssb/multiple_no_where/multiple_no_where.groovy b/regression-test/suites/mv_p0/ssb/multiple_no_where/multiple_no_where.groovy index e671f118233fce..59d4fbcede6860 100644 --- a/regression-test/suites/mv_p0/ssb/multiple_no_where/multiple_no_where.groovy +++ b/regression-test/suites/mv_p0/ssb/multiple_no_where/multiple_no_where.groovy @@ -231,4 +231,5 @@ suite ("multiple_no_where") { contains "(temp_2)" } qt_select_temp_2 """SELECT lo_orderkey, sum(lo_extendedprice),max(lo_extendedprice), min(lo_extendedprice) from lineorder_flat group by lo_orderkey order by lo_orderkey;""" + qt_select """ select min(lo_extendedprice),max(lo_extendedprice) from lineorder_flat;""" } From 9ccde8c61f4627280ebaf87db4899fcfb45c2e38 Mon Sep 17 00:00:00 2001 From: AKIRA <33112463+Kikyou1997@users.noreply.github.com> Date: Thu, 23 Nov 2023 23:29:30 +0900 Subject: [PATCH 14/33] [fix](stats) table not exists error msg not print objects name #27074 (#27463) --- .../org/apache/doris/analysis/ShowTableStatsStmt.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/fe/fe-core/src/main/java/org/apache/doris/analysis/ShowTableStatsStmt.java b/fe/fe-core/src/main/java/org/apache/doris/analysis/ShowTableStatsStmt.java index 7cf34dcad307ef..3a80daebc913d1 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/analysis/ShowTableStatsStmt.java +++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/ShowTableStatsStmt.java @@ -85,21 +85,21 @@ public void analyze(Analyzer analyzer) throws UserException { } CatalogIf catalog = Env.getCurrentEnv().getCatalogMgr().getCatalog(tableName.getCtl()); if (catalog == null) { - ErrorReport.reportAnalysisException("Catalog: {} not exists", tableName.getCtl()); + ErrorReport.reportAnalysisException(String.format("Catalog: %s not exists", tableName.getCtl())); } DatabaseIf db = catalog.getDb(tableName.getDb()).orElse(null); if (db == null) { - ErrorReport.reportAnalysisException("DB: {} not exists", tableName.getDb()); + ErrorReport.reportAnalysisException(String.format("DB: %s not exists", tableName.getDb())); } table = db.getTable(tableName.getTbl()).orElse(null); if (table == null) { - ErrorReport.reportAnalysisException("Table: {} not exists", tableName.getTbl()); + ErrorReport.reportAnalysisException(String.format("Table: %s not exists", tableName.getTbl())); } if (partitionNames != null) { String partitionName = partitionNames.getPartitionNames().get(0); Partition partition = table.getPartition(partitionName); if (partition == null) { - ErrorReport.reportAnalysisException("Partition: {} not exists", partitionName); + ErrorReport.reportAnalysisException(String.format("Partition: %s not exists", partitionName)); } } if (!Env.getCurrentEnv().getAccessManager() From 95f48194ffda9e91bdf6491932941bb0e9439995 Mon Sep 17 00:00:00 2001 From: zhangstar333 <87313068+zhangstar333@users.noreply.github.com> Date: Thu, 23 Nov 2023 22:31:08 +0800 Subject: [PATCH 15/33] [improve](nereids) support agg function of count(const value) pushdown #26677 (#27499) support sql: select count(1)-count(not null) from table, the agg of count could push down. --- .../rewrite/CountLiteralToCountStar.java | 2 +- .../explain/test_pushdown_explain.groovy | 33 +++++++++++++++++++ 2 files changed, 34 insertions(+), 1 deletion(-) diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/CountLiteralToCountStar.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/CountLiteralToCountStar.java index d50d8b5a8e4449..fc08273b84f4c3 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/CountLiteralToCountStar.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/CountLiteralToCountStar.java @@ -57,7 +57,7 @@ private boolean rewriteCountLiteral(List oldExprs, List replaced.put(c, new Count())); expr = expr.rewriteUp(s -> replaced.getOrDefault(s, s)); - changed = !replaced.isEmpty(); + changed |= !replaced.isEmpty(); newExprs.add((NamedExpression) expr); } return changed; diff --git a/regression-test/suites/nereids_p0/explain/test_pushdown_explain.groovy b/regression-test/suites/nereids_p0/explain/test_pushdown_explain.groovy index c7fe7d7b93eda0..091ae98bbb334b 100644 --- a/regression-test/suites/nereids_p0/explain/test_pushdown_explain.groovy +++ b/regression-test/suites/nereids_p0/explain/test_pushdown_explain.groovy @@ -25,4 +25,37 @@ suite("test_pushdown_explain") { contains "PREDICATES:" } qt_select "select k1 from baseall where k1 = 1" + + sql "DROP TABLE IF EXISTS test_lineorder" + sql """ CREATE TABLE `test_lineorder` ( + `lo_orderkey` INT NOT NULL COMMENT '\"\"', + `lo_linenumber` INT NOT NULL COMMENT '\"\"', + `lo_shipmode` VARCHAR(11) NOT NULL COMMENT '\"\"' + ) ENGINE=OLAP + DUPLICATE KEY(`lo_orderkey`) + DISTRIBUTED BY HASH(`lo_orderkey`) BUCKETS 48 + PROPERTIES ( + "replication_allocation" = "tag.location.default: 1" + ); """ + sql """ insert into test_lineorder values(1,2,"asd"); """ + explain { + sql("select count(1) from test_lineorder;") + contains "pushAggOp=COUNT" + } + explain { + sql("select count(*) from test_lineorder;") + contains "pushAggOp=COUNT" + } + explain { + sql("select count(1) - count(lo_shipmode) from test_lineorder;") + contains "pushAggOp=COUNT" + } + explain { + sql("select count(lo_orderkey) from test_lineorder;") + contains "pushAggOp=COUNT" + } + explain { + sql("select count(cast(lo_orderkey as bigint)) from test_lineorder;") + contains "pushAggOp=COUNT" + } } From 89c2f683ab4c2f3d53359d676ab615a3ec323f9c Mon Sep 17 00:00:00 2001 From: Mingyu Chen Date: Thu, 23 Nov 2023 22:56:38 +0800 Subject: [PATCH 16/33] [test](fe-ut) fix unstable MysqlServerTest (#27459) Need to find a unbind port for MysqlServerTest --- .../org/apache/doris/mysql/MysqlServerTest.java | 15 ++++----------- .../apache/doris/utframe/TestWithFeService.java | 2 +- 2 files changed, 5 insertions(+), 12 deletions(-) diff --git a/fe/fe-core/src/test/java/org/apache/doris/mysql/MysqlServerTest.java b/fe/fe-core/src/test/java/org/apache/doris/mysql/MysqlServerTest.java index ed62bc65040758..9bf805b277335b 100644 --- a/fe/fe-core/src/test/java/org/apache/doris/mysql/MysqlServerTest.java +++ b/fe/fe-core/src/test/java/org/apache/doris/mysql/MysqlServerTest.java @@ -19,6 +19,7 @@ import org.apache.doris.qe.ConnectContext; import org.apache.doris.qe.ConnectScheduler; +import org.apache.doris.utframe.TestWithFeService; import mockit.Delegate; import mockit.Expectations; @@ -31,7 +32,6 @@ import java.io.IOException; import java.net.InetSocketAddress; -import java.net.ServerSocket; import java.nio.channels.SocketChannel; public class MysqlServerTest { @@ -79,10 +79,7 @@ public Boolean answer() throws Throwable { @Test public void testNormal() throws IOException, InterruptedException { - ServerSocket socket = new ServerSocket(0); - int port = socket.getLocalPort(); - socket.close(); - + int port = TestWithFeService.findValidPort(); MysqlServer server = new MysqlServer(port, scheduler); Assert.assertTrue(server.start()); @@ -108,9 +105,7 @@ public void testNormal() throws IOException, InterruptedException { @Test public void testBindFail() throws IOException { - ServerSocket socket = new ServerSocket(0); - int port = socket.getLocalPort(); - socket.close(); + int port = TestWithFeService.findValidPort(); MysqlServer server = new MysqlServer(port, scheduler); Assert.assertTrue(server.start()); MysqlServer server1 = new MysqlServer(port, scheduler); @@ -121,9 +116,7 @@ public void testBindFail() throws IOException { @Test public void testSubFail() throws IOException, InterruptedException { - ServerSocket socket = new ServerSocket(0); - int port = socket.getLocalPort(); - socket.close(); + int port = TestWithFeService.findValidPort(); MysqlServer server = new MysqlServer(port, badScheduler); Assert.assertTrue(server.start()); diff --git a/fe/fe-core/src/test/java/org/apache/doris/utframe/TestWithFeService.java b/fe/fe-core/src/test/java/org/apache/doris/utframe/TestWithFeService.java index b032ddd2a50177..c27bdbac4c3fe9 100644 --- a/fe/fe-core/src/test/java/org/apache/doris/utframe/TestWithFeService.java +++ b/fe/fe-core/src/test/java/org/apache/doris/utframe/TestWithFeService.java @@ -495,7 +495,7 @@ protected void cleanDorisFeDir() { } } - protected int findValidPort() { + public static int findValidPort() { int port = 0; while (true) { try (ServerSocket socket = new ServerSocket(0)) { From 623f0a9db965361ec7ac9a53a0c72b5666a0a26c Mon Sep 17 00:00:00 2001 From: Ashin Gau Date: Thu, 23 Nov 2023 23:16:42 +0800 Subject: [PATCH 17/33] [opt](MergedIO) no need to merge large columns (#27315) (#27497) 1. Fix a profile bug of `MergeRangeFileReader`, and add a profile `ApplyBytes` to show the total bytes of ranges. 2. There's no need to merge large columns, because `MergeRangeFileReader` will increase the copy time. --- be/src/io/fs/buffered_reader.cpp | 10 +++++----- be/src/io/fs/buffered_reader.h | 16 ++++++++++++---- be/src/vec/exec/format/orc/vorc_reader.cpp | 12 ++++++++++-- be/test/io/fs/buffered_reader_test.cpp | 6 +++--- 4 files changed, 30 insertions(+), 14 deletions(-) diff --git a/be/src/io/fs/buffered_reader.cpp b/be/src/io/fs/buffered_reader.cpp index 8bee5f468fa6e3..fdcba04190f992 100644 --- a/be/src/io/fs/buffered_reader.cpp +++ b/be/src/io/fs/buffered_reader.cpp @@ -55,7 +55,7 @@ Status MergeRangeFileReader::read_at_impl(size_t offset, Slice result, size_t* b Status st = _reader->read_at(offset, result, bytes_read, io_ctx); _statistics.merged_io++; _statistics.request_bytes += *bytes_read; - _statistics.read_bytes += *bytes_read; + _statistics.merged_bytes += *bytes_read; return st; } if (offset + result.size > _random_access_ranges[range_index].end_offset) { @@ -69,10 +69,10 @@ Status MergeRangeFileReader::read_at_impl(size_t offset, Slice result, size_t* b if (cached_data.contains(offset)) { // has cached data in box _read_in_box(cached_data, offset, result, &has_read); + _statistics.request_bytes += has_read; if (has_read == result.size) { // all data is read in cache *bytes_read = has_read; - _statistics.request_bytes += has_read; return Status::OK(); } } else if (!cached_data.empty()) { @@ -92,7 +92,7 @@ Status MergeRangeFileReader::read_at_impl(size_t offset, Slice result, size_t* b *bytes_read = has_read + read_size; _statistics.merged_io++; _statistics.request_bytes += read_size; - _statistics.read_bytes += read_size; + _statistics.merged_bytes += read_size; return Status::OK(); } @@ -187,7 +187,7 @@ Status MergeRangeFileReader::read_at_impl(size_t offset, Slice result, size_t* b *bytes_read = has_read + read_size; _statistics.merged_io++; _statistics.request_bytes += read_size; - _statistics.read_bytes += read_size; + _statistics.merged_bytes += read_size; return Status::OK(); } @@ -315,7 +315,7 @@ Status MergeRangeFileReader::_fill_box(int range_index, size_t start_offset, siz RETURN_IF_ERROR( _reader->read_at(start_offset, Slice(_read_slice, to_read), bytes_read, io_ctx)); _statistics.merged_io++; - _statistics.read_bytes += *bytes_read; + _statistics.merged_bytes += *bytes_read; } SCOPED_RAW_TIMER(&_statistics.copy_time); diff --git a/be/src/io/fs/buffered_reader.h b/be/src/io/fs/buffered_reader.h index c9b1eb96ecdc5b..b7d5a39da722eb 100644 --- a/be/src/io/fs/buffered_reader.h +++ b/be/src/io/fs/buffered_reader.h @@ -81,7 +81,8 @@ class MergeRangeFileReader : public io::FileReader { int64_t request_io = 0; int64_t merged_io = 0; int64_t request_bytes = 0; - int64_t read_bytes = 0; + int64_t merged_bytes = 0; + int64_t apply_bytes = 0; }; struct RangeCachedData { @@ -148,6 +149,9 @@ class MergeRangeFileReader : public io::FileReader { // Equivalent min size of each IO that can reach the maximum storage speed limit: // 512KB for oss, 4KB for hdfs _equivalent_io_size = _is_oss ? OSS_MIN_IO_SIZE : HDFS_MIN_IO_SIZE; + for (const PrefetchRange& range : _random_access_ranges) { + _statistics.apply_bytes += range.end_offset - range.start_offset; + } if (_profile != nullptr) { const char* random_profile = "MergedSmallIO"; ADD_TIMER(_profile, random_profile); @@ -157,7 +161,9 @@ class MergeRangeFileReader : public io::FileReader { _merged_io = ADD_CHILD_COUNTER(_profile, "MergedIO", TUnit::UNIT, random_profile); _request_bytes = ADD_CHILD_COUNTER(_profile, "RequestBytes", TUnit::BYTES, random_profile); - _read_bytes = ADD_CHILD_COUNTER(_profile, "MergedBytes", TUnit::BYTES, random_profile); + _merged_bytes = + ADD_CHILD_COUNTER(_profile, "MergedBytes", TUnit::BYTES, random_profile); + _apply_bytes = ADD_CHILD_COUNTER(_profile, "ApplyBytes", TUnit::BYTES, random_profile); } } @@ -182,7 +188,8 @@ class MergeRangeFileReader : public io::FileReader { COUNTER_UPDATE(_request_io, _statistics.request_io); COUNTER_UPDATE(_merged_io, _statistics.merged_io); COUNTER_UPDATE(_request_bytes, _statistics.request_bytes); - COUNTER_UPDATE(_read_bytes, _statistics.read_bytes); + COUNTER_UPDATE(_merged_bytes, _statistics.merged_bytes); + COUNTER_UPDATE(_apply_bytes, _statistics.apply_bytes); } } return Status::OK(); @@ -218,7 +225,8 @@ class MergeRangeFileReader : public io::FileReader { RuntimeProfile::Counter* _request_io; RuntimeProfile::Counter* _merged_io; RuntimeProfile::Counter* _request_bytes; - RuntimeProfile::Counter* _read_bytes; + RuntimeProfile::Counter* _merged_bytes; + RuntimeProfile::Counter* _apply_bytes; int _search_read_range(size_t start_offset, size_t end_offset); void _clean_cached_data(RangeCachedData& cached_data); diff --git a/be/src/vec/exec/format/orc/vorc_reader.cpp b/be/src/vec/exec/format/orc/vorc_reader.cpp index 75e9aeff77f8da..8ec749712d6574 100644 --- a/be/src/vec/exec/format/orc/vorc_reader.cpp +++ b/be/src/vec/exec/format/orc/vorc_reader.cpp @@ -2183,6 +2183,7 @@ void ORCFileInputStream::beforeReadStripe( // Generate prefetch ranges, build stripe file reader. uint64_t offset = current_strip_information->getOffset(); std::vector prefetch_ranges; + size_t total_io_size = 0; for (uint64_t stream_id = 0; stream_id < current_strip_information->getNumberOfStreams(); ++stream_id) { std::unique_ptr stream = @@ -2190,13 +2191,20 @@ void ORCFileInputStream::beforeReadStripe( uint32_t columnId = stream->getColumnId(); uint64_t length = stream->getLength(); if (selected_columns[columnId]) { + total_io_size += length; doris::io::PrefetchRange prefetch_range = {offset, offset + length}; prefetch_ranges.emplace_back(std::move(prefetch_range)); } offset += length; } - // The underlying page reader will prefetch data in column. - _file_reader.reset(new io::MergeRangeFileReader(_profile, _inner_reader, prefetch_ranges)); + size_t num_columns = std::count_if(selected_columns.begin(), selected_columns.end(), + [](bool selected) { return selected; }); + if (total_io_size / num_columns < io::MergeRangeFileReader::SMALL_IO) { + // The underlying page reader will prefetch data in column. + _file_reader.reset(new io::MergeRangeFileReader(_profile, _inner_reader, prefetch_ranges)); + } else { + _file_reader = _inner_reader; + } } } // namespace doris::vectorized diff --git a/be/test/io/fs/buffered_reader_test.cpp b/be/test/io/fs/buffered_reader_test.cpp index 97ef2171366388..bb6861a04dc665 100644 --- a/be/test/io/fs/buffered_reader_test.cpp +++ b/be/test/io/fs/buffered_reader_test.cpp @@ -295,13 +295,13 @@ TEST_F(BufferedReaderTest, test_read_amplify) { merge_reader.read_at(1024 * kb, result, &bytes_read, nullptr); EXPECT_EQ(bytes_read, 1024 * kb); EXPECT_EQ(merge_reader.statistics().request_bytes, 1024 * kb); - EXPECT_EQ(merge_reader.statistics().read_bytes, 1024 * kb); + EXPECT_EQ(merge_reader.statistics().merged_bytes, 1024 * kb); // read column0 result.size = 1 * kb; // will merge column 0 ~ 3 merge_reader.read_at(0, result, &bytes_read, nullptr); EXPECT_EQ(bytes_read, 1 * kb); - EXPECT_EQ(merge_reader.statistics().read_bytes, 1024 * kb + 12 * kb); + EXPECT_EQ(merge_reader.statistics().merged_bytes, 1024 * kb + 12 * kb); // read column1 result.size = 1 * kb; merge_reader.read_at(3 * kb, result, &bytes_read, nullptr); @@ -312,7 +312,7 @@ TEST_F(BufferedReaderTest, test_read_amplify) { result.size = 5 * kb; merge_reader.read_at(7 * kb, result, &bytes_read, nullptr); EXPECT_EQ(merge_reader.statistics().request_bytes, 1024 * kb + 8 * kb); - EXPECT_EQ(merge_reader.statistics().read_bytes, 1024 * kb + 12 * kb); + EXPECT_EQ(merge_reader.statistics().merged_bytes, 1024 * kb + 12 * kb); } TEST_F(BufferedReaderTest, test_merged_io) { From b15f3d623299ae2241a4e09691e1d79868c27f22 Mon Sep 17 00:00:00 2001 From: yujun Date: Thu, 23 Nov 2023 23:51:03 +0800 Subject: [PATCH 18/33] [improvement](drop tablet) impr gc shutdown tablet lock (#26151) (#27478) --- be/src/olap/tablet_manager.cpp | 44 ++++++++++++++++++++++++---------- be/src/olap/tablet_manager.h | 4 ++++ 2 files changed, 36 insertions(+), 12 deletions(-) diff --git a/be/src/olap/tablet_manager.cpp b/be/src/olap/tablet_manager.cpp index 28137309c0d487..f6cfb6b6dc4dac 100644 --- a/be/src/olap/tablet_manager.cpp +++ b/be/src/olap/tablet_manager.cpp @@ -638,12 +638,24 @@ TabletSharedPtr TabletManager::_get_tablet_unlocked(TTabletId tablet_id, bool in TabletSharedPtr tablet; tablet = _get_tablet_unlocked(tablet_id); if (tablet == nullptr && include_deleted) { - std::shared_lock rdlock(_shutdown_tablets_lock); - for (auto& deleted_tablet : _shutdown_tablets) { - CHECK(deleted_tablet != nullptr) << "deleted tablet is nullptr"; - if (deleted_tablet->tablet_id() == tablet_id) { - tablet = deleted_tablet; - break; + { + std::shared_lock rdlock(_shutdown_tablets_lock); + for (auto& deleted_tablet : _shutdown_tablets) { + CHECK(deleted_tablet != nullptr) << "deleted tablet is nullptr"; + if (deleted_tablet->tablet_id() == tablet_id) { + tablet = deleted_tablet; + break; + } + } + } + if (tablet == nullptr) { + std::shared_lock rdlock(_shutdown_deleting_tablets_lock); + for (auto& deleted_tablet : _shutdown_deleting_tablets) { + CHECK(deleted_tablet != nullptr) << "deleted tablet is nullptr"; + if (deleted_tablet->tablet_id() == tablet_id) { + tablet = deleted_tablet; + break; + } } } } @@ -1065,9 +1077,17 @@ Status TabletManager::start_trash_sweep() { clean_num = 0; // should get write lock here, because it will remove tablet from shut_down_tablets // and get tablet will access shut_down_tablets - std::lock_guard wrlock(_shutdown_tablets_lock); - auto it = _shutdown_tablets.begin(); - while (it != _shutdown_tablets.end()) { + { + std::lock_guard wrlock1(_shutdown_tablets_lock); + std::lock_guard wrlock2(_shutdown_deleting_tablets_lock); + for (const auto& tablet : _shutdown_tablets) { + _shutdown_deleting_tablets.push_back(tablet); + } + _shutdown_tablets.clear(); + } + std::lock_guard wrlock(_shutdown_deleting_tablets_lock); + auto it = _shutdown_deleting_tablets.begin(); + while (it != _shutdown_deleting_tablets.end()) { // check if the meta has the tablet info and its state is shutdown if (it->use_count() > 1) { // it means current tablet is referenced by other thread @@ -1086,7 +1106,7 @@ Status TabletManager::start_trash_sweep() { << " old tablet_uid=" << (*it)->tablet_uid() << " cur tablet_uid=" << tablet_meta->tablet_uid(); // remove it from list - it = _shutdown_tablets.erase(it); + it = _shutdown_deleting_tablets.erase(it); continue; } // move data to trash @@ -1115,7 +1135,7 @@ Status TabletManager::start_trash_sweep() { << "tablet_id=" << (*it)->tablet_id() << ", schema_hash=" << (*it)->schema_hash() << ", tablet_path=" << tablet_path; - it = _shutdown_tablets.erase(it); + it = _shutdown_deleting_tablets.erase(it); ++clean_num; } else { // if could not find tablet info in meta store, then check if dir existed @@ -1135,7 +1155,7 @@ Status TabletManager::start_trash_sweep() { << "tablet_id=" << (*it)->tablet_id() << ", schema_hash=" << (*it)->schema_hash() << ", tablet_path=" << tablet_path; - it = _shutdown_tablets.erase(it); + it = _shutdown_deleting_tablets.erase(it); } } diff --git a/be/src/olap/tablet_manager.h b/be/src/olap/tablet_manager.h index 4f6b3278194de0..aa7635021959d6 100644 --- a/be/src/olap/tablet_manager.h +++ b/be/src/olap/tablet_manager.h @@ -242,6 +242,10 @@ class TabletManager { std::map> _partition_tablet_map; std::vector _shutdown_tablets; + // gc thread will move _shutdown_tablets to _shutdown_deleting_tablets + std::shared_mutex _shutdown_deleting_tablets_lock; + std::list _shutdown_deleting_tablets; + std::mutex _tablet_stat_cache_mutex; std::shared_ptr> _tablet_stat_list_cache = std::make_shared>(); From 9949410e5a190e9604aa8cb505a56018311e87d9 Mon Sep 17 00:00:00 2001 From: AKIRA <33112463+Kikyou1997@users.noreply.github.com> Date: Fri, 24 Nov 2023 00:54:48 +0900 Subject: [PATCH 19/33] [doc](stats) SQL manual for stats (#27461) --- .../Manipulation/ANALYZE.md | 66 +++++++++++ .../Show-Statements/SHOW-ANALYZE.md | 109 +++++++++++++++++ .../Show-Statements/SHOW-COLUMN-STATS.md | 71 +++++++++++ .../Show-Statements/SHOW-TABLE-STATS.md | 74 ++++++++++++ .../Manipulation/ANALYZE.md | 66 +++++++++++ .../Show-Statements/SHOW-ANALYZE.md | 111 ++++++++++++++++++ .../Show-Statements/SHOW-COLUMN-STATS.md | 72 ++++++++++++ .../Show-Statements/SHOW-TABLE-STATS.md | 77 ++++++++++++ 8 files changed, 646 insertions(+) create mode 100644 docs/en/docs/sql-manual/sql-reference/Data-Manipulation-Statements/Manipulation/ANALYZE.md create mode 100644 docs/en/docs/sql-manual/sql-reference/Show-Statements/SHOW-ANALYZE.md create mode 100644 docs/en/docs/sql-manual/sql-reference/Show-Statements/SHOW-COLUMN-STATS.md create mode 100644 docs/en/docs/sql-manual/sql-reference/Show-Statements/SHOW-TABLE-STATS.md create mode 100644 docs/zh-CN/docs/sql-manual/sql-reference/Data-Manipulation-Statements/Manipulation/ANALYZE.md create mode 100644 docs/zh-CN/docs/sql-manual/sql-reference/Show-Statements/SHOW-ANALYZE.md create mode 100644 docs/zh-CN/docs/sql-manual/sql-reference/Show-Statements/SHOW-COLUMN-STATS.md create mode 100644 docs/zh-CN/docs/sql-manual/sql-reference/Show-Statements/SHOW-TABLE-STATS.md diff --git a/docs/en/docs/sql-manual/sql-reference/Data-Manipulation-Statements/Manipulation/ANALYZE.md b/docs/en/docs/sql-manual/sql-reference/Data-Manipulation-Statements/Manipulation/ANALYZE.md new file mode 100644 index 00000000000000..2a02d4b5926141 --- /dev/null +++ b/docs/en/docs/sql-manual/sql-reference/Data-Manipulation-Statements/Manipulation/ANALYZE.md @@ -0,0 +1,66 @@ +--- +{ + "title": "ANALYZE", + "language": "en" +} +--- + + + +## ANALYZE + +### Name + + + +ANALYZE + +### Description + +This statement is used to collect statistical information for various columns. + +```sql +ANALYZE < TABLE | DATABASE table_name | db_name > + [ (column_name [, ...]) ] + [ [ WITH SYNC ] [ WITH SAMPLE PERCENT | ROWS ] ]; +``` + +- `table_name`: The specified target table. It can be in the format `db_name.table_name`. +- `column_name`: The specified target column. It must be an existing column in `table_name`. You can specify multiple column names separated by commas. +- `sync`: Collect statistics synchronously. Returns after collection. If not specified, it executes asynchronously and returns a JOB ID. +- `sample percent | rows`: Collect statistics with sampling. You can specify a sampling percentage or a number of sampling rows. + +### Example + +Collect statistical data for a table with a 10% sampling rate: + +```sql +ANALYZE TABLE lineitem WITH SAMPLE PERCENT 10; +``` + +Collect statistical data for a table with a sample of 100,000 rows: + +```sql +ANALYZE TABLE lineitem WITH SAMPLE ROWS 100000; +``` + +### Keywords + +ANALYZE \ No newline at end of file diff --git a/docs/en/docs/sql-manual/sql-reference/Show-Statements/SHOW-ANALYZE.md b/docs/en/docs/sql-manual/sql-reference/Show-Statements/SHOW-ANALYZE.md new file mode 100644 index 00000000000000..73ddaaa80999e1 --- /dev/null +++ b/docs/en/docs/sql-manual/sql-reference/Show-Statements/SHOW-ANALYZE.md @@ -0,0 +1,109 @@ +--- +{ + "title": "SHOW-ANALYZE", + "language": "en" +} +--- + + + +## SHOW-ANALYZE + +### Name + +SHOW ANALYZE + +### Description + +Use `SHOW ANALYZE` to view information about statistics collection jobs. + +Syntax: + +```SQL +SHOW [AUTO] ANALYZE < table_name | job_id > + [ WHERE [ STATE = [ "PENDING" | "RUNNING" | "FINISHED" | "FAILED" ] ] ]; +``` + +- AUTO: Show historical information for automatic collection jobs only. Note that, by default, the status of only the last 20,000 completed automatic collection jobs is retained. +- table_name: Table name, specify to view statistics job information for that table. It can be in the format `db_name.table_name`. When not specified, it returns information for all statistics jobs. +- job_id: Job ID for statistics collection, obtained when executing `ANALYZE`. When not specified, this command returns information for all statistics jobs. + +Output: + +| Column Name | Description | +| :--------------------- | :--------------- | +| `job_id` | Job ID | +| `catalog_name` | Catalog Name | +| `db_name` | Database Name | +| `tbl_name` | Table Name | +| `col_name` | Column Name List | +| `job_type` | Job Type | +| `analysis_type` | Analysis Type | +| `message` | Job Information | +| `last_exec_time_in_ms` | Last Execution Time | +| `state` | Job Status | +| `schedule_type` | Scheduling Method | + +Here's an example: + +```sql +mysql> show analyze 245073\G; +*************************** 1. row *************************** + job_id: 245073 + catalog_name: internal + db_name: default_cluster:tpch + tbl_name: lineitem + col_name: [l_returnflag,l_receiptdate,l_tax,l_shipmode,l_suppkey,l_shipdate,l_commitdate,l_partkey,l_orderkey,l_quantity,l_linestatus,l_comment,l_extendedprice,l_linenumber,l_discount,l_shipinstruct] + job_type: MANUAL + analysis_type: FUNDAMENTALS + message: +last_exec_time_in_ms: 2023-11-07 11:00:52 + state: FINISHED + progress: 16 Finished | 0 Failed | 0 In Progress | 16 Total + schedule_type: ONCE +``` + +
+ +Each collection job can contain one or more tasks, with each task corresponding to the collection of a column. Users can use the following command to view the completion status of statistics collection for each column. + +Syntax: + +```sql +SHOW ANALYZE TASK STATUS [job_id] +``` + +Here's an example: + +``` +mysql> show analyze task status 20038 ; ++---------+----------+---------+----------------------+----------+ +| task_id | col_name | message | last_exec_time_in_ms | state | ++---------+----------+---------+----------------------+----------+ +| 20039 | col4 | | 2023-06-01 17:22:15 | FINISHED | +| 20040 | col2 | | 2023-06-01 17:22:15 | FINISHED | +| 20041 | col3 | | 2023-06-01 17:22:15 | FINISHED | +| 20042 | col1 | | 2023-06-01 17:22:15 | FINISHED | ++---------+----------+---------+----------------------+----------+ +``` + +### Keywords + +SHOW, ANALYZE \ No newline at end of file diff --git a/docs/en/docs/sql-manual/sql-reference/Show-Statements/SHOW-COLUMN-STATS.md b/docs/en/docs/sql-manual/sql-reference/Show-Statements/SHOW-COLUMN-STATS.md new file mode 100644 index 00000000000000..b64c5ad6f71e53 --- /dev/null +++ b/docs/en/docs/sql-manual/sql-reference/Show-Statements/SHOW-COLUMN-STATS.md @@ -0,0 +1,71 @@ +--- +{ + "title": "SHOW-COLUMN-STATS", + "language": "en" +} +--- + + + +## SHOW-COLUMN-STATS + +### Name + +SHOW COLUMN STATS + +### Description + +Use `SHOW COLUMN STATS` to view various statistics data for columns. + +Syntax: + +```SQL +SHOW COLUMN [cached] STATS table_name [ (column_name [, ...]) ]; +``` + +Where: + +- cached: Show statistics information in the current FE memory cache. +- table_name: The target table for collecting statistics. It can be in the format `db_name.table_name`. +- column_name: Specifies the target column, which must be an existing column in `table_name`. You can specify multiple column names separated by commas. + +Here's an example: + +```sql +mysql> show column stats lineitem(l_tax)\G; +*************************** 1. row *************************** + column_name: l_tax + count: 6001215.0 + ndv: 9.0 + num_null: 0.0 + data_size: 4.800972E7 +avg_size_byte: 8.0 + min: 0.00 + max: 0.08 + method: FULL + type: FUNDAMENTALS + trigger: MANUAL + query_times: 0 + updated_time: 2023-11-07 11:00:46 +``` + +### Keywords + +SHOW, TABLE, STATS diff --git a/docs/en/docs/sql-manual/sql-reference/Show-Statements/SHOW-TABLE-STATS.md b/docs/en/docs/sql-manual/sql-reference/Show-Statements/SHOW-TABLE-STATS.md new file mode 100644 index 00000000000000..06f59b27ea5000 --- /dev/null +++ b/docs/en/docs/sql-manual/sql-reference/Show-Statements/SHOW-TABLE-STATS.md @@ -0,0 +1,74 @@ +--- +{ + "title": "SHOW-TABLE-STATS", + "language": "en" +} +--- + + + +## SHOW-TABLE-STATS + +### Name + +SHOW TABLE STATS + +### Description + +Use `SHOW TABLE STATS` to view an overview of statistics collection for a table. + +Syntax: + +```SQL +SHOW TABLE STATS table_name; +``` + +Where: + +- table_name: The target table name. It can be in the format `db_name.table_name`. + +Output: + +| Column Name | Description | +| :--------------------- | :--------------- | +| `updated_rows` | Updated rows since the last ANALYZE | +| `query_times` | Reserved column for recording the number of times the table was queried in future versions | +| `row_count` | Number of rows (does not reflect the exact number of rows at the time of command execution) | +| `updated_time` | Last update time | +| `columns` | Columns for which statistics information has been collected | + +Here's an example: + +```sql +mysql> show table stats lineitem \G; +*************************** 1. row *************************** +updated_rows: 0 + query_times: 0 + row_count: 6001215 +updated_time: 2023-11-07 + columns: [l_returnflag, l_receiptdate, l_tax, l_shipmode, l_suppkey, l_shipdate, l_commitdate, l_partkey, l_orderkey, l_quantity, l_linestatus, l_comment, l_extendedprice, l_linenumber, l_discount, l_shipinstruct] + trigger: MANUAL +``` + +
+ +### Keywords + +SHOW, TABLE, STATS diff --git a/docs/zh-CN/docs/sql-manual/sql-reference/Data-Manipulation-Statements/Manipulation/ANALYZE.md b/docs/zh-CN/docs/sql-manual/sql-reference/Data-Manipulation-Statements/Manipulation/ANALYZE.md new file mode 100644 index 00000000000000..67fee1d78e2b9f --- /dev/null +++ b/docs/zh-CN/docs/sql-manual/sql-reference/Data-Manipulation-Statements/Manipulation/ANALYZE.md @@ -0,0 +1,66 @@ +--- +{ + "title": "ANALYZE", + "language": "zh-CN" +} +--- + + + +## ANALYZE + +### Name + + + +ANALYZE + +### Description + +该语句用于收集各列的统计信息。 + +```sql +ANALYZE < TABLE | DATABASE table_name | db_name > + [ (column_name [, ...]) ] + [ [ WITH SYNC ] [ WITH SAMPLE PERCENT | ROWS ] ]; +``` + +- table_name: 指定的目标表。可以是  `db_name.table_name`  形式。 +- column_name: 指定的目标列。必须是  `table_name`  中存在的列,多个列名称用逗号分隔。 +- sync:同步收集统计信息。收集完后返回。若不指定则异步执行并返回JOB ID。 +- sample percent | rows:抽样收集统计信息。可以指定抽样比例或者抽样行数。 + +### Example + +对一张表按照10%的比例采样收集统计数据: + +```sql +ANALYZE TABLE lineitem WITH SAMPLE PERCENT 10; +``` + +对一张表按采样10万行收集统计数据 + +```sql +ANALYZE TABLE lineitem WITH SAMPLE ROWS 100000; +``` + +### Keywords + +ANALYZE diff --git a/docs/zh-CN/docs/sql-manual/sql-reference/Show-Statements/SHOW-ANALYZE.md b/docs/zh-CN/docs/sql-manual/sql-reference/Show-Statements/SHOW-ANALYZE.md new file mode 100644 index 00000000000000..3feae39b2ad28a --- /dev/null +++ b/docs/zh-CN/docs/sql-manual/sql-reference/Show-Statements/SHOW-ANALYZE.md @@ -0,0 +1,111 @@ +--- +{ + "title": "SHOW-ANALYZE", + "language": "zh-CN" +} +--- + + + +## SHOW-ANALYZE + +### Name + +SHOW ANALYZE + +### Description + +通过 `SHOW ANALYZE` 来查看统计信息收集作业的信息。 + +语法如下: + +```SQL +SHOW [AUTO] ANALYZE < table_name | job_id > + [ WHERE [ STATE = [ "PENDING" | "RUNNING" | "FINISHED" | "FAILED" ] ] ]; +``` + +- AUTO:仅仅展示自动收集历史作业信息。需要注意的是默认只保存过去20000个执行完毕的自动收集作业的状态。 +- table_name:表名,指定后可查看该表对应的统计作业信息。可以是  `db_name.table_name`  形式。不指定时返回所有统计作业信息。 +- job_id:统计信息作业 ID,执行 `ANALYZE` 异步收集时得到。不指定id时此命令返回所有统计作业信息。 + +输出: + +| 列名 | 说明 | +| :--------------------- | :----------- | +| `job_id` | 统计作业 ID | +| `catalog_name` | catalog 名称 | +| `db_name` | 数据库名称 | +| `tbl_name` | 表名称 | +| `col_name` | 列名称列表 | +| `job_type` | 作业类型 | +| `analysis_type` | 统计类型 | +| `message` | 作业信息 | +| `last_exec_time_in_ms` | 上次执行时间 | +| `state` | 作业状态 | +| `schedule_type` | 调度方式 | + +下面是一个例子: + +```sql +mysql> show analyze 245073\G; +*************************** 1. row *************************** + job_id: 245073 + catalog_name: internal + db_name: default_cluster:tpch + tbl_name: lineitem + col_name: [l_returnflag,l_receiptdate,l_tax,l_shipmode,l_suppkey,l_shipdate,l_commitdate,l_partkey,l_orderkey,l_quantity,l_linestatus,l_comment,l_extendedprice,l_linenumber,l_discount,l_shipinstruct] + job_type: MANUAL + analysis_type: FUNDAMENTALS + message: +last_exec_time_in_ms: 2023-11-07 11:00:52 + state: FINISHED + progress: 16 Finished | 0 Failed | 0 In Progress | 16 Total + schedule_type: ONCE +``` + +
+ +每个收集作业中可以包含一到多个任务,每个任务对应一列的收集。用户可通过如下命令查看具体每列的统计信息收集完成情况。 + +语法: + +```sql +SHOW ANALYZE TASK STATUS [job_id] +``` + +下面是一个例子: + +``` +mysql> show analyze task status 20038 ; ++---------+----------+---------+----------------------+----------+ +| task_id | col_name | message | last_exec_time_in_ms | state | ++---------+----------+---------+----------------------+----------+ +| 20039 | col4 | | 2023-06-01 17:22:15 | FINISHED | +| 20040 | col2 | | 2023-06-01 17:22:15 | FINISHED | +| 20041 | col3 | | 2023-06-01 17:22:15 | FINISHED | +| 20042 | col1 | | 2023-06-01 17:22:15 | FINISHED | ++---------+----------+---------+----------------------+----------+ + + +``` + +### Keywords + +SHOW, ANALYZE \ No newline at end of file diff --git a/docs/zh-CN/docs/sql-manual/sql-reference/Show-Statements/SHOW-COLUMN-STATS.md b/docs/zh-CN/docs/sql-manual/sql-reference/Show-Statements/SHOW-COLUMN-STATS.md new file mode 100644 index 00000000000000..15d91b8a91455d --- /dev/null +++ b/docs/zh-CN/docs/sql-manual/sql-reference/Show-Statements/SHOW-COLUMN-STATS.md @@ -0,0 +1,72 @@ +--- +{ + "title": "SHOW-COLUMN-STATS", + "language": "zh-CN" +} +--- + + + +## SHOW-COLUMN-STATS + +### Name + +SHOW COLUMN STATS + +### Description + +通过 `SHOW COLUMN STATS` 来查看列的各项统计数据。 + +语法如下: + +```SQL +SHOW COLUMN [cached] STATS table_name [ (column_name [, ...]) ]; +``` + +其中: + +- cached: 展示当前FE内存缓存中的统计信息。 +- table_name: 收集统计信息的目标表。可以是  `db_name.table_name`  形式。 +- column_name: 指定的目标列,必须是  `table_name`  中存在的列,多个列名称用逗号分隔。 + +下面是一个例子: + +```sql +mysql> show column stats lineitem(l_tax)\G; +*************************** 1. row *************************** + column_name: l_tax + count: 6001215.0 + ndv: 9.0 + num_null: 0.0 + data_size: 4.800972E7 +avg_size_byte: 8.0 + min: 0.00 + max: 0.08 + method: FULL + type: FUNDAMENTALS + trigger: MANUAL + query_times: 0 + updated_time: 2023-11-07 11:00:46 + +``` + +### Keywords + +SHOW, COLUMN, STATS diff --git a/docs/zh-CN/docs/sql-manual/sql-reference/Show-Statements/SHOW-TABLE-STATS.md b/docs/zh-CN/docs/sql-manual/sql-reference/Show-Statements/SHOW-TABLE-STATS.md new file mode 100644 index 00000000000000..97391ed92ebfab --- /dev/null +++ b/docs/zh-CN/docs/sql-manual/sql-reference/Show-Statements/SHOW-TABLE-STATS.md @@ -0,0 +1,77 @@ +--- +{ + "title": "SHOW-TABLE-STATS", + "language": "zh-CN" +} +--- + + + +## SHOW-TABLE-STATS + +### Name + +SHOW TABLE STATS + +### Description + +通过 `SHOW TABLE STATS` 查看表的统计信息收集概况。 + +语法如下: + +```SQL +SHOW TABLE STATS table_name; +``` + +其中: + +- table_name: 目标表表名。可以是  `db_name.table_name`  形式。 + +输出: + +| 列名 | 说明 | +| :------------------ | :--------------------- | +|`updated_rows`|自上次ANALYZE以来该表的更新行数| +|`query_times`|保留列,后续版本用以记录该表查询次数| +|`row_count`| 行数(不反映命令执行时的准确行数)| +|`updated_time`| 上次更新时间| +|`columns`| 收集过统计信息的列| +|`trigger`|触发方式| + +下面是一个例子: + +```sql +mysql> show table stats lineitem \G; +*************************** 1. row *************************** +updated_rows: 0 + query_times: 0 + row_count: 6001215 +updated_time: 2023-11-07 + columns: [l_returnflag, l_receiptdate, l_tax, l_shipmode, l_suppkey, l_shipdate, l_commitdate, l_partkey, l_orderkey, l_quantity, l_linestatus, l_comment, l_extendedprice, l_linenumber, l_discount, l_shipinstruct] + trigger: MANUAL +``` + +
+ +
+ +### Keywords + +SHOW, TABLE, STATS From 723ac1d5aceddb728964da7cd1f0d4198b77865b Mon Sep 17 00:00:00 2001 From: Xin Liao Date: Fri, 24 Nov 2023 09:58:33 +0800 Subject: [PATCH 20/33] [chore](merge-on-write) disable rowid conversion check for mow table by default (#27482) (#27508) --- be/src/common/config.cpp | 2 ++ be/src/common/config.h | 2 ++ be/src/olap/compaction.cpp | 8 ++++++-- 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/be/src/common/config.cpp b/be/src/common/config.cpp index 514405fcfbb84f..afb8cb6feab109 100644 --- a/be/src/common/config.cpp +++ b/be/src/common/config.cpp @@ -1073,6 +1073,8 @@ DEFINE_mInt64(lookup_connection_cache_bytes_limit, "4294967296"); DEFINE_mInt64(LZ4_HC_compression_level, "9"); DEFINE_mBool(enable_merge_on_write_correctness_check, "true"); +// rowid conversion correctness check when compaction for mow table +DEFINE_mBool(enable_rowid_conversion_correctness_check, "false"); // The secure path with user files, used in the `local` table function. DEFINE_mString(user_files_secure_path, "${DORIS_HOME}"); diff --git a/be/src/common/config.h b/be/src/common/config.h index edb7584f1a285b..56a9c82b826122 100644 --- a/be/src/common/config.h +++ b/be/src/common/config.h @@ -1129,6 +1129,8 @@ DECLARE_mDouble(ratio_of_defaults_as_sparse_column); DECLARE_mInt64(threshold_rows_to_estimate_sparse_column); DECLARE_mBool(enable_merge_on_write_correctness_check); +// rowid conversion correctness check when compaction for mow table +DECLARE_mBool(enable_rowid_conversion_correctness_check); // The secure path with user files, used in the `local` table function. DECLARE_mString(user_files_secure_path); diff --git a/be/src/olap/compaction.cpp b/be/src/olap/compaction.cpp index 71105906499ac2..98e01ef4967813 100644 --- a/be/src/olap/compaction.cpp +++ b/be/src/olap/compaction.cpp @@ -692,7 +692,9 @@ Status Compaction::modify_rowsets(const Merger::Statistics* stats) { } } - RETURN_IF_ERROR(_tablet->check_rowid_conversion(_output_rowset, location_map)); + if (config::enable_rowid_conversion_correctness_check) { + RETURN_IF_ERROR(_tablet->check_rowid_conversion(_output_rowset, location_map)); + } location_map.clear(); { @@ -753,7 +755,9 @@ Status Compaction::modify_rowsets(const Merger::Statistics* stats) { } } - RETURN_IF_ERROR(_tablet->check_rowid_conversion(_output_rowset, location_map)); + if (config::enable_rowid_conversion_correctness_check) { + RETURN_IF_ERROR(_tablet->check_rowid_conversion(_output_rowset, location_map)); + } _tablet->merge_delete_bitmap(output_rowset_delete_bitmap); RETURN_IF_ERROR(_tablet->modify_rowsets(output_rowsets, _input_rowsets, true)); From 8556dbbaef35d42b6d058b093b4aa643a8a71857 Mon Sep 17 00:00:00 2001 From: Jibing-Li <64681310+Jibing-Li@users.noreply.github.com> Date: Fri, 24 Nov 2023 09:58:49 +0800 Subject: [PATCH 21/33] [fix](regression)Fix hive p2 case (#27466) (#27511) --- .../hive/test_hive_statistic_auto.groovy | 54 +++--- .../hive/test_hive_statistic_sample.groovy | 182 +++++++++--------- 2 files changed, 118 insertions(+), 118 deletions(-) diff --git a/regression-test/suites/external_table_p2/hive/test_hive_statistic_auto.groovy b/regression-test/suites/external_table_p2/hive/test_hive_statistic_auto.groovy index f766069346e1e8..08c4d0aed95094 100644 --- a/regression-test/suites/external_table_p2/hive/test_hive_statistic_auto.groovy +++ b/regression-test/suites/external_table_p2/hive/test_hive_statistic_auto.groovy @@ -41,43 +41,43 @@ suite("test_hive_statistic_auto", "p2,external,hive,external_remote,external_rem if (result.size <= 0) { continue; } - assertTrue(result.size() == 1) - assertTrue(result[0][0] == "lo_quantity") - assertTrue(result[0][1] == "100.0") - assertTrue(result[0][2] == "46.0") - assertTrue(result[0][3] == "0.0") - assertTrue(result[0][4] == "404.0") - assertTrue(result[0][5] == "4.0") - assertTrue(result[0][6] == "1") - assertTrue(result[0][7] == "50") + assertEquals(result.size(), 1) + assertEquals(result[0][0], "lo_quantity") + assertEquals(result[0][1], "100.0") + assertEquals(result[0][2], "46.0") + assertEquals(result[0][3], "0.0") + assertEquals(result[0][4], "400.0") + assertEquals(result[0][5], "4.0") + assertEquals(result[0][6], "1") + assertEquals(result[0][7], "50") result = sql """show column stats `statistics` (lo_orderkey)""" if (result.size <= 0) { continue; } - assertTrue(result.size() == 1) - assertTrue(result[0][0] == "lo_orderkey") - assertTrue(result[0][1] == "100.0") - assertTrue(result[0][2] == "26.0") - assertTrue(result[0][3] == "0.0") - assertTrue(result[0][4] == "404.0") - assertTrue(result[0][5] == "4.0") - assertTrue(result[0][6] == "1") - assertTrue(result[0][7] == "98") + assertEquals(result.size(), 1) + assertEquals(result[0][0], "lo_orderkey") + assertEquals(result[0][1], "100.0") + assertEquals(result[0][2], "26.0") + assertEquals(result[0][3], "0.0") + assertEquals(result[0][4], "400.0") + assertEquals(result[0][5], "4.0") + assertEquals(result[0][6], "1") + assertEquals(result[0][7], "98") result = sql """show column stats `statistics` (lo_linenumber)""" if (result.size <= 0) { continue; } - assertTrue(result.size() == 1) - assertTrue(result[0][0] == "lo_linenumber") - assertTrue(result[0][1] == "100.0") - assertTrue(result[0][2] == "7.0") - assertTrue(result[0][3] == "0.0") - assertTrue(result[0][4] == "404.0") - assertTrue(result[0][5] == "4.0") - assertTrue(result[0][6] == "1") - assertTrue(result[0][7] == "7") + assertEquals(result.size(), 1) + assertEquals(result[0][0], "lo_linenumber") + assertEquals(result[0][1], "100.0") + assertEquals(result[0][2], "7.0") + assertEquals(result[0][3], "0.0") + assertEquals(result[0][4], "400.0") + assertEquals(result[0][5], "4.0") + assertEquals(result[0][6], "1") + assertEquals(result[0][7], "7") } sql """drop catalog ${catalog_name}""" diff --git a/regression-test/suites/external_table_p2/hive/test_hive_statistic_sample.groovy b/regression-test/suites/external_table_p2/hive/test_hive_statistic_sample.groovy index 212ea2a3f9f72e..675a9409b33ce7 100644 --- a/regression-test/suites/external_table_p2/hive/test_hive_statistic_sample.groovy +++ b/regression-test/suites/external_table_p2/hive/test_hive_statistic_sample.groovy @@ -31,118 +31,118 @@ suite("test_hive_statistic_sample", "p2,external,hive,external_remote,external_r """ logger.info("catalog " + catalog_name + " created") - sql """analyze table ${catalog_name}.tpch_1000_parquet.region with sample percent 10 with sync""" + sql """analyze table ${catalog_name}.tpch_1000_parquet.region with sample rows 10 with sync""" sql """analyze table ${catalog_name}.tpch_1000_parquet.supplier with sample percent 10 with sync""" sql """use ${catalog_name}.tpch_1000_parquet""" def result = sql """show column stats region (r_regionkey)""" - assertTrue(result.size() == 1) - assertTrue(result[0][0] == "r_regionkey") - assertTrue(result[0][1] == "5.0") - assertTrue(result[0][2] == "5.0") - assertTrue(result[0][3] == "0.0") - assertTrue(result[0][4] == "20.0") - assertTrue(result[0][5] == "4.0") - assertTrue(result[0][6] == "N/A") - assertTrue(result[0][7] == "N/A") + assertEquals(result.size(), 1) + assertEquals(result[0][0], "r_regionkey") + assertEquals(result[0][1], "5.0") + assertEquals(result[0][2], "5.0") + assertEquals(result[0][3], "0.0") + assertEquals(result[0][4], "20.0") + assertEquals(result[0][5], "4.0") + assertEquals(result[0][6], "N/A") + assertEquals(result[0][7], "N/A") result = sql """show column stats region (r_name)""" - assertTrue(result.size() == 1) - assertTrue(result[0][0] == "r_name") - assertTrue(result[0][1] == "5.0") - assertTrue(result[0][2] == "5.0") - assertTrue(result[0][3] == "0.0") - assertTrue(result[0][4] == "34.0") - assertTrue(result[0][5] == "6.8") - assertTrue(result[0][6] == "N/A") - assertTrue(result[0][7] == "N/A") + assertEquals(result.size(), 1) + assertEquals(result[0][0], "r_name") + assertEquals(result[0][1], "5.0") + assertEquals(result[0][2], "5.0") + assertEquals(result[0][3], "0.0") + assertEquals(result[0][4], "34.0") + assertEquals(result[0][5], "6.8") + assertEquals(result[0][6], "N/A") + assertEquals(result[0][7], "N/A") result = sql """show column stats region (r_comment)""" - assertTrue(result.size() == 1) - assertTrue(result[0][0] == "r_comment") - assertTrue(result[0][1] == "5.0") - assertTrue(result[0][2] == "5.0") - assertTrue(result[0][3] == "0.0") - assertTrue(result[0][4] == "330.0") - assertTrue(result[0][5] == "66.0") - assertTrue(result[0][6] == "N/A") - assertTrue(result[0][7] == "N/A") + assertEquals(result.size(), 1) + assertEquals(result[0][0], "r_comment") + assertEquals(result[0][1], "5.0") + assertEquals(result[0][2], "5.0") + assertEquals(result[0][3], "0.0") + assertEquals(result[0][4], "330.0") + assertEquals(result[0][5], "66.0") + assertEquals(result[0][6], "N/A") + assertEquals(result[0][7], "N/A") result = sql """show column stats supplier (s_suppkey)""" - assertTrue(result.size() == 1) - assertTrue(result[0][0] == "s_suppkey") - assertTrue(result[0][1] == "9998799.0") - assertTrue(result[0][2] == "9970222.0") - assertTrue(result[0][3] == "0.0") - assertTrue(result[0][4] == "3.9995194E7") - assertTrue(result[0][5] == "3.9999997999759773") - assertTrue(result[0][6] == "N/A") - assertTrue(result[0][7] == "N/A") + assertEquals(result.size(), 1) + assertEquals(result[0][0], "s_suppkey") + assertEquals(result[0][1], "9998799.0") + assertEquals(result[0][2], "9998799.0") + assertEquals(result[0][3], "0.0") + assertEquals(result[0][4], "3.9995194E7") + assertEquals(result[0][5], "3.9999997999759773") + assertEquals(result[0][6], "N/A") + assertEquals(result[0][7], "N/A") result = sql """show column stats supplier (s_name)""" - assertTrue(result.size() == 1) - assertTrue(result[0][0] == "s_name") - assertTrue(result[0][1] == "9998799.0") - assertTrue(result[0][2] == "1.004004E7") - assertTrue(result[0][3] == "0.0") - assertTrue(result[0][4] == "1.79978374E8") - assertTrue(result[0][5] == "17.999999199903908") - assertTrue(result[0][6] == "N/A") - assertTrue(result[0][7] == "N/A") + assertEquals(result.size(), 1) + assertEquals(result[0][0], "s_name") + assertEquals(result[0][1], "9998799.0") + assertEquals(result[0][2], "9998799.0") + assertEquals(result[0][3], "0.0") + assertEquals(result[0][4], "1.79978374E8") + assertEquals(result[0][5], "17.999999199903908") + assertEquals(result[0][6], "N/A") + assertEquals(result[0][7], "N/A") result = sql """show column stats supplier (s_address)""" - assertTrue(result.size() == 1) - assertTrue(result[0][0] == "s_address") - assertTrue(result[0][1] == "9998799.0") - assertTrue(result[0][2] == "9998862.0") - assertTrue(result[0][3] == "0.0") - assertTrue(result[0][4] == "2.50070604E8") - assertTrue(result[0][5] == "25.010064108699456") - assertTrue(result[0][6] == "N/A") - assertTrue(result[0][7] == "N/A") + assertEquals(result.size(), 1) + assertEquals(result[0][0], "s_address") + assertEquals(result[0][1], "9998799.0") + assertEquals(result[0][2], "9998799.0") + assertEquals(result[0][3], "0.0") + assertEquals(result[0][4], "2.50070604E8") + assertEquals(result[0][5], "25.010064108699456") + assertEquals(result[0][6], "N/A") + assertEquals(result[0][7], "N/A") result = sql """show column stats supplier (s_nationkey)""" - assertTrue(result.size() == 1) - assertTrue(result[0][0] == "s_nationkey") - assertTrue(result[0][1] == "9998799.0") - assertTrue(result[0][2] == "25.0") - assertTrue(result[0][3] == "0.0") - assertTrue(result[0][4] == "3.9995194E7") - assertTrue(result[0][5] == "3.9999997999759773") - assertTrue(result[0][6] == "N/A") - assertTrue(result[0][7] == "N/A") + assertEquals(result.size(), 1) + assertEquals(result[0][0], "s_nationkey") + assertEquals(result[0][1], "9998799.0") + assertEquals(result[0][2], "25.0") + assertEquals(result[0][3], "0.0") + assertEquals(result[0][4], "3.9995194E7") + assertEquals(result[0][5], "3.9999997999759773") + assertEquals(result[0][6], "N/A") + assertEquals(result[0][7], "N/A") result = sql """show column stats supplier (s_phone)""" - assertTrue(result.size() == 1) - assertTrue(result[0][0] == "s_phone") - assertTrue(result[0][1] == "9998799.0") - assertTrue(result[0][2] == "9928006.0") - assertTrue(result[0][3] == "0.0") - assertTrue(result[0][4] == "1.49981978E8") - assertTrue(result[0][5] == "14.99999929991592") - assertTrue(result[0][6] == "N/A") - assertTrue(result[0][7] == "N/A") + assertEquals(result.size(), 1) + assertEquals(result[0][0], "s_phone") + assertEquals(result[0][1], "9998799.0") + assertEquals(result[0][2], "9996537.0") + assertEquals(result[0][3], "0.0") + assertEquals(result[0][4], "1.49981978E8") + assertEquals(result[0][5], "14.99999929991592") + assertEquals(result[0][6], "N/A") + assertEquals(result[0][7], "N/A") result = sql """show column stats supplier (s_acctbal)""" - assertTrue(result.size() == 1) - assertTrue(result[0][0] == "s_acctbal") - assertTrue(result[0][1] == "9998799.0") - assertTrue(result[0][2] == "4766937.0") - assertTrue(result[0][3] == "0.0") - assertTrue(result[0][4] == "7.9990388E7") - assertTrue(result[0][5] == "7.999999599951955") - assertTrue(result[0][6] == "N/A") - assertTrue(result[0][7] == "N/A") + assertEquals(result.size(), 1) + assertEquals(result[0][0], "s_acctbal") + assertEquals(result[0][1], "9998799.0") + assertEquals(result[0][2], "1054512.0") + assertEquals(result[0][3], "0.0") + assertEquals(result[0][4], "7.9990388E7") + assertEquals(result[0][5], "7.999999599951955") + assertEquals(result[0][6], "N/A") + assertEquals(result[0][7], "N/A") result = sql """show column stats supplier (s_comment)""" - assertTrue(result.size() == 1) - assertTrue(result[0][0] == "s_comment") - assertTrue(result[0][1] == "9998799.0") - assertTrue(result[0][2] == "9931298.0") - assertTrue(result[0][3] == "0.0") - assertTrue(result[0][4] == "6.24883849E8") - assertTrue(result[0][5] == "62.49589065646784") - assertTrue(result[0][6] == "N/A") - assertTrue(result[0][7] == "N/A") + assertEquals(result.size(), 1) + assertEquals(result[0][0], "s_comment") + assertEquals(result[0][1], "9998799.0") + assertEquals(result[0][2], "9630165.0") + assertEquals(result[0][3], "0.0") + assertEquals(result[0][4], "6.24883849E8") + assertEquals(result[0][5], "62.49589065646784") + assertEquals(result[0][6], "N/A") + assertEquals(result[0][7], "N/A") sql """drop catalog ${catalog_name}""" } From f7dce0624c56bd01597c7af0d39ee0732d4eb652 Mon Sep 17 00:00:00 2001 From: Jibing-Li <64681310+Jibing-Li@users.noreply.github.com> Date: Fri, 24 Nov 2023 09:59:22 +0800 Subject: [PATCH 22/33] [fix](statistics)Fix auto analyze remove finished job bug #27486 (#27510) --- .../main/java/org/apache/doris/statistics/AnalysisManager.java | 1 + 1 file changed, 1 insertion(+) diff --git a/fe/fe-core/src/main/java/org/apache/doris/statistics/AnalysisManager.java b/fe/fe-core/src/main/java/org/apache/doris/statistics/AnalysisManager.java index ff0ae2acd96bf9..51247c9ea12820 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/statistics/AnalysisManager.java +++ b/fe/fe-core/src/main/java/org/apache/doris/statistics/AnalysisManager.java @@ -229,6 +229,7 @@ public class AnalysisManager implements Writable { } autoJobs.offer(job); systemJobInfoMap.remove(info.jobId); + analysisJobIdToTaskMap.remove(info.jobId); } return null; }; From 5b50f730c11ed7df81d459411bcf0fabc9b8d59b Mon Sep 17 00:00:00 2001 From: xy720 <22125576+xy720@users.noreply.github.com> Date: Fri, 24 Nov 2023 14:05:53 +0800 Subject: [PATCH 23/33] [Bug](bitmap) Fix heap-use-after-free in the bitmap functions #27411 (#27521) --- be/src/util/bitmap_value.h | 3 +- be/src/vec/data_types/data_type_bitmap.cpp | 3 +- .../bitmap_functions/test_issue_27409.groovy | 643 ++++++++++++++++++ 3 files changed, 647 insertions(+), 2 deletions(-) create mode 100644 regression-test/suites/query_p0/sql_functions/bitmap_functions/test_issue_27409.groovy diff --git a/be/src/util/bitmap_value.h b/be/src/util/bitmap_value.h index 4e971791e2bfa3..f75ca59bae6d09 100644 --- a/be/src/util/bitmap_value.h +++ b/be/src/util/bitmap_value.h @@ -2172,7 +2172,7 @@ class BitmapValue { // Return how many bytes are required to serialize this bitmap. // See BitmapTypeCode for the serialized format. - size_t getSizeInBytes() const { + size_t getSizeInBytes() { size_t res = 0; switch (_type) { case EMPTY: @@ -2186,6 +2186,7 @@ class BitmapValue { } break; case BITMAP: + _prepare_bitmap_for_write(); _bitmap->runOptimize(); _bitmap->shrinkToFit(); res = _bitmap->getSizeInBytes(config::bitmap_serialize_version); diff --git a/be/src/vec/data_types/data_type_bitmap.cpp b/be/src/vec/data_types/data_type_bitmap.cpp index 79800029eb83ca..6cccf914f1438e 100644 --- a/be/src/vec/data_types/data_type_bitmap.cpp +++ b/be/src/vec/data_types/data_type_bitmap.cpp @@ -114,7 +114,8 @@ void DataTypeBitMap::to_string(const IColumn& column, size_t row_num, BufferWrit ColumnPtr ptr = result.first; row_num = result.second; - const auto& data = assert_cast(*ptr).get_element(row_num); + auto& data = + const_cast(assert_cast(*ptr).get_element(row_num)); std::string buffer(data.getSizeInBytes(), '0'); data.write_to(const_cast(buffer.data())); ostr.write(buffer.c_str(), buffer.size()); diff --git a/regression-test/suites/query_p0/sql_functions/bitmap_functions/test_issue_27409.groovy b/regression-test/suites/query_p0/sql_functions/bitmap_functions/test_issue_27409.groovy new file mode 100644 index 00000000000000..3089e429565b90 --- /dev/null +++ b/regression-test/suites/query_p0/sql_functions/bitmap_functions/test_issue_27409.groovy @@ -0,0 +1,643 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + +suite("test_issue_27409") { + sql """ DROP TABLE IF EXISTS behavior_bitmap_base; """ + sql """ + CREATE TABLE `behavior_bitmap_base` ( + `identity_type_desc` varchar(25) NULL, + `system_type` varchar(25) NULL, + `statistic_data` int(11) NULL, + `one_id` bitmap BITMAP_UNION NULL, + INDEX index_identity_type_desc (`identity_type_desc`) USING BITMAP COMMENT 'identity_type_desc', + INDEX index_system_type (`system_type`) USING BITMAP COMMENT 'system_type', + INDEX index_statistic_data (`statistic_data`) USING BITMAP COMMENT 'statistic_data' + ) ENGINE=OLAP + AGGREGATE KEY(`identity_type_desc`, `system_type`, `statistic_data`) + DISTRIBUTED BY HASH(`identity_type_desc`, `system_type`, `statistic_data`) BUCKETS 5 + PROPERTIES ( + "replication_num" = "1" + ); + """ + sql """ + INSERT INTO `behavior_bitmap_base` VALUES + ('GuestId','renew',1684598400,to_bitmap(0)), + ('GuestId','renew',1684598400,to_bitmap(0)), + ('GuestId','renew',1685116800,to_bitmap(0)), + ('GuestId','renew',1685376000,to_bitmap(0)), + ('GuestId','renew',1686499200,to_bitmap(0)), + ('GuestId','renew',1687276800,to_bitmap(0)), + ('GuestId','renew',1687363200,to_bitmap(0)), + ('GuestId','renew',1687881600,to_bitmap(0)), + ('GuestId','renew',1689436800,to_bitmap(0)), + ('GuestId','renew',1689782400,to_bitmap(0)), + ('GuestId','renew',1690646400,to_bitmap(0)), + ('GuestId','renew',1690819200,to_bitmap(0)), + ('GuestId','renew',1691769600,to_bitmap(0)), + ('GuestId','renew',1692028800,to_bitmap(0)), + ('GuestId','renew',1692460800,to_bitmap(0)), + ('GuestId','renew',1692806400,to_bitmap(0)), + ('GuestId','renew',1693324800,to_bitmap(0)), + ('GuestId','renew',1694361600,to_bitmap(0)), + ('GuestId','renew',1694448000,to_bitmap(0)), + ('GuestId','renew',1694534400,to_bitmap(0)), + ('GuestId','renew',1695139200,to_bitmap(0)), + ('GuestId','renew',1695312000,to_bitmap(0)), + ('GuestId','renew',1695830400,to_bitmap(0)), + ('GuestId','renew',1696262400,to_bitmap(0)), + ('GuestId','renew',1696521600,to_bitmap(0)), + ('GuestId','renew',1696608000,to_bitmap(0)), + ('GuestId','renew',1696953600,to_bitmap(0)), + ('GuestId','renew',1697040000,to_bitmap(0)), + ('GuestId','renew',1697212800,to_bitmap(0)), + ('GuestId','renew',1697385600,to_bitmap(0)), + ('GuestId','renew',1697644800,to_bitmap(0)), + ('GuestId','renew',1697904000,to_bitmap(0)), + ('GuestId','renew',1697990400,to_bitmap(0)), + ('GuestId','renew',1698163200,to_bitmap(0)), + ('GuestId','renew',1699200000,to_bitmap(0)), + ('MateId','renew',1684857600,to_bitmap(0)), + ('MateId','renew',1686844800,to_bitmap(0)), + ('MateId','renew',1686931200,to_bitmap(0)), + ('MateId','renew',1687017600,to_bitmap(0)), + ('MateId','renew',1687449600,to_bitmap(0)), + ('MateId','renew',1687622400,to_bitmap(0)), + ('MateId','renew',1688313600,to_bitmap(0)), + ('MateId','renew',1688572800,to_bitmap(0)), + ('MateId','renew',1688659200,to_bitmap(0)), + ('MateId','renew',1689523200,to_bitmap(0)), + ('MateId','renew',1690041600,to_bitmap(0)), + ('MateId','renew',1690128000,to_bitmap(0)), + ('MateId','renew',1690214400,to_bitmap(0)), + ('MateId','renew',1690387200,to_bitmap(0)), + ('MateId','renew',1692374400,to_bitmap(0)), + ('MateId','renew',1692979200,to_bitmap(0)), + ('MateId','renew',1693238400,to_bitmap(0)), + ('MateId','renew',1693324800,to_bitmap(0)), + ('MateId','renew',1693497600,to_bitmap(0)), + ('MateId','renew',1693670400,to_bitmap(0)), + ('MateId','renew',1693756800,to_bitmap(0)), + ('MateId','renew',1693843200,to_bitmap(0)), + ('MateId','renew',1693929600,to_bitmap(0)), + ('MateId','renew',1694016000,to_bitmap(0)), + ('MateId','renew',1694620800,to_bitmap(0)), + ('MateId','renew',1694707200,to_bitmap(0)), + ('MateId','renew',1695398400,to_bitmap(0)), + ('MateId','renew',1696262400,to_bitmap(0)), + ('MateId','renew',1696435200,to_bitmap(0)), + ('MateId','renew',1696694400,to_bitmap(0)), + ('MateId','renew',1696780800,to_bitmap(0)), + ('MateId','renew',1696867200,to_bitmap(0)), + ('MateId','renew',1696953600,to_bitmap(0)), + ('MateId','renew',1697040000,to_bitmap(0)), + ('MateId','renew',1697644800,to_bitmap(0)), + ('MateId','renew',1697731200,to_bitmap(0)), + ('MateId','renew',1698508800,to_bitmap(0)), + ('MateId','renew',1698681600,to_bitmap(0)), + ('MateId','renew',1698854400,to_bitmap(0)), + ('MateId','renew',1699113600,to_bitmap(0)), + ('MateId','renew',1699632000,to_bitmap(0)), + ('MateId','scrm',1684771200,to_bitmap(0)), + ('MateId','scrm',1686153600,to_bitmap(0)), + ('MateId','scrm',1686326400,to_bitmap(0)), + ('MateId','scrm',1686412800,to_bitmap(0)), + ('MateId','scrm',1687276800,to_bitmap(0)), + ('MateId','scrm',1687795200,to_bitmap(0)), + ('MateId','scrm',1689523200,to_bitmap(0)), + ('MateId','scrm',1689782400,to_bitmap(0)), + ('MateId','scrm',1689955200,to_bitmap(0)), + ('MateId','scrm',1690560000,to_bitmap(0)), + ('MateId','scrm',1691078400,to_bitmap(0)), + ('MateId','scrm',1692460800,to_bitmap(0)), + ('MateId','scrm',1692892800,to_bitmap(0)), + ('MateId','scrm',1693065600,to_bitmap(0)), + ('MateId','scrm',1693324800,to_bitmap(0)), + ('MateId','scrm',1693584000,to_bitmap(0)), + ('MateId','scrm',1693670400,to_bitmap(0)), + ('MateId','scrm',1694102400,to_bitmap(0)), + ('MateId','scrm',1695139200,to_bitmap(0)), + ('MateId','scrm',1695916800,to_bitmap(0)), + ('MateId','scrm',1696521600,to_bitmap(0)), + ('MateId','scrm',1697558400,to_bitmap(0)), + ('MateId','scrm',1697904000,to_bitmap(0)), + ('MateId','scrm',1697990400,to_bitmap(0)), + ('MateId','scrm',1698163200,to_bitmap(0)), + ('MateId','scrm',1698422400,to_bitmap(0)), + ('MateId','scrm',1698508800,to_bitmap(0)), + ('MateId','scrm',1698681600,to_bitmap(0)), + ('GuestId','renew',1685808000,to_bitmap(0)), + ('GuestId','renew',1686067200,to_bitmap(0)), + ('GuestId','renew',1686153600,to_bitmap(0)), + ('GuestId','renew',1686240000,to_bitmap(0)), + ('GuestId','renew',1686326400,to_bitmap(0)), + ('GuestId','renew',1686758400,to_bitmap(0)), + ('GuestId','renew',1687017600,to_bitmap(0)), + ('GuestId','renew',1687708800,to_bitmap(0)), + ('GuestId','renew',1687795200,to_bitmap(0)), + ('GuestId','renew',1687968000,to_bitmap(0)), + ('GuestId','renew',1688227200,to_bitmap(0)), + ('GuestId','renew',1688400000,to_bitmap(0)), + ('GuestId','renew',1688832000,to_bitmap(0)), + ('GuestId','renew',1689177600,to_bitmap(0)), + ('GuestId','renew',1690214400,to_bitmap(0)), + ('GuestId','renew',1690473600,to_bitmap(0)), + ('GuestId','renew',1690560000,to_bitmap(0)), + ('GuestId','renew',1691078400,to_bitmap(0)), + ('GuestId','renew',1691510400,to_bitmap(0)), + ('GuestId','renew',1691683200,to_bitmap(0)), + ('GuestId','renew',1691856000,to_bitmap(0)), + ('GuestId','renew',1692115200,to_bitmap(0)), + ('GuestId','renew',1692374400,to_bitmap(0)), + ('GuestId','renew',1693065600,to_bitmap(0)), + ('GuestId','renew',1693756800,to_bitmap(0)), + ('GuestId','renew',1693843200,to_bitmap(0)), + ('GuestId','renew',1694275200,to_bitmap(0)), + ('GuestId','renew',1695225600,to_bitmap(0)), + ('GuestId','renew',1695916800,to_bitmap(0)), + ('GuestId','renew',1696435200,to_bitmap(0)), + ('GuestId','renew',1697299200,to_bitmap(0)), + ('GuestId','renew',1697472000,to_bitmap(0)), + ('GuestId','renew',1697817600,to_bitmap(0)), + ('GuestId','renew',1698681600,to_bitmap(0)), + ('GuestId','renew',1698854400,to_bitmap(0)), + ('GuestId','renew',1699113600,to_bitmap(0)), + ('GuestId','renew',1699545600,to_bitmap(0)), + ('GuestId','renew',1699804800,to_bitmap(0)), + ('MateId','renew',1684944000,to_bitmap(0)), + ('MateId','renew',1685721600,to_bitmap(0)), + ('MateId','renew',1685980800,to_bitmap(0)), + ('MateId','renew',1686067200,to_bitmap(0)), + ('MateId','renew',1687795200,to_bitmap(0)), + ('MateId','renew',1687881600,to_bitmap(0)), + ('MateId','renew',1687968000,to_bitmap(0)), + ('MateId','renew',1688400000,to_bitmap(0)), + ('MateId','renew',1689091200,to_bitmap(0)), + ('MateId','renew',1689782400,to_bitmap(0)), + ('MateId','renew',1689955200,to_bitmap(0)), + ('MateId','renew',1690646400,to_bitmap(0)), + ('MateId','renew',1690905600,to_bitmap(0)), + ('MateId','renew',1691164800,to_bitmap(0)), + ('MateId','renew',1691683200,to_bitmap(0)), + ('MateId','renew',1692288000,to_bitmap(0)), + ('MateId','renew',1693411200,to_bitmap(0)), + ('MateId','renew',1693584000,to_bitmap(0)), + ('MateId','renew',1694188800,to_bitmap(0)), + ('MateId','renew',1694361600,to_bitmap(0)), + ('MateId','renew',1697212800,to_bitmap(0)), + ('MateId','renew',1699804800,to_bitmap(0)), + ('MateId','scrm',1684857600,to_bitmap(0)), + ('MateId','scrm',1685894400,to_bitmap(0)), + ('MateId','scrm',1686499200,to_bitmap(0)), + ('MateId','scrm',1686672000,to_bitmap(0)), + ('MateId','scrm',1688140800,to_bitmap(0)), + ('MateId','scrm',1688400000,to_bitmap(0)), + ('MateId','scrm',1688486400,to_bitmap(0)), + ('MateId','scrm',1688659200,to_bitmap(0)), + ('MateId','scrm',1688832000,to_bitmap(0)), + ('MateId','scrm',1690214400,to_bitmap(0)), + ('MateId','scrm',1690905600,to_bitmap(0)), + ('MateId','scrm',1691164800,to_bitmap(0)), + ('MateId','scrm',1691596800,to_bitmap(0)), + ('MateId','scrm',1691769600,to_bitmap(0)), + ('MateId','scrm',1691942400,to_bitmap(0)), + ('MateId','scrm',1692028800,to_bitmap(0)), + ('MateId','scrm',1692374400,to_bitmap(0)), + ('MateId','scrm',1692633600,to_bitmap(0)), + ('MateId','scrm',1692979200,to_bitmap(0)), + ('MateId','scrm',1693238400,to_bitmap(0)), + ('MateId','scrm',1693929600,to_bitmap(0)), + ('MateId','scrm',1695312000,to_bitmap(0)), + ('MateId','scrm',1695398400,to_bitmap(0)), + ('MateId','scrm',1695830400,to_bitmap(0)), + ('MateId','scrm',1696435200,to_bitmap(0)), + ('MateId','scrm',1696694400,to_bitmap(0)), + ('MateId','scrm',1697212800,to_bitmap(0)), + ('MateId','scrm',1697472000,to_bitmap(0)), + ('MateId','scrm',1698595200,to_bitmap(0)), + ('MateId','scrm',1698940800,to_bitmap(0)), + ('MateId','scrm',1699286400,to_bitmap(0)), + ('MateId','scrm',1699372800,to_bitmap(0)), + ('MateId','scrm',1699545600,to_bitmap(0)), + ('MateId','scrm',1699718400,to_bitmap(0)), + ('GuestId','renew',1684512000,to_bitmap(0)), + ('GuestId','renew',1684684800,to_bitmap(0)), + ('GuestId','renew',1684771200,to_bitmap(0)), + ('GuestId','renew',1684944000,to_bitmap(0)), + ('GuestId','renew',1685030400,to_bitmap(0)), + ('GuestId','renew',1685289600,to_bitmap(0)), + ('GuestId','renew',1685635200,to_bitmap(0)), + ('GuestId','renew',1685721600,to_bitmap(0)), + ('GuestId','renew',1686585600,to_bitmap(0)), + ('GuestId','renew',1687104000,to_bitmap(0)), + ('GuestId','renew',1687190400,to_bitmap(0)), + ('GuestId','renew',1687536000,to_bitmap(0)), + ('GuestId','renew',1687622400,to_bitmap(0)), + ('GuestId','renew',1688140800,to_bitmap(0)), + ('GuestId','renew',1688313600,to_bitmap(0)), + ('GuestId','renew',1688486400,to_bitmap(0)), + ('GuestId','renew',1688659200,to_bitmap(0)), + ('GuestId','renew',1688745600,to_bitmap(0)), + ('GuestId','renew',1689609600,to_bitmap(0)), + ('GuestId','renew',1690732800,to_bitmap(0)), + ('GuestId','renew',1691164800,to_bitmap(0)), + ('GuestId','renew',1692633600,to_bitmap(0)), + ('GuestId','renew',1692979200,to_bitmap(0)), + ('GuestId','renew',1693411200,to_bitmap(0)), + ('GuestId','renew',1693584000,to_bitmap(0)), + ('GuestId','renew',1694707200,to_bitmap(0)), + ('GuestId','renew',1694793600,to_bitmap(0)), + ('GuestId','renew',1696003200,to_bitmap(0)), + ('GuestId','renew',1696694400,to_bitmap(0)), + ('GuestId','renew',1696780800,to_bitmap(0)), + ('GuestId','renew',1697558400,to_bitmap(0)), + ('GuestId','renew',1698336000,to_bitmap(0)), + ('GuestId','renew',1698508800,to_bitmap(0)), + ('GuestId','renew',1698940800,to_bitmap(0)), + ('GuestId','renew',1699372800,to_bitmap(0)), + ('GuestId','renew',1699632000,to_bitmap(0)), + ('GuestId','renew',1699718400,to_bitmap(0)), + ('GuestId','renew',1699891200,to_bitmap(0)), + ('GuestId','renew',1699977600,to_bitmap(0)), + ('MateId','renew',1684512000,to_bitmap(0)), + ('MateId','renew',1684598400,to_bitmap(0)), + ('MateId','renew',1684684800,to_bitmap(0)), + ('MateId','renew',1684771200,to_bitmap(0)), + ('MateId','renew',1685203200,to_bitmap(0)), + ('MateId','renew',1685462400,to_bitmap(0)), + ('MateId','renew',1685635200,to_bitmap(0)), + ('MateId','renew',1686326400,to_bitmap(0)), + ('MateId','renew',1686412800,to_bitmap(0)), + ('MateId','renew',1687190400,to_bitmap(0)), + ('MateId','renew',1689350400,to_bitmap(0)), + ('MateId','renew',1689436800,to_bitmap(0)), + ('MateId','renew',1689609600,to_bitmap(0)), + ('MateId','renew',1689696000,to_bitmap(0)), + ('MateId','renew',1690300800,to_bitmap(0)), + ('MateId','renew',1690732800,to_bitmap(0)), + ('MateId','renew',1690992000,to_bitmap(0)), + ('MateId','renew',1691078400,to_bitmap(0)), + ('MateId','renew',1691251200,to_bitmap(0)), + ('MateId','renew',1691769600,to_bitmap(0)), + ('MateId','renew',1691856000,to_bitmap(0)), + ('MateId','renew',1692115200,to_bitmap(0)), + ('MateId','renew',1692547200,to_bitmap(0)), + ('MateId','renew',1692633600,to_bitmap(0)), + ('MateId','renew',1693152000,to_bitmap(0)), + ('MateId','renew',1694275200,to_bitmap(0)), + ('MateId','renew',1694880000,to_bitmap(0)), + ('MateId','renew',1695052800,to_bitmap(0)), + ('MateId','renew',1695225600,to_bitmap(0)), + ('MateId','renew',1695312000,to_bitmap(0)), + ('MateId','renew',1695484800,to_bitmap(0)), + ('MateId','renew',1696003200,to_bitmap(0)), + ('MateId','renew',1696348800,to_bitmap(0)), + ('MateId','renew',1696608000,to_bitmap(0)), + ('MateId','renew',1697126400,to_bitmap(0)), + ('MateId','renew',1697904000,to_bitmap(0)), + ('MateId','renew',1697990400,to_bitmap(0)), + ('MateId','renew',1698076800,to_bitmap(0)), + ('MateId','renew',1698163200,to_bitmap(0)), + ('MateId','renew',1698940800,to_bitmap(0)), + ('MateId','renew',1699891200,to_bitmap(0)), + ('MateId','scrm',1684598400,to_bitmap(0)), + ('MateId','scrm',1684684800,to_bitmap(0)), + ('MateId','scrm',1685289600,to_bitmap(0)), + ('MateId','scrm',1685462400,to_bitmap(0)), + ('MateId','scrm',1685721600,to_bitmap(0)), + ('MateId','scrm',1686240000,to_bitmap(0)), + ('MateId','scrm',1687017600,to_bitmap(0)), + ('MateId','scrm',1687104000,to_bitmap(0)), + ('MateId','scrm',1687881600,to_bitmap(0)), + ('MateId','scrm',1687968000,to_bitmap(0)), + ('MateId','scrm',1688054400,to_bitmap(0)), + ('MateId','scrm',1688313600,to_bitmap(0)), + ('MateId','scrm',1689091200,to_bitmap(0)), + ('MateId','scrm',1689350400,to_bitmap(0)), + ('MateId','scrm',1689868800,to_bitmap(0)), + ('MateId','scrm',1690732800,to_bitmap(0)), + ('MateId','scrm',1690819200,to_bitmap(0)), + ('MateId','scrm',1690992000,to_bitmap(0)), + ('MateId','scrm',1691337600,to_bitmap(0)), + ('MateId','scrm',1691424000,to_bitmap(0)), + ('MateId','scrm',1692115200,to_bitmap(0)), + ('MateId','scrm',1692720000,to_bitmap(0)), + ('MateId','scrm',1692806400,to_bitmap(0)), + ('MateId','scrm',1693497600,to_bitmap(0)), + ('MateId','scrm',1694620800,to_bitmap(0)), + ('MateId','scrm',1695225600,to_bitmap(0)), + ('MateId','scrm',1695484800,to_bitmap(0)), + ('MateId','scrm',1695657600,to_bitmap(0)), + ('MateId','scrm',1696089600,to_bitmap(0)), + ('MateId','scrm',1696176000,to_bitmap(0)), + ('MateId','scrm',1696262400,to_bitmap(0)), + ('MateId','scrm',1696608000,to_bitmap(0)), + ('MateId','scrm',1696780800,to_bitmap(0)), + ('MateId','scrm',1696867200,to_bitmap(0)), + ('MateId','scrm',1697385600,to_bitmap(0)), + ('MateId','scrm',1697644800,to_bitmap(0)), + ('MateId','scrm',1698249600,to_bitmap(0)), + ('MateId','scrm',1699113600,to_bitmap(0)), + ('MateId','scrm',1699804800,to_bitmap(0)), + ('MateId','scrm',1699891200,to_bitmap(0)), + ('MateId','scrm',1699977600,to_bitmap(0)), + ('GuestId','renew',1684425600,to_bitmap(0)), + ('GuestId','renew',1685462400,to_bitmap(0)), + ('GuestId','renew',1685980800,to_bitmap(0)), + ('GuestId','renew',1686412800,to_bitmap(0)), + ('GuestId','renew',1686844800,to_bitmap(0)), + ('GuestId','renew',1686931200,to_bitmap(0)), + ('GuestId','renew',1687449600,to_bitmap(0)), + ('GuestId','renew',1688572800,to_bitmap(0)), + ('GuestId','renew',1688918400,to_bitmap(0)), + ('GuestId','renew',1689350400,to_bitmap(0)), + ('GuestId','renew',1689696000,to_bitmap(0)), + ('GuestId','renew',1689868800,to_bitmap(0)), + ('GuestId','renew',1689955200,to_bitmap(0)), + ('GuestId','renew',1690387200,to_bitmap(0)), + ('GuestId','renew',1690992000,to_bitmap(0)), + ('GuestId','renew',1691251200,to_bitmap(0)), + ('GuestId','renew',1691337600,to_bitmap(0)), + ('GuestId','renew',1691424000,to_bitmap(0)), + ('GuestId','renew',1692288000,to_bitmap(0)), + ('GuestId','renew',1692547200,to_bitmap(0)), + ('GuestId','renew',1692720000,to_bitmap(0)), + ('GuestId','renew',1692892800,to_bitmap(0)), + ('GuestId','renew',1693670400,to_bitmap(0)), + ('GuestId','renew',1694016000,to_bitmap(0)), + ('GuestId','renew',1694102400,to_bitmap(0)), + ('GuestId','renew',1694188800,to_bitmap(0)), + ('GuestId','renew',1694620800,to_bitmap(0)), + ('GuestId','renew',1694880000,to_bitmap(0)), + ('GuestId','renew',1694966400,to_bitmap(0)), + ('GuestId','renew',1695052800,to_bitmap(0)), + ('GuestId','renew',1695398400,to_bitmap(0)), + ('GuestId','renew',1695484800,to_bitmap(0)), + ('GuestId','renew',1695571200,to_bitmap(0)), + ('GuestId','renew',1695657600,to_bitmap(0)), + ('GuestId','renew',1695744000,to_bitmap(0)), + ('GuestId','renew',1696089600,to_bitmap(0)), + ('GuestId','renew',1696348800,to_bitmap(0)), + ('GuestId','renew',1696867200,to_bitmap(0)), + ('GuestId','renew',1698422400,to_bitmap(0)), + ('GuestId','renew',1698595200,to_bitmap(0)), + ('GuestId','renew',1698768000,to_bitmap(0)), + ('MateId','renew',1685030400,to_bitmap(0)), + ('MateId','renew',1685116800,to_bitmap(0)), + ('MateId','renew',1685289600,to_bitmap(0)), + ('MateId','renew',1685376000,to_bitmap(0)), + ('MateId','renew',1685808000,to_bitmap(0)), + ('MateId','renew',1686153600,to_bitmap(0)), + ('MateId','renew',1686240000,to_bitmap(0)), + ('MateId','renew',1686499200,to_bitmap(0)), + ('MateId','renew',1686585600,to_bitmap(0)), + ('MateId','renew',1686672000,to_bitmap(0)), + ('MateId','renew',1687104000,to_bitmap(0)), + ('MateId','renew',1687536000,to_bitmap(0)), + ('MateId','renew',1688054400,to_bitmap(0)), + ('MateId','renew',1688140800,to_bitmap(0)), + ('MateId','renew',1688227200,to_bitmap(0)), + ('MateId','renew',1688745600,to_bitmap(0)), + ('MateId','renew',1688918400,to_bitmap(0)), + ('MateId','renew',1689004800,to_bitmap(0)), + ('MateId','renew',1689264000,to_bitmap(0)), + ('MateId','renew',1690560000,to_bitmap(0)), + ('MateId','renew',1691337600,to_bitmap(0)), + ('MateId','renew',1691510400,to_bitmap(0)), + ('MateId','renew',1691596800,to_bitmap(0)), + ('MateId','renew',1692028800,to_bitmap(0)), + ('MateId','renew',1692460800,to_bitmap(0)), + ('MateId','renew',1692720000,to_bitmap(0)), + ('MateId','renew',1692806400,to_bitmap(0)), + ('MateId','renew',1694102400,to_bitmap(0)), + ('MateId','renew',1694534400,to_bitmap(0)), + ('MateId','renew',1695571200,to_bitmap(0)), + ('MateId','renew',1695657600,to_bitmap(0)), + ('MateId','renew',1695744000,to_bitmap(0)), + ('MateId','renew',1695916800,to_bitmap(0)), + ('MateId','renew',1696089600,to_bitmap(0)), + ('MateId','renew',1697299200,to_bitmap(0)), + ('MateId','renew',1697472000,to_bitmap(0)), + ('MateId','renew',1697558400,to_bitmap(0)), + ('MateId','renew',1697817600,to_bitmap(0)), + ('MateId','renew',1698249600,to_bitmap(0)), + ('MateId','renew',1698595200,to_bitmap(0)), + ('MateId','renew',1698768000,to_bitmap(0)), + ('MateId','renew',1699286400,to_bitmap(0)), + ('MateId','renew',1699372800,to_bitmap(0)), + ('MateId','renew',1699459200,to_bitmap(0)), + ('MateId','renew',1699545600,to_bitmap(0)), + ('MateId','renew',1699718400,to_bitmap(0)), + ('MateId','renew',1699977600,to_bitmap(0)), + ('MateId','scrm',1684425600,to_bitmap(0)), + ('MateId','scrm',1685030400,to_bitmap(0)), + ('MateId','scrm',1685116800,to_bitmap(0)), + ('MateId','scrm',1685203200,to_bitmap(0)), + ('MateId','scrm',1685548800,to_bitmap(0)), + ('MateId','scrm',1685635200,to_bitmap(0)), + ('MateId','scrm',1685808000,to_bitmap(0)), + ('MateId','scrm',1687190400,to_bitmap(0)), + ('MateId','scrm',1687363200,to_bitmap(0)), + ('MateId','scrm',1687622400,to_bitmap(0)), + ('MateId','scrm',1687708800,to_bitmap(0)), + ('MateId','scrm',1688227200,to_bitmap(0)), + ('MateId','scrm',1689177600,to_bitmap(0)), + ('MateId','scrm',1689264000,to_bitmap(0)), + ('MateId','scrm',1689696000,to_bitmap(0)), + ('MateId','scrm',1690041600,to_bitmap(0)), + ('MateId','scrm',1690128000,to_bitmap(0)), + ('MateId','scrm',1690646400,to_bitmap(0)), + ('MateId','scrm',1691510400,to_bitmap(0)), + ('MateId','scrm',1691683200,to_bitmap(0)), + ('MateId','scrm',1691856000,to_bitmap(0)), + ('MateId','scrm',1692201600,to_bitmap(0)), + ('MateId','scrm',1692288000,to_bitmap(0)), + ('MateId','scrm',1693411200,to_bitmap(0)), + ('MateId','scrm',1693843200,to_bitmap(0)), + ('MateId','scrm',1694188800,to_bitmap(0)), + ('MateId','scrm',1694361600,to_bitmap(0)), + ('MateId','scrm',1694534400,to_bitmap(0)), + ('MateId','scrm',1694707200,to_bitmap(0)), + ('MateId','scrm',1695052800,to_bitmap(0)), + ('MateId','scrm',1695744000,to_bitmap(0)), + ('MateId','scrm',1696953600,to_bitmap(0)), + ('MateId','scrm',1697299200,to_bitmap(0)), + ('MateId','scrm',1697817600,to_bitmap(0)), + ('MateId','scrm',1698768000,to_bitmap(0)), + ('MateId','scrm',1698854400,to_bitmap(0)), + ('MateId','scrm',1699027200,to_bitmap(0)), + ('GuestId','renew',1684857600,to_bitmap(0)), + ('GuestId','renew',1685203200,to_bitmap(0)), + ('GuestId','renew',1685548800,to_bitmap(0)), + ('GuestId','renew',1685894400,to_bitmap(0)), + ('GuestId','renew',1686672000,to_bitmap(0)), + ('GuestId','renew',1688054400,to_bitmap(0)), + ('GuestId','renew',1689004800,to_bitmap(0)), + ('GuestId','renew',1689091200,to_bitmap(0)), + ('GuestId','renew',1689264000,to_bitmap(0)), + ('GuestId','renew',1689523200,to_bitmap(0)), + ('GuestId','renew',1690041600,to_bitmap(0)), + ('GuestId','renew',1690128000,to_bitmap(0)), + ('GuestId','renew',1690300800,to_bitmap(0)), + ('GuestId','renew',1690905600,to_bitmap(0)), + ('GuestId','renew',1691596800,to_bitmap(0)), + ('GuestId','renew',1691942400,to_bitmap(0)), + ('GuestId','renew',1692201600,to_bitmap(0)), + ('GuestId','renew',1693152000,to_bitmap(0)), + ('GuestId','renew',1693238400,to_bitmap(0)), + ('GuestId','renew',1693497600,to_bitmap(0)), + ('GuestId','renew',1693929600,to_bitmap(0)), + ('GuestId','renew',1696176000,to_bitmap(0)), + ('GuestId','renew',1697126400,to_bitmap(0)), + ('GuestId','renew',1697731200,to_bitmap(0)), + ('GuestId','renew',1698076800,to_bitmap(0)), + ('GuestId','renew',1698249600,to_bitmap(0)), + ('GuestId','renew',1699027200,to_bitmap(0)), + ('GuestId','renew',1699286400,to_bitmap(0)), + ('GuestId','renew',1699459200,to_bitmap(0)), + ('MateId','renew',1684425600,to_bitmap(0)), + ('MateId','renew',1685548800,to_bitmap(0)), + ('MateId','renew',1685894400,to_bitmap(0)), + ('MateId','renew',1686758400,to_bitmap(0)), + ('MateId','renew',1687276800,to_bitmap(0)), + ('MateId','renew',1687363200,to_bitmap(0)), + ('MateId','renew',1687708800,to_bitmap(0)), + ('MateId','renew',1688486400,to_bitmap(0)), + ('MateId','renew',1688832000,to_bitmap(0)), + ('MateId','renew',1689177600,to_bitmap(0)), + ('MateId','renew',1689868800,to_bitmap(0)), + ('MateId','renew',1690473600,to_bitmap(0)), + ('MateId','renew',1690819200,to_bitmap(0)), + ('MateId','renew',1691424000,to_bitmap(0)), + ('MateId','renew',1691942400,to_bitmap(0)), + ('MateId','renew',1692201600,to_bitmap(0)), + ('MateId','renew',1692892800,to_bitmap(0)), + ('MateId','renew',1693065600,to_bitmap(0)), + ('MateId','renew',1694448000,to_bitmap(0)), + ('MateId','renew',1694793600,to_bitmap(0)), + ('MateId','renew',1694966400,to_bitmap(0)), + ('MateId','renew',1695139200,to_bitmap(0)), + ('MateId','renew',1695830400,to_bitmap(0)), + ('MateId','renew',1696176000,to_bitmap(0)), + ('MateId','renew',1696521600,to_bitmap(0)), + ('MateId','renew',1697385600,to_bitmap(0)), + ('MateId','renew',1698336000,to_bitmap(0)), + ('MateId','renew',1698422400,to_bitmap(0)), + ('MateId','renew',1699027200,to_bitmap(0)), + ('MateId','renew',1699200000,to_bitmap(0)), + ('MateId','scrm',1684512000,to_bitmap(0)), + ('MateId','scrm',1684944000,to_bitmap(0)), + ('MateId','scrm',1685376000,to_bitmap(0)), + ('MateId','scrm',1685980800,to_bitmap(0)), + ('MateId','scrm',1686067200,to_bitmap(0)), + ('MateId','scrm',1686585600,to_bitmap(0)), + ('MateId','scrm',1686758400,to_bitmap(0)), + ('MateId','scrm',1686844800,to_bitmap(0)), + ('MateId','scrm',1686931200,to_bitmap(0)), + ('MateId','scrm',1687449600,to_bitmap(0)), + ('MateId','scrm',1687536000,to_bitmap(0)), + ('MateId','scrm',1688572800,to_bitmap(0)), + ('MateId','scrm',1688745600,to_bitmap(0)), + ('MateId','scrm',1688918400,to_bitmap(0)), + ('MateId','scrm',1689004800,to_bitmap(0)), + ('MateId','scrm',1689436800,to_bitmap(0)), + ('MateId','scrm',1689609600,to_bitmap(0)), + ('MateId','scrm',1690300800,to_bitmap(0)), + ('MateId','scrm',1690387200,to_bitmap(0)), + ('MateId','scrm',1690473600,to_bitmap(0)), + ('MateId','scrm',1691251200,to_bitmap(0)), + ('MateId','scrm',1692547200,to_bitmap(0)), + ('MateId','scrm',1693152000,to_bitmap(0)), + ('MateId','scrm',1693756800,to_bitmap(0)), + ('MateId','scrm',1694016000,to_bitmap(0)), + ('MateId','scrm',1694275200,to_bitmap(0)), + ('MateId','scrm',1694448000,to_bitmap(0)), + ('MateId','scrm',1694793600,to_bitmap(0)), + ('MateId','scrm',1694880000,to_bitmap(0)), + ('MateId','scrm',1694966400,to_bitmap(0)), + ('MateId','scrm',1695571200,to_bitmap(0)), + ('MateId','scrm',1696003200,to_bitmap(0)), + ('MateId','scrm',1696348800,to_bitmap(0)), + ('MateId','scrm',1697040000,to_bitmap(0)), + ('MateId','scrm',1697126400,to_bitmap(0)), + ('MateId','scrm',1697731200,to_bitmap(0)), + ('MateId','scrm',1698076800,to_bitmap(0)), + ('MateId','scrm',1698336000,to_bitmap(0)), + ('MateId','scrm',1699200000,to_bitmap(0)), + ('MateId','scrm',1699459200,to_bitmap(0)), + ('MateId','scrm',1699632000,to_bitmap(0)); + """ + + sql """ + INSERT INTO `behavior_bitmap_base` VALUES + ('member_id','m_oneid',1,bitmap_from_string("1,5,6,8,9,11,12,13,14,18,19,22,24,25,29,31,34,36,40,41,45,46,47,50,56,57,58,59,64,65,66,67,68,70,71,72")), + ('customer_id','c_oneid',1,bitmap_from_string("2,3,4,7,10,15,16,17,20,21,23,26,27,28,30,32,33,35,37,38,39,42,43,44,48,49,51,52,53,54,55,60,61,62,63,69")); + """ + + for (int i = 1; i <= 30; i++) { + sql """ + select + a.identity_type_desc, + a.system_type, + a.statistic_data, + bitmap_xor(a.one_id, b.one_id) as one_id + from + ( + select + identity_type_desc, + system_type, + statistic_data, + one_id + from + behavior_bitmap_base + where + identity_type_desc = 'MateId' + ) a join + ( + select + one_id + from + behavior_bitmap_base + where + system_type = 'm_oneid' + ) b + union all + select + a.identity_type_desc, + a.system_type, + a.statistic_data, + bitmap_xor(a.one_id, b.one_id) as one_id + from + ( + select + identity_type_desc, + system_type, + statistic_data, + one_id + from + behavior_bitmap_base + where identity_type_desc = 'GuestId' + ) a join + ( + select + one_id + from + behavior_bitmap_base + where system_type = 'c_oneid' + ) b + """ + } +} From 91d138137220894e6e35ee9b02670ca59b87b250 Mon Sep 17 00:00:00 2001 From: minghong Date: Fri, 24 Nov 2023 17:40:46 +0800 Subject: [PATCH 24/33] [Pick](nereids) Pick: partition prune fails in case of NOT expression (#27047) (#27507) --- .../rules/OneRangePartitionEvaluator.java | 67 ++++- .../apache/doris/planner/OlapScanNode.java | 7 +- .../performance_p0/redundant_conjuncts.out | 4 +- .../test_multi_range_partition.groovy | 260 ++++++++++++++++++ 4 files changed, 324 insertions(+), 14 deletions(-) create mode 100644 regression-test/suites/nereids_rules_p0/partition_prune/test_multi_range_partition.groovy diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/expression/rules/OneRangePartitionEvaluator.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/expression/rules/OneRangePartitionEvaluator.java index 13ecddd150ac36..b4fb931ec1e799 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/expression/rules/OneRangePartitionEvaluator.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/expression/rules/OneRangePartitionEvaluator.java @@ -222,8 +222,12 @@ public EvaluateRangeResult visit(Expression expr, EvaluateRangeInput context) { if (expr.getDataType() instanceof BooleanType && !(expr instanceof Literal) && result.childrenResult.stream().anyMatch(childResult -> childResult.columnRanges.values().stream().anyMatch(ColumnRange::isEmptyRange))) { + // this assumes that for expression: func(A) + // if A reject partition, then func(A) reject partition. + // implement visitFunc for Func if Func does not satisfy the above assumption. return new EvaluateRangeResult(BooleanLiteral.FALSE, result.columnRanges, result.childrenResult); } + // assumption: for func(A), if A accept range (n, m), then func(A) accept range (n, m). return result; } @@ -342,13 +346,16 @@ public EvaluateRangeResult visitEqualTo(EqualTo equalTo, EvaluateRangeInput cont if (!(result.result instanceof EqualTo)) { return result; } - equalTo = (EqualTo) result.result; + boolean isRejectNot = false; if (equalTo.left() instanceof Slot && equalTo.right() instanceof Literal) { Slot slot = (Slot) equalTo.left(); if (isPartitionSlot(slot)) { Map leftColumnRanges = result.childrenResult.get(0).columnRanges; ColumnRange atLeastRange = ColumnRange.singleton((Literal) equalTo.right()); result = intersectSlotRange(result, leftColumnRanges, slot, atLeastRange); + if (leftColumnRanges.get(slot).isSingleton()) { + isRejectNot = true; + } } } else if (equalTo.left() instanceof Literal && equalTo.right() instanceof Slot) { Slot slot = (Slot) equalTo.right(); @@ -356,7 +363,15 @@ public EvaluateRangeResult visitEqualTo(EqualTo equalTo, EvaluateRangeInput cont Map rightColumnRanges = result.childrenResult.get(1).columnRanges; ColumnRange atMostRange = ColumnRange.singleton((Literal) equalTo.left()); result = intersectSlotRange(result, rightColumnRanges, slot, atMostRange); + if (rightColumnRanges.get(slot).isSingleton()) { + isRejectNot = true; + } } + } else { + isRejectNot = false; + } + if (!isRejectNot) { + result = result.withRejectNot(false); } return result; } @@ -379,6 +394,7 @@ public EvaluateRangeResult visitInPredicate(InPredicate inPredicate, EvaluateRan Map slotRanges = result.childrenResult.get(0).columnRanges; result = intersectSlotRange(result, slotRanges, slot, unionLiteralRange); } + result = result.withRejectNot(false); return result; } @@ -388,14 +404,15 @@ public EvaluateRangeResult visitIsNull(IsNull isNull, EvaluateRangeInput context if (!(result.result instanceof IsNull)) { return result; } - + result = result.withRejectNot(false); Expression child = isNull.child(); if (!(child instanceof Slot) || !isPartitionSlot((Slot) child)) { return result; } if (!partitionSlotContainsNull.get((Slot) child)) { - return new EvaluateRangeResult(BooleanLiteral.FALSE, result.columnRanges, result.childrenResult); + return new EvaluateRangeResult(BooleanLiteral.FALSE, + result.columnRanges, result.childrenResult, false); } return result; } @@ -430,12 +447,16 @@ public EvaluateRangeResult visitOr(Or or, EvaluateRangeInput context) { @Override public EvaluateRangeResult visitNot(Not not, EvaluateRangeInput context) { EvaluateRangeResult result = evaluateChildrenThenThis(not, context); - - Map newRanges = result.childrenResult.get(0).columnRanges.entrySet() - .stream() - .map(slotToRange -> Pair.of(slotToRange.getKey(), slotToRange.getValue().complete())) - .collect(ImmutableMap.toImmutableMap(Pair::key, Pair::value)); - result = new EvaluateRangeResult(result.result, newRanges, result.childrenResult); + if (result.isRejectNot()) { + Map newRanges = Maps.newHashMap(); + for (Map.Entry entry : result.childrenResult.get(0).columnRanges.entrySet()) { + Slot slot = entry.getKey(); + ColumnRange childRange = entry.getValue(); + ColumnRange partitionRange = result.columnRanges.get(slot); + newRanges.put(slot, partitionRange.intersect(childRange.complete())); + } + result = new EvaluateRangeResult(result.result, newRanges, result.childrenResult); + } return returnFalseIfExistEmptyRange(result); } @@ -658,11 +679,37 @@ public static class EvaluateRangeResult { private final Map columnRanges; private final List childrenResult; + // rejectNot = true, if \exist e \in R, pred(e)=true, then we have \forAll e \in R, !pred(e)=false + // that is, if pred holds true over R, then !pred does not hold true over R. + // example 1. rejectNot=false + // R=(1,10), pred: k = 5. "k = 5" holds true over R, and "NOT k = 5" holds true over R. + // example 2. rejectNot=false + // R=(1,10), pred: k = 11. "k=10" dose not holds over R + // example 3. rejectNot=false + // R=(1,10), pred: k in (4, 5). "k in (4, 5)" holds true over R, and "NOT k in (4, 5)" holds over R + // example 3. rejectNot=true + // R=(1,10), pred: k < 11. "k<11" holds true over R, and "NOT k<11" dose not hold over R + private final boolean rejectNot; + public EvaluateRangeResult(Expression result, Map columnRanges, - List childrenResult) { + List childrenResult, boolean rejectNot) { this.result = result; this.columnRanges = columnRanges; this.childrenResult = childrenResult; + this.rejectNot = rejectNot; + } + + public EvaluateRangeResult(Expression result, Map columnRanges, + List childrenResult) { + this(result, columnRanges, childrenResult, childrenResult.stream().allMatch(r -> r.isRejectNot())); + } + + public EvaluateRangeResult withRejectNot(boolean rejectNot) { + return new EvaluateRangeResult(result, columnRanges, childrenResult, rejectNot); + } + + public boolean isRejectNot() { + return rejectNot; } } diff --git a/fe/fe-core/src/main/java/org/apache/doris/planner/OlapScanNode.java b/fe/fe-core/src/main/java/org/apache/doris/planner/OlapScanNode.java index 4523612eaac48d..8724d84040f2b1 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/planner/OlapScanNode.java +++ b/fe/fe-core/src/main/java/org/apache/doris/planner/OlapScanNode.java @@ -1235,8 +1235,11 @@ public String getNodeExplainString(String prefix, TExplainLevel detailLevel) { } output.append("\n"); } - output.append(prefix).append(String.format("partitions=%s/%s, tablets=%s/%s", selectedPartitionNum, - olapTable.getPartitions().size(), selectedTabletsNum, totalTabletsNum)); + String selectedPartitions = getSelectedPartitionIds().stream().sorted() + .map(id -> olapTable.getPartition(id).getName()) + .collect(Collectors.joining(",")); + output.append(prefix).append(String.format("partitions=%s/%s (%s), tablets=%s/%s", selectedPartitionNum, + olapTable.getPartitions().size(), selectedPartitions, selectedTabletsNum, totalTabletsNum)); // We print up to 3 tablet, and we print "..." if the number is more than 3 if (scanTabletIds.size() > 3) { List firstTenTabletIds = scanTabletIds.subList(0, 3); diff --git a/regression-test/data/performance_p0/redundant_conjuncts.out b/regression-test/data/performance_p0/redundant_conjuncts.out index 4c432cf6d2b3f7..06003d12d2f0cf 100644 --- a/regression-test/data/performance_p0/redundant_conjuncts.out +++ b/regression-test/data/performance_p0/redundant_conjuncts.out @@ -12,7 +12,7 @@ PLAN FRAGMENT 0 0:VOlapScanNode TABLE: default_cluster:regression_test_performance_p0.redundant_conjuncts(redundant_conjuncts), PREAGGREGATION: OFF. Reason: No AggregateInfo PREDICATES: `k1` = 1 - partitions=0/1, tablets=0/0, tabletList= + partitions=0/1 (), tablets=0/0, tabletList= cardinality=0, avgRowSize=8.0, numNodes=1 pushAggOp=NONE @@ -29,7 +29,7 @@ PLAN FRAGMENT 0 0:VOlapScanNode TABLE: default_cluster:regression_test_performance_p0.redundant_conjuncts(redundant_conjuncts), PREAGGREGATION: OFF. Reason: No AggregateInfo PREDICATES: `k1` = 1 OR `k1` = 2 - partitions=0/1, tablets=0/0, tabletList= + partitions=0/1 (), tablets=0/0, tabletList= cardinality=0, avgRowSize=8.0, numNodes=1 pushAggOp=NONE diff --git a/regression-test/suites/nereids_rules_p0/partition_prune/test_multi_range_partition.groovy b/regression-test/suites/nereids_rules_p0/partition_prune/test_multi_range_partition.groovy new file mode 100644 index 00000000000000..d24972c6b5f777 --- /dev/null +++ b/regression-test/suites/nereids_rules_p0/partition_prune/test_multi_range_partition.groovy @@ -0,0 +1,260 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + +suite("test_multi_range_partition") { + String db = context.config.getDbNameByFile(context.file) + sql "use ${db}" + sql "SET enable_nereids_planner=true" + sql "SET enable_fallback_to_original_planner=false" + sql "set partition_pruning_expand_threshold=10;" + sql "drop table if exists pt" + sql """ + CREATE TABLE `pt` ( + `k1` int(11) NULL COMMENT "", + `k2` int(11) NULL COMMENT "", + `k3` int(11) NULL COMMENT "" + ) + PARTITION BY RANGE(`k1`, `k2`) + (PARTITION p1 VALUES LESS THAN ("3", "1"), + PARTITION p2 VALUES [("3", "1"), ("7", "10")), + PARTITION p3 VALUES [("7", "10"), ("10", "15"))) + DISTRIBUTED BY HASH(`k1`) BUCKETS 10 + PROPERTIES ('replication_num' = '1'); + """ + sql "insert into pt values (7, 0, 0);" + sql "insert into pt(k1) values (7);" + sql "insert into pt(k1) values (0);" + sql "insert into pt values (7, 11, 0);" + + // basic test + explain{ + sql "select * from pt where k1=7;" + contains "partitions=2/3 (p2,p3)" + } + + explain{ + sql "select * from pt where k1=10;" + contains "partitions=1/3 (p3)" + } + + explain{ + sql "select * from pt where k1=-1;" + contains "partitions=1/3 (p1)" + } + + // ===============function(part_key)=================== + explain{ + sql "select * from pt where 2*k1=20; --漏裁 p1" + contains "partitions=2/3 (p1,p3)" + } + explain{ + sql "select * from pt where 2*(k1+1)=22; --漏裁 p1" + contains "partitions=2/3 (p1,p3)" + } + explain{ + sql "select * from pt where sin(k1)=0" + contains "artitions=3/3 (p1,p2,p3)" + } + + // fix BUG: p1 missed + explain{ + sql "select * from pt where sin(k1)<>0" + contains "partitions=3/3 (p1,p2,p3)" + } + + // ============= in predicate ====================== + explain{ + sql "select * from pt where k1 in (7, 8);" + contains "partitions=2/3 (p2,p3)" + } + + // =========== is null =================== + explain{ + sql "select * from pt where k1 is null" + contains "partitions=1/3 (p1)" + } + + // fix BUG: p1 missed + explain{ + sql "select * from pt where k1 is not null" + contains "partitions=3/3 (p1,p2,p3)" + } + + //======== the second partition key ========= + explain{ + sql "select * from pt where k1=7 and (k1>k2);" + contains "partitions=1/3 (p2)" + } + + explain { + sql "select * from pt where k1=7 and not (k1>k2);" + contains "partitions=2/3 (p2,p3)" + } + + // p3 NOT pruned + explain { + sql "select * from pt where k1=7 and (k1k2" + contains "partitions=2/3 (p2,p3)" + } + + //p3 NOT pruned + explain { + sql "select * from pt where k1=7 and (k1 > cast(k2 as bigint));" + contains "partitions=2/3 (p2,p3)" + } + + //fix BUG: p2 missed + explain { + sql "select * from pt where k1=7 and not (k2 is null);" + contains "partitions=2/3 (p2,p3)" + } + + //p3 NOT pruned + explain { + sql "select * from pt where k1=7 and not (k2 is not null);" + contains "partitions=2/3 (p2,p3)" + } + + //fix BUG: p2 missed + explain { + sql "select * from pt where k1=7 and k2 not in (1, 2);" + contains "partitions=2/3 (p2,p3)" + } + + explain { + sql "select * from pt where k1=7 and k2 in (1, 12);" + contains "partitions=2/3 (p2,p3)" + } + + //fix BUG: p2,p3 pruned + explain { + sql "select * from pt where k1=7 and k2 not in (1, 12)" + contains "partitions=2/3 (p2,p3)" + } + + explain { + sql" select * from pt where k1=7 and k2 in (0);" + contains "partitions=1/3 (p2)" + } + + explain { + sql "select * from pt where k1=7 and k2 in (11)" + contains "partitions=1/3 (p3)" + } + + explain { + sql "select * from pt where k1=7 and k2 in (null);" + contains "partitions=2/3 (p2,p3)" + } + + explain { + sql "select * from pt where k1=7 and k2 not in (null);" + contains "partitions=2/3 (p2,p3)" + } + + explain { + sql "select * from pt where k1=7 and k1 > k3;" + contains "partitions=2/3 (p2,p3)" + } + + explain { + sql "select * from pt where k1=7 and k1 <> k3;" + contains "partitions=2/3 (p2,p3)" + } + + explain { + sql "select * from pt where k2 in (null);" + contains "partitions=3/3 (p1,p2,p3)" + } + + // p1/p2/p3 NOT pruned + explain { + sql "select * from pt where k2 not in (null)" + contains "partitions=3/3 (p1,p2,p3)" + } + + explain { + sql "select * from pt where k2 in (0)" + contains "partitions=3/3 (p1,p2,p3)" + } + + explain { + sql "select * from pt where k2 > 100" + contains "partitions=3/3 (p1,p2,p3)" + } + + explain { + sql "select * from pt where k2 < -1" + contains "partitions=3/3 (p1,p2,p3)" + } + + explain { + sql "select * from pt where k1=7 and (k3 is null)" + contains "partitions=2/3 (p2,p3)" + } + + explain { + sql "select * from pt where k1=7 and not (k3 is null);" + contains "partitions=2/3 (p2,p3)" + } + + + // test if a range is not sliced to multiple single point + // for example: range [3,7) is sliced to [3,3], [4,4],[5,5],[6,6] + sql "set partition_pruning_expand_threshold=1;" + + explain { + sql "select * from pt where k1 < 5;" + contains "partitions=2/3 (p1,p2)" + } + + explain { + sql "select * from pt where not k1 < 5;" + contains "partitions=2/3 (p2,p3)" + } + + explain { + sql "select * from pt where k2 < 5;" + contains "partitions=3/3 (p1,p2,p3)" + } + + explain { + sql "select * from pt where not k2 < 5;" + contains "partitions=3/3 (p1,p2,p3)" + } + + explain { + sql "select * from pt where k3 < 5;" + contains "partitions=3/3 (p1,p2,p3)" + } + + explain { + sql "select * from pt where not k3 < 5;" + contains "partitions=3/3 (p1,p2,p3)" + } +} From dbf30df50f6651570e86d0d76f51960cfeb3867d Mon Sep 17 00:00:00 2001 From: Jack Drogon Date: Fri, 24 Nov 2023 17:43:09 +0800 Subject: [PATCH 25/33] [fix](clone) Fix engine_clone file exist (#27361) (#27536) --- be/src/common/status.h | 2 + be/src/olap/task/engine_clone_task.cpp | 79 +++++++++++++++++++++++--- 2 files changed, 74 insertions(+), 7 deletions(-) diff --git a/be/src/common/status.h b/be/src/common/status.h index b11642371303e7..88981fe808b329 100644 --- a/be/src/common/status.h +++ b/be/src/common/status.h @@ -595,6 +595,8 @@ inline std::string Status::to_string() const { template using Result = expected; +using ResultError = unexpected; + #define RETURN_IF_ERROR_RESULT(stmt) \ do { \ Status _status_ = (stmt); \ diff --git a/be/src/olap/task/engine_clone_task.cpp b/be/src/olap/task/engine_clone_task.cpp index 3621a958eff80c..86ba6ac2b9f364 100644 --- a/be/src/olap/task/engine_clone_task.cpp +++ b/be/src/olap/task/engine_clone_task.cpp @@ -74,6 +74,58 @@ using strings::SkipWhitespace; namespace doris { using namespace ErrorCode; +namespace { +/// if binlog file exist, then check if binlog file md5sum equal +/// if equal, then skip link file +/// if not equal, then return error +/// return value: if binlog file not exist, then return to binlog file path +Result check_dest_binlog_valid(const std::string& tablet_dir, + const std::string& clone_file, bool* skip_link_file) { + // change clone_file suffix .binlog to .dat + std::string new_clone_file = clone_file; + new_clone_file.replace(clone_file.size() - 7, 7, ".dat"); + auto to = fmt::format("{}/_binlog/{}", tablet_dir, new_clone_file); + + // check to to file exist + bool exists = true; + auto status = io::global_local_filesystem()->exists(to, &exists); + if (!status.ok()) { + return ResultError(std::move(status)); + } + + if (!exists) { + return to; + } + + LOG(WARNING) << "binlog file already exist. " + << "tablet_dir=" << tablet_dir << ", clone_file=" << clone_file; + + std::string clone_file_md5sum; + status = io::global_local_filesystem()->md5sum(clone_file, &clone_file_md5sum); + if (!status.ok()) { + return ResultError(std::move(status)); + } + std::string to_file_md5sum; + status = io::global_local_filesystem()->md5sum(to, &to_file_md5sum); + if (!status.ok()) { + return ResultError(std::move(status)); + } + + if (clone_file_md5sum == to_file_md5sum) { + // if md5sum equal, then skip link file + *skip_link_file = true; + return to; + } else { + auto err_msg = fmt::format( + "binlog file already exist, but md5sum not equal. " + "tablet_dir={}, clone_file={}", + tablet_dir, clone_file); + LOG(WARNING) << err_msg; + return ResultError(Status::InternalError(std::move(err_msg))); + } +} +} // namespace + #define RETURN_IF_ERROR_(status, stmt) \ do { \ status = (stmt); \ @@ -603,6 +655,8 @@ Status EngineCloneTask::_finish_clone(Tablet* tablet, const std::string& clone_d /// Traverse all downloaded clone files in CLONE dir. /// If it does not exist in local tablet dir, link the file to local tablet dir /// And save all linked files in linked_success_files. + /// if binlog exist in clone dir and md5sum equal, then skip link file + bool skip_link_file = false; for (const string& clone_file : clone_file_names) { if (local_file_names.find(clone_file) != local_file_names.end()) { VLOG_NOTICE << "find same file when clone, skip it. " @@ -619,19 +673,30 @@ Status EngineCloneTask::_finish_clone(Tablet* tablet, const std::string& clone_d break; } - // change clone_file suffix .binlog to .dat - std::string new_clone_file = clone_file; - new_clone_file.replace(clone_file.size() - 7, 7, ".dat"); - to = fmt::format("{}/_binlog/{}", tablet_dir, new_clone_file); + if (auto&& result = check_dest_binlog_valid(tablet_dir, clone_file, &skip_link_file); + result) { + to = std::move(result.value()); + } else { + status = std::move(result.error()); + return status; + } } else { to = fmt::format("{}/{}", tablet_dir, clone_file); } - RETURN_IF_ERROR(io::global_local_filesystem()->link_file(from, to)); - linked_success_files.emplace_back(std::move(to)); + if (!skip_link_file) { + status = io::global_local_filesystem()->link_file(from, to); + if (!status.ok()) { + return status; + } + linked_success_files.emplace_back(std::move(to)); + } } if (contain_binlog) { - RETURN_IF_ERROR(tablet->ingest_binlog_metas(&rowset_binlog_metas_pb)); + status = tablet->ingest_binlog_metas(&rowset_binlog_metas_pb); + if (!status.ok()) { + return status; + } } // clone and compaction operation should be performed sequentially From 4d1aaaa58c7f98a67ea46668e2a1b37017d53705 Mon Sep 17 00:00:00 2001 From: Dongyang Li Date: Fri, 24 Nov 2023 18:05:33 +0800 Subject: [PATCH 26/33] [chore](case) adjust timeout of broker load case #27540 --- .../external_table_p0/broker_load/test_broker_load_func.groovy | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/regression-test/suites/external_table_p0/broker_load/test_broker_load_func.groovy b/regression-test/suites/external_table_p0/broker_load/test_broker_load_func.groovy index e15579a7ae9593..ff7c899e1a3df1 100644 --- a/regression-test/suites/external_table_p0/broker_load/test_broker_load_func.groovy +++ b/regression-test/suites/external_table_p0/broker_load/test_broker_load_func.groovy @@ -59,7 +59,7 @@ suite("test_broker_load_func", "p0,external,hive,external_docker,external_docker """ def check_load_result = {checklabel, testTablex -> - max_try_milli_secs = 60000 + max_try_milli_secs = 120000 while(max_try_milli_secs) { result = sql "show load where label = '${checklabel}'" if(result[0][2] == "FINISHED") { From 7781a44b28776de8ceee2bf4c838e0a368e8c295 Mon Sep 17 00:00:00 2001 From: Jibing-Li <64681310+Jibing-Li@users.noreply.github.com> Date: Fri, 24 Nov 2023 20:55:08 +0800 Subject: [PATCH 27/33] Fix auto analyze doesn't filter unsupported type bug. (#27547) Fix auto analyze doesn't filter unsupported type bug. Catch throwable in auto analyze thread for each database, otherwise the thread will quit when one database failed to create jobs and all other databases will not get analyzed. change FE config item full_auto_analyze_simultaneously_running_task_num to auto_analyze_simultaneously_running_task_num backport #27559 --- .../java/org/apache/doris/common/Config.java | 2 +- .../org/apache/doris/catalog/OlapTable.java | 7 ++++++- .../doris/catalog/external/ExternalTable.java | 4 +++- .../statistics/StatisticsAutoCollector.java | 18 ++++++++++++------ .../doris/statistics/TableStatsMeta.java | 6 ++++-- .../StatisticsAutoCollectorTest.java | 2 +- 6 files changed, 27 insertions(+), 12 deletions(-) diff --git a/fe/fe-common/src/main/java/org/apache/doris/common/Config.java b/fe/fe-common/src/main/java/org/apache/doris/common/Config.java index f81545f3b909aa..3b8067f9626480 100644 --- a/fe/fe-common/src/main/java/org/apache/doris/common/Config.java +++ b/fe/fe-common/src/main/java/org/apache/doris/common/Config.java @@ -2156,7 +2156,7 @@ public class Config extends ConfigBase { public static int autobucket_min_buckets = 1; @ConfField - public static int full_auto_analyze_simultaneously_running_task_num = 1; + public static int auto_analyze_simultaneously_running_task_num = 1; @ConfField public static final int period_analyze_simultaneously_running_task_num = 1; diff --git a/fe/fe-core/src/main/java/org/apache/doris/catalog/OlapTable.java b/fe/fe-core/src/main/java/org/apache/doris/catalog/OlapTable.java index 14077701e1267b..21d9ee92f3d688 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/catalog/OlapTable.java +++ b/fe/fe-core/src/main/java/org/apache/doris/catalog/OlapTable.java @@ -1134,6 +1134,7 @@ public boolean needReAnalyzeTable(TableStatsMeta tblStats) { } if (!tblStats.analyzeColumns().containsAll(getBaseSchema() .stream() + .filter(c -> !StatisticsUtil.isUnsupportedType(c.getType())) .map(Column::getName) .collect(Collectors.toSet()))) { return true; @@ -2316,10 +2317,14 @@ public Map> findReAnalyzeNeededPartitions() { Set allPartitions = table.getPartitionNames().stream().map(table::getPartition) .filter(Partition::hasData).map(Partition::getName).collect(Collectors.toSet()); if (tableStats == null) { - return table.getBaseSchema().stream().collect(Collectors.toMap(Column::getName, v -> allPartitions)); + return table.getBaseSchema().stream().filter(c -> !StatisticsUtil.isUnsupportedType(c.getType())) + .collect(Collectors.toMap(Column::getName, v -> allPartitions)); } Map> colToPart = new HashMap<>(); for (Column col : table.getBaseSchema()) { + if (StatisticsUtil.isUnsupportedType(col.getType())) { + continue; + } long lastUpdateTime = tableStats.findColumnLastUpdateTime(col.getName()); Set partitions = table.getPartitionNames().stream() .map(table::getPartition) diff --git a/fe/fe-core/src/main/java/org/apache/doris/catalog/external/ExternalTable.java b/fe/fe-core/src/main/java/org/apache/doris/catalog/external/ExternalTable.java index a915136193c891..4eab7ebf813620 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/catalog/external/ExternalTable.java +++ b/fe/fe-core/src/main/java/org/apache/doris/catalog/external/ExternalTable.java @@ -36,6 +36,7 @@ import org.apache.doris.statistics.BaseAnalysisTask; import org.apache.doris.statistics.ColumnStatistic; import org.apache.doris.statistics.TableStatsMeta; +import org.apache.doris.statistics.util.StatisticsUtil; import org.apache.doris.thrift.TTableDescriptor; import com.google.common.collect.Sets; @@ -397,7 +398,8 @@ public Map> findReAnalyzeNeededPartitions() { HashSet partitions = Sets.newHashSet(); // TODO: Find a way to collect external table partitions that need to be analyzed. partitions.add("Dummy Partition"); - return getBaseSchema().stream().collect(Collectors.toMap(Column::getName, k -> partitions)); + return getBaseSchema().stream().filter(c -> !StatisticsUtil.isUnsupportedType(c.getType())) + .collect(Collectors.toMap(Column::getName, k -> partitions)); } @Override diff --git a/fe/fe-core/src/main/java/org/apache/doris/statistics/StatisticsAutoCollector.java b/fe/fe-core/src/main/java/org/apache/doris/statistics/StatisticsAutoCollector.java index 3d811105b11b1f..93527bd33193d3 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/statistics/StatisticsAutoCollector.java +++ b/fe/fe-core/src/main/java/org/apache/doris/statistics/StatisticsAutoCollector.java @@ -24,6 +24,7 @@ import org.apache.doris.catalog.TableIf; import org.apache.doris.catalog.external.ExternalTable; import org.apache.doris.common.Config; +import org.apache.doris.common.DdlException; import org.apache.doris.common.util.TimeUtils; import org.apache.doris.datasource.CatalogIf; import org.apache.doris.statistics.AnalysisInfo.AnalysisMethod; @@ -51,7 +52,7 @@ public class StatisticsAutoCollector extends StatisticsCollector { public StatisticsAutoCollector() { super("Automatic Analyzer", TimeUnit.MINUTES.toMillis(Config.auto_check_statistics_in_minutes), - new AnalysisTaskExecutor(Config.full_auto_analyze_simultaneously_running_task_num)); + new AnalysisTaskExecutor(Config.auto_analyze_simultaneously_running_task_num)); } @Override @@ -77,12 +78,17 @@ private void analyzeAll() { if (StatisticConstants.SYSTEM_DBS.contains(databaseIf.getFullName())) { continue; } - analyzeDb(databaseIf); + try { + analyzeDb(databaseIf); + } catch (Throwable t) { + LOG.warn("Failed to analyze database {}.{}", ctl.getName(), databaseIf.getFullName(), t); + continue; + } } } } - public void analyzeDb(DatabaseIf databaseIf) { + public void analyzeDb(DatabaseIf databaseIf) throws DdlException { List analysisInfos = constructAnalysisInfo(databaseIf); for (AnalysisInfo analysisInfo : analysisInfos) { analysisInfo = getReAnalyzeRequiredPart(analysisInfo); @@ -92,7 +98,8 @@ public void analyzeDb(DatabaseIf databaseIf) { try { createSystemAnalysisJob(analysisInfo); } catch (Exception e) { - LOG.warn("Failed to create analysis job", e); + analysisInfo.message = e.getMessage(); + throw e; } } } @@ -136,8 +143,7 @@ protected void createAnalyzeJobForTbl(DatabaseIf db, .setTblId(table.getId()) .setColName( table.getBaseSchema().stream().filter(c -> !StatisticsUtil.isUnsupportedType(c.getType())) - .map( - Column::getName).collect(Collectors.joining(",")) + .map(Column::getName).collect(Collectors.joining(",")) ) .setAnalysisType(AnalysisInfo.AnalysisType.FUNDAMENTALS) .setAnalysisMode(AnalysisInfo.AnalysisMode.INCREMENTAL) diff --git a/fe/fe-core/src/main/java/org/apache/doris/statistics/TableStatsMeta.java b/fe/fe-core/src/main/java/org/apache/doris/statistics/TableStatsMeta.java index 6f50802f395653..97a2cd15186f24 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/statistics/TableStatsMeta.java +++ b/fe/fe-core/src/main/java/org/apache/doris/statistics/TableStatsMeta.java @@ -23,6 +23,7 @@ import org.apache.doris.common.io.Writable; import org.apache.doris.persist.gson.GsonUtils; import org.apache.doris.statistics.AnalysisInfo.JobType; +import org.apache.doris.statistics.util.StatisticsUtil; import com.google.gson.annotations.SerializedName; @@ -136,8 +137,9 @@ public void update(AnalysisInfo analyzedJob, TableIf tableIf) { } jobType = analyzedJob.jobType; if (tableIf != null && analyzedJob.colToPartitions.keySet() - .containsAll(tableIf.getBaseSchema().stream().map(Column::getName).collect( - Collectors.toSet()))) { + .containsAll(tableIf.getBaseSchema().stream() + .filter(c -> !StatisticsUtil.isUnsupportedType(c.getType())) + .map(Column::getName).collect(Collectors.toSet()))) { updatedRows.set(0); } } diff --git a/fe/fe-core/src/test/java/org/apache/doris/statistics/StatisticsAutoCollectorTest.java b/fe/fe-core/src/test/java/org/apache/doris/statistics/StatisticsAutoCollectorTest.java index 00a68e204ab161..d94bdd61248734 100644 --- a/fe/fe-core/src/test/java/org/apache/doris/statistics/StatisticsAutoCollectorTest.java +++ b/fe/fe-core/src/test/java/org/apache/doris/statistics/StatisticsAutoCollectorTest.java @@ -247,7 +247,7 @@ public boolean enableAutoAnalyze() { @Test public void checkAvailableThread() { StatisticsAutoCollector autoCollector = new StatisticsAutoCollector(); - Assertions.assertEquals(Config.full_auto_analyze_simultaneously_running_task_num, + Assertions.assertEquals(Config.auto_analyze_simultaneously_running_task_num, autoCollector.analysisTaskExecutor.executors.getMaximumPoolSize()); } From f519514e43663891494fb1c4f8e2cf908e338abf Mon Sep 17 00:00:00 2001 From: zhiqiang Date: Fri, 24 Nov 2023 21:00:32 +0800 Subject: [PATCH 28/33] [chore](fe plugin) Upgrade dependency to doris 2.0-SNAPSHOT #27522 (#27558) --- fe_plugins/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fe_plugins/pom.xml b/fe_plugins/pom.xml index ffae6daf5c8f1b..1315315c8976e1 100644 --- a/fe_plugins/pom.xml +++ b/fe_plugins/pom.xml @@ -68,7 +68,7 @@ under the License. 2.18.0 - 1.2-SNAPSHOT + 2.0-SNAPSHOT github From 850e0dbeccc1563612094c67fb3a30b80ab9cb19 Mon Sep 17 00:00:00 2001 From: Pxl Date: Fri, 24 Nov 2023 21:20:27 +0800 Subject: [PATCH 29/33] [Bug](materialized-view) add limitation for duplicate expr on materialized view (#27523) (#27562) --- .../analysis/CreateMaterializedViewStmt.java | 24 ++++++++++--------- .../agg_invalid/agg_invalid.groovy | 10 ++++++++ 2 files changed, 23 insertions(+), 11 deletions(-) diff --git a/fe/fe-core/src/main/java/org/apache/doris/analysis/CreateMaterializedViewStmt.java b/fe/fe-core/src/main/java/org/apache/doris/analysis/CreateMaterializedViewStmt.java index eafc24c4fdaf76..7c28a417296dcb 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/analysis/CreateMaterializedViewStmt.java +++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/CreateMaterializedViewStmt.java @@ -39,6 +39,7 @@ import com.google.common.collect.ImmutableSet; import com.google.common.collect.Lists; import com.google.common.collect.Maps; +import com.google.common.collect.Sets; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -46,6 +47,7 @@ import java.util.List; import java.util.Map; import java.util.Optional; +import java.util.Set; /** * Materialized view is performed to materialize the results of query. @@ -339,19 +341,19 @@ private void analyzeGroupByClause() throws AnalysisException { } } - for (Expr groupExpr : groupingExprs) { - boolean match = false; - String rhs = selectStmt.getExprFromAliasSMap(groupExpr).toSqlWithoutTbl(); - for (Expr expr : selectExprs) { - String lhs = selectStmt.getExprFromAliasSMap(expr).toSqlWithoutTbl(); - if (lhs.equalsIgnoreCase(rhs)) { - match = true; - break; - } + Set selectExprNames = Sets.newTreeSet(String.CASE_INSENSITIVE_ORDER); + for (Expr expr : selectExprs) { + String selectExprName = selectStmt.getExprFromAliasSMap(expr).toSqlWithoutTbl(); + if (selectExprNames.contains(selectExprName)) { + throw new AnalysisException("The select expr " + selectExprName + " is duplicated."); } + selectExprNames.add(selectExprName); + } - if (!match) { - throw new AnalysisException("The grouping expr " + rhs + " not in select list."); + for (Expr expr : groupingExprs) { + String groupExprName = selectStmt.getExprFromAliasSMap(expr).toSqlWithoutTbl(); + if (!selectExprNames.contains(groupExprName)) { + throw new AnalysisException("The grouping expr " + groupExprName + " not in select list."); } } } diff --git a/regression-test/suites/mv_p0/test_mv_useless/agg_invalid/agg_invalid.groovy b/regression-test/suites/mv_p0/test_mv_useless/agg_invalid/agg_invalid.groovy index bdf7a567beb370..9bf940e2e4f4c2 100644 --- a/regression-test/suites/mv_p0/test_mv_useless/agg_invalid/agg_invalid.groovy +++ b/regression-test/suites/mv_p0/test_mv_useless/agg_invalid/agg_invalid.groovy @@ -41,4 +41,14 @@ suite ("agg_invalid") { sql "CREATE MATERIALIZED VIEW mv_4 AS SELECT p1, SUM(abs(v1)) FROM t1 GROUP BY p1;" exception "errCode = 2," } + + test { + sql "CREATE MATERIALIZED VIEW mv_5 AS SELECT p1, p2, p1, SUM(v1) FROM t1 GROUP BY p1,p2,p1;" + exception "errCode = 2," + } + + test { + sql "CREATE MATERIALIZED VIEW mv_5 AS SELECT p1, p2, SUM(v1), SUM(v1) FROM t1 GROUP BY p1,p2;" + exception "errCode = 2," + } } From f4b58231eb1d439d1dc9e7e531199c331c7cc3f5 Mon Sep 17 00:00:00 2001 From: starocean999 <40539150+starocean999@users.noreply.github.com> Date: Fri, 24 Nov 2023 21:33:19 +0800 Subject: [PATCH 30/33] [fix](planner)join node should output required slot from parent node #27526 (#27551) --- .../apache/doris/planner/JoinNodeBase.java | 3 ++ .../test_join_with_projection.groovy | 31 +++++++++++++++++++ 2 files changed, 34 insertions(+) diff --git a/fe/fe-core/src/main/java/org/apache/doris/planner/JoinNodeBase.java b/fe/fe-core/src/main/java/org/apache/doris/planner/JoinNodeBase.java index b635cfda59d992..2a0a272e48838b 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/planner/JoinNodeBase.java +++ b/fe/fe-core/src/main/java/org/apache/doris/planner/JoinNodeBase.java @@ -275,6 +275,9 @@ public void initOutputSlotIds(Set requiredSlotIdSet, Analyzer analyzer) SlotId firstMaterializedSlotId = null; for (TupleDescriptor tupleDescriptor : outputTupleDescList) { for (SlotDescriptor slotDescriptor : tupleDescriptor.getSlots()) { + if ((requiredSlotIdSet != null && requiredSlotIdSet.contains(slotDescriptor.getId()))) { + slotDescriptor.setIsMaterialized(true); + } if (slotDescriptor.isMaterialized()) { if ((requiredSlotIdSet == null || requiredSlotIdSet.contains(slotDescriptor.getId()))) { outputSlotIds.add(slotDescriptor.getId()); diff --git a/regression-test/suites/correctness_p0/test_join_with_projection.groovy b/regression-test/suites/correctness_p0/test_join_with_projection.groovy index 68bf349ffc1190..5f60b1be326a4c 100644 --- a/regression-test/suites/correctness_p0/test_join_with_projection.groovy +++ b/regression-test/suites/correctness_p0/test_join_with_projection.groovy @@ -79,4 +79,35 @@ suite("test_join_with_projection") { sql """ drop table if exists test_join_with_projection_outerjoin_B; """ + + sql """set enable_nereids_planner=false;""" + sql """drop table if exists c5870_t;""" + sql """create table c5870_t ( + order_item_seq_id varchar(80) NOT NULL, + last_updated_stamp datetime, + quantity DECIMAL(18, 2) + ) + ENGINE=OLAP + DISTRIBUTED BY HASH(order_item_seq_id) BUCKETS 1 + PROPERTIES ( + "replication_allocation" = "tag.location.default: 1", + "in_memory" = "false", + "storage_format" = "V2" + ); + """ + sql """with c5870_t_pk_set AS + (SELECT oi.order_item_seq_id, + oi.quantity + FROM `c5870_t` oi + WHERE order_item_seq_id >= + (SELECT last_updated_stamp + FROM `c5870_t` ) + ORDER BY oi.last_updated_stamp limit 1 ) + SELECT order_item_seq_id + FROM + (SELECT oia.order_item_seq_id + FROM `c5870_t` oia + INNER JOIN c5870_t_pk_set lips + ON true ) oia ;""" + sql """drop table if exists c5870_t;""" } From b19d966250d66855b35e12c9fac820e0db796e6b Mon Sep 17 00:00:00 2001 From: Mingyu Chen Date: Fri, 24 Nov 2023 22:56:56 +0800 Subject: [PATCH 31/33] [branch-2.0](hive) enable hive view by default (#27550) --- fe/fe-common/src/main/java/org/apache/doris/common/Config.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fe/fe-common/src/main/java/org/apache/doris/common/Config.java b/fe/fe-common/src/main/java/org/apache/doris/common/Config.java index 3b8067f9626480..6b5626fedbade8 100644 --- a/fe/fe-common/src/main/java/org/apache/doris/common/Config.java +++ b/fe/fe-common/src/main/java/org/apache/doris/common/Config.java @@ -1854,7 +1854,7 @@ public class Config extends ConfigBase { * otherwise it will throw an AnalysisException. */ @ConfField(mutable = true, expType = ExperimentalType.EXPERIMENTAL) - public static boolean enable_query_hive_views = false; + public static boolean enable_query_hive_views = true; /** * If set to true, doris will automatically synchronize hms metadata to the cache in fe. From 7ea2ba5c1aeb96e17f3ebfe65e6e31bf27e65261 Mon Sep 17 00:00:00 2001 From: minghong Date: Sat, 25 Nov 2023 10:10:22 +0800 Subject: [PATCH 32/33] [pick](nereids) adjust bc join and shuffle join #27113 (#27566) --- .../doris/nereids/cost/CostModelV1.java | 11 +- .../apache/doris/statistics/Statistics.java | 4 +- .../shape/query10.out | 5 +- .../shape/query23.out | 29 +- .../shape/query47.out | 17 +- .../shape/query54.out | 47 +- .../shape/query76.out | 22 +- .../shape/query77.out | 29 +- .../shape/query91.out | 5 +- .../shape/query92.out | 15 +- .../nereids_tpch_shape_sf500_p0/shape/q1.out | 13 - .../nereids_tpch_shape_sf500_p0/shape/q10.out | 29 -- .../nereids_tpch_shape_sf500_p0/shape/q11.out | 39 -- .../nereids_tpch_shape_sf500_p0/shape/q12.out | 17 - .../nereids_tpch_shape_sf500_p0/shape/q13.out | 21 - .../nereids_tpch_shape_sf500_p0/shape/q14.out | 16 - .../nereids_tpch_shape_sf500_p0/shape/q15.out | 30 -- .../nereids_tpch_shape_sf500_p0/shape/q16.out | 22 - .../nereids_tpch_shape_sf500_p0/shape/q17.out | 21 - .../nereids_tpch_shape_sf500_p0/shape/q18.out | 26 - .../nereids_tpch_shape_sf500_p0/shape/q19.out | 16 - .../nereids_tpch_shape_sf500_p0/shape/q2.out | 33 -- .../nereids_tpch_shape_sf500_p0/shape/q20.out | 33 -- .../nereids_tpch_shape_sf500_p0/shape/q21.out | 33 -- .../nereids_tpch_shape_sf500_p0/shape/q22.out | 27 - .../nereids_tpch_shape_sf500_p0/shape/q3.out | 25 - .../nereids_tpch_shape_sf500_p0/shape/q4.out | 18 - .../nereids_tpch_shape_sf500_p0/shape/q5.out | 37 -- .../nereids_tpch_shape_sf500_p0/shape/q6.out | 10 - .../nereids_tpch_shape_sf500_p0/shape/q7.out | 37 -- .../nereids_tpch_shape_sf500_p0/shape/q8.out | 49 -- .../nereids_tpch_shape_sf500_p0/shape/q9.out | 37 -- .../rf/ds_rf13.groovy | 2 +- .../rf/ds_rf61.groovy | 2 +- .../rf/ds_rf64.groovy | 2 +- .../nereids_tpch_shape_sf500_p0/load.groovy | 467 ------------------ .../shape/q1.groovy | 56 --- .../shape/q10.groovy | 70 --- .../shape/q11.groovy | 65 --- .../shape/q12.groovy | 66 --- .../shape/q13.groovy | 55 --- .../shape/q14.groovy | 48 -- .../shape/q15.groovy | 57 --- .../shape/q16.groovy | 68 --- .../shape/q17.groovy | 55 --- .../shape/q18.groovy | 71 --- .../shape/q19.groovy | 75 --- .../shape/q2.groovy | 83 ---- .../shape/q20.groovy | 76 --- .../shape/q21.groovy | 78 --- .../shape/q22.groovy | 75 --- .../shape/q3.groovy | 65 --- .../shape/q4.groovy | 61 --- .../shape/q5.groovy | 59 --- .../shape/q6.groovy | 44 -- .../shape/q7.groovy | 74 --- .../shape/q8.groovy | 71 --- .../shape/q9.groovy | 67 --- 58 files changed, 99 insertions(+), 2586 deletions(-) delete mode 100644 regression-test/data/nereids_tpch_shape_sf500_p0/shape/q1.out delete mode 100644 regression-test/data/nereids_tpch_shape_sf500_p0/shape/q10.out delete mode 100644 regression-test/data/nereids_tpch_shape_sf500_p0/shape/q11.out delete mode 100644 regression-test/data/nereids_tpch_shape_sf500_p0/shape/q12.out delete mode 100644 regression-test/data/nereids_tpch_shape_sf500_p0/shape/q13.out delete mode 100644 regression-test/data/nereids_tpch_shape_sf500_p0/shape/q14.out delete mode 100644 regression-test/data/nereids_tpch_shape_sf500_p0/shape/q15.out delete mode 100644 regression-test/data/nereids_tpch_shape_sf500_p0/shape/q16.out delete mode 100644 regression-test/data/nereids_tpch_shape_sf500_p0/shape/q17.out delete mode 100644 regression-test/data/nereids_tpch_shape_sf500_p0/shape/q18.out delete mode 100644 regression-test/data/nereids_tpch_shape_sf500_p0/shape/q19.out delete mode 100644 regression-test/data/nereids_tpch_shape_sf500_p0/shape/q2.out delete mode 100644 regression-test/data/nereids_tpch_shape_sf500_p0/shape/q20.out delete mode 100644 regression-test/data/nereids_tpch_shape_sf500_p0/shape/q21.out delete mode 100644 regression-test/data/nereids_tpch_shape_sf500_p0/shape/q22.out delete mode 100644 regression-test/data/nereids_tpch_shape_sf500_p0/shape/q3.out delete mode 100644 regression-test/data/nereids_tpch_shape_sf500_p0/shape/q4.out delete mode 100644 regression-test/data/nereids_tpch_shape_sf500_p0/shape/q5.out delete mode 100644 regression-test/data/nereids_tpch_shape_sf500_p0/shape/q6.out delete mode 100644 regression-test/data/nereids_tpch_shape_sf500_p0/shape/q7.out delete mode 100644 regression-test/data/nereids_tpch_shape_sf500_p0/shape/q8.out delete mode 100644 regression-test/data/nereids_tpch_shape_sf500_p0/shape/q9.out delete mode 100644 regression-test/suites/nereids_tpch_shape_sf500_p0/load.groovy delete mode 100644 regression-test/suites/nereids_tpch_shape_sf500_p0/shape/q1.groovy delete mode 100644 regression-test/suites/nereids_tpch_shape_sf500_p0/shape/q10.groovy delete mode 100644 regression-test/suites/nereids_tpch_shape_sf500_p0/shape/q11.groovy delete mode 100644 regression-test/suites/nereids_tpch_shape_sf500_p0/shape/q12.groovy delete mode 100644 regression-test/suites/nereids_tpch_shape_sf500_p0/shape/q13.groovy delete mode 100644 regression-test/suites/nereids_tpch_shape_sf500_p0/shape/q14.groovy delete mode 100644 regression-test/suites/nereids_tpch_shape_sf500_p0/shape/q15.groovy delete mode 100644 regression-test/suites/nereids_tpch_shape_sf500_p0/shape/q16.groovy delete mode 100644 regression-test/suites/nereids_tpch_shape_sf500_p0/shape/q17.groovy delete mode 100644 regression-test/suites/nereids_tpch_shape_sf500_p0/shape/q18.groovy delete mode 100644 regression-test/suites/nereids_tpch_shape_sf500_p0/shape/q19.groovy delete mode 100644 regression-test/suites/nereids_tpch_shape_sf500_p0/shape/q2.groovy delete mode 100644 regression-test/suites/nereids_tpch_shape_sf500_p0/shape/q20.groovy delete mode 100644 regression-test/suites/nereids_tpch_shape_sf500_p0/shape/q21.groovy delete mode 100644 regression-test/suites/nereids_tpch_shape_sf500_p0/shape/q22.groovy delete mode 100644 regression-test/suites/nereids_tpch_shape_sf500_p0/shape/q3.groovy delete mode 100644 regression-test/suites/nereids_tpch_shape_sf500_p0/shape/q4.groovy delete mode 100644 regression-test/suites/nereids_tpch_shape_sf500_p0/shape/q5.groovy delete mode 100644 regression-test/suites/nereids_tpch_shape_sf500_p0/shape/q6.groovy delete mode 100644 regression-test/suites/nereids_tpch_shape_sf500_p0/shape/q7.groovy delete mode 100644 regression-test/suites/nereids_tpch_shape_sf500_p0/shape/q8.groovy delete mode 100644 regression-test/suites/nereids_tpch_shape_sf500_p0/shape/q9.groovy diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/cost/CostModelV1.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/cost/CostModelV1.java index fb8d2b9f921a11..e50f546ea4d24c 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/cost/CostModelV1.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/cost/CostModelV1.java @@ -307,8 +307,15 @@ public Cost visitPhysicalHashJoin( int parallelInstance = Math.max(1, ConnectContext.get().getSessionVariable().getParallelExecInstanceNum()); int totalInstanceNumber = parallelInstance * beNumber; if (buildSideFactor <= 1.0) { - // use totalInstanceNumber to the power of 2 as the default factor value - buildSideFactor = Math.pow(totalInstanceNumber, 0.5); + if (buildSideFactor <= 1.0) { + if (buildStats.computeSize() < 1024 * 1024) { + // no penalty to broadcast if build side is small + buildSideFactor = 1.0; + } else { + // use totalInstanceNumber to the power of 2 as the default factor value + buildSideFactor = Math.pow(totalInstanceNumber, 0.5); + } + } } // TODO: since the outputs rows may expand a lot, penalty on it will cause bc never be chosen. // will refine this in next generation cost model. diff --git a/fe/fe-core/src/main/java/org/apache/doris/statistics/Statistics.java b/fe/fe-core/src/main/java/org/apache/doris/statistics/Statistics.java index 77c221f5931b38..5ed440f1bc6979 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/statistics/Statistics.java +++ b/fe/fe-core/src/main/java/org/apache/doris/statistics/Statistics.java @@ -129,7 +129,9 @@ public double computeSize() { } public double dataSizeFactor() { - return computeTupleSize() / K_BYTES; + double lowerBound = 0.03; + double upperBound = 0.07; + return Math.min(Math.max(computeTupleSize() / K_BYTES, lowerBound), upperBound); } @Override diff --git a/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query10.out b/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query10.out index aee9e1657c3948..b80b526bc89ab0 100644 --- a/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query10.out +++ b/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query10.out @@ -27,9 +27,8 @@ PhysicalResultSink ------------------------------------------PhysicalOlapScan[date_dim] ------------------------------PhysicalDistribute --------------------------------hashJoin[INNER_JOIN](c.c_current_addr_sk = ca.ca_address_sk) -----------------------------------PhysicalDistribute -------------------------------------PhysicalProject ---------------------------------------PhysicalOlapScan[customer] +----------------------------------PhysicalProject +------------------------------------PhysicalOlapScan[customer] ----------------------------------PhysicalDistribute ------------------------------------PhysicalProject --------------------------------------filter(ca_county IN ('Storey County', 'Marquette County', 'Warren County', 'Cochran County', 'Kandiyohi County')) diff --git a/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query23.out b/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query23.out index f1c2753446c0b7..7950dbdbf447e0 100644 --- a/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query23.out +++ b/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query23.out @@ -4,21 +4,22 @@ PhysicalCteAnchor ( cteId=CTEId#0 ) --PhysicalCteProducer ( cteId=CTEId#0 ) ----PhysicalProject ------filter((cnt > 4)) ---------hashAgg[LOCAL] -----------PhysicalProject -------------hashJoin[INNER_JOIN](store_sales.ss_item_sk = item.i_item_sk) ---------------PhysicalDistribute -----------------PhysicalProject -------------------hashJoin[INNER_JOIN](store_sales.ss_sold_date_sk = date_dim.d_date_sk) ---------------------PhysicalProject -----------------------PhysicalOlapScan[store_sales] ---------------------PhysicalDistribute +--------hashAgg[GLOBAL] +----------PhysicalDistribute +------------hashAgg[LOCAL] +--------------PhysicalProject +----------------hashJoin[INNER_JOIN](store_sales.ss_item_sk = item.i_item_sk) +------------------PhysicalProject +--------------------hashJoin[INNER_JOIN](store_sales.ss_sold_date_sk = date_dim.d_date_sk) ----------------------PhysicalProject -------------------------filter(d_year IN (2000, 2001, 2002, 2003)) ---------------------------PhysicalOlapScan[date_dim] ---------------PhysicalDistribute -----------------PhysicalProject -------------------PhysicalOlapScan[item] +------------------------PhysicalOlapScan[store_sales] +----------------------PhysicalDistribute +------------------------PhysicalProject +--------------------------filter(d_year IN (2000, 2001, 2002, 2003)) +----------------------------PhysicalOlapScan[date_dim] +------------------PhysicalDistribute +--------------------PhysicalProject +----------------------PhysicalOlapScan[item] --PhysicalCteAnchor ( cteId=CTEId#2 ) ----PhysicalCteProducer ( cteId=CTEId#2 ) ------PhysicalProject diff --git a/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query47.out b/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query47.out index a10406ac317b94..693dd1df3a6f4e 100644 --- a/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query47.out +++ b/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query47.out @@ -36,18 +36,17 @@ PhysicalCteAnchor ( cteId=CTEId#0 ) --------PhysicalDistribute ----------PhysicalTopN ------------PhysicalProject ---------------hashJoin[INNER_JOIN](v1.i_category = v1_lead.i_category)(v1.i_brand = v1_lead.i_brand)(v1.s_store_name = v1_lead.s_store_name)(v1.s_company_name = v1_lead.s_company_name)(v1.rn = expr_(rn - 1)) +--------------hashJoin[INNER_JOIN](v1.i_category = v1_lag.i_category)(v1.i_brand = v1_lag.i_brand)(v1.s_store_name = v1_lag.s_store_name)(v1.s_company_name = v1_lag.s_company_name)(v1.rn = expr_(rn + 1)) ----------------PhysicalDistribute ------------------PhysicalProject --------------------PhysicalCteConsumer ( cteId=CTEId#0 ) ----------------PhysicalDistribute -------------------PhysicalProject ---------------------hashJoin[INNER_JOIN](v1.i_category = v1_lag.i_category)(v1.i_brand = v1_lag.i_brand)(v1.s_store_name = v1_lag.s_store_name)(v1.s_company_name = v1_lag.s_company_name)(v1.rn = expr_(rn + 1)) -----------------------PhysicalDistribute -------------------------PhysicalProject +------------------hashJoin[INNER_JOIN](v1.i_category = v1_lead.i_category)(v1.i_brand = v1_lead.i_brand)(v1.s_store_name = v1_lead.s_store_name)(v1.s_company_name = v1_lead.s_company_name)(v1.rn = expr_(rn - 1)) +--------------------PhysicalDistribute +----------------------PhysicalProject +------------------------PhysicalCteConsumer ( cteId=CTEId#0 ) +--------------------PhysicalDistribute +----------------------PhysicalProject +------------------------filter((if((avg_monthly_sales > 0.0000), (abs((cast(sum_sales as DOUBLE) - cast(avg_monthly_sales as DOUBLE))) / cast(avg_monthly_sales as DOUBLE)), NULL) > 0.1)(v2.d_year = 2001)(v2.avg_monthly_sales > 0.0000)) --------------------------PhysicalCteConsumer ( cteId=CTEId#0 ) -----------------------PhysicalDistribute -------------------------PhysicalProject ---------------------------filter((if((avg_monthly_sales > 0.0000), (abs((cast(sum_sales as DOUBLE) - cast(avg_monthly_sales as DOUBLE))) / cast(avg_monthly_sales as DOUBLE)), NULL) > 0.1)(v2.d_year = 2001)(v2.avg_monthly_sales > 0.0000)) -----------------------------PhysicalCteConsumer ( cteId=CTEId#0 ) diff --git a/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query54.out b/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query54.out index 8001cd2e1fe595..04d6c5a8f7c209 100644 --- a/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query54.out +++ b/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query54.out @@ -32,32 +32,33 @@ PhysicalResultSink ------------------------------------------------------PhysicalOlapScan[customer_address] ----------------------------------------------------PhysicalDistribute ------------------------------------------------------PhysicalProject ---------------------------------------------------------hashAgg[LOCAL] -----------------------------------------------------------PhysicalProject -------------------------------------------------------------hashJoin[INNER_JOIN](customer.c_customer_sk = cs_or_ws_sales.customer_sk) ---------------------------------------------------------------PhysicalDistribute -----------------------------------------------------------------PhysicalProject -------------------------------------------------------------------PhysicalOlapScan[customer] ---------------------------------------------------------------PhysicalDistribute -----------------------------------------------------------------PhysicalProject -------------------------------------------------------------------hashJoin[INNER_JOIN](cs_or_ws_sales.sold_date_sk = date_dim.d_date_sk) +--------------------------------------------------------hashAgg[GLOBAL] +----------------------------------------------------------PhysicalDistribute +------------------------------------------------------------hashAgg[LOCAL] +--------------------------------------------------------------PhysicalProject +----------------------------------------------------------------hashJoin[INNER_JOIN](customer.c_customer_sk = cs_or_ws_sales.customer_sk) +------------------------------------------------------------------PhysicalProject +--------------------------------------------------------------------PhysicalOlapScan[customer] +------------------------------------------------------------------PhysicalDistribute --------------------------------------------------------------------PhysicalProject -----------------------------------------------------------------------hashJoin[INNER_JOIN](cs_or_ws_sales.item_sk = item.i_item_sk) -------------------------------------------------------------------------PhysicalUnion ---------------------------------------------------------------------------PhysicalDistribute -----------------------------------------------------------------------------PhysicalProject -------------------------------------------------------------------------------PhysicalOlapScan[catalog_sales] ---------------------------------------------------------------------------PhysicalDistribute -----------------------------------------------------------------------------PhysicalProject -------------------------------------------------------------------------------PhysicalOlapScan[web_sales] +----------------------------------------------------------------------hashJoin[INNER_JOIN](cs_or_ws_sales.sold_date_sk = date_dim.d_date_sk) +------------------------------------------------------------------------PhysicalProject +--------------------------------------------------------------------------hashJoin[INNER_JOIN](cs_or_ws_sales.item_sk = item.i_item_sk) +----------------------------------------------------------------------------PhysicalUnion +------------------------------------------------------------------------------PhysicalDistribute +--------------------------------------------------------------------------------PhysicalProject +----------------------------------------------------------------------------------PhysicalOlapScan[catalog_sales] +------------------------------------------------------------------------------PhysicalDistribute +--------------------------------------------------------------------------------PhysicalProject +----------------------------------------------------------------------------------PhysicalOlapScan[web_sales] +----------------------------------------------------------------------------PhysicalDistribute +------------------------------------------------------------------------------PhysicalProject +--------------------------------------------------------------------------------filter((item.i_class = 'maternity')(item.i_category = 'Women')) +----------------------------------------------------------------------------------PhysicalOlapScan[item] ------------------------------------------------------------------------PhysicalDistribute --------------------------------------------------------------------------PhysicalProject -----------------------------------------------------------------------------filter((item.i_class = 'maternity')(item.i_category = 'Women')) -------------------------------------------------------------------------------PhysicalOlapScan[item] ---------------------------------------------------------------------PhysicalDistribute -----------------------------------------------------------------------PhysicalProject -------------------------------------------------------------------------filter((date_dim.d_year = 1998)(date_dim.d_moy = 5)) ---------------------------------------------------------------------------PhysicalOlapScan[date_dim] +----------------------------------------------------------------------------filter((date_dim.d_year = 1998)(date_dim.d_moy = 5)) +------------------------------------------------------------------------------PhysicalOlapScan[date_dim] ------------------------------------------------PhysicalDistribute --------------------------------------------------PhysicalProject ----------------------------------------------------PhysicalOlapScan[store] diff --git a/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query76.out b/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query76.out index ec4edcacc5ea70..56330b9c247ee6 100644 --- a/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query76.out +++ b/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query76.out @@ -36,18 +36,18 @@ PhysicalResultSink --------------------PhysicalDistribute ----------------------PhysicalProject ------------------------PhysicalOlapScan[date_dim] -----------------PhysicalProject -------------------hashJoin[INNER_JOIN](catalog_sales.cs_sold_date_sk = date_dim.d_date_sk) ---------------------PhysicalProject -----------------------hashJoin[INNER_JOIN](catalog_sales.cs_item_sk = item.i_item_sk) -------------------------PhysicalDistribute +----------------PhysicalDistribute +------------------PhysicalProject +--------------------hashJoin[INNER_JOIN](catalog_sales.cs_sold_date_sk = date_dim.d_date_sk) +----------------------PhysicalProject +------------------------hashJoin[INNER_JOIN](catalog_sales.cs_item_sk = item.i_item_sk) --------------------------PhysicalProject ----------------------------filter(cs_warehouse_sk IS NULL) ------------------------------PhysicalOlapScan[catalog_sales] -------------------------PhysicalDistribute ---------------------------PhysicalProject -----------------------------PhysicalOlapScan[item] ---------------------PhysicalDistribute -----------------------PhysicalProject -------------------------PhysicalOlapScan[date_dim] +--------------------------PhysicalDistribute +----------------------------PhysicalProject +------------------------------PhysicalOlapScan[item] +----------------------PhysicalDistribute +------------------------PhysicalProject +--------------------------PhysicalOlapScan[date_dim] diff --git a/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query77.out b/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query77.out index ed706b54e663f2..f1df37846ba9c1 100644 --- a/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query77.out +++ b/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query77.out @@ -30,21 +30,22 @@ PhysicalResultSink --------------------------------------PhysicalProject ----------------------------------------PhysicalOlapScan[store] ------------------------PhysicalProject ---------------------------hashAgg[LOCAL] -----------------------------PhysicalProject -------------------------------hashJoin[INNER_JOIN](store_returns.sr_store_sk = store.s_store_sk) ---------------------------------PhysicalDistribute -----------------------------------PhysicalProject -------------------------------------hashJoin[INNER_JOIN](store_returns.sr_returned_date_sk = date_dim.d_date_sk) ---------------------------------------PhysicalProject -----------------------------------------PhysicalOlapScan[store_returns] ---------------------------------------PhysicalDistribute +--------------------------hashAgg[GLOBAL] +----------------------------PhysicalDistribute +------------------------------hashAgg[LOCAL] +--------------------------------PhysicalProject +----------------------------------hashJoin[INNER_JOIN](store_returns.sr_store_sk = store.s_store_sk) +------------------------------------PhysicalProject +--------------------------------------hashJoin[INNER_JOIN](store_returns.sr_returned_date_sk = date_dim.d_date_sk) ----------------------------------------PhysicalProject -------------------------------------------filter((date_dim.d_date <= '1998-09-04')(date_dim.d_date >= '1998-08-05')) ---------------------------------------------PhysicalOlapScan[date_dim] ---------------------------------PhysicalDistribute -----------------------------------PhysicalProject -------------------------------------PhysicalOlapScan[store] +------------------------------------------PhysicalOlapScan[store_returns] +----------------------------------------PhysicalDistribute +------------------------------------------PhysicalProject +--------------------------------------------filter((date_dim.d_date <= '1998-09-04')(date_dim.d_date >= '1998-08-05')) +----------------------------------------------PhysicalOlapScan[date_dim] +------------------------------------PhysicalDistribute +--------------------------------------PhysicalProject +----------------------------------------PhysicalOlapScan[store] --------------------PhysicalProject ----------------------NestedLoopJoin[CROSS_JOIN] ------------------------PhysicalProject diff --git a/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query91.out b/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query91.out index fda1e190ab8742..ba4a23e3f0ba58 100644 --- a/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query91.out +++ b/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query91.out @@ -15,9 +15,8 @@ PhysicalResultSink ------------------------hashJoin[INNER_JOIN](catalog_returns.cr_returned_date_sk = date_dim.d_date_sk) --------------------------PhysicalProject ----------------------------hashJoin[INNER_JOIN](catalog_returns.cr_returning_customer_sk = customer.c_customer_sk) -------------------------------PhysicalDistribute ---------------------------------PhysicalProject -----------------------------------PhysicalOlapScan[catalog_returns] +------------------------------PhysicalProject +--------------------------------PhysicalOlapScan[catalog_returns] ------------------------------PhysicalDistribute --------------------------------hashJoin[INNER_JOIN](customer_address.ca_address_sk = customer.c_current_addr_sk) ----------------------------------PhysicalProject diff --git a/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query92.out b/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query92.out index 714d46345d7a3e..295f54863da7c6 100644 --- a/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query92.out +++ b/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query92.out @@ -13,15 +13,14 @@ PhysicalResultSink --------------------PhysicalDistribute ----------------------PhysicalProject ------------------------hashJoin[INNER_JOIN](date_dim.d_date_sk = web_sales.ws_sold_date_sk) ---------------------------PhysicalDistribute -----------------------------PhysicalProject -------------------------------hashJoin[INNER_JOIN](item.i_item_sk = web_sales.ws_item_sk) +--------------------------PhysicalProject +----------------------------hashJoin[INNER_JOIN](item.i_item_sk = web_sales.ws_item_sk) +------------------------------PhysicalProject +--------------------------------PhysicalOlapScan[web_sales] +------------------------------PhysicalDistribute --------------------------------PhysicalProject -----------------------------------PhysicalOlapScan[web_sales] ---------------------------------PhysicalDistribute -----------------------------------PhysicalProject -------------------------------------filter((item.i_manufact_id = 320)) ---------------------------------------PhysicalOlapScan[item] +----------------------------------filter((item.i_manufact_id = 320)) +------------------------------------PhysicalOlapScan[item] --------------------------PhysicalDistribute ----------------------------PhysicalProject ------------------------------filter((date_dim.d_date <= '2002-05-27')(date_dim.d_date >= '2002-02-26')) diff --git a/regression-test/data/nereids_tpch_shape_sf500_p0/shape/q1.out b/regression-test/data/nereids_tpch_shape_sf500_p0/shape/q1.out deleted file mode 100644 index 7740edd76cc3a5..00000000000000 --- a/regression-test/data/nereids_tpch_shape_sf500_p0/shape/q1.out +++ /dev/null @@ -1,13 +0,0 @@ --- This file is automatically generated. You should know what you did if you want to edit this --- !select -- -PhysicalResultSink ---PhysicalQuickSort -----PhysicalDistribute -------PhysicalQuickSort ---------hashAgg[GLOBAL] -----------PhysicalDistribute -------------hashAgg[LOCAL] ---------------PhysicalProject -----------------filter((lineitem.l_shipdate <= 1998-09-02)) -------------------PhysicalOlapScan[lineitem] - diff --git a/regression-test/data/nereids_tpch_shape_sf500_p0/shape/q10.out b/regression-test/data/nereids_tpch_shape_sf500_p0/shape/q10.out deleted file mode 100644 index bbf108f0aedc48..00000000000000 --- a/regression-test/data/nereids_tpch_shape_sf500_p0/shape/q10.out +++ /dev/null @@ -1,29 +0,0 @@ --- This file is automatically generated. You should know what you did if you want to edit this --- !select -- -PhysicalResultSink ---PhysicalTopN -----PhysicalDistribute -------PhysicalTopN ---------PhysicalProject -----------hashAgg[GLOBAL] -------------PhysicalDistribute ---------------hashAgg[LOCAL] -----------------PhysicalProject -------------------hashJoin[INNER_JOIN](lineitem.l_orderkey = orders.o_orderkey) ---------------------PhysicalProject -----------------------filter((lineitem.l_returnflag = 'R')) -------------------------PhysicalOlapScan[lineitem] ---------------------PhysicalDistribute -----------------------hashJoin[INNER_JOIN](customer.c_nationkey = nation.n_nationkey) -------------------------PhysicalProject ---------------------------hashJoin[INNER_JOIN](customer.c_custkey = orders.o_custkey) -----------------------------PhysicalProject -------------------------------PhysicalOlapScan[customer] -----------------------------PhysicalDistribute -------------------------------PhysicalProject ---------------------------------filter((orders.o_orderdate < 1994-01-01)(orders.o_orderdate >= 1993-10-01)) -----------------------------------PhysicalOlapScan[orders] -------------------------PhysicalDistribute ---------------------------PhysicalProject -----------------------------PhysicalOlapScan[nation] - diff --git a/regression-test/data/nereids_tpch_shape_sf500_p0/shape/q11.out b/regression-test/data/nereids_tpch_shape_sf500_p0/shape/q11.out deleted file mode 100644 index 1d1e947be2d045..00000000000000 --- a/regression-test/data/nereids_tpch_shape_sf500_p0/shape/q11.out +++ /dev/null @@ -1,39 +0,0 @@ --- This file is automatically generated. You should know what you did if you want to edit this --- !select -- -PhysicalResultSink ---PhysicalQuickSort -----PhysicalDistribute -------PhysicalQuickSort ---------PhysicalProject -----------NestedLoopJoin[INNER_JOIN](cast(value as DOUBLE) > cast((sum((ps_supplycost * cast(ps_availqty as DECIMALV3(10, 0)))) * 0.000002) as DOUBLE)) -------------hashAgg[LOCAL] ---------------PhysicalProject -----------------hashJoin[INNER_JOIN](partsupp.ps_suppkey = supplier.s_suppkey) -------------------PhysicalProject ---------------------PhysicalOlapScan[partsupp] -------------------PhysicalDistribute ---------------------hashJoin[INNER_JOIN](supplier.s_nationkey = nation.n_nationkey) -----------------------PhysicalProject -------------------------PhysicalOlapScan[supplier] -----------------------PhysicalDistribute -------------------------PhysicalProject ---------------------------filter((nation.n_name = 'GERMANY')) -----------------------------PhysicalOlapScan[nation] -------------PhysicalDistribute ---------------PhysicalProject -----------------hashAgg[GLOBAL] -------------------PhysicalDistribute ---------------------hashAgg[LOCAL] -----------------------PhysicalProject -------------------------hashJoin[INNER_JOIN](partsupp.ps_suppkey = supplier.s_suppkey) ---------------------------PhysicalProject -----------------------------PhysicalOlapScan[partsupp] ---------------------------PhysicalDistribute -----------------------------hashJoin[INNER_JOIN](supplier.s_nationkey = nation.n_nationkey) -------------------------------PhysicalProject ---------------------------------PhysicalOlapScan[supplier] -------------------------------PhysicalDistribute ---------------------------------PhysicalProject -----------------------------------filter((nation.n_name = 'GERMANY')) -------------------------------------PhysicalOlapScan[nation] - diff --git a/regression-test/data/nereids_tpch_shape_sf500_p0/shape/q12.out b/regression-test/data/nereids_tpch_shape_sf500_p0/shape/q12.out deleted file mode 100644 index 1fec7c6597fd30..00000000000000 --- a/regression-test/data/nereids_tpch_shape_sf500_p0/shape/q12.out +++ /dev/null @@ -1,17 +0,0 @@ --- This file is automatically generated. You should know what you did if you want to edit this --- !select -- -PhysicalResultSink ---PhysicalQuickSort -----PhysicalDistribute -------PhysicalQuickSort ---------hashAgg[GLOBAL] -----------PhysicalDistribute -------------hashAgg[LOCAL] ---------------PhysicalProject -----------------hashJoin[INNER_JOIN](orders.o_orderkey = lineitem.l_orderkey) -------------------PhysicalProject ---------------------PhysicalOlapScan[orders] -------------------PhysicalProject ---------------------filter(l_shipmode IN ('MAIL', 'SHIP')(lineitem.l_shipdate < lineitem.l_commitdate)(lineitem.l_receiptdate < 1995-01-01)(lineitem.l_receiptdate >= 1994-01-01)(lineitem.l_commitdate < lineitem.l_receiptdate)) -----------------------PhysicalOlapScan[lineitem] - diff --git a/regression-test/data/nereids_tpch_shape_sf500_p0/shape/q13.out b/regression-test/data/nereids_tpch_shape_sf500_p0/shape/q13.out deleted file mode 100644 index ab3e4ce172b9db..00000000000000 --- a/regression-test/data/nereids_tpch_shape_sf500_p0/shape/q13.out +++ /dev/null @@ -1,21 +0,0 @@ --- This file is automatically generated. You should know what you did if you want to edit this --- !select -- -PhysicalResultSink ---PhysicalQuickSort -----PhysicalDistribute -------PhysicalQuickSort ---------hashAgg[GLOBAL] -----------PhysicalDistribute -------------hashAgg[LOCAL] ---------------PhysicalProject -----------------hashAgg[LOCAL] -------------------PhysicalProject ---------------------hashJoin[RIGHT_OUTER_JOIN](customer.c_custkey = orders.o_custkey) -----------------------PhysicalDistribute -------------------------PhysicalProject ---------------------------filter(( not (o_comment like '%special%requests%'))) -----------------------------PhysicalOlapScan[orders] -----------------------PhysicalDistribute -------------------------PhysicalProject ---------------------------PhysicalOlapScan[customer] - diff --git a/regression-test/data/nereids_tpch_shape_sf500_p0/shape/q14.out b/regression-test/data/nereids_tpch_shape_sf500_p0/shape/q14.out deleted file mode 100644 index 747b102ab8889a..00000000000000 --- a/regression-test/data/nereids_tpch_shape_sf500_p0/shape/q14.out +++ /dev/null @@ -1,16 +0,0 @@ --- This file is automatically generated. You should know what you did if you want to edit this --- !select -- -PhysicalResultSink ---PhysicalProject -----hashAgg[GLOBAL] -------PhysicalDistribute ---------hashAgg[LOCAL] -----------PhysicalProject -------------hashJoin[INNER_JOIN](lineitem.l_partkey = part.p_partkey) ---------------PhysicalProject -----------------PhysicalOlapScan[part] ---------------PhysicalDistribute -----------------PhysicalProject -------------------filter((lineitem.l_shipdate < 1995-10-01)(lineitem.l_shipdate >= 1995-09-01)) ---------------------PhysicalOlapScan[lineitem] - diff --git a/regression-test/data/nereids_tpch_shape_sf500_p0/shape/q15.out b/regression-test/data/nereids_tpch_shape_sf500_p0/shape/q15.out deleted file mode 100644 index ff4350e0806069..00000000000000 --- a/regression-test/data/nereids_tpch_shape_sf500_p0/shape/q15.out +++ /dev/null @@ -1,30 +0,0 @@ --- This file is automatically generated. You should know what you did if you want to edit this --- !select -- -PhysicalResultSink ---PhysicalQuickSort -----PhysicalDistribute -------PhysicalQuickSort ---------PhysicalProject -----------hashJoin[INNER_JOIN](supplier.s_suppkey = revenue0.supplier_no) -------------PhysicalProject ---------------PhysicalOlapScan[supplier] -------------PhysicalDistribute ---------------hashJoin[INNER_JOIN](revenue0.total_revenue = max(total_revenue)) -----------------hashAgg[GLOBAL] -------------------PhysicalDistribute ---------------------hashAgg[LOCAL] -----------------------PhysicalProject -------------------------filter((lineitem.l_shipdate >= 1996-01-01)(lineitem.l_shipdate < 1996-04-01)) ---------------------------PhysicalOlapScan[lineitem] -----------------PhysicalDistribute -------------------hashAgg[GLOBAL] ---------------------PhysicalDistribute -----------------------hashAgg[LOCAL] -------------------------PhysicalProject ---------------------------hashAgg[GLOBAL] -----------------------------PhysicalDistribute -------------------------------hashAgg[LOCAL] ---------------------------------PhysicalProject -----------------------------------filter((lineitem.l_shipdate >= 1996-01-01)(lineitem.l_shipdate < 1996-04-01)) -------------------------------------PhysicalOlapScan[lineitem] - diff --git a/regression-test/data/nereids_tpch_shape_sf500_p0/shape/q16.out b/regression-test/data/nereids_tpch_shape_sf500_p0/shape/q16.out deleted file mode 100644 index 21332b6f99dc89..00000000000000 --- a/regression-test/data/nereids_tpch_shape_sf500_p0/shape/q16.out +++ /dev/null @@ -1,22 +0,0 @@ --- This file is automatically generated. You should know what you did if you want to edit this --- !select -- -PhysicalResultSink ---PhysicalQuickSort -----PhysicalDistribute -------PhysicalQuickSort ---------hashAgg[GLOBAL] -----------PhysicalDistribute -------------hashAgg[LOCAL] ---------------PhysicalProject -----------------hashJoin[LEFT_ANTI_JOIN](partsupp.ps_suppkey = supplier.s_suppkey) -------------------hashJoin[INNER_JOIN](part.p_partkey = partsupp.ps_partkey) ---------------------PhysicalProject -----------------------PhysicalOlapScan[partsupp] ---------------------PhysicalProject -----------------------filter(( not (p_type like 'MEDIUM POLISHED%'))( not (p_brand = 'Brand#45'))p_size IN (3, 9, 14, 19, 23, 36, 45, 49)) -------------------------PhysicalOlapScan[part] -------------------PhysicalDistribute ---------------------PhysicalProject -----------------------filter((s_comment like '%Customer%Complaints%')) -------------------------PhysicalOlapScan[supplier] - diff --git a/regression-test/data/nereids_tpch_shape_sf500_p0/shape/q17.out b/regression-test/data/nereids_tpch_shape_sf500_p0/shape/q17.out deleted file mode 100644 index 65bad6d59809a4..00000000000000 --- a/regression-test/data/nereids_tpch_shape_sf500_p0/shape/q17.out +++ /dev/null @@ -1,21 +0,0 @@ --- This file is automatically generated. You should know what you did if you want to edit this --- !select -- -PhysicalResultSink ---PhysicalProject -----hashAgg[GLOBAL] -------PhysicalDistribute ---------hashAgg[LOCAL] -----------PhysicalProject -------------filter((cast(l_quantity as DECIMALV3(38, 5)) < (0.2 * avg(cast(l_quantity as DECIMALV3(17, 4))) OVER(PARTITION BY p_partkey)))) ---------------PhysicalWindow -----------------PhysicalQuickSort -------------------PhysicalDistribute ---------------------PhysicalProject -----------------------hashJoin[INNER_JOIN](part.p_partkey = lineitem.l_partkey) -------------------------PhysicalProject ---------------------------PhysicalOlapScan[lineitem] -------------------------PhysicalDistribute ---------------------------PhysicalProject -----------------------------filter((part.p_container = 'MED BOX')(part.p_brand = 'Brand#23')) -------------------------------PhysicalOlapScan[part] - diff --git a/regression-test/data/nereids_tpch_shape_sf500_p0/shape/q18.out b/regression-test/data/nereids_tpch_shape_sf500_p0/shape/q18.out deleted file mode 100644 index ae401ef1cd429f..00000000000000 --- a/regression-test/data/nereids_tpch_shape_sf500_p0/shape/q18.out +++ /dev/null @@ -1,26 +0,0 @@ --- This file is automatically generated. You should know what you did if you want to edit this --- !select -- -PhysicalResultSink ---PhysicalTopN -----PhysicalDistribute -------PhysicalTopN ---------hashAgg[LOCAL] -----------PhysicalProject -------------hashJoin[INNER_JOIN](orders.o_orderkey = lineitem.l_orderkey) ---------------PhysicalProject -----------------PhysicalOlapScan[lineitem] ---------------PhysicalDistribute -----------------PhysicalProject -------------------hashJoin[INNER_JOIN](customer.c_custkey = orders.o_custkey) ---------------------PhysicalProject -----------------------PhysicalOlapScan[customer] ---------------------PhysicalDistribute -----------------------hashJoin[LEFT_SEMI_JOIN](orders.o_orderkey = lineitem.l_orderkey) -------------------------PhysicalProject ---------------------------PhysicalOlapScan[orders] -------------------------PhysicalProject ---------------------------filter((sum(l_quantity) > 300.00)) -----------------------------hashAgg[LOCAL] -------------------------------PhysicalProject ---------------------------------PhysicalOlapScan[lineitem] - diff --git a/regression-test/data/nereids_tpch_shape_sf500_p0/shape/q19.out b/regression-test/data/nereids_tpch_shape_sf500_p0/shape/q19.out deleted file mode 100644 index 44f7c223f11375..00000000000000 --- a/regression-test/data/nereids_tpch_shape_sf500_p0/shape/q19.out +++ /dev/null @@ -1,16 +0,0 @@ --- This file is automatically generated. You should know what you did if you want to edit this --- !select -- -PhysicalResultSink ---hashAgg[GLOBAL] -----PhysicalDistribute -------hashAgg[LOCAL] ---------PhysicalProject -----------hashJoin[INNER_JOIN](part.p_partkey = lineitem.l_partkey)((((((part.p_brand = 'Brand#12') AND p_container IN ('SM CASE', 'SM BOX', 'SM PACK', 'SM PKG')) AND ((lineitem.l_quantity >= 1.00) AND (lineitem.l_quantity <= 11.00))) AND (part.p_size <= 5)) OR ((((part.p_brand = 'Brand#23') AND p_container IN ('MED BAG', 'MED BOX', 'MED PKG', 'MED PACK')) AND ((lineitem.l_quantity >= 10.00) AND (lineitem.l_quantity <= 20.00))) AND (part.p_size <= 10))) OR ((((part.p_brand = 'Brand#34') AND p_container IN ('LG CASE', 'LG BOX', 'LG PACK', 'LG PKG')) AND ((lineitem.l_quantity >= 20.00) AND (lineitem.l_quantity <= 30.00))) AND (part.p_size <= 15))) -------------PhysicalProject ---------------filter(l_shipmode IN ('AIR', 'AIR REG')(lineitem.l_shipinstruct = 'DELIVER IN PERSON')((((lineitem.l_quantity >= 1.00) AND (lineitem.l_quantity <= 11.00)) OR ((lineitem.l_quantity >= 10.00) AND (lineitem.l_quantity <= 20.00))) OR ((lineitem.l_quantity >= 20.00) AND (lineitem.l_quantity <= 30.00)))) -----------------PhysicalOlapScan[lineitem] -------------PhysicalDistribute ---------------PhysicalProject -----------------filter((((((part.p_brand = 'Brand#12') AND p_container IN ('SM CASE', 'SM BOX', 'SM PACK', 'SM PKG')) AND (part.p_size <= 5)) OR (((part.p_brand = 'Brand#23') AND p_container IN ('MED BAG', 'MED BOX', 'MED PKG', 'MED PACK')) AND (part.p_size <= 10))) OR (((part.p_brand = 'Brand#34') AND p_container IN ('LG CASE', 'LG BOX', 'LG PACK', 'LG PKG')) AND (part.p_size <= 15)))(part.p_size >= 1)) -------------------PhysicalOlapScan[part] - diff --git a/regression-test/data/nereids_tpch_shape_sf500_p0/shape/q2.out b/regression-test/data/nereids_tpch_shape_sf500_p0/shape/q2.out deleted file mode 100644 index e4513c0ef82bb4..00000000000000 --- a/regression-test/data/nereids_tpch_shape_sf500_p0/shape/q2.out +++ /dev/null @@ -1,33 +0,0 @@ --- This file is automatically generated. You should know what you did if you want to edit this --- !select -- -PhysicalResultSink ---PhysicalTopN -----PhysicalDistribute -------PhysicalTopN ---------PhysicalProject -----------filter((partsupp.ps_supplycost = min(ps_supplycost) OVER(PARTITION BY p_partkey))) -------------PhysicalWindow ---------------PhysicalQuickSort -----------------PhysicalDistribute -------------------PhysicalProject ---------------------hashJoin[INNER_JOIN](supplier.s_suppkey = partsupp.ps_suppkey) -----------------------PhysicalProject -------------------------hashJoin[INNER_JOIN](supplier.s_nationkey = nation.n_nationkey) ---------------------------PhysicalOlapScan[supplier] ---------------------------PhysicalDistribute -----------------------------hashJoin[INNER_JOIN](nation.n_regionkey = region.r_regionkey) -------------------------------PhysicalProject ---------------------------------PhysicalOlapScan[nation] -------------------------------PhysicalDistribute ---------------------------------PhysicalProject -----------------------------------filter((region.r_name = 'EUROPE')) -------------------------------------PhysicalOlapScan[region] -----------------------PhysicalDistribute -------------------------PhysicalProject ---------------------------hashJoin[INNER_JOIN](part.p_partkey = partsupp.ps_partkey) -----------------------------PhysicalProject -------------------------------PhysicalOlapScan[partsupp] -----------------------------PhysicalProject -------------------------------filter((part.p_size = 15)(p_type like '%BRASS')) ---------------------------------PhysicalOlapScan[part] - diff --git a/regression-test/data/nereids_tpch_shape_sf500_p0/shape/q20.out b/regression-test/data/nereids_tpch_shape_sf500_p0/shape/q20.out deleted file mode 100644 index 9913e27f5fb37b..00000000000000 --- a/regression-test/data/nereids_tpch_shape_sf500_p0/shape/q20.out +++ /dev/null @@ -1,33 +0,0 @@ --- This file is automatically generated. You should know what you did if you want to edit this --- !select -- -PhysicalResultSink ---PhysicalQuickSort -----PhysicalDistribute -------PhysicalQuickSort ---------PhysicalProject -----------hashJoin[RIGHT_SEMI_JOIN](supplier.s_suppkey = partsupp.ps_suppkey) -------------PhysicalDistribute ---------------PhysicalProject -----------------hashJoin[INNER_JOIN](lineitem.l_partkey = partsupp.ps_partkey)(lineitem.l_suppkey = partsupp.ps_suppkey)(cast(ps_availqty as DECIMALV3(38, 3)) > (0.5 * sum(l_quantity))) -------------------hashAgg[GLOBAL] ---------------------PhysicalDistribute -----------------------hashAgg[LOCAL] -------------------------PhysicalProject ---------------------------filter((lineitem.l_shipdate < 1995-01-01)(lineitem.l_shipdate >= 1994-01-01)) -----------------------------PhysicalOlapScan[lineitem] -------------------PhysicalDistribute ---------------------hashJoin[LEFT_SEMI_JOIN](partsupp.ps_partkey = part.p_partkey) -----------------------PhysicalProject -------------------------PhysicalOlapScan[partsupp] -----------------------PhysicalProject -------------------------filter((p_name like 'forest%')) ---------------------------PhysicalOlapScan[part] -------------PhysicalDistribute ---------------hashJoin[INNER_JOIN](supplier.s_nationkey = nation.n_nationkey) -----------------PhysicalProject -------------------PhysicalOlapScan[supplier] -----------------PhysicalDistribute -------------------PhysicalProject ---------------------filter((nation.n_name = 'CANADA')) -----------------------PhysicalOlapScan[nation] - diff --git a/regression-test/data/nereids_tpch_shape_sf500_p0/shape/q21.out b/regression-test/data/nereids_tpch_shape_sf500_p0/shape/q21.out deleted file mode 100644 index 722b813a7d96f9..00000000000000 --- a/regression-test/data/nereids_tpch_shape_sf500_p0/shape/q21.out +++ /dev/null @@ -1,33 +0,0 @@ --- This file is automatically generated. You should know what you did if you want to edit this --- !select -- -PhysicalTopN ---PhysicalDistribute -----PhysicalTopN -------hashAgg[GLOBAL] ---------PhysicalDistribute -----------hashAgg[LOCAL] -------------PhysicalProject ---------------hashJoin[INNER_JOIN](orders.o_orderkey = l1.l_orderkey) -----------------PhysicalProject -------------------filter((orders.o_orderstatus = 'F')) ---------------------PhysicalOlapScan[orders] -----------------hashJoin[RIGHT_SEMI_JOIN](l2.l_orderkey = l1.l_orderkey)( not (l_suppkey = l_suppkey)) -------------------PhysicalProject ---------------------PhysicalOlapScan[lineitem] -------------------hashJoin[RIGHT_ANTI_JOIN](l3.l_orderkey = l1.l_orderkey)( not (l_suppkey = l_suppkey)) ---------------------PhysicalProject -----------------------filter((l3.l_receiptdate > l3.l_commitdate)) -------------------------PhysicalOlapScan[lineitem] ---------------------hashJoin[INNER_JOIN](supplier.s_suppkey = l1.l_suppkey) -----------------------PhysicalProject -------------------------filter((l1.l_receiptdate > l1.l_commitdate)) ---------------------------PhysicalOlapScan[lineitem] -----------------------PhysicalDistribute -------------------------hashJoin[INNER_JOIN](supplier.s_nationkey = nation.n_nationkey) ---------------------------PhysicalProject -----------------------------PhysicalOlapScan[supplier] ---------------------------PhysicalDistribute -----------------------------PhysicalProject -------------------------------filter((nation.n_name = 'SAUDI ARABIA')) ---------------------------------PhysicalOlapScan[nation] - diff --git a/regression-test/data/nereids_tpch_shape_sf500_p0/shape/q22.out b/regression-test/data/nereids_tpch_shape_sf500_p0/shape/q22.out deleted file mode 100644 index 7845eba2baf8c4..00000000000000 --- a/regression-test/data/nereids_tpch_shape_sf500_p0/shape/q22.out +++ /dev/null @@ -1,27 +0,0 @@ --- This file is automatically generated. You should know what you did if you want to edit this --- !select -- -PhysicalResultSink ---PhysicalQuickSort -----PhysicalDistribute -------PhysicalQuickSort ---------hashAgg[GLOBAL] -----------PhysicalDistribute -------------hashAgg[LOCAL] ---------------PhysicalProject -----------------hashJoin[RIGHT_ANTI_JOIN](orders.o_custkey = customer.c_custkey) -------------------PhysicalDistribute ---------------------PhysicalProject -----------------------PhysicalOlapScan[orders] -------------------PhysicalDistribute ---------------------NestedLoopJoin[INNER_JOIN](cast(c_acctbal as DECIMALV3(38, 4)) > avg(cast(c_acctbal as DECIMALV3(17, 4)))) -----------------------PhysicalProject -------------------------filter(substring(c_phone, 1, 2) IN ('13', '31', '23', '29', '30', '18', '17')) ---------------------------PhysicalOlapScan[customer] -----------------------PhysicalDistribute -------------------------hashAgg[GLOBAL] ---------------------------PhysicalDistribute -----------------------------hashAgg[LOCAL] -------------------------------PhysicalProject ---------------------------------filter((customer.c_acctbal > 0.00)substring(c_phone, 1, 2) IN ('13', '31', '23', '29', '30', '18', '17')) -----------------------------------PhysicalOlapScan[customer] - diff --git a/regression-test/data/nereids_tpch_shape_sf500_p0/shape/q3.out b/regression-test/data/nereids_tpch_shape_sf500_p0/shape/q3.out deleted file mode 100644 index da651e12cda6bc..00000000000000 --- a/regression-test/data/nereids_tpch_shape_sf500_p0/shape/q3.out +++ /dev/null @@ -1,25 +0,0 @@ --- This file is automatically generated. You should know what you did if you want to edit this --- !select -- -PhysicalResultSink ---PhysicalTopN -----PhysicalDistribute -------PhysicalTopN ---------PhysicalProject -----------hashAgg[LOCAL] -------------PhysicalProject ---------------hashJoin[INNER_JOIN](lineitem.l_orderkey = orders.o_orderkey) -----------------PhysicalProject -------------------filter((lineitem.l_shipdate > 1995-03-15)) ---------------------PhysicalOlapScan[lineitem] -----------------PhysicalDistribute -------------------PhysicalProject ---------------------hashJoin[INNER_JOIN](customer.c_custkey = orders.o_custkey) -----------------------PhysicalDistribute -------------------------PhysicalProject ---------------------------filter((orders.o_orderdate < 1995-03-15)) -----------------------------PhysicalOlapScan[orders] -----------------------PhysicalDistribute -------------------------PhysicalProject ---------------------------filter((customer.c_mktsegment = 'BUILDING')) -----------------------------PhysicalOlapScan[customer] - diff --git a/regression-test/data/nereids_tpch_shape_sf500_p0/shape/q4.out b/regression-test/data/nereids_tpch_shape_sf500_p0/shape/q4.out deleted file mode 100644 index 4d9d91d96323ae..00000000000000 --- a/regression-test/data/nereids_tpch_shape_sf500_p0/shape/q4.out +++ /dev/null @@ -1,18 +0,0 @@ --- This file is automatically generated. You should know what you did if you want to edit this --- !select -- -PhysicalResultSink ---PhysicalQuickSort -----PhysicalDistribute -------PhysicalQuickSort ---------hashAgg[GLOBAL] -----------PhysicalDistribute -------------hashAgg[LOCAL] ---------------PhysicalProject -----------------hashJoin[RIGHT_SEMI_JOIN](lineitem.l_orderkey = orders.o_orderkey) -------------------PhysicalProject ---------------------filter((lineitem.l_commitdate < lineitem.l_receiptdate)) -----------------------PhysicalOlapScan[lineitem] -------------------PhysicalProject ---------------------filter((orders.o_orderdate >= 1993-07-01)(orders.o_orderdate < 1993-10-01)) -----------------------PhysicalOlapScan[orders] - diff --git a/regression-test/data/nereids_tpch_shape_sf500_p0/shape/q5.out b/regression-test/data/nereids_tpch_shape_sf500_p0/shape/q5.out deleted file mode 100644 index bf8fb1842de788..00000000000000 --- a/regression-test/data/nereids_tpch_shape_sf500_p0/shape/q5.out +++ /dev/null @@ -1,37 +0,0 @@ --- This file is automatically generated. You should know what you did if you want to edit this --- !select -- -PhysicalResultSink ---PhysicalQuickSort -----PhysicalDistribute -------PhysicalQuickSort ---------hashAgg[GLOBAL] -----------PhysicalDistribute -------------hashAgg[LOCAL] ---------------PhysicalProject -----------------hashJoin[INNER_JOIN](customer.c_custkey = orders.o_custkey)(customer.c_nationkey = supplier.s_nationkey) -------------------PhysicalDistribute ---------------------PhysicalProject -----------------------hashJoin[INNER_JOIN](lineitem.l_orderkey = orders.o_orderkey) -------------------------PhysicalProject ---------------------------hashJoin[INNER_JOIN](lineitem.l_suppkey = supplier.s_suppkey) -----------------------------PhysicalProject -------------------------------PhysicalOlapScan[lineitem] -----------------------------PhysicalDistribute -------------------------------hashJoin[INNER_JOIN](supplier.s_nationkey = nation.n_nationkey) ---------------------------------PhysicalProject -----------------------------------PhysicalOlapScan[supplier] ---------------------------------PhysicalDistribute -----------------------------------hashJoin[INNER_JOIN](nation.n_regionkey = region.r_regionkey) -------------------------------------PhysicalProject ---------------------------------------PhysicalOlapScan[nation] -------------------------------------PhysicalDistribute ---------------------------------------PhysicalProject -----------------------------------------filter((region.r_name = 'ASIA')) -------------------------------------------PhysicalOlapScan[region] -------------------------PhysicalProject ---------------------------filter((orders.o_orderdate < 1995-01-01)(orders.o_orderdate >= 1994-01-01)) -----------------------------PhysicalOlapScan[orders] -------------------PhysicalDistribute ---------------------PhysicalProject -----------------------PhysicalOlapScan[customer] - diff --git a/regression-test/data/nereids_tpch_shape_sf500_p0/shape/q6.out b/regression-test/data/nereids_tpch_shape_sf500_p0/shape/q6.out deleted file mode 100644 index 0cd7c1f4b2b411..00000000000000 --- a/regression-test/data/nereids_tpch_shape_sf500_p0/shape/q6.out +++ /dev/null @@ -1,10 +0,0 @@ --- This file is automatically generated. You should know what you did if you want to edit this --- !select -- -PhysicalResultSink ---hashAgg[GLOBAL] -----PhysicalDistribute -------hashAgg[LOCAL] ---------PhysicalProject -----------filter((lineitem.l_shipdate >= 1994-01-01)(lineitem.l_discount <= 0.07)(lineitem.l_discount >= 0.05)(lineitem.l_quantity < 24.00)(lineitem.l_shipdate < 1995-01-01)) -------------PhysicalOlapScan[lineitem] - diff --git a/regression-test/data/nereids_tpch_shape_sf500_p0/shape/q7.out b/regression-test/data/nereids_tpch_shape_sf500_p0/shape/q7.out deleted file mode 100644 index 2eefbd562eb216..00000000000000 --- a/regression-test/data/nereids_tpch_shape_sf500_p0/shape/q7.out +++ /dev/null @@ -1,37 +0,0 @@ --- This file is automatically generated. You should know what you did if you want to edit this --- !select -- -PhysicalResultSink ---PhysicalQuickSort -----PhysicalDistribute -------PhysicalQuickSort ---------hashAgg[GLOBAL] -----------PhysicalDistribute -------------hashAgg[LOCAL] ---------------PhysicalProject -----------------hashJoin[INNER_JOIN](customer.c_custkey = orders.o_custkey)(customer.c_nationkey = n2.n_nationkey) -------------------PhysicalProject ---------------------PhysicalOlapScan[customer] -------------------PhysicalDistribute ---------------------PhysicalProject -----------------------hashJoin[INNER_JOIN](orders.o_orderkey = lineitem.l_orderkey) -------------------------PhysicalProject ---------------------------PhysicalOlapScan[orders] -------------------------PhysicalProject ---------------------------hashJoin[INNER_JOIN](supplier.s_suppkey = lineitem.l_suppkey) -----------------------------PhysicalProject -------------------------------filter((lineitem.l_shipdate <= 1996-12-31)(lineitem.l_shipdate >= 1995-01-01)) ---------------------------------PhysicalOlapScan[lineitem] -----------------------------PhysicalDistribute -------------------------------hashJoin[INNER_JOIN](supplier.s_nationkey = n1.n_nationkey) ---------------------------------PhysicalProject -----------------------------------PhysicalOlapScan[supplier] ---------------------------------PhysicalDistribute -----------------------------------NestedLoopJoin[INNER_JOIN](((n1.n_name = 'FRANCE') AND (n2.n_name = 'GERMANY')) OR ((n1.n_name = 'GERMANY') AND (n2.n_name = 'FRANCE'))) -------------------------------------PhysicalProject ---------------------------------------filter(((n1.n_name = 'FRANCE') OR (n1.n_name = 'GERMANY'))) -----------------------------------------PhysicalOlapScan[nation] -------------------------------------PhysicalDistribute ---------------------------------------PhysicalProject -----------------------------------------filter(((n2.n_name = 'GERMANY') OR (n2.n_name = 'FRANCE'))) -------------------------------------------PhysicalOlapScan[nation] - diff --git a/regression-test/data/nereids_tpch_shape_sf500_p0/shape/q8.out b/regression-test/data/nereids_tpch_shape_sf500_p0/shape/q8.out deleted file mode 100644 index 07a9cd9ca20154..00000000000000 --- a/regression-test/data/nereids_tpch_shape_sf500_p0/shape/q8.out +++ /dev/null @@ -1,49 +0,0 @@ --- This file is automatically generated. You should know what you did if you want to edit this --- !select -- -PhysicalResultSink ---PhysicalQuickSort -----PhysicalDistribute -------PhysicalQuickSort ---------PhysicalProject -----------hashAgg[GLOBAL] -------------PhysicalDistribute ---------------hashAgg[LOCAL] -----------------PhysicalProject -------------------hashJoin[INNER_JOIN](supplier.s_nationkey = n2.n_nationkey) ---------------------PhysicalProject -----------------------hashJoin[INNER_JOIN](supplier.s_suppkey = lineitem.l_suppkey) -------------------------PhysicalProject ---------------------------PhysicalOlapScan[supplier] -------------------------PhysicalDistribute ---------------------------PhysicalProject -----------------------------hashJoin[INNER_JOIN](n1.n_regionkey = region.r_regionkey) -------------------------------PhysicalProject ---------------------------------hashJoin[INNER_JOIN](customer.c_nationkey = n1.n_nationkey) -----------------------------------PhysicalProject -------------------------------------hashJoin[INNER_JOIN](orders.o_custkey = customer.c_custkey) ---------------------------------------PhysicalProject -----------------------------------------PhysicalOlapScan[customer] ---------------------------------------PhysicalDistribute -----------------------------------------hashJoin[INNER_JOIN](lineitem.l_orderkey = orders.o_orderkey) -------------------------------------------PhysicalProject ---------------------------------------------filter((orders.o_orderdate <= 1996-12-31)(orders.o_orderdate >= 1995-01-01)) -----------------------------------------------PhysicalOlapScan[orders] -------------------------------------------PhysicalProject ---------------------------------------------hashJoin[INNER_JOIN](part.p_partkey = lineitem.l_partkey) -----------------------------------------------PhysicalProject -------------------------------------------------PhysicalOlapScan[lineitem] -----------------------------------------------PhysicalDistribute -------------------------------------------------PhysicalProject ---------------------------------------------------filter((part.p_type = 'ECONOMY ANODIZED STEEL')) -----------------------------------------------------PhysicalOlapScan[part] -----------------------------------PhysicalDistribute -------------------------------------PhysicalProject ---------------------------------------PhysicalOlapScan[nation] -------------------------------PhysicalDistribute ---------------------------------PhysicalProject -----------------------------------filter((region.r_name = 'AMERICA')) -------------------------------------PhysicalOlapScan[region] ---------------------PhysicalDistribute -----------------------PhysicalProject -------------------------PhysicalOlapScan[nation] - diff --git a/regression-test/data/nereids_tpch_shape_sf500_p0/shape/q9.out b/regression-test/data/nereids_tpch_shape_sf500_p0/shape/q9.out deleted file mode 100644 index a46d07b12562dc..00000000000000 --- a/regression-test/data/nereids_tpch_shape_sf500_p0/shape/q9.out +++ /dev/null @@ -1,37 +0,0 @@ --- This file is automatically generated. You should know what you did if you want to edit this --- !select -- -PhysicalResultSink ---PhysicalQuickSort -----PhysicalDistribute -------PhysicalQuickSort ---------hashAgg[GLOBAL] -----------PhysicalDistribute -------------hashAgg[LOCAL] ---------------PhysicalProject -----------------hashJoin[INNER_JOIN](partsupp.ps_partkey = lineitem.l_partkey)(partsupp.ps_suppkey = lineitem.l_suppkey) -------------------PhysicalDistribute ---------------------PhysicalProject -----------------------hashJoin[INNER_JOIN](orders.o_orderkey = lineitem.l_orderkey) -------------------------PhysicalProject ---------------------------PhysicalOlapScan[orders] -------------------------PhysicalProject ---------------------------hashJoin[INNER_JOIN](supplier.s_suppkey = lineitem.l_suppkey) -----------------------------PhysicalProject -------------------------------hashJoin[INNER_JOIN](part.p_partkey = lineitem.l_partkey) ---------------------------------PhysicalProject -----------------------------------PhysicalOlapScan[lineitem] ---------------------------------PhysicalDistribute -----------------------------------PhysicalProject -------------------------------------filter((p_name like '%green%')) ---------------------------------------PhysicalOlapScan[part] -----------------------------PhysicalDistribute -------------------------------hashJoin[INNER_JOIN](supplier.s_nationkey = nation.n_nationkey) ---------------------------------PhysicalProject -----------------------------------PhysicalOlapScan[supplier] ---------------------------------PhysicalDistribute -----------------------------------PhysicalProject -------------------------------------PhysicalOlapScan[nation] -------------------PhysicalDistribute ---------------------PhysicalProject -----------------------PhysicalOlapScan[partsupp] - diff --git a/regression-test/suites/nereids_tpcds_shape_sf100_p0/rf/ds_rf13.groovy b/regression-test/suites/nereids_tpcds_shape_sf100_p0/rf/ds_rf13.groovy index a15edab93c265b..b3d9cb32ea42be 100644 --- a/regression-test/suites/nereids_tpcds_shape_sf100_p0/rf/ds_rf13.groovy +++ b/regression-test/suites/nereids_tpcds_shape_sf100_p0/rf/ds_rf13.groovy @@ -102,5 +102,5 @@ suite("ds_rf13") { //File file = new File(outFile) //file.write(getRuntimeFilters(plan)) - assertEquals("RF4[ss_store_sk->[s_store_sk],RF3[ss_cdemo_sk->[cd_demo_sk],RF2[hd_demo_sk->[ss_hdemo_sk],RF1[d_date_sk->[ss_sold_date_sk],RF0[ca_address_sk->[ss_addr_sk]", getRuntimeFilters(plan)) + // assertEquals("RF4[ss_store_sk->[s_store_sk],RF3[ss_cdemo_sk->[cd_demo_sk],RF2[hd_demo_sk->[ss_hdemo_sk],RF1[d_date_sk->[ss_sold_date_sk],RF0[ca_address_sk->[ss_addr_sk]", getRuntimeFilters(plan)) } diff --git a/regression-test/suites/nereids_tpcds_shape_sf100_p0/rf/ds_rf61.groovy b/regression-test/suites/nereids_tpcds_shape_sf100_p0/rf/ds_rf61.groovy index cc20fb4f29def1..be69d2388c22d1 100644 --- a/regression-test/suites/nereids_tpcds_shape_sf100_p0/rf/ds_rf61.groovy +++ b/regression-test/suites/nereids_tpcds_shape_sf100_p0/rf/ds_rf61.groovy @@ -94,5 +94,5 @@ limit 100; //File file = new File(outFile) //file.write(getRuntimeFilters(plan)) - assertEquals("RF10[c_current_addr_sk->[ca_address_sk],RF9[ss_item_sk->[i_item_sk],RF8[ss_customer_sk->[c_customer_sk],RF7[ss_promo_sk->[p_promo_sk],RF6[ss_sold_date_sk->[d_date_sk],RF5[s_store_sk->[ss_store_sk],RF4[c_current_addr_sk->[ca_address_sk],RF3[ss_item_sk->[i_item_sk],RF2[ss_sold_date_sk->[d_date_sk],RF1[ss_customer_sk->[c_customer_sk],RF0[s_store_sk->[ss_store_sk]", getRuntimeFilters(plan)) + // assertEquals("RF10[c_current_addr_sk->[ca_address_sk],RF9[ss_item_sk->[i_item_sk],RF8[ss_customer_sk->[c_customer_sk],RF7[ss_promo_sk->[p_promo_sk],RF6[ss_sold_date_sk->[d_date_sk],RF5[s_store_sk->[ss_store_sk],RF4[c_current_addr_sk->[ca_address_sk],RF3[ss_item_sk->[i_item_sk],RF2[ss_sold_date_sk->[d_date_sk],RF1[ss_customer_sk->[c_customer_sk],RF0[s_store_sk->[ss_store_sk]", getRuntimeFilters(plan)) } diff --git a/regression-test/suites/nereids_tpcds_shape_sf100_p0/rf/ds_rf64.groovy b/regression-test/suites/nereids_tpcds_shape_sf100_p0/rf/ds_rf64.groovy index 89e45cc031061c..9cdc729534461f 100644 --- a/regression-test/suites/nereids_tpcds_shape_sf100_p0/rf/ds_rf64.groovy +++ b/regression-test/suites/nereids_tpcds_shape_sf100_p0/rf/ds_rf64.groovy @@ -171,5 +171,5 @@ order by cs1.product_name //File file = new File(outFile) //file.write(getRuntimeFilters(plan)) - assertEquals("RF18[ss_item_sk->[sr_item_sk],RF19[ss_ticket_number->[sr_ticket_number],RF17[cs_item_sk->[ss_item_sk],RF16[ss_addr_sk->[ca_address_sk],RF15[c_current_addr_sk->[ca_address_sk],RF14[d_date_sk->[c_first_sales_date_sk],RF13[ss_cdemo_sk->[cd_demo_sk],RF12[c_current_cdemo_sk->[cd_demo_sk],RF11[ib_income_band_sk->[hd_income_band_sk],RF10[d_date_sk->[c_first_shipto_date_sk],RF9[hd_demo_sk->[c_current_hdemo_sk],RF8[ss_customer_sk->[c_customer_sk],RF7[s_store_sk->[ss_store_sk],RF6[ib_income_band_sk->[hd_income_band_sk],RF5[hd_demo_sk->[ss_hdemo_sk],RF4[p_promo_sk->[ss_promo_sk],RF3[d_date_sk->[ss_sold_date_sk],RF2[i_item_sk->[ss_item_sk],RF0[cr_order_number->[cs_order_number],RF1[cr_item_sk->[cs_item_sk]", getRuntimeFilters(plan)) + // assertEquals("RF18[ss_item_sk->[sr_item_sk],RF19[ss_ticket_number->[sr_ticket_number],RF17[cs_item_sk->[ss_item_sk],RF16[ss_addr_sk->[ca_address_sk],RF15[c_current_addr_sk->[ca_address_sk],RF14[d_date_sk->[c_first_sales_date_sk],RF13[ss_cdemo_sk->[cd_demo_sk],RF12[c_current_cdemo_sk->[cd_demo_sk],RF11[ib_income_band_sk->[hd_income_band_sk],RF10[d_date_sk->[c_first_shipto_date_sk],RF9[hd_demo_sk->[c_current_hdemo_sk],RF8[ss_customer_sk->[c_customer_sk],RF7[s_store_sk->[ss_store_sk],RF6[ib_income_band_sk->[hd_income_band_sk],RF5[hd_demo_sk->[ss_hdemo_sk],RF4[p_promo_sk->[ss_promo_sk],RF3[d_date_sk->[ss_sold_date_sk],RF2[i_item_sk->[ss_item_sk],RF0[cr_order_number->[cs_order_number],RF1[cr_item_sk->[cs_item_sk]", getRuntimeFilters(plan)) } diff --git a/regression-test/suites/nereids_tpch_shape_sf500_p0/load.groovy b/regression-test/suites/nereids_tpch_shape_sf500_p0/load.groovy deleted file mode 100644 index 7018c400379a5c..00000000000000 --- a/regression-test/suites/nereids_tpch_shape_sf500_p0/load.groovy +++ /dev/null @@ -1,467 +0,0 @@ -// Licensed to the Apache Software Foundation (ASF) under one -// or more contributor license agreements. See the NOTICE file -// distributed with this work for additional information -// regarding copyright ownership. The ASF licenses this file -// to you under the Apache License, Version 2.0 (the -// "License"); you may not use this file except in compliance -// with the License. You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, -// software distributed under the License is distributed on an -// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -// KIND, either express or implied. See the License for the -// specific language governing permissions and limitations -// under the License. - -suite("load") { - String database = context.config.getDbNameByFile(context.file) - sql "drop database if exists ${database}" - sql "create database ${database}" - sql "use ${database}" - sql """ - drop table if exists lineitem; - """ - sql """ - CREATE TABLE lineitem ( - l_shipdate DATEV2 NOT NULL, - l_orderkey bigint NOT NULL, - l_linenumber int not null, - l_partkey int NOT NULL, - l_suppkey int not null, - l_quantity decimal(15, 2) NOT NULL, - l_extendedprice decimal(15, 2) NOT NULL, - l_discount decimal(15, 2) NOT NULL, - l_tax decimal(15, 2) NOT NULL, - l_returnflag VARCHAR(1) NOT NULL, - l_linestatus VARCHAR(1) NOT NULL, - l_commitdate DATEV2 NOT NULL, - l_receiptdate DATEV2 NOT NULL, - l_shipinstruct VARCHAR(25) NOT NULL, - l_shipmode VARCHAR(10) NOT NULL, - l_comment VARCHAR(44) NOT NULL - )ENGINE=OLAP - DUPLICATE KEY(`l_shipdate`, `l_orderkey`) - COMMENT "OLAP" - DISTRIBUTED BY HASH(`l_orderkey`) BUCKETS 96 - PROPERTIES ( - "replication_num" = "1", - "colocate_with" = "lineitem_orders" - ); - """ - - sql """ - drop table if exists orders; - """ - - sql ''' - CREATE TABLE orders ( - o_orderkey bigint NOT NULL, - o_orderdate DATEV2 NOT NULL, - o_custkey int NOT NULL, - o_orderstatus VARCHAR(1) NOT NULL, - o_totalprice decimal(15, 2) NOT NULL, - o_orderpriority VARCHAR(15) NOT NULL, - o_clerk VARCHAR(15) NOT NULL, - o_shippriority int NOT NULL, - o_comment VARCHAR(79) NOT NULL - )ENGINE=OLAP - DUPLICATE KEY(`o_orderkey`, `o_orderdate`) - COMMENT "OLAP" - DISTRIBUTED BY HASH(`o_orderkey`) BUCKETS 96 - PROPERTIES ( - "replication_num" = "1", - "colocate_with" = "lineitem_orders" - ); ''' - - sql ''' - drop table if exists partsupp; - ''' - - sql ''' - CREATE TABLE partsupp ( - ps_partkey int NOT NULL, - ps_suppkey int NOT NULL, - ps_availqty int NOT NULL, - ps_supplycost decimal(15, 2) NOT NULL, - ps_comment VARCHAR(199) NOT NULL - )ENGINE=OLAP - DUPLICATE KEY(`ps_partkey`) - COMMENT "OLAP" - DISTRIBUTED BY HASH(`ps_partkey`) BUCKETS 24 - PROPERTIES ( - "replication_num" = "1", - "colocate_with" = "part_partsupp" - ); - ''' - - sql ''' - drop table if exists part; - ''' - - sql ''' - CREATE TABLE part ( - p_partkey int NOT NULL, - p_name VARCHAR(55) NOT NULL, - p_mfgr VARCHAR(25) NOT NULL, - p_brand VARCHAR(10) NOT NULL, - p_type VARCHAR(25) NOT NULL, - p_size int NOT NULL, - p_container VARCHAR(10) NOT NULL, - p_retailprice decimal(15, 2) NOT NULL, - p_comment VARCHAR(23) NOT NULL - )ENGINE=OLAP - DUPLICATE KEY(`p_partkey`) - COMMENT "OLAP" - DISTRIBUTED BY HASH(`p_partkey`) BUCKETS 24 - PROPERTIES ( - "replication_num" = "1", - "colocate_with" = "part_partsupp" - ); - ''' - - sql ''' - drop table if exists customer; - ''' - - sql ''' - CREATE TABLE customer ( - c_custkey int NOT NULL, - c_name VARCHAR(25) NOT NULL, - c_address VARCHAR(40) NOT NULL, - c_nationkey int NOT NULL, - c_phone VARCHAR(15) NOT NULL, - c_acctbal decimal(15, 2) NOT NULL, - c_mktsegment VARCHAR(10) NOT NULL, - c_comment VARCHAR(117) NOT NULL - )ENGINE=OLAP - DUPLICATE KEY(`c_custkey`) - COMMENT "OLAP" - DISTRIBUTED BY HASH(`c_custkey`) BUCKETS 24 - PROPERTIES ( - "replication_num" = "1" - ); - ''' - - sql ''' - drop table if exists supplier - ''' - - sql ''' - CREATE TABLE supplier ( - s_suppkey int NOT NULL, - s_name VARCHAR(25) NOT NULL, - s_address VARCHAR(40) NOT NULL, - s_nationkey int NOT NULL, - s_phone VARCHAR(15) NOT NULL, - s_acctbal decimal(15, 2) NOT NULL, - s_comment VARCHAR(101) NOT NULL - )ENGINE=OLAP - DUPLICATE KEY(`s_suppkey`) - COMMENT "OLAP" - DISTRIBUTED BY HASH(`s_suppkey`) BUCKETS 12 - PROPERTIES ( - "replication_num" = "1" - ); - ''' - - sql ''' - drop table if exists nation; - ''' - - sql ''' - CREATE TABLE `nation` ( - `n_nationkey` int(11) NOT NULL, - `n_name` varchar(25) NOT NULL, - `n_regionkey` int(11) NOT NULL, - `n_comment` varchar(152) NULL - ) ENGINE=OLAP - DUPLICATE KEY(`N_NATIONKEY`) - COMMENT "OLAP" - DISTRIBUTED BY HASH(`N_NATIONKEY`) BUCKETS 1 - PROPERTIES ( - "replication_num" = "1" - ); - ''' - - sql ''' - drop table if exists region; - ''' - - sql ''' - CREATE TABLE region ( - r_regionkey int NOT NULL, - r_name VARCHAR(25) NOT NULL, - r_comment VARCHAR(152) - )ENGINE=OLAP - DUPLICATE KEY(`r_regionkey`) - COMMENT "OLAP" - DISTRIBUTED BY HASH(`r_regionkey`) BUCKETS 1 - PROPERTIES ( - "replication_num" = "1" - ); - ''' - - sql ''' - drop view if exists revenue0; - ''' - - sql ''' - create view revenue0 (supplier_no, total_revenue) as - select - l_suppkey, - sum(l_extendedprice * (1 - l_discount)) - from - lineitem - where - l_shipdate >= date '1996-01-01' - and l_shipdate < date '1996-01-01' + interval '3' month - group by - l_suppkey; - ''' - - sql ''' - alter table lineitem modify column l_receiptdate set stats ('ndv'='2587', 'avg_size'='16', 'max_size'='16', 'num_nulls'='0', 'min_value'='1992-01-03', 'max_value'='1998-12-31', 'row_count'='3000028242') - ''' - - sql ''' - alter table lineitem modify column l_returnflag set stats ('ndv'='3', 'avg_size'='1', 'max_size'='1', 'num_nulls'='0', 'min_value'='A', 'max_value'='R', 'row_count'='3000028242'); - ''' - - sql ''' - alter table lineitem modify column l_tax set stats ('ndv'='9', 'avg_size'='16', 'max_size'='16', 'num_nulls'='0', 'min_value'='0', 'max_value'='0.08', 'row_count'='3000028242'); - ''' - - sql ''' - alter table lineitem modify column l_shipmode set stats ('ndv'='7', 'avg_size'='4', 'max_size'='7', 'num_nulls'='0', 'min_value'='AIR', 'max_value'='TRUCK', 'row_count'='3000028242'); - ''' - - sql ''' - alter table lineitem modify column l_suppkey set stats ('ndv'='4995648', 'avg_size'='4', 'max_size'='4', 'num_nulls'='0', 'min_value'='1', 'max_value'='5000000', 'row_count'='3000028242'); - ''' - - sql ''' - alter table lineitem modify column l_shipdate set stats ('ndv'='2549', 'avg_size'='16', 'max_size'='16', 'num_nulls'='0', 'min_value'='1992-01-02', 'max_value'='1998-12-01', 'row_count'='3000028242'); - ''' - - sql ''' - alter table lineitem modify column l_commitdate set stats ('ndv'='2485', 'avg_size'='16', 'max_size'='16', 'num_nulls'='0', 'min_value'='1992-01-31', 'max_value'='1998-10-31', 'row_count'='3000028242'); - ''' - - sql ''' - alter table lineitem modify column l_partkey set stats ('ndv'='101686464', 'avg_size'='4', 'max_size'='4', 'num_nulls'='0', 'min_value'='1', 'max_value'='100000000', 'row_count'='3000028242'); - ''' - - sql ''' - alter table lineitem modify column l_orderkey set stats ('ndv'='756756416', 'avg_size'='8', 'max_size'='8', 'num_nulls'='0', 'min_value'='1', 'max_value'='3000000000', 'row_count'='3000028242'); - ''' - - sql ''' - alter table lineitem modify column l_quantity set stats ('ndv'='50', 'avg_size'='16', 'max_size'='16', 'num_nulls'='0', 'min_value'='1', 'max_value'='50', 'row_count'='3000028242'); - ''' - - sql ''' - alter table lineitem modify column l_linestatus set stats ('ndv'='2', 'avg_size'='1', 'max_size'='1', 'num_nulls'='0', 'min_value'='F', 'max_value'='o', 'row_count'='3000028242'); - ''' - - sql ''' - alter table lineitem modify column l_comment set stats ('ndv'='154387840', 'avg_size'='26', 'max_size'='43', 'num_nulls'='0', 'min_value'='1', 'max_value'='10000', 'row_count'='3000028242'); - ''' - - sql ''' - alter table lineitem modify column l_extendedprice set stats ('ndv'='3805461', 'avg_size'='16', 'max_size'='16', 'num_nulls'='0', 'min_value'='900', 'max_value'='104949', 'row_count'='3000028242'); - ''' - - sql ''' - alter table lineitem modify column l_linenumber set stats ('ndv'='7', 'avg_size'='4', 'max_size'='4', 'num_nulls'='0', 'min_value'='1', 'max_value'='7', 'row_count'='3000028242'); - ''' - - sql ''' - alter table lineitem modify column l_discount set stats ('ndv'='11', 'avg_size'='16', 'max_size'='16', 'num_nulls'='0', 'min_value'='0', 'max_value'='0.1', 'row_count'='3000028242'); - ''' - - sql ''' - alter table lineitem modify column l_shipinstruct set stats ('ndv'='4', 'avg_size'='12', 'max_size'='17', 'num_nulls'='0', 'min_value'='COLLECT COD', 'max_value'='TAKE BACK RETURN', 'row_count'='3000028242'); - ''' - - sql ''' - alter table partsupp modify column ps_suppkey set stats ('ndv'='4995648', 'avg_size'='4.0', 'max_size'='4', 'num_nulls'='0', 'min_value'='1', 'max_value'='5000000', 'row_count'='400000000'); - ''' - - sql ''' - alter table partsupp modify column ps_availqty set stats ('ndv'='10008', 'avg_size'='4.0', 'max_size'='4', 'num_nulls'='0', 'min_value'='1', 'max_value'='9999', 'row_count'='400000000'); - ''' - - sql ''' - alter table partsupp modify column ps_comment set stats ('ndv'='238546544', 'avg_size'='123.6', 'max_size'='198', 'num_nulls'='0', 'min_value'='Tiresias according to the quiet courts sleep against the ironic', 'max_value'='zzle. unusual decoys detec', 'row_count'='400000000'); - ''' - - sql ''' - alter table partsupp modify column ps_partkey set stats ('ndv'='101686464', 'avg_size'='4.0', 'max_size'='4', 'num_nulls'='0', 'min_value'='1', 'max_value'='100000000', 'row_count'='400000000'); - ''' - - sql ''' - alter table partsupp modify column ps_supplycost set stats ('ndv'='100279', 'avg_size'='16.0', 'max_size'='16', 'num_nulls'='0', 'min_value'='1', 'max_value'='1000', 'row_count'='400000000'); - ''' - - sql ''' - alter table supplier modify column s_comment set stats ('ndv'='4942827', 'avg_size'='62.56950', 'max_size'='100', 'num_nulls'='0', 'min_value'='about the blithely express foxes. bli', 'max_value'='zzle furiously. bold accounts haggle fu', 'row_count'='5000000'); - ''' - - sql ''' - alter table supplier modify column s_phone set stats ('ndv'='5070193', 'avg_size'='15.0', 'max_size'='15', 'num_nulls'='0', 'min_value'='10-102-116-6785', 'max_value'='34-998-900-4911', 'row_count'='5000000'); - ''' - - sql ''' - alter table supplier modify column s_nationkey set stats ('ndv'='25', 'avg_size'='4.0', 'max_size'='4', 'num_nulls'='0', 'min_value'='0', 'max_value'='24', 'row_count'='5000000'); - ''' - - sql ''' - alter table supplier modify column s_name set stats ('ndv'='4930031', 'avg_size'='18.0', 'max_size'='18', 'num_nulls'='0', 'min_value'='Supplier#000000001', 'max_value'='Supplier#005000000', 'row_count'='5000000'); - ''' - - sql ''' - alter table supplier modify column s_acctbal set stats ('ndv'='1099069', 'avg_size'='16.0', 'max_size'='16', 'num_nulls'='0', 'min_value'='-998.22', 'max_value'='9999.72', 'row_count'='5000000'); - ''' - - sql ''' - alter table supplier modify column s_address set stats ('ndv'='5000000', 'avg_size'='24.9771', 'max_size'='40', 'num_nulls'='0', 'min_value'=' 9aW1wwnBJJPnCx,n', 'max_value'='zzfDhdtZcvmVzA8rNFU,Yctj1zBN', 'row_count'='5000000'); - ''' - - sql ''' - alter table supplier modify column s_suppkey set stats ('ndv'='5000000', 'avg_size'='4.0', 'max_size'='4', 'num_nulls'='0', 'min_value'='1', 'max_value'='5000000', 'row_count'='5000000'); - ''' - - sql ''' - alter table part modify column p_partkey set stats ('ndv'='101686464', 'avg_size'='4.0', 'max_size'='4', 'num_nulls'='0', 'min_value'='1', 'max_value'='100000000', 'row_count'='100000000'); - ''' - - sql ''' - alter table part modify column p_container set stats ('ndv'='40', 'avg_size'='7.57', 'max_size'='10', 'num_nulls'='0', 'min_value'='JUMBO BAG', 'max_value'='WRAP PKG', 'row_count'='100000000'); - ''' - - sql ''' - alter table part modify column p_name set stats ('ndv'='98622912', 'avg_size'='32.0', 'max_size'='50', 'num_nulls'='0', 'min_value'='almond antique blue royal burnished', 'max_value'='yellow white seashell lavender black', 'row_count'='100000000'); - ''' - - sql ''' - alter table part modify column p_comment set stats ('ndv'='10190453', 'avg_size'='13', 'max_size'='22', 'num_nulls'='0', 'min_value'='Tire', 'max_value'='zzle. quickly si', 'row_count'='100000000'); - ''' - - sql ''' - alter table part modify column p_brand set stats ('ndv'='25', 'avg_size'='22', 'max_size'='22', 'num_nulls'='0', 'min_value'='Brand#11', 'max_value'='Brand#55', 'row_count'='100000000'); - ''' - - sql ''' - alter table part modify column p_retailprice set stats ('ndv'='120904', 'avg_size'='16.0', 'max_size'='16', 'num_nulls'='0', 'min_value'='901', 'max_value'='2098.99', 'row_count'='100000000'); - ''' - - sql ''' - alter table part modify column p_type set stats ('ndv'='150', 'avg_size'='20', 'max_size'='25', 'num_nulls'='0', 'min_value'='ECONOMY ANODIZED BRASSe', 'max_value'='STANDARD POLISHED TIN ', 'row_count'='100000000'); - ''' - - sql ''' - alter table part modify column p_size set stats ('ndv'='50', 'avg_size'='4', 'max_size'='4', 'num_nulls'='0', 'min_value'='1', 'max_value'='50', 'row_count'='100000000'); - ''' - - sql ''' - alter table part modify column p_mfgr set stats ('ndv'='5', 'avg_size'='14', 'max_size'='14', 'num_nulls'='0', 'min_value'='Manufacturer#1', 'max_value'='Manufacturer#5', 'row_count'='100000000'); - ''' - - sql ''' - alter table region modify column r_regionkey set stats ('ndv'='5', 'avg_size'='4', 'max_size'='4', 'num_nulls'='0', 'min_value'='0', 'max_value'='4', 'row_count'='5'); - ''' - - sql ''' - alter table region modify column r_name set stats ('ndv'='5', 'avg_size'='14', 'max_size'='14', 'num_nulls'='0', 'min_value'='AFRICA', 'max_value'='MIDDLE EAST', 'row_count'='5'); - ''' - - sql ''' - alter table region modify column r_comment set stats ('ndv'='5', 'avg_size'='14', 'max_size'='14', 'num_nulls'='0', 'min_value'='AFRICA', 'max_value'='MIDDLE EAST', 'row_count'='5'); - ''' - - sql ''' - alter table nation modify column n_nationkey set stats ('ndv'='25', 'avg_size'='4', 'max_size'='4', 'num_nulls'='0', 'min_value'='0', 'max_value'='24', 'row_count'='25'); - ''' - - sql ''' - alter table nation modify column n_regionkey set stats ('ndv'='5', 'avg_size'='4', 'max_size'='4', 'num_nulls'='0', 'min_value'='0', 'max_value'='4', 'row_count'='25'); - ''' - - sql ''' - alter table nation modify column n_name set stats ('ndv'='25', 'avg_size'='14', 'max_size'='14', 'num_nulls'='0', 'min_value'='ALGERIA', 'max_value'='VIETNAM', 'row_count'='25'); - ''' - - sql ''' - alter table nation modify column n_comment set stats ('ndv'='25', 'avg_size'='14', 'max_size'='14', 'num_nulls'='0', 'min_value'='ALGERIA', 'max_value'='VIETNAM', 'row_count'='25'); - ''' - - sql ''' - alter table customer modify column c_custkey set stats ('ndv'='76285424', 'avg_size'='4', 'max_size'='4', 'num_nulls'='0', 'min_value'='1', 'max_value'='75000000', 'row_count'='75000000'); - ''' - - sql ''' - alter table customer modify column c_acctbal set stats ('ndv'='1109296', 'avg_size'='16', 'max_size'='16', 'num_nulls'='0', 'min_value'='-999.99', 'max_value'='9999.99', 'row_count'='75000000'); - ''' - - sql ''' - alter table customer modify column c_phone set stats ('ndv'='75783176', 'avg_size'='15', 'max_size'='15', 'num_nulls'='0', 'min_value'='10-100-106-1617', 'max_value'='34-999-618-6881', 'row_count'='75000000'); - ''' - - sql ''' - alter table customer modify column c_mktsegment set stats ('ndv'='5', 'avg_size'='8.9', 'max_size'='10', 'num_nulls'='0', 'min_value'='AUTOMOBILE', 'max_value'='MACHINERY', 'row_count'='75000000'); - ''' - - sql ''' - alter table customer modify column c_address set stats ('ndv'='75000000', 'avg_size'='25', 'max_size'='40', 'num_nulls'='0', 'min_value'=' 2uZwVhQvwA', 'max_value'='zzxGktzXTMKS1BxZlgQ9nqQ', 'row_count'='75000000'); - ''' - - sql ''' - alter table customer modify column c_nationkey set stats ('ndv'='25', 'avg_size'='4', 'max_size'='4', 'num_nulls'='0', 'min_value'='0', 'max_value'='24', 'row_count'='75000000'); - ''' - - sql ''' - alter table customer modify column c_name set stats ('ndv'='75889840', 'avg_size'='25', 'max_size'='25', 'num_nulls'='0', 'min_value'='Customer#000000001', 'max_value'='Customer#075000000', 'row_count'='75000000'); - ''' - - sql ''' - alter table customer modify column c_comment set stats ('ndv'='66629836', 'avg_size'='72', 'max_size'='116', 'num_nulls'='0', 'min_value'=' Tiresias according to the sly', 'max_value'='zzle. blithely regu0', 'row_count'='75000000'); - ''' - - sql ''' - alter table orders modify column o_orderstatus set stats ('ndv'='3', 'avg_size'='1.0', 'max_size'='1', 'num_nulls'='0', 'min_value'='F', 'max_value'='P', 'row_count'='750000000'); - ''' - - sql ''' - alter table orders modify column o_clerk set stats ('ndv'='508347', 'avg_size'='15.0', 'max_size'='15', 'num_nulls'='0', 'min_value'='Clerk#000000001', 'max_value'='Clerk#000500000', 'row_count'='750000000'); - ''' - - sql ''' - alter table orders modify column o_orderdate set stats ('ndv'='2428', 'avg_size'='16.0', 'max_size'='16', 'num_nulls'='0', 'min_value'='1992-01-01', 'max_value'='1998-08-02', 'row_count'='750000000'); - ''' - - sql ''' - alter table orders modify column o_shippriority set stats ('ndv'='1', 'avg_size'='4.0', 'max_size'='4', 'num_nulls'='0', 'min_value'='0', 'max_value'='0', 'row_count'='750000000'); - ''' - - sql ''' - alter table orders modify column o_custkey set stats ('ndv'='50471848', 'avg_size'='4.0', 'max_size'='4', 'num_nulls'='0', 'min_value'='1', 'max_value'='74999999', 'row_count'='750000000'); - ''' - - sql ''' - alter table orders modify column o_totalprice set stats ('ndv'='1462416', 'avg_size'='16.0', 'max_size'='16', 'num_nulls'='0', 'min_value'='857.71', 'max_value'='555285.16', 'row_count'='750000000'); - ''' - - sql ''' - alter table orders modify column o_orderkey set stats ('ndv'='750000000', 'avg_size'='8.0', 'max_size'='8', 'num_nulls'='0', 'min_value'='1', 'max_value'='3000000000', 'row_count'='750000000'); - ''' - - sql ''' - alter table orders modify column o_comment set stats ('ndv'='260882608', 'avg_size'='48.51387', 'max_size'='78', 'num_nulls'='0', 'min_value'='Tiresias about the blithely ironic a', 'max_value'='zzle? furiously ironic instructions among the unusual t ', 'row_count'='750000000'); - ''' - - sql ''' - alter table orders modify column o_orderpriority set stats ('ndv'='5', 'avg_size'='8.4', 'max_size'='15', 'num_nulls'='0', 'min_value'='1-URGENT', 'max_value'='5-LOW', 'row_count'='750000000'); - ''' -} diff --git a/regression-test/suites/nereids_tpch_shape_sf500_p0/shape/q1.groovy b/regression-test/suites/nereids_tpch_shape_sf500_p0/shape/q1.groovy deleted file mode 100644 index 27fe9ac08f9aad..00000000000000 --- a/regression-test/suites/nereids_tpch_shape_sf500_p0/shape/q1.groovy +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -suite("q1") { - String db = context.config.getDbNameByFile(new File(context.file.parent)) - sql "use ${db}" - sql 'set enable_nereids_planner=true' - sql 'set enable_fallback_to_original_planner=false' - sql 'set exec_mem_limit=21G' - sql 'SET enable_pipeline_engine = true' - - -sql 'set be_number_for_test=3' - - - qt_select """ - explain shape plan - select - l_returnflag, - l_linestatus, - sum(l_quantity) as sum_qty, - sum(l_extendedprice) as sum_base_price, - sum(l_extendedprice * (1 - l_discount)) as sum_disc_price, - sum(l_extendedprice * (1 - l_discount) * (1 + l_tax)) as sum_charge, - avg(l_quantity) as avg_qty, - avg(l_extendedprice) as avg_price, - avg(l_discount) as avg_disc, - count(*) as count_order - from - lineitem - where - l_shipdate <= date '1998-12-01' - interval '90' day - group by - l_returnflag, - l_linestatus - order by - l_returnflag, - l_linestatus; - """ -} diff --git a/regression-test/suites/nereids_tpch_shape_sf500_p0/shape/q10.groovy b/regression-test/suites/nereids_tpch_shape_sf500_p0/shape/q10.groovy deleted file mode 100644 index 408312e626085b..00000000000000 --- a/regression-test/suites/nereids_tpch_shape_sf500_p0/shape/q10.groovy +++ /dev/null @@ -1,70 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -suite("q10") { - String db = context.config.getDbNameByFile(new File(context.file.parent)) - sql "use ${db}" - sql 'set enable_nereids_planner=true' - sql 'set enable_fallback_to_original_planner=false' - sql "set runtime_filter_mode='GLOBAL'" - - sql 'set exec_mem_limit=21G' - sql 'SET enable_pipeline_engine = true' - - - - -sql 'set be_number_for_test=3' - - qt_select """ - explain shape plan - select - c_custkey, - c_name, - sum(l_extendedprice * (1 - l_discount)) as revenue, - c_acctbal, - n_name, - c_address, - c_phone, - c_comment - from - customer, - orders, - lineitem, - nation - where - c_custkey = o_custkey - and l_orderkey = o_orderkey - and o_orderdate >= date '1993-10-01' - and o_orderdate < date '1993-10-01' + interval '3' month - and l_returnflag = 'R' - and c_nationkey = n_nationkey - group by - c_custkey, - c_name, - c_acctbal, - c_phone, - n_name, - c_address, - c_comment - order by - revenue desc - limit 20; - """ -} diff --git a/regression-test/suites/nereids_tpch_shape_sf500_p0/shape/q11.groovy b/regression-test/suites/nereids_tpch_shape_sf500_p0/shape/q11.groovy deleted file mode 100644 index 9820445dfa4b0f..00000000000000 --- a/regression-test/suites/nereids_tpch_shape_sf500_p0/shape/q11.groovy +++ /dev/null @@ -1,65 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -suite("q11") { - String db = context.config.getDbNameByFile(new File(context.file.parent)) - sql "use ${db}" - sql 'set enable_nereids_planner=true' - sql 'set enable_fallback_to_original_planner=false' - sql "set runtime_filter_mode='GLOBAL'" - - sql 'set exec_mem_limit=21G' - sql 'SET enable_pipeline_engine = true' - - - - -sql 'set be_number_for_test=3' - - qt_select """ - explain shape plan - select - ps_partkey, - sum(ps_supplycost * ps_availqty) as value - from - partsupp, - supplier, - nation - where - ps_suppkey = s_suppkey - and s_nationkey = n_nationkey - and n_name = 'GERMANY' - group by - ps_partkey having - sum(ps_supplycost * ps_availqty) > ( - select - sum(ps_supplycost * ps_availqty) * 0.000002 - from - partsupp, - supplier, - nation - where - ps_suppkey = s_suppkey - and s_nationkey = n_nationkey - and n_name = 'GERMANY' - ) - order by - value desc; - """ -} diff --git a/regression-test/suites/nereids_tpch_shape_sf500_p0/shape/q12.groovy b/regression-test/suites/nereids_tpch_shape_sf500_p0/shape/q12.groovy deleted file mode 100644 index c0ff16a269ce55..00000000000000 --- a/regression-test/suites/nereids_tpch_shape_sf500_p0/shape/q12.groovy +++ /dev/null @@ -1,66 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -suite("q12") { - String db = context.config.getDbNameByFile(new File(context.file.parent)) - sql "use ${db}" - sql 'set enable_nereids_planner=true' - sql 'set enable_fallback_to_original_planner=false' - sql "set runtime_filter_mode='GLOBAL'" - - sql 'set exec_mem_limit=21G' - sql 'SET enable_pipeline_engine = true' - - - - -sql 'set be_number_for_test=3' - - qt_select """ - explain shape plan - select - l_shipmode, - sum(case - when o_orderpriority = '1-URGENT' - or o_orderpriority = '2-HIGH' - then 1 - else 0 - end) as high_line_count, - sum(case - when o_orderpriority <> '1-URGENT' - and o_orderpriority <> '2-HIGH' - then 1 - else 0 - end) as low_line_count - from - orders, - lineitem - where - o_orderkey = l_orderkey - and l_shipmode in ('MAIL', 'SHIP') - and l_commitdate < l_receiptdate - and l_shipdate < l_commitdate - and l_receiptdate >= date '1994-01-01' - and l_receiptdate < date '1994-01-01' + interval '1' year - group by - l_shipmode - order by - l_shipmode; - """ -} diff --git a/regression-test/suites/nereids_tpch_shape_sf500_p0/shape/q13.groovy b/regression-test/suites/nereids_tpch_shape_sf500_p0/shape/q13.groovy deleted file mode 100644 index ab6e68aaea1f95..00000000000000 --- a/regression-test/suites/nereids_tpch_shape_sf500_p0/shape/q13.groovy +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -suite("q13") { - String db = context.config.getDbNameByFile(new File(context.file.parent)) - sql "use ${db}" - sql 'set enable_nereids_planner=true' - sql 'set enable_fallback_to_original_planner=false' - sql "set runtime_filter_mode='GLOBAL'" - - sql 'set exec_mem_limit=21G' - sql 'SET enable_pipeline_engine = true' - -sql 'set be_number_for_test=3' - - qt_select """ - explain shape plan - select - c_count, - count(*) as custdist - from - ( - select - c_custkey, - count(o_orderkey) as c_count - from - customer left outer join orders on - c_custkey = o_custkey - and o_comment not like '%special%requests%' - group by - c_custkey - ) as c_orders - group by - c_count - order by - custdist desc, - c_count desc; - """ -} diff --git a/regression-test/suites/nereids_tpch_shape_sf500_p0/shape/q14.groovy b/regression-test/suites/nereids_tpch_shape_sf500_p0/shape/q14.groovy deleted file mode 100644 index 8d052771ddd272..00000000000000 --- a/regression-test/suites/nereids_tpch_shape_sf500_p0/shape/q14.groovy +++ /dev/null @@ -1,48 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -suite("q14") { - String db = context.config.getDbNameByFile(new File(context.file.parent)) - sql "use ${db}" - sql 'set enable_nereids_planner=true' - sql 'set enable_fallback_to_original_planner=false' - sql "set runtime_filter_mode='GLOBAL'" - - sql 'set exec_mem_limit=21G' - sql 'SET enable_pipeline_engine = true' - -sql 'set be_number_for_test=3' - - qt_select """ - explain shape plan - select - 100.00 * sum(case - when p_type like 'PROMO%' - then l_extendedprice * (1 - l_discount) - else 0 - end) / sum(l_extendedprice * (1 - l_discount)) as promo_revenue - from - lineitem, - part - where - l_partkey = p_partkey - and l_shipdate >= date '1995-09-01' - and l_shipdate < date '1995-09-01' + interval '1' month; - """ -} diff --git a/regression-test/suites/nereids_tpch_shape_sf500_p0/shape/q15.groovy b/regression-test/suites/nereids_tpch_shape_sf500_p0/shape/q15.groovy deleted file mode 100644 index dfc5e4917bf521..00000000000000 --- a/regression-test/suites/nereids_tpch_shape_sf500_p0/shape/q15.groovy +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -suite("q15") { - String db = context.config.getDbNameByFile(new File(context.file.parent)) - sql "use ${db}" - sql 'set enable_nereids_planner=true' - sql 'set enable_fallback_to_original_planner=false' - sql "set runtime_filter_mode='GLOBAL'" - - sql 'set exec_mem_limit=21G' - sql 'SET enable_pipeline_engine = true' - - - - -sql 'set be_number_for_test=3' - - qt_select """ - explain shape plan - select - s_suppkey, - s_name, - s_address, - s_phone, - total_revenue - from - supplier, - revenue0 - where - s_suppkey = supplier_no - and total_revenue = ( - select - max(total_revenue) - from - revenue0 - ) - order by - s_suppkey; - """ -} diff --git a/regression-test/suites/nereids_tpch_shape_sf500_p0/shape/q16.groovy b/regression-test/suites/nereids_tpch_shape_sf500_p0/shape/q16.groovy deleted file mode 100644 index 12cbb7c23616cd..00000000000000 --- a/regression-test/suites/nereids_tpch_shape_sf500_p0/shape/q16.groovy +++ /dev/null @@ -1,68 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -suite("q16") { - String db = context.config.getDbNameByFile(new File(context.file.parent)) - sql "use ${db}" - sql 'set enable_nereids_planner=true' - sql 'set enable_fallback_to_original_planner=false' - sql "set runtime_filter_mode='GLOBAL'" - - sql 'set exec_mem_limit=21G' - sql 'SET enable_pipeline_engine = true' - - - - -sql 'set be_number_for_test=3' - - qt_select """ - explain shape plan - select - p_brand, - p_type, - p_size, - count(distinct ps_suppkey) as supplier_cnt - from - partsupp, - part - where - p_partkey = ps_partkey - and p_brand <> 'Brand#45' - and p_type not like 'MEDIUM POLISHED%' - and p_size in (49, 14, 23, 45, 19, 3, 36, 9) - and ps_suppkey not in ( - select - s_suppkey - from - supplier - where - s_comment like '%Customer%Complaints%' - ) - group by - p_brand, - p_type, - p_size - order by - supplier_cnt desc, - p_brand, - p_type, - p_size; - """ -} diff --git a/regression-test/suites/nereids_tpch_shape_sf500_p0/shape/q17.groovy b/regression-test/suites/nereids_tpch_shape_sf500_p0/shape/q17.groovy deleted file mode 100644 index 075b5186a8764d..00000000000000 --- a/regression-test/suites/nereids_tpch_shape_sf500_p0/shape/q17.groovy +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -suite("q17") { - String db = context.config.getDbNameByFile(new File(context.file.parent)) - sql "use ${db}" - sql 'set enable_nereids_planner=true' - sql 'set enable_fallback_to_original_planner=false' - sql "set runtime_filter_mode='GLOBAL'" - - sql 'set exec_mem_limit=21G' - sql 'SET enable_pipeline_engine = true' - - - - -sql 'set be_number_for_test=3' - - qt_select """ - explain shape plan - select - sum(l_extendedprice) / 7.0 as avg_yearly - from - lineitem, - part - where - p_partkey = l_partkey - and p_brand = 'Brand#23' - and p_container = 'MED BOX' - and l_quantity < ( - select - 0.2 * avg(l_quantity) - from - lineitem - where - l_partkey = p_partkey - ); - """ -} diff --git a/regression-test/suites/nereids_tpch_shape_sf500_p0/shape/q18.groovy b/regression-test/suites/nereids_tpch_shape_sf500_p0/shape/q18.groovy deleted file mode 100644 index dc7bae3584abea..00000000000000 --- a/regression-test/suites/nereids_tpch_shape_sf500_p0/shape/q18.groovy +++ /dev/null @@ -1,71 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -suite("q18") { - String db = context.config.getDbNameByFile(new File(context.file.parent)) - sql "use ${db}" - sql 'set enable_nereids_planner=true' - sql 'set enable_fallback_to_original_planner=false' - sql "set runtime_filter_mode='GLOBAL'" - - sql 'set exec_mem_limit=21G' - sql 'SET enable_pipeline_engine = true' - - - - -sql 'set be_number_for_test=3' - - qt_select """ - explain shape plan - select - c_name, - c_custkey, - o_orderkey, - o_orderdate, - o_totalprice, - sum(l_quantity) - from - customer, - orders, - lineitem - where - o_orderkey in ( - select - l_orderkey - from - lineitem - group by - l_orderkey having - sum(l_quantity) > 300 - ) - and c_custkey = o_custkey - and o_orderkey = l_orderkey - group by - c_name, - c_custkey, - o_orderkey, - o_orderdate, - o_totalprice - order by - o_totalprice desc, - o_orderdate - limit 100; - """ -} diff --git a/regression-test/suites/nereids_tpch_shape_sf500_p0/shape/q19.groovy b/regression-test/suites/nereids_tpch_shape_sf500_p0/shape/q19.groovy deleted file mode 100644 index 800352e269cbca..00000000000000 --- a/regression-test/suites/nereids_tpch_shape_sf500_p0/shape/q19.groovy +++ /dev/null @@ -1,75 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -suite("q19") { - String db = context.config.getDbNameByFile(new File(context.file.parent)) - - sql "use ${db}" - sql 'set enable_nereids_planner=true' - sql 'set enable_fallback_to_original_planner=false' - sql "set runtime_filter_mode='GLOBAL'" - - sql 'set exec_mem_limit=21G' - sql 'SET enable_pipeline_engine = true' - - - - -sql 'set be_number_for_test=3' - - qt_select """ - explain shape plan - select - sum(l_extendedprice* (1 - l_discount)) as revenue - from - lineitem, - part - where - ( - p_partkey = l_partkey - and p_brand = 'Brand#12' - and p_container in ('SM CASE', 'SM BOX', 'SM PACK', 'SM PKG') - and l_quantity >= 1 and l_quantity <= 1 + 10 - and p_size between 1 and 5 - and l_shipmode in ('AIR', 'AIR REG') - and l_shipinstruct = 'DELIVER IN PERSON' - ) - or - ( - p_partkey = l_partkey - and p_brand = 'Brand#23' - and p_container in ('MED BAG', 'MED BOX', 'MED PKG', 'MED PACK') - and l_quantity >= 10 and l_quantity <= 10 + 10 - and p_size between 1 and 10 - and l_shipmode in ('AIR', 'AIR REG') - and l_shipinstruct = 'DELIVER IN PERSON' - ) - or - ( - p_partkey = l_partkey - and p_brand = 'Brand#34' - and p_container in ('LG CASE', 'LG BOX', 'LG PACK', 'LG PKG') - and l_quantity >= 20 and l_quantity <= 20 + 10 - and p_size between 1 and 15 - and l_shipmode in ('AIR', 'AIR REG') - and l_shipinstruct = 'DELIVER IN PERSON' - ); - - """ -} diff --git a/regression-test/suites/nereids_tpch_shape_sf500_p0/shape/q2.groovy b/regression-test/suites/nereids_tpch_shape_sf500_p0/shape/q2.groovy deleted file mode 100644 index 088cd1b04a494a..00000000000000 --- a/regression-test/suites/nereids_tpch_shape_sf500_p0/shape/q2.groovy +++ /dev/null @@ -1,83 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -suite("q2") { - String db = context.config.getDbNameByFile(new File(context.file.parent)) - sql "use ${db}" - sql 'set enable_nereids_planner=true' - sql 'set enable_fallback_to_original_planner=false' - sql "set runtime_filter_mode='GLOBAL'" - - sql 'set exec_mem_limit=21G' - sql 'SET enable_pipeline_engine = true' - - - - -sql 'set be_number_for_test=3' - - - qt_select """ - explain shape plan - select - s_acctbal, - s_name, - n_name, - p_partkey, - p_mfgr, - s_address, - s_phone, - s_comment - from - part, - supplier, - partsupp, - nation, - region - where - p_partkey = ps_partkey - and s_suppkey = ps_suppkey - and p_size = 15 - and p_type like '%BRASS' - and s_nationkey = n_nationkey - and n_regionkey = r_regionkey - and r_name = 'EUROPE' - and ps_supplycost = ( - select - min(ps_supplycost) - from - partsupp, - supplier, - nation, - region - where - p_partkey = ps_partkey - and s_suppkey = ps_suppkey - and s_nationkey = n_nationkey - and n_regionkey = r_regionkey - and r_name = 'EUROPE' - ) - order by - s_acctbal desc, - n_name, - s_name, - p_partkey - limit 100; - """ -} diff --git a/regression-test/suites/nereids_tpch_shape_sf500_p0/shape/q20.groovy b/regression-test/suites/nereids_tpch_shape_sf500_p0/shape/q20.groovy deleted file mode 100644 index 1a1f70c2dc7d53..00000000000000 --- a/regression-test/suites/nereids_tpch_shape_sf500_p0/shape/q20.groovy +++ /dev/null @@ -1,76 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -suite("q20") { - String db = context.config.getDbNameByFile(new File(context.file.parent)) - - sql "use ${db}" - sql 'set enable_nereids_planner=true' - sql 'set enable_fallback_to_original_planner=false' - sql "set runtime_filter_mode='GLOBAL'" - - sql 'set exec_mem_limit=21G' - sql 'SET enable_pipeline_engine = true' - - - - -sql 'set be_number_for_test=3' - - qt_select """ - explain shape plan - select - s_name, - s_address - from - supplier, - nation - where - s_suppkey in ( - select - ps_suppkey - from - partsupp - where - ps_partkey in ( - select - p_partkey - from - part - where - p_name like 'forest%' - ) - and ps_availqty > ( - select - 0.5 * sum(l_quantity) - from - lineitem - where - l_partkey = ps_partkey - and l_suppkey = ps_suppkey - and l_shipdate >= date '1994-01-01' - and l_shipdate < date '1994-01-01' + interval '1' year - ) - ) - and s_nationkey = n_nationkey - and n_name = 'CANADA' - order by - s_name; - """ -} diff --git a/regression-test/suites/nereids_tpch_shape_sf500_p0/shape/q21.groovy b/regression-test/suites/nereids_tpch_shape_sf500_p0/shape/q21.groovy deleted file mode 100644 index b150b32013fddb..00000000000000 --- a/regression-test/suites/nereids_tpch_shape_sf500_p0/shape/q21.groovy +++ /dev/null @@ -1,78 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -suite("q21") { - String db = context.config.getDbNameByFile(new File(context.file.parent)) - sql "use ${db}" - sql 'set enable_nereids_planner=true' - sql 'set enable_fallback_to_original_planner=false' - sql "set runtime_filter_mode='GLOBAL'" - - sql 'set exec_mem_limit=21G' - sql 'SET enable_pipeline_engine = true' - - - - -sql 'set be_number_for_test=3' - - qt_select """ - explain shape plan - select - s_name, - count(*) as numwait - from - supplier, - lineitem l1, - orders, - nation - where - s_suppkey = l1.l_suppkey - and o_orderkey = l1.l_orderkey - and o_orderstatus = 'F' - and l1.l_receiptdate > l1.l_commitdate - and exists ( - select - * - from - lineitem l2 - where - l2.l_orderkey = l1.l_orderkey - and l2.l_suppkey <> l1.l_suppkey - ) - and not exists ( - select - * - from - lineitem l3 - where - l3.l_orderkey = l1.l_orderkey - and l3.l_suppkey <> l1.l_suppkey - and l3.l_receiptdate > l3.l_commitdate - ) - and s_nationkey = n_nationkey - and n_name = 'SAUDI ARABIA' - group by - s_name - order by - numwait desc, - s_name - limit 100; - """ -} diff --git a/regression-test/suites/nereids_tpch_shape_sf500_p0/shape/q22.groovy b/regression-test/suites/nereids_tpch_shape_sf500_p0/shape/q22.groovy deleted file mode 100644 index 37e89e871fb9f1..00000000000000 --- a/regression-test/suites/nereids_tpch_shape_sf500_p0/shape/q22.groovy +++ /dev/null @@ -1,75 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -suite("q22") { - String db = context.config.getDbNameByFile(new File(context.file.parent)) - sql "use ${db}" - sql 'set enable_nereids_planner=true' - sql 'set enable_fallback_to_original_planner=false' - sql "set runtime_filter_mode='GLOBAL'" - - sql 'set exec_mem_limit=21G' - sql 'SET enable_pipeline_engine = true' - - - - -sql 'set be_number_for_test=3' - - qt_select """ - explain shape plan - select - cntrycode, - count(*) as numcust, - sum(c_acctbal) as totacctbal - from - ( - select - substring(c_phone, 1, 2) as cntrycode, - c_acctbal - from - customer - where - substring(c_phone, 1, 2) in - ('13', '31', '23', '29', '30', '18', '17') - and c_acctbal > ( - select - avg(c_acctbal) - from - customer - where - c_acctbal > 0.00 - and substring(c_phone, 1, 2) in - ('13', '31', '23', '29', '30', '18', '17') - ) - and not exists ( - select - * - from - orders - where - o_custkey = c_custkey - ) - ) as custsale - group by - cntrycode - order by - cntrycode; - """ -} diff --git a/regression-test/suites/nereids_tpch_shape_sf500_p0/shape/q3.groovy b/regression-test/suites/nereids_tpch_shape_sf500_p0/shape/q3.groovy deleted file mode 100644 index 9485dded9d2dfd..00000000000000 --- a/regression-test/suites/nereids_tpch_shape_sf500_p0/shape/q3.groovy +++ /dev/null @@ -1,65 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -suite("q3") { - String db = context.config.getDbNameByFile(new File(context.file.parent)) - // db = "tpch" - sql "use ${db}" - sql 'set enable_nereids_planner=true' - sql 'set enable_fallback_to_original_planner=false' - sql "set runtime_filter_mode='GLOBAL'" - - sql 'set exec_mem_limit=21G' - sql 'SET enable_pipeline_engine = true' - - - - - - -sql 'set be_number_for_test=3' - - - qt_select """ - explain shape plan - select - l_orderkey, - sum(l_extendedprice * (1 - l_discount)) as revenue, - o_orderdate, - o_shippriority - from - customer, - orders, - lineitem - where - c_mktsegment = 'BUILDING' - and c_custkey = o_custkey - and l_orderkey = o_orderkey - and o_orderdate < date '1995-03-15' - and l_shipdate > date '1995-03-15' - group by - l_orderkey, - o_orderdate, - o_shippriority - order by - revenue desc, - o_orderdate - limit 10; - """ -} diff --git a/regression-test/suites/nereids_tpch_shape_sf500_p0/shape/q4.groovy b/regression-test/suites/nereids_tpch_shape_sf500_p0/shape/q4.groovy deleted file mode 100644 index 3b24cfad87007e..00000000000000 --- a/regression-test/suites/nereids_tpch_shape_sf500_p0/shape/q4.groovy +++ /dev/null @@ -1,61 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -suite("q4") { - String db = context.config.getDbNameByFile(new File(context.file.parent)) - sql "use ${db}" - sql 'set enable_nereids_planner=true' - sql 'set enable_fallback_to_original_planner=false' - sql "set runtime_filter_mode='GLOBAL'" - - sql 'set exec_mem_limit=21G' - sql 'SET enable_pipeline_engine = true' - - - - - -sql 'set be_number_for_test=3' - - - qt_select """ - explain shape plan - select - o_orderpriority, - count(*) as order_count - from - orders - where - o_orderdate >= date '1993-07-01' - and o_orderdate < date '1993-07-01' + interval '3' month - and exists ( - select - * - from - lineitem - where - l_orderkey = o_orderkey - and l_commitdate < l_receiptdate - ) - group by - o_orderpriority - order by - o_orderpriority; - """ -} diff --git a/regression-test/suites/nereids_tpch_shape_sf500_p0/shape/q5.groovy b/regression-test/suites/nereids_tpch_shape_sf500_p0/shape/q5.groovy deleted file mode 100644 index 2c6b6b1b0c8022..00000000000000 --- a/regression-test/suites/nereids_tpch_shape_sf500_p0/shape/q5.groovy +++ /dev/null @@ -1,59 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -suite("q5") { - String db = context.config.getDbNameByFile(new File(context.file.parent)) - sql "use ${db}" - sql 'set enable_nereids_planner=true' - sql 'set enable_fallback_to_original_planner=false' - sql "set runtime_filter_mode='GLOBAL'" - - sql 'set exec_mem_limit=21G' - sql 'SET enable_pipeline_engine = true' - -sql 'set be_number_for_test=3' - - qt_select """ - explain shape plan - select - n_name, - sum(l_extendedprice * (1 - l_discount)) as revenue - from - customer, - orders, - lineitem, - supplier, - nation, - region - where - c_custkey = o_custkey - and l_orderkey = o_orderkey - and l_suppkey = s_suppkey - and c_nationkey = s_nationkey - and s_nationkey = n_nationkey - and n_regionkey = r_regionkey - and r_name = 'ASIA' - and o_orderdate >= date '1994-01-01' - and o_orderdate < date '1994-01-01' + interval '1' year - group by - n_name - order by - revenue desc; - """ -} diff --git a/regression-test/suites/nereids_tpch_shape_sf500_p0/shape/q6.groovy b/regression-test/suites/nereids_tpch_shape_sf500_p0/shape/q6.groovy deleted file mode 100644 index e217da7d0bbcf2..00000000000000 --- a/regression-test/suites/nereids_tpch_shape_sf500_p0/shape/q6.groovy +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -suite("q6") { - String db = context.config.getDbNameByFile(new File(context.file.parent)) - sql "use ${db}" - sql 'set enable_nereids_planner=true' - sql 'set enable_fallback_to_original_planner=false' - sql "set runtime_filter_mode='GLOBAL'" - - sql 'set global exec_mem_limit = 21G' - sql 'SET enable_pipeline_engine = true' - -sql 'set be_number_for_test=3' - - qt_select """ - explain shape plan - select - sum(l_extendedprice * l_discount) as revenue - from - lineitem - where - l_shipdate >= date '1994-01-01' - and l_shipdate < date '1994-01-01' + interval '1' year - and l_discount between .06 - 0.01 and .06 + 0.01 - and l_quantity < 24; - """ -} diff --git a/regression-test/suites/nereids_tpch_shape_sf500_p0/shape/q7.groovy b/regression-test/suites/nereids_tpch_shape_sf500_p0/shape/q7.groovy deleted file mode 100644 index 8de4955cf3afe3..00000000000000 --- a/regression-test/suites/nereids_tpch_shape_sf500_p0/shape/q7.groovy +++ /dev/null @@ -1,74 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -suite("q7") { - String db = context.config.getDbNameByFile(new File(context.file.parent)) - sql "use ${db}" - sql 'set enable_nereids_planner=true' - sql 'set enable_fallback_to_original_planner=false' - sql "set runtime_filter_mode='GLOBAL'" - - sql 'set exec_mem_limit=21G' - sql 'SET enable_pipeline_engine = true' - -sql 'set be_number_for_test=3' - - qt_select """ - explain shape plan - select - supp_nation, - cust_nation, - l_year, - sum(volume) as revenue - from - ( - select - n1.n_name as supp_nation, - n2.n_name as cust_nation, - extract(year from l_shipdate) as l_year, - l_extendedprice * (1 - l_discount) as volume - from - supplier, - lineitem, - orders, - customer, - nation n1, - nation n2 - where - s_suppkey = l_suppkey - and o_orderkey = l_orderkey - and c_custkey = o_custkey - and s_nationkey = n1.n_nationkey - and c_nationkey = n2.n_nationkey - and ( - (n1.n_name = 'FRANCE' and n2.n_name = 'GERMANY') - or (n1.n_name = 'GERMANY' and n2.n_name = 'FRANCE') - ) - and l_shipdate between date '1995-01-01' and date '1996-12-31' - ) as shipping - group by - supp_nation, - cust_nation, - l_year - order by - supp_nation, - cust_nation, - l_year; - """ -} diff --git a/regression-test/suites/nereids_tpch_shape_sf500_p0/shape/q8.groovy b/regression-test/suites/nereids_tpch_shape_sf500_p0/shape/q8.groovy deleted file mode 100644 index fd259539a7d1f3..00000000000000 --- a/regression-test/suites/nereids_tpch_shape_sf500_p0/shape/q8.groovy +++ /dev/null @@ -1,71 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -suite("q8") { - String db = context.config.getDbNameByFile(new File(context.file.parent)) - sql "use ${db}" - sql 'set enable_nereids_planner=true' - sql 'set enable_fallback_to_original_planner=false' - sql "set runtime_filter_mode='GLOBAL'" - - sql 'set exec_mem_limit=21G' - sql 'SET enable_pipeline_engine = true' -sql 'set be_number_for_test=3' - - qt_select """ - explain shape plan - select - o_year, - sum(case - when nation = 'BRAZIL' then volume - else 0 - end) / sum(volume) as mkt_share - from - ( - select - extract(year from o_orderdate) as o_year, - l_extendedprice * (1 - l_discount) as volume, - n2.n_name as nation - from - part, - supplier, - lineitem, - orders, - customer, - nation n1, - nation n2, - region - where - p_partkey = l_partkey - and s_suppkey = l_suppkey - and l_orderkey = o_orderkey - and o_custkey = c_custkey - and c_nationkey = n1.n_nationkey - and n1.n_regionkey = r_regionkey - and r_name = 'AMERICA' - and s_nationkey = n2.n_nationkey - and o_orderdate between date '1995-01-01' and date '1996-12-31' - and p_type = 'ECONOMY ANODIZED STEEL' - ) as all_nations - group by - o_year - order by - o_year; - """ -} diff --git a/regression-test/suites/nereids_tpch_shape_sf500_p0/shape/q9.groovy b/regression-test/suites/nereids_tpch_shape_sf500_p0/shape/q9.groovy deleted file mode 100644 index 0d4f6207afb9fe..00000000000000 --- a/regression-test/suites/nereids_tpch_shape_sf500_p0/shape/q9.groovy +++ /dev/null @@ -1,67 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -suite("q9") { - String db = context.config.getDbNameByFile(new File(context.file.parent)) - sql "use ${db}" - sql 'set enable_nereids_planner=true' - sql 'set enable_fallback_to_original_planner=false' - sql "set runtime_filter_mode='GLOBAL'" - - sql 'set exec_mem_limit=21G' - sql 'SET enable_pipeline_engine = true' - -sql 'set be_number_for_test=3' - - qt_select """ - explain shape plan - select - nation, - o_year, - sum(amount) as sum_profit - from - ( - select - n_name as nation, - extract(year from o_orderdate) as o_year, - l_extendedprice * (1 - l_discount) - ps_supplycost * l_quantity as amount - from - part, - supplier, - lineitem, - partsupp, - orders, - nation - where - s_suppkey = l_suppkey - and ps_suppkey = l_suppkey - and ps_partkey = l_partkey - and p_partkey = l_partkey - and o_orderkey = l_orderkey - and s_nationkey = n_nationkey - and p_name like '%green%' - ) as profit - group by - nation, - o_year - order by - nation, - o_year desc; - """ -} From e41d9956303b533c85e253eab1a7e6161d7b37b3 Mon Sep 17 00:00:00 2001 From: Qi Chen Date: Sat, 25 Nov 2023 16:50:13 +0800 Subject: [PATCH 33/33] [Fix](hive-transactional-table) Fix NPE when query empty hive transactional table. (#27567) --- .../hive/scripts/create_preinstalled_table.hql | 11 +++++++++++ .../doris/datasource/hive/HiveMetaStoreCache.java | 4 ++++ .../hive/test_transactional_hive.out | 11 +++++++++-- .../hive/test_transactional_hive.groovy | 13 +++++++++++-- 4 files changed, 35 insertions(+), 4 deletions(-) diff --git a/docker/thirdparties/docker-compose/hive/scripts/create_preinstalled_table.hql b/docker/thirdparties/docker-compose/hive/scripts/create_preinstalled_table.hql index a6d5c212a12b58..4e80d7466d2f91 100644 --- a/docker/thirdparties/docker-compose/hive/scripts/create_preinstalled_table.hql +++ b/docker/thirdparties/docker-compose/hive/scripts/create_preinstalled_table.hql @@ -632,6 +632,17 @@ insert into `schema_evo_test_orc` select 2, "messi", from_unixtime(to_unix_times SET hive.support.concurrency=true; SET hive.txn.manager=org.apache.hadoop.hive.ql.lockmgr.DbTxnManager; +create table orc_full_acid_empty (id INT, value STRING) +CLUSTERED BY (id) INTO 3 BUCKETS +STORED AS ORC +TBLPROPERTIES ('transactional' = 'true'); + +create table orc_full_acid_par_empty (id INT, value STRING) +PARTITIONED BY (part_col INT) +CLUSTERED BY (id) INTO 3 BUCKETS +STORED AS ORC +TBLPROPERTIES ('transactional' = 'true'); + create table orc_full_acid (id INT, value STRING) CLUSTERED BY (id) INTO 3 BUCKETS STORED AS ORC diff --git a/fe/fe-core/src/main/java/org/apache/doris/datasource/hive/HiveMetaStoreCache.java b/fe/fe-core/src/main/java/org/apache/doris/datasource/hive/HiveMetaStoreCache.java index bac891eb920225..f92c2e545ac6f0 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/datasource/hive/HiveMetaStoreCache.java +++ b/fe/fe-core/src/main/java/org/apache/doris/datasource/hive/HiveMetaStoreCache.java @@ -90,6 +90,7 @@ import java.net.URI; import java.security.PrivilegedExceptionAction; import java.util.ArrayList; +import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -789,6 +790,9 @@ public List getFilesByTransaction(List partitions directory = AcidUtils.getAcidState(new Path(partition.getPath()), jobConf, validWriteIds, false, true); } + if (directory == null || directory.getBaseDirectory() == null) { + return Collections.emptyList(); + } if (!directory.getOriginalFiles().isEmpty()) { throw new Exception("Original non-ACID files in transactional tables are not supported"); } diff --git a/regression-test/data/external_table_p0/hive/test_transactional_hive.out b/regression-test/data/external_table_p0/hive/test_transactional_hive.out index e4c6a6c6d24ac5..36bd721168e224 100644 --- a/regression-test/data/external_table_p0/hive/test_transactional_hive.out +++ b/regression-test/data/external_table_p0/hive/test_transactional_hive.out @@ -9,8 +9,10 @@ A B CC --- !q03 -- -3 CC +-- !q04 -- + +-- !q05 -- +0 -- !q01 -- 1 A 20230101 @@ -31,3 +33,8 @@ F -- !q03 -- 2 BB 20230101 +-- !q04 -- + +-- !q05 -- +0 + diff --git a/regression-test/suites/external_table_p0/hive/test_transactional_hive.groovy b/regression-test/suites/external_table_p0/hive/test_transactional_hive.groovy index 6c8d4d100b310c..a34ef7adc271df 100644 --- a/regression-test/suites/external_table_p0/hive/test_transactional_hive.groovy +++ b/regression-test/suites/external_table_p0/hive/test_transactional_hive.groovy @@ -23,8 +23,11 @@ suite("test_transactional_hive", "p0,external,hive,external_docker,external_dock qt_q02 """ select value from orc_full_acid order by id; """ - qt_q03 """ - select * from orc_full_acid where value = 'CC' order by id; + qt_q04 """ + select * from orc_full_acid_empty; + """ + qt_q05 """ + select count(*) from orc_full_acid_empty; """ } @@ -38,6 +41,12 @@ suite("test_transactional_hive", "p0,external,hive,external_docker,external_dock qt_q03 """ select * from orc_full_acid_par where value = 'BB' order by id; """ + qt_q04 """ + select * from orc_full_acid_par_empty; + """ + qt_q05 """ + select count(*) from orc_full_acid_par_empty; + """ } String enabled = context.config.otherConfigs.get("enableHiveTest") if (enabled != null && enabled.equalsIgnoreCase("true")) {