diff --git a/.licenserc.yaml b/.licenserc.yaml
index ea761f044f..3f41200df2 100644
--- a/.licenserc.yaml
+++ b/.licenserc.yaml
@@ -88,7 +88,7 @@ header:
- "conf/mysql_ssl_default_certificate/client_certificate/client-cert.pem"
- "conf/mysql_ssl_default_certificate/client_certificate/client-key.pem"
- "regression-test/ssl_default_certificate/*"
- - "regression-test/pipeline/performance/conf/session_variables"
+ - "regression-test/pipeline/performance/**"
- "extension/beats/go.mod"
- "extension/beats/go.sum"
- "pytest/hdfs"
diff --git a/regression-test/pipeline/common/doris-utils.sh b/regression-test/pipeline/common/doris-utils.sh
index f90b9a077a..f2436a1139 100644
--- a/regression-test/pipeline/common/doris-utils.sh
+++ b/regression-test/pipeline/common/doris-utils.sh
@@ -244,10 +244,6 @@ function check_tpcds_result() {
check_tpch_result "$1"
}
-function check_clickbench_query_result() {
- echo "TODO"
-}
-
function check_clickbench_performance_result() {
result_file="$1"
if [[ -z "${result_file}" ]]; then return 1; fi
@@ -260,10 +256,10 @@ function check_clickbench_performance_result() {
# 单位是秒
cold_run_time_threshold=${cold_run_time_threshold:-200}
hot_run_time_threshold=${hot_run_time_threshold:-55}
- cold_run_sum=$(awk -F ',' '{sum+=$2} END {print sum}' result.csv)
+ cold_run_time=$(awk -F ',' '{sum+=$2} END {print sum}' result.csv)
hot_run_time=$(awk -F ',' '{if($3<$4){sum+=$3}else{sum+=$4}} END {print sum}' "${result_file}")
if [[ $(echo "${hot_run_time} > ${hot_run_time_threshold}" | bc) -eq 1 ]] ||
- [[ $(echo "${cold_run_sum} > ${cold_run_time_threshold}" | bc) -eq 1 ]]; then
+ [[ $(echo "${cold_run_time} > ${cold_run_time_threshold}" | bc) -eq 1 ]]; then
echo "ERROR:
cold_run_time ${cold_run_time} is great than the threshold ${cold_run_time_threshold},
or, hot_run_time ${hot_run_time} is great than the threshold ${hot_run_time_threshold}"
@@ -275,10 +271,6 @@ function check_clickbench_performance_result() {
fi
}
-function check_load_performance() {
- echo "TODO"
-}
-
get_session_variable() {
if [[ ! -d "${DORIS_HOME:-}" ]]; then return 1; fi
usage="
diff --git a/regression-test/pipeline/common/github-utils.sh b/regression-test/pipeline/common/github-utils.sh
index 687d9c589b..317667d15b 100644
--- a/regression-test/pipeline/common/github-utils.sh
+++ b/regression-test/pipeline/common/github-utils.sh
@@ -50,36 +50,67 @@ function create_an_issue_comment() {
function create_an_issue_comment_tpch() {
local ISSUE_NUMBER="$1"
- local COMMENT_BODY="$2"
+ local COMMENT_BODY_SUMMARY="$2"
+ local COMMENT_BODY_DETAIL="$3"
local machine='aliyun_ecs.c7a.8xlarge_32C64G'
COMMENT_BODY="
-TPC-H test result on machine: '${machine}', run with scripts in https://github.com/apache/doris/tree/master/tools/tpch-tools
+
+TPC-H: ${COMMENT_BODY_SUMMARY}
+
\`\`\`
-${COMMENT_BODY}
+machine: '${machine}'
+scripts: https://github.com/apache/doris/tree/master/tools/tpch-tools
+${COMMENT_BODY_DETAIL}
\`\`\`
+
"
create_an_issue_comment "${ISSUE_NUMBER}" "${COMMENT_BODY}"
}
function create_an_issue_comment_tpcds() {
local ISSUE_NUMBER="$1"
- local COMMENT_BODY="$2"
+ local COMMENT_BODY_SUMMARY="$2"
+ local COMMENT_BODY_DETAIL="$3"
local machine='aliyun_ecs.c7a.8xlarge_32C64G'
COMMENT_BODY="
-TPC-DS test result on machine: '${machine}', run with scripts in https://github.com/apache/doris/tree/master/tools/tpcds-tools
+
+TPC-DS: ${COMMENT_BODY_SUMMARY}
+
\`\`\`
-${COMMENT_BODY}
+machine: '${machine}'
+scripts: https://github.com/apache/doris/tree/master/tools/tpcds-tools
+${COMMENT_BODY_DETAIL}
\`\`\`
+
"
create_an_issue_comment "${ISSUE_NUMBER}" "${COMMENT_BODY}"
}
function create_an_issue_comment_clickbench() {
+ local ISSUE_NUMBER="$1"
+ local COMMENT_BODY_SUMMARY="$2"
+ local COMMENT_BODY_DETAIL="$3"
+ local machine='aliyun_ecs.c7a.8xlarge_32C64G'
+ COMMENT_BODY="
+
+ClickBench: ${COMMENT_BODY_SUMMARY}
+
+\`\`\`
+machine: '${machine}'
+scripts: https://github.com/apache/doris/tree/master/tools/clickbench-tools
+${COMMENT_BODY_DETAIL}
+\`\`\`
+
+"
+ create_an_issue_comment "${ISSUE_NUMBER}" "${COMMENT_BODY}"
+}
+
+function create_an_issue_comment_load() {
local ISSUE_NUMBER="$1"
local COMMENT_BODY="$2"
local machine='aliyun_ecs.c7a.8xlarge_32C64G'
COMMENT_BODY="
-ClickBench test result on machine: '${machine}', run with scripts in https://github.com/apache/doris/tree/master/tools/clickbench-tools
+Load test result on machine: '${machine}'
\`\`\`
${COMMENT_BODY}
\`\`\`
diff --git a/regression-test/pipeline/performance/clickbench/check-query-result.sh b/regression-test/pipeline/performance/clickbench/check-query-result.sh
new file mode 100755
index 0000000000..dec46e8ac6
--- /dev/null
+++ b/regression-test/pipeline/performance/clickbench/check-query-result.sh
@@ -0,0 +1,32 @@
+#!/bin/bash
+# set -x
+set +e
+
+if [[ ! -d query-result-actual ]]; then mkdir query-result-actual; fi
+
+QUERY_NUM=1
+while read -r query; do
+ echo "query${QUERY_NUM}: ${query}"
+ mysql -h"${host:-127.0.0.1}" -P"${query_port:-9030}" -uroot -D"${db_name:-clickbench}" -e"${query}" >"query-result-actual/doris-q${QUERY_NUM}.result"
+ QUERY_NUM=$((QUERY_NUM + 1))
+done /dev/null; then
+ if [[ "${i}" == 4 ]] && [[ $(sed -n '2p' "query-result-actual/doris-q${i}.result") == '2.528953029'* ]]; then
+ is_ok=true
+ else
+ is_ok=false
+ echo "ERRPR: query_${i} result is error"
+ echo "**** target result **********************************************"
+ cat "query-result-target/doris-q${i}.result"
+ echo "**** actual result **********************************************"
+ cat "query-result-actual/doris-q${i}.result"
+ echo "*****************************************************************"
+ break
+ fi
+ fi
+done
+
+if ${is_ok}; then exit 0; else exit 1; fi
diff --git a/regression-test/pipeline/performance/clickbench/conf/be_custom.conf b/regression-test/pipeline/performance/clickbench/conf/be_custom.conf
new file mode 100644
index 0000000000..07f87dcaeb
--- /dev/null
+++ b/regression-test/pipeline/performance/clickbench/conf/be_custom.conf
@@ -0,0 +1,21 @@
+priority_networks=127.0.0.1/24
+# master branch, branch_name=master
+# branch-2.0 branch, branch_name=branch20
+storage_root_path=/data/doris-storage-${branch_name}
+load_channel_memory_refresh_sleep_time_ms=1000
+soft_mem_limit_frac=1
+track_new_delete=false
+streaming_load_max_mb=102400
+doris_scanner_thread_pool_thread_num=8
+tc_enable_aggressive_memory_decommit=false
+enable_new_scan_node=false
+#mem_limit=100%
+mem_limit=90%
+#write_buffer_size=1609715200
+write_buffer_size=1209715200
+load_process_max_memory_limit_percent=100
+#load_process_soft_mem_limit_percent=80
+disable_auto_compaction=true
+disable_storage_page_cache=false
+disable_chunk_allocator=false
+enable_simdjson_reader = true
diff --git a/regression-test/pipeline/performance/clickbench/conf/fe_custom.conf b/regression-test/pipeline/performance/clickbench/conf/fe_custom.conf
new file mode 100644
index 0000000000..b3df52da7f
--- /dev/null
+++ b/regression-test/pipeline/performance/clickbench/conf/fe_custom.conf
@@ -0,0 +1,7 @@
+priority_networks=127.0.0.1/24
+# master branch, branch_name=master
+# branch-2.0 branch, branch_name=branch20
+meta_dir=/data/doris-meta-${branch_name}
+stream_load_default_timeout_second=3600
+ignore_unknown_metadata_module=true
+enable_full_auto_analyze=false
diff --git a/regression-test/pipeline/performance/clickbench/conf/opt_session_variables.sql b/regression-test/pipeline/performance/clickbench/conf/opt_session_variables.sql
new file mode 100644
index 0000000000..6392e20cca
--- /dev/null
+++ b/regression-test/pipeline/performance/clickbench/conf/opt_session_variables.sql
@@ -0,0 +1,7 @@
+set global exec_mem_limit=34359738368;
+set global parallel_fragment_exec_instance_num=16;
+set global parallel_pipeline_task_num=16;
+set global enable_single_distinct_column_opt=true;
+set global enable_function_pushdown=true;
+set global forbid_unknown_col_stats=false;
+set global runtime_filter_mode=global;
diff --git a/regression-test/pipeline/performance/clickbench/queries-sort.sql b/regression-test/pipeline/performance/clickbench/queries-sort.sql
new file mode 100644
index 0000000000..221e08b8cf
--- /dev/null
+++ b/regression-test/pipeline/performance/clickbench/queries-sort.sql
@@ -0,0 +1,43 @@
+SELECT COUNT(*) FROM hits;
+SELECT COUNT(*) FROM hits WHERE AdvEngineID <> 0;
+SELECT SUM(AdvEngineID), COUNT(*), AVG(ResolutionWidth) FROM hits;
+SELECT AVG(UserID) FROM hits;
+SELECT COUNT(DISTINCT UserID) FROM hits;
+SELECT COUNT(DISTINCT SearchPhrase) FROM hits;
+SELECT MIN(EventDate), MAX(EventDate) FROM hits;
+SELECT AdvEngineID, COUNT(*) FROM hits WHERE AdvEngineID <> 0 GROUP BY AdvEngineID ORDER BY COUNT(*) DESC;
+SELECT RegionID, COUNT(DISTINCT UserID) AS u FROM hits GROUP BY RegionID ORDER BY u DESC, RegionID LIMIT 10;
+SELECT RegionID, SUM(AdvEngineID), COUNT(*) AS c, AVG(ResolutionWidth), COUNT(DISTINCT UserID) FROM hits GROUP BY RegionID ORDER BY c DESC,RegionID, SUM(AdvEngineID),AVG(ResolutionWidth),COUNT(DISTINCT UserID) LIMIT 10;
+SELECT MobilePhoneModel, COUNT(DISTINCT UserID) AS u FROM hits WHERE MobilePhoneModel <> '' GROUP BY MobilePhoneModel ORDER BY u DESC, MobilePhoneModel LIMIT 10;
+SELECT MobilePhone, MobilePhoneModel, COUNT(DISTINCT UserID) AS u FROM hits WHERE MobilePhoneModel <> '' GROUP BY MobilePhone, MobilePhoneModel ORDER BY u DESC, MobilePhone, MobilePhoneModel LIMIT 10;
+SELECT SearchPhrase, COUNT(*) AS c FROM hits WHERE SearchPhrase <> '' GROUP BY SearchPhrase ORDER BY c DESC,SearchPhrase LIMIT 10;
+SELECT SearchPhrase, COUNT(DISTINCT UserID) AS u FROM hits WHERE SearchPhrase <> '' GROUP BY SearchPhrase ORDER BY u DESC,SearchPhrase LIMIT 10;
+SELECT SearchEngineID, SearchPhrase, COUNT(*) AS c FROM hits WHERE SearchPhrase <> '' GROUP BY SearchEngineID, SearchPhrase ORDER BY c DESC,SearchEngineID, SearchPhrase LIMIT 10;
+SELECT UserID, COUNT(*) FROM hits GROUP BY UserID ORDER BY COUNT(*) DESC,UserID LIMIT 10;
+SELECT UserID, SearchPhrase, COUNT(*) FROM hits GROUP BY UserID, SearchPhrase ORDER BY COUNT(*) DESC,UserID, SearchPhrase LIMIT 10;
+SELECT UserID, SearchPhrase, COUNT(*) FROM hits GROUP BY UserID, SearchPhrase ORDER BY COUNT(*) ASC,UserID, SearchPhrase LIMIT 10;
+SELECT UserID, extract(minute FROM EventTime) AS m, SearchPhrase, COUNT(*) FROM hits GROUP BY UserID, m, SearchPhrase ORDER BY COUNT(*) DESC,UserID, extract(minute FROM EventTime), SearchPhrase LIMIT 10;
+SELECT UserID FROM hits WHERE UserID = 435090932899640449;
+SELECT COUNT(*) FROM hits WHERE URL LIKE '%google%';
+SELECT SearchPhrase, MIN(URL), COUNT(*) AS c FROM hits WHERE URL LIKE '%google%' AND SearchPhrase <> '' GROUP BY SearchPhrase ORDER BY c DESC,SearchPhrase, MIN(URL) LIMIT 10;
+SELECT SearchPhrase, MIN(URL), MIN(Title), COUNT(*) AS c, COUNT(DISTINCT UserID) FROM hits WHERE Title LIKE '%Google%' AND URL NOT LIKE '%.google.%' AND SearchPhrase <> '' GROUP BY SearchPhrase ORDER BY c DESC,SearchPhrase, MIN(URL), MIN(Title),COUNT(DISTINCT UserID) LIMIT 10;
+SELECT WatchID,JavaEnable,Title,GoodEvent,EventTime,EventDate,CounterID,ClientIP,RegionID,UserID,CounterClass,OS,UserAgent,URL,Referer,IsRefresh,RefererCategoryID,RefererRegionID,URLCategoryID,URLRegionID,ResolutionWidth,ResolutionHeight,ResolutionDepth,FlashMajor,FlashMinor,FlashMinor2,NetMajor,NetMinor,UserAgentMajor,UserAgentMinor,CookieEnable,JavascriptEnable,IsMobile,MobilePhone,MobilePhoneModel,Params,IPNetworkID,TraficSourceID,SearchEngineID,SearchPhrase,AdvEngineID,IsArtifical,WindowClientWidth,WindowClientHeight,ClientTimeZone,ClientEventTime,SilverlightVersion1,SilverlightVersion2,SilverlightVersion3,SilverlightVersion4,PageCharset,CodeVersion,IsLink,IsDownload,IsNotBounce,FUniqID,OriginalURL,HID,IsOldCounter,IsEvent,IsParameter,DontCountHits,WithHash,HitColor,LocalEventTime,Age,Sex,Income,Interests,Robotness,RemoteIP,WindowName,OpenerName,HistoryLength,BrowserLanguage,BrowserCountry,SocialNetwork,SocialAction,HTTPError,SendTiming,DNSTiming,ConnectTiming,ResponseStartTiming,ResponseEndTiming,FetchTiming,SocialSourceNetworkID,SocialSourcePage,ParamPrice,ParamOrderID,ParamCurrency,ParamCurrencyID,OpenstatServiceName,OpenstatCampaignID,OpenstatAdID,OpenstatSourceID,UTMSource,UTMMedium,UTMCampaign,UTMContent,UTMTerm,FromTag,HasGCLID,RefererHash,URLHash,CLID FROM hits WHERE URL LIKE '%google%' ORDER BY EventTime LIMIT 10;
+SELECT SearchPhrase FROM hits WHERE SearchPhrase <> '' ORDER BY EventTime,SearchPhrase DESC LIMIT 10;
+SELECT SearchPhrase FROM hits WHERE SearchPhrase <> '' ORDER BY SearchPhrase LIMIT 10;
+SELECT SearchPhrase FROM hits WHERE SearchPhrase <> '' ORDER BY EventTime, SearchPhrase LIMIT 10;
+SELECT CounterID, AVG(length(URL)) AS l, COUNT(*) AS c FROM hits WHERE URL <> '' GROUP BY CounterID HAVING COUNT(*) > 100000 ORDER BY l DESC,CounterID,c LIMIT 25;
+SELECT REGEXP_REPLACE(Referer, '^https?://(?:www\.)?([^/]+)/.*$', '\\1') AS k, AVG(length(Referer)) AS l, COUNT(*) AS c, MIN(Referer) FROM hits WHERE Referer <> '' GROUP BY k HAVING COUNT(*) > 100000 ORDER BY l DESC,k,c LIMIT 25;
+SELECT SUM(ResolutionWidth), SUM(ResolutionWidth + 1), SUM(ResolutionWidth + 2), SUM(ResolutionWidth + 3), SUM(ResolutionWidth + 4), SUM(ResolutionWidth + 5), SUM(ResolutionWidth + 6), SUM(ResolutionWidth + 7), SUM(ResolutionWidth + 8), SUM(ResolutionWidth + 9), SUM(ResolutionWidth + 10), SUM(ResolutionWidth + 11), SUM(ResolutionWidth + 12), SUM(ResolutionWidth + 13), SUM(ResolutionWidth + 14), SUM(ResolutionWidth + 15), SUM(ResolutionWidth + 16), SUM(ResolutionWidth + 17), SUM(ResolutionWidth + 18), SUM(ResolutionWidth + 19), SUM(ResolutionWidth + 20), SUM(ResolutionWidth + 21), SUM(ResolutionWidth + 22), SUM(ResolutionWidth + 23), SUM(ResolutionWidth + 24), SUM(ResolutionWidth + 25), SUM(ResolutionWidth + 26), SUM(ResolutionWidth + 27), SUM(ResolutionWidth + 28), SUM(ResolutionWidth + 29), SUM(ResolutionWidth + 30), SUM(ResolutionWidth + 31), SUM(ResolutionWidth + 32), SUM(ResolutionWidth + 33), SUM(ResolutionWidth + 34), SUM(ResolutionWidth + 35), SUM(ResolutionWidth + 36), SUM(ResolutionWidth + 37), SUM(ResolutionWidth + 38), SUM(ResolutionWidth + 39), SUM(ResolutionWidth + 40), SUM(ResolutionWidth + 41), SUM(ResolutionWidth + 42), SUM(ResolutionWidth + 43), SUM(ResolutionWidth + 44), SUM(ResolutionWidth + 45), SUM(ResolutionWidth + 46), SUM(ResolutionWidth + 47), SUM(ResolutionWidth + 48), SUM(ResolutionWidth + 49), SUM(ResolutionWidth + 50), SUM(ResolutionWidth + 51), SUM(ResolutionWidth + 52), SUM(ResolutionWidth + 53), SUM(ResolutionWidth + 54), SUM(ResolutionWidth + 55), SUM(ResolutionWidth + 56), SUM(ResolutionWidth + 57), SUM(ResolutionWidth + 58), SUM(ResolutionWidth + 59), SUM(ResolutionWidth + 60), SUM(ResolutionWidth + 61), SUM(ResolutionWidth + 62), SUM(ResolutionWidth + 63), SUM(ResolutionWidth + 64), SUM(ResolutionWidth + 65), SUM(ResolutionWidth + 66), SUM(ResolutionWidth + 67), SUM(ResolutionWidth + 68), SUM(ResolutionWidth + 69), SUM(ResolutionWidth + 70), SUM(ResolutionWidth + 71), SUM(ResolutionWidth + 72), SUM(ResolutionWidth + 73), SUM(ResolutionWidth + 74), SUM(ResolutionWidth + 75), SUM(ResolutionWidth + 76), SUM(ResolutionWidth + 77), SUM(ResolutionWidth + 78), SUM(ResolutionWidth + 79), SUM(ResolutionWidth + 80), SUM(ResolutionWidth + 81), SUM(ResolutionWidth + 82), SUM(ResolutionWidth + 83), SUM(ResolutionWidth + 84), SUM(ResolutionWidth + 85), SUM(ResolutionWidth + 86), SUM(ResolutionWidth + 87), SUM(ResolutionWidth + 88), SUM(ResolutionWidth + 89) FROM hits;
+SELECT SearchEngineID, ClientIP, COUNT(*) AS c, SUM(IsRefresh), AVG(ResolutionWidth) FROM hits WHERE SearchPhrase <> '' GROUP BY SearchEngineID, ClientIP ORDER BY c DESC,SearchEngineID, ClientIP,SUM(IsRefresh), AVG(ResolutionWidth) LIMIT 10;
+SELECT WatchID, ClientIP, COUNT(*) AS c, SUM(IsRefresh), AVG(ResolutionWidth) FROM hits WHERE SearchPhrase <> '' GROUP BY WatchID, ClientIP ORDER BY c DESC,WatchID, ClientIP,SUM(IsRefresh), AVG(ResolutionWidth) LIMIT 10;
+SELECT WatchID, ClientIP, COUNT(*) AS c, SUM(IsRefresh), AVG(ResolutionWidth) FROM hits GROUP BY WatchID, ClientIP ORDER BY c DESC,WatchID, ClientIP,SUM(IsRefresh), AVG(ResolutionWidth) LIMIT 10;
+SELECT URL, COUNT(*) AS c FROM hits GROUP BY URL ORDER BY c DESC,URL LIMIT 10;
+SELECT 1, URL, COUNT(*) AS c FROM hits GROUP BY 1, URL ORDER BY c DESC,URL LIMIT 10;
+SELECT ClientIP, ClientIP - 1, ClientIP - 2, ClientIP - 3, COUNT(*) AS c FROM hits GROUP BY ClientIP, ClientIP - 1, ClientIP - 2, ClientIP - 3 ORDER BY c DESC LIMIT 10;
+SELECT URL, COUNT(*) AS PageViews FROM hits WHERE CounterID = 62 AND EventDate >= '2013-07-01' AND EventDate <= '2013-07-31' AND DontCountHits = 0 AND IsRefresh = 0 AND URL <> '' GROUP BY URL ORDER BY PageViews DESC,URL LIMIT 10;
+SELECT Title, COUNT(*) AS PageViews FROM hits WHERE CounterID = 62 AND EventDate >= '2013-07-01' AND EventDate <= '2013-07-31' AND DontCountHits = 0 AND IsRefresh = 0 AND Title <> '' GROUP BY Title ORDER BY PageViews DESC,Title LIMIT 10;
+SELECT URL, COUNT(*) AS PageViews FROM hits WHERE CounterID = 62 AND EventDate >= '2013-07-01' AND EventDate <= '2013-07-31' AND IsRefresh = 0 AND IsLink <> 0 AND IsDownload = 0 GROUP BY URL ORDER BY PageViews DESC,URL LIMIT 10 OFFSET 1000;
+SELECT TraficSourceID, SearchEngineID, AdvEngineID, CASE WHEN (SearchEngineID = 0 AND AdvEngineID = 0) THEN Referer ELSE '' END AS Src, URL AS Dst, COUNT(*) AS PageViews FROM hits WHERE CounterID = 62 AND EventDate >= '2013-07-01' AND EventDate <= '2013-07-31' AND IsRefresh = 0 GROUP BY TraficSourceID, SearchEngineID, AdvEngineID, Src, Dst ORDER BY PageViews DESC,TraficSourceID, SearchEngineID, AdvEngineID, Src, Dst LIMIT 10 OFFSET 1000;
+SELECT URLHash, EventDate, COUNT(*) AS PageViews FROM hits WHERE CounterID = 62 AND EventDate >= '2013-07-01' AND EventDate <= '2013-07-31' AND IsRefresh = 0 AND TraficSourceID IN (-1, 6) AND RefererHash = 3594120000172545465 GROUP BY URLHash, EventDate ORDER BY PageViews DESC,URLHash, EventDate LIMIT 10 OFFSET 100;
+SELECT WindowClientWidth, WindowClientHeight, COUNT(*) AS PageViews FROM hits WHERE CounterID = 62 AND EventDate >= '2013-07-01' AND EventDate <= '2013-07-31' AND IsRefresh = 0 AND DontCountHits = 0 AND URLHash = 2868770270353813622 GROUP BY WindowClientWidth, WindowClientHeight ORDER BY PageViews DESC,WindowClientWidth, WindowClientHeight LIMIT 10 OFFSET 10000;
+SELECT DATE_FORMAT(EventTime, '%Y-%m-%d %H:%i:00') AS M, COUNT(*) AS PageViews FROM hits WHERE CounterID = 62 AND EventDate >= '2013-07-14' AND EventDate <= '2013-07-15' AND IsRefresh = 0 AND DontCountHits = 0 GROUP BY DATE_FORMAT(EventTime, '%Y-%m-%d %H:%i:00') ORDER BY DATE_FORMAT(EventTime, '%Y-%m-%d %H:%i:00'),PageViews LIMIT 10 OFFSET 1000;
diff --git a/regression-test/pipeline/performance/clickbench/query-result-target/doris-q1.result b/regression-test/pipeline/performance/clickbench/query-result-target/doris-q1.result
new file mode 100644
index 0000000000..1891f04fe0
--- /dev/null
+++ b/regression-test/pipeline/performance/clickbench/query-result-target/doris-q1.result
@@ -0,0 +1,2 @@
+count(*)
+99997497
diff --git a/regression-test/pipeline/performance/clickbench/query-result-target/doris-q10.result b/regression-test/pipeline/performance/clickbench/query-result-target/doris-q10.result
new file mode 100644
index 0000000000..ce94e92746
--- /dev/null
+++ b/regression-test/pipeline/performance/clickbench/query-result-target/doris-q10.result
@@ -0,0 +1,11 @@
+RegionID sum(`AdvEngineID`) c avg(`ResolutionWidth`) count(DISTINCT `UserID`)
+229 2077656 18295832 1506.0852431307851 2845673
+2 441662 6687587 1479.8386542111527 1081016
+208 285925 4261812 1285.2593246722286 831676
+169 100887 3320229 1465.9073732564832 604583
+32 81498 1843518 1538.0376568061718 216010
+34 161779 1792369 1548.360152401654 299479
+184 55526 1755192 1506.8082967561384 322661
+42 108820 1542717 1587.1085208758313 243181
+107 120470 1516690 1548.6028970982863 272448
+51 98212 1435578 1579.8860354505293 211505
diff --git a/regression-test/pipeline/performance/clickbench/query-result-target/doris-q11.result b/regression-test/pipeline/performance/clickbench/query-result-target/doris-q11.result
new file mode 100644
index 0000000000..6d39c05e96
--- /dev/null
+++ b/regression-test/pipeline/performance/clickbench/query-result-target/doris-q11.result
@@ -0,0 +1,11 @@
+MobilePhoneModel u
+iPad 1090347
+iPhone 45758
+A500 16046
+N8-00 5565
+iPho 3300
+ONE TOUCH 6030A 2759
+GT-P7300B 1907
+3110000 1871
+GT-I9500 1598
+eagle75 1492
diff --git a/regression-test/pipeline/performance/clickbench/query-result-target/doris-q12.result b/regression-test/pipeline/performance/clickbench/query-result-target/doris-q12.result
new file mode 100644
index 0000000000..727e1a4329
--- /dev/null
+++ b/regression-test/pipeline/performance/clickbench/query-result-target/doris-q12.result
@@ -0,0 +1,11 @@
+MobilePhone MobilePhoneModel u
+1 iPad 931038
+5 iPad 48385
+6 iPad 29710
+7 iPad 28391
+118 A500 16005
+6 iPhone 14516
+26 iPhone 13566
+10 iPad 11433
+32 iPad 9503
+13 iPad 9417
diff --git a/regression-test/pipeline/performance/clickbench/query-result-target/doris-q13.result b/regression-test/pipeline/performance/clickbench/query-result-target/doris-q13.result
new file mode 100644
index 0000000000..7d4cb5d5a4
--- /dev/null
+++ b/regression-test/pipeline/performance/clickbench/query-result-target/doris-q13.result
@@ -0,0 +1,11 @@
+SearchPhrase c
+карелки 70263
+албатрутдин 34675
+смотреть онлайн 24580
+смотреть онлайн бесплатно 21647
+смотреть 19707
+мангу в зарабей грама 19195
+дружке помещение 17284
+galaxy table 16746
+экзоидные 16620
+сколько мытищи 12317
diff --git a/regression-test/pipeline/performance/clickbench/query-result-target/doris-q14.result b/regression-test/pipeline/performance/clickbench/query-result-target/doris-q14.result
new file mode 100644
index 0000000000..0cd4e5f4e0
--- /dev/null
+++ b/regression-test/pipeline/performance/clickbench/query-result-target/doris-q14.result
@@ -0,0 +1,11 @@
+SearchPhrase u
+карелки 23673
+смотреть онлайн 19747
+албатрутдин 18394
+смотреть онлайн бесплатно 17553
+смотреть 14603
+экзоидные 14529
+мангу в зарабей грама 14198
+сколько мытищи 9007
+дружке помещение 8792
+комбинирование смотреть 7572
diff --git a/regression-test/pipeline/performance/clickbench/query-result-target/doris-q15.result b/regression-test/pipeline/performance/clickbench/query-result-target/doris-q15.result
new file mode 100644
index 0000000000..eca77cb920
--- /dev/null
+++ b/regression-test/pipeline/performance/clickbench/query-result-target/doris-q15.result
@@ -0,0 +1,11 @@
+SearchEngineID SearchPhrase c
+2 карелки 46258
+2 мангу в зарабей грама 18871
+2 смотреть онлайн 16905
+3 албатрутдин 16748
+2 смотреть онлайн бесплатно 14909
+2 албатрутдин 13716
+2 экзоидные 13414
+2 смотреть 13108
+3 карелки 12815
+2 дружке помещение 11946
diff --git a/regression-test/pipeline/performance/clickbench/query-result-target/doris-q16.result b/regression-test/pipeline/performance/clickbench/query-result-target/doris-q16.result
new file mode 100644
index 0000000000..686f5e81aa
--- /dev/null
+++ b/regression-test/pipeline/performance/clickbench/query-result-target/doris-q16.result
@@ -0,0 +1,11 @@
+UserID count(*)
+1313338681122956954 29097
+1907779576417363396 25333
+2305303682471783379 10597
+7982623143712728547 7584
+6018350421959114808 6678
+7280399273658728997 6411
+1090981537032625727 6197
+5730251990344211405 6019
+835157184735512989 5211
+770542365400669095 4906
diff --git a/regression-test/pipeline/performance/clickbench/query-result-target/doris-q17.result b/regression-test/pipeline/performance/clickbench/query-result-target/doris-q17.result
new file mode 100644
index 0000000000..65c303deab
--- /dev/null
+++ b/regression-test/pipeline/performance/clickbench/query-result-target/doris-q17.result
@@ -0,0 +1,11 @@
+UserID SearchPhrase count(*)
+1313338681122956954 29097
+1907779576417363396 25333
+2305303682471783379 10597
+7982623143712728547 6669
+7280399273658728997 6408
+1090981537032625727 6196
+5730251990344211405 6019
+6018350421959114808 5990
+835157184735512989 5209
+770542365400669095 4906
diff --git a/regression-test/pipeline/performance/clickbench/query-result-target/doris-q18.result b/regression-test/pipeline/performance/clickbench/query-result-target/doris-q18.result
new file mode 100644
index 0000000000..82ffbe4d38
--- /dev/null
+++ b/regression-test/pipeline/performance/clickbench/query-result-target/doris-q18.result
@@ -0,0 +1,11 @@
+UserID SearchPhrase count(*)
+-9223360918607336854 1
+-9223360918607336854 мультики в театр по полтава психолодильное животный дома 1
+-9223346024853429862 1
+-9223344277659414581 1
+-9223308501352264398 фэс серии охорис интернет водительсинка 1.5 гостин 2 серии форту в красноярск 1
+-9223274299909755627 люкс ижевском 1
+-9223260604755921098 бэу бесплатно 1
+-9223260604755921098 лифт выжигания белокуринфо 1
+-9223260604755921098 лифтов большие кедро заполиров 1
+-9223260604755921098 марина газоприместации 1
diff --git a/regression-test/pipeline/performance/clickbench/query-result-target/doris-q19.result b/regression-test/pipeline/performance/clickbench/query-result-target/doris-q19.result
new file mode 100644
index 0000000000..bf9c244d9e
--- /dev/null
+++ b/regression-test/pipeline/performance/clickbench/query-result-target/doris-q19.result
@@ -0,0 +1,11 @@
+UserID m SearchPhrase count(*)
+1313338681122956954 31 589
+1313338681122956954 28 578
+1313338681122956954 29 572
+1313338681122956954 33 567
+1313338681122956954 27 557
+1313338681122956954 32 554
+1313338681122956954 30 552
+1313338681122956954 34 546
+1313338681122956954 26 540
+1313338681122956954 10 539
diff --git a/regression-test/pipeline/performance/clickbench/query-result-target/doris-q2.result b/regression-test/pipeline/performance/clickbench/query-result-target/doris-q2.result
new file mode 100644
index 0000000000..5823f4396a
--- /dev/null
+++ b/regression-test/pipeline/performance/clickbench/query-result-target/doris-q2.result
@@ -0,0 +1,2 @@
+count(*)
+630500
diff --git a/regression-test/pipeline/performance/clickbench/query-result-target/doris-q20.result b/regression-test/pipeline/performance/clickbench/query-result-target/doris-q20.result
new file mode 100644
index 0000000000..eeb65cd730
--- /dev/null
+++ b/regression-test/pipeline/performance/clickbench/query-result-target/doris-q20.result
@@ -0,0 +1,5 @@
+UserID
+435090932899640449
+435090932899640449
+435090932899640449
+435090932899640449
diff --git a/regression-test/pipeline/performance/clickbench/query-result-target/doris-q21.result b/regression-test/pipeline/performance/clickbench/query-result-target/doris-q21.result
new file mode 100644
index 0000000000..fba96700a5
--- /dev/null
+++ b/regression-test/pipeline/performance/clickbench/query-result-target/doris-q21.result
@@ -0,0 +1,2 @@
+count(*)
+15911
diff --git a/regression-test/pipeline/performance/clickbench/query-result-target/doris-q22.result b/regression-test/pipeline/performance/clickbench/query-result-target/doris-q22.result
new file mode 100644
index 0000000000..7a1f0206af
--- /dev/null
+++ b/regression-test/pipeline/performance/clickbench/query-result-target/doris-q22.result
@@ -0,0 +1,11 @@
+SearchPhrase min(`URL`) c
+прокур горбуши http://smeshariki.ru/googleTBR%26ad 60
+римском качественны for cry http:%2F%2Fwwww.googlead&aktional 24
+стоит похуден http://smeshariki.ru/index.ua/doc/22229/googlead%26aktion=2&input_bdsmpeople.ru/real-estate=0&state=2013070519381 23
+испанч боб новости дейская http://smeshariki.ru/recipes/show/6840872&trafkey=6d0fc12c54059/loukhaAUXI&where=all&filter/Mitsubishi/google 21
+прокур готовки видеоэндоменя http://smeshariki.ru/googleTBR%26ad 14
+прокур гипоаллеры http://smeshariki.ru/googleTBR%26ad 11
+камедицинск автомобильних условодки на в крем http://video.yandex.php?com=google.ru/arts/searchAutoSearch 9
+универ 11.6/1366x768/4096mb ddressary of thing http://smeshariki.ru/index.ua/syllanet.ru/business/hotels.turizm.ru/igooglead%26ar_sliceid%3D1216629/0/&&puid2=15&lo=http 8
+вспомню о названы монстэр http://tienskaia-moda-zhienskaia-obl.irr.ru/ch/google-c-38208 7
+купить трудовані резюме мертный дина кабинский лежит заднее устан http://video.yandex.php?com=google.ru/arts/searchAutoSearch 7
diff --git a/regression-test/pipeline/performance/clickbench/query-result-target/doris-q23.result b/regression-test/pipeline/performance/clickbench/query-result-target/doris-q23.result
new file mode 100644
index 0000000000..93f79b1729
--- /dev/null
+++ b/regression-test/pipeline/performance/clickbench/query-result-target/doris-q23.result
@@ -0,0 +1,11 @@
+SearchPhrase min(`URL`) min(`Title`) c count(DISTINCT `UserID`)
+винки медведь смотреть фильмы 2013 смотреть http://smeshariki.ru/a-folder-4/#page-3.2.1; WOW64; Edition=1&input_action=2011/page_type=profiles/88436/currency видеорегионалу Google 801 600
+секретарь оверка все серии порт http://kinopoisk.ru/a-albums_scroll_to_auto_id=227&option/vacancies/liver.ru/cgi-bin/click.cgi%3Fsid%3D158197%26ad @дневники Google Player 1.2.5 л, 214 182
+винки медведь смотреть фильмы чеческия http://smeshariki.ru/a-folder-4/#page-3.2.1; WOW64; Edition=1&input_action=2013-topy%2Fproduct_price_ot=&price видеорегионалу Gooddock hotmail Google на толстовая комфорталенны Berlingo по давлений 138 121
+игры для дер блич http://kinopoisk.ru/a-albums_scroll_to_auto_id=363064472354&lb_id=1559843 Легко на купить автозаврам телась Google Anaissage_599-61 «Оверлок колепный рецепт: Твери 114 106
+винки медведь смотреть объятный ветерин http://smeshariki.ru/a-folder-4/#page-3.2.1; WOW64; Edition=1&input_age17/#page/Jeep,Lexus/rodimomu_vsegoddelki.ru/carbuznyj-90472-0-014031818%26height%3D901634571 видеорегионалу Google - Доставщиков и актрическая 102 85
+кино 2009) смотреть онлайн бессмерти мк в россипед http://domchelove.ru/#!/search/page Далее о коллекции в GIMI LANCIA 0K3Y318104 продать Google, go-go в регистрии — Мой Крым 90 70
+винки медведь смотреть http://smeshariki.ru/a-folder-4/#page-3.2.1; WOW64; Edition=1&input_active/?do=showCampState/renatzija-na-brietielkakh%2F&ti=С видеорегионалу Google - модного языке - Пульс 87 56
+тайны избавитель в владимира для университет масляться http://smeshariki.ru/a-folder=cars/article=199980150195,0.107736/detail.aspx#location=search?text=asc&maxyear=2001216629%26sob%3D3159&input_who1=1&cid=577&oki=1&op_product_id=25&pvno=2&evlg=VC,2;VL Амитин обувь - Яндекс.Видео+текст песен Google.com 64 56
+коптимиквиды юриста с роуз рая https://produkty%2Fpulove.ru/booklyattion-war-sinij-9182/women Легко на участные участников., Цены - Стильная парнем. Саганрог догадения : Турции, купить у 10 дне кольные машинки не представки - Новая с избиение спродажа: котята 2014 г.в. Цена: 47500-10ECO060 – -------- купить квартиру Оренбург (России Galantrax Flamiliada Google, Nо 18 фотоконверк Супер Кардиган 45 12
+винки медведь смотрейлера начальник http://smeshariki.ru/a-folder-4/#page-3.2.1; WOW64; Edition=1&input_active/ видеорегионалу Google - модных Челябинск 40 35
diff --git a/regression-test/pipeline/performance/clickbench/query-result-target/doris-q24.result b/regression-test/pipeline/performance/clickbench/query-result-target/doris-q24.result
new file mode 100644
index 0000000000..4c7ffb0d1a
--- /dev/null
+++ b/regression-test/pipeline/performance/clickbench/query-result-target/doris-q24.result
@@ -0,0 +1,11 @@
+WatchID JavaEnable Title GoodEvent EventTime EventDate CounterID ClientIP RegionID UserID CounterClass OS UserAgent URL Referer IsRefresh RefererCategoryID RefererRegionID URLCategoryID URLRegionID ResolutionWidth ResolutionHeight ResolutionDepth FlashMajor FlashMinor FlashMinor2 NetMajor NetMinor UserAgentMajor UserAgentMinor CookieEnable JavascriptEnable IsMobile MobilePhone MobilePhoneModel Params IPNetworkID TraficSourceID SearchEngineID SearchPhrase AdvEngineID IsArtifical WindowClientWidth WindowClientHeight ClientTimeZone ClientEventTime SilverlightVersion1 SilverlightVersion2 SilverlightVersion3 SilverlightVersion4 PageCharset CodeVersion IsLink IsDownload IsNotBounce FUniqID OriginalURL HID IsOldCounter IsEvent IsParameter DontCountHits WithHash HitColor LocalEventTime Age Sex Income Interests Robotness RemoteIP WindowName OpenerName HistoryLength BrowserLanguage BrowserCountry SocialNetwork SocialAction HTTPError SendTiming DNSTiming ConnectTiming ResponseStartTiming ResponseEndTiming FetchTiming SocialSourceNetworkID SocialSourcePage ParamPrice ParamOrderID ParamCurrency ParamCurrencyID OpenstatServiceName OpenstatCampaignID OpenstatAdID OpenstatSourceID UTMSource UTMMedium UTMCampaign UTMContent UTMTerm FromTag HasGCLID RefererHash URLHash CLID
+7675678523794456216 1 Glavnaya gorand. Цветные объявлений районе, вером 1 2013-07-01 20:01:09 2013-07-02 64469 1840073959 2 3714843517822510735 0 44 5 http://e96.ru/search/page.googleTBR%26ad%3D0%26rnd%3D158197%26anbietersburg http://bdsmpeople.ru/obrazom_position/?page 0 13593 158 13606 216 1638 1658 22 15 7 700 0 0 22 nA 1 1 0 0 4005373 -1 0 0 0 1052 775 135 2013-07-02 10:20:22 0 0 0 0 windows 1601 0 0 0 0 213893614 0 0 0 0 0 6 2013-07-02 11:58:11 0 0 0 0 0 1412515749 63522 -1 12 S0 �\\f 0 0 0 0 445 1234 0 0 0 NH 0 0 5972490271588207794 1369713899219085694 0
+6147260061318473746 1 Glavnaya gorand. Цветные объявлений районе, вером 1 2013-07-01 20:01:29 2013-07-02 64469 1840073959 2 3714843517822510735 0 44 5 http://e96.ru/search/page.googleTBR%26ad%3D0%26rnd%3D158197%26anbietersburg http://bdsmpeople.ru/obrazom_position/?page 0 13593 158 13606 216 1638 1658 22 15 7 700 0 0 22 D� 1 1 0 0 4005373 -1 0 0 0 1052 775 135 2013-07-02 10:20:42 0 0 0 0 windows 1601 0 0 0 0 810892658 0 0 0 0 0 6 2013-07-02 11:58:25 0 0 0 0 0 1412515749 63522 -1 13 S0 �\\f 0 0 0 0 0 16 0 0 0 NH 0 0 5972490271588207794 1369713899219085694 0
+5972689683963797854 1 Glavnaya gorand. Цветные объявлений районе, вером 1 2013-07-01 20:02:11 2013-07-02 64469 1840073959 2 3714843517822510735 0 44 5 http://e96.ru/search/page.googleTBR%26ad%3D0%26rnd%3D158197%26anbietersburg http://bdsmpeople.ru/obrazom_position/?page 0 13593 158 13606 216 1638 1658 22 15 7 700 0 0 22 D� 1 1 0 0 4005373 -1 0 0 0 1052 775 135 2013-07-02 10:21:16 0 0 0 0 windows 1601 0 0 0 0 47015096 0 0 0 0 0 6 2013-07-02 11:58:50 0 0 0 0 0 1412515749 63522 -1 13 S0 h1 0 0 0 0 0 0 0 0 0 NH 0 0 5972490271588207794 1369713899219085694 0
+8008688361303225116 1 Скачать онлайн играй! - Туризма - Крымский тренчкоты в интернет магазин Wildberries.ru (Работа - IRR.ru - модных словариумных 1 2013-07-01 20:12:01 2013-07-02 63217 1975817788 229 804133623150786791 1 44 7 http://bjdswaps.google-photo http://loveche.html?ctid 0 12409 20 10093 22 1749 867 23 15 3 700.224 0 0 15 D� 1 1 0 0 3056753 -1 0 0 0 1608 662 135 2013-07-02 06:19:55 4 1 16561 0 windows 1 0 0 0 5347008031302181363 766531830 0 0 0 0 0 5 2013-07-02 12:00:25 31 1 3 11237 31 1870660671 -1 -1 -1 E3 _i 0 0 0 0 0 0 0 0 0 NH 0 0 -2736470446903004689 7116991598850737408 0
+7436461208655480623 1 Компании Вино в хорошие 1 2013-07-01 20:32:24 2013-07-02 35534 1741555497 39 7082047337377160280 0 44 5 http://rsdn.ru/catalog/cifrovye-advertisement=little&category=22&input_bdsmpeople.ru/index,google.ru/news/39826 http://kalina?block/?inst_the_book.php?cPath=40_57470493958402/ 0 10634 20 0 0 1996 1781 37 15 7 700 0 0 22 D� 1 1 0 0 808950 5 0 0 0 1261 1017 433 2013-07-02 19:03:12 4 1 16561 0 windows-1251;charset 1601 1 0 0 6804199628189316872 626511463 0 0 0 1 0 5 2013-07-02 02:35:42 31 2 3 694 57 1448806868 -1 -1 -1 E3 _i 0 0 0 3 345 147 239 0 0 NH 0 0 8931346360692564721 1971436513446935197 0
+5564518777317455184 0 «set» в пробег аппах и обслуживатизиров 1 2013-07-01 20:44:29 2013-07-02 5822 1920787234 32 3712346975274085073 1 2 3 http://auto_gruppy/christikha/hotel=-1&trafkey=605&from=&power_name=Платья&produkty%2Furl.google.ru/index http://rmnt.ru/cars/passenger/hellardous/42/~37/?suggest&id=3869551753&custom=0&undefined/undefined/under=28036,5;362;108;16762643539 0 8563 21482 9822 18528 1638 1658 23 15 7 700 0 0 16 D� 1 1 0 0 207348 -1 0 0 0 1509 733 135 2013-07-02 07:33:12 4 1 15738 0 windows-1251;charset 1 0 0 0 8007561756096276896 1034507462 0 0 0 0 0 5 2013-07-02 10:03:56 0 0 0 0 0 2016848722 -1 -1 -1 S0 h1 0 0 0 0 0 0 0 0 0 NH 0 0 7820066807630413322 -3258566084785303139 0
+7381524648140977766 1 Ploshchad\\' stolitsi zwy 110911923, Г официальная Прессы и Огонек 1 2013-07-01 21:01:46 2013-07-02 63217 1638850281 59 1564939829982760596 1 44 5 http://bjdleaksbrand=bpc bonprix%2F12.02&he=1024&location=pm;f=inbox;pmsg_1733/page.google http://loveplanet.ru/url?sa=t&rct 0 12409 20 10093 22 1996 1666 37 15 7 700 0 0 22 D� 1 1 0 0 2059788 -1 0 0 0 1261 1206 433 2013-07-02 10:04:38 0 0 0 0 windows 1 0 0 0 0 827020970 0 0 0 0 0 5 2013-07-02 18:53:56 0 0 0 0 0 2001459352 -1 -1 -1 S0 �\\f 0 0 0 0 0 0 0 0 0 NH 0 0 1384301141639030267 9047048983006699504 0
+8614832219462424183 1 Модель для сумки - регеш (Россия) 1 2013-07-01 21:19:23 2013-07-02 3035 2022088895 38 2590751384199385434 1 2 88 http://smeshariki.ru/googleTBR%26ar_ntype=citykurortmag http://holodilnik.ru/GameMain.aspx?color=0&choos&source=web&cd 0 10271 158 13384 216 1917 879 37 15 7 700 0 0 1 D� 1 1 0 0 3991944 -1 0 0 0 746 464 322 2013-07-02 08:44:30 0 0 0 0 windows-1251;charset 1 0 0 0 7607749204513951316 427646581 0 0 0 0 0 5 2013-07-01 23:19:17 50 2 3 0 30 1146019198 -1 -1 -1 S0 �\\f 0 0 0 0 0 0 0 0 0 NH 0 0 1157471009075867478 1000799766482180932 0
+7168314068394418899 1 по полиция +опытовой рецензии, 1 2013-07-01 21:22:40 2013-07-02 35534 -1420082055 11579 4822773326251181180 0 2 7 http:%2F%2Fsapozhki-advertime-2/#page.google/dodge http://saint-peters-total=меньше 100007&text=b.akhua_deckaya-look/time-2/#page=3&oprnd=6817922197946&ei=JtHTUYWRCqXA&bvm=bv.49784469,d.ZWU&cad=rjt&fu=0&type_id=172&msid=1&marka=88&text=krasnaia-moda 0 14550 952 8565 375 1304 978 37 15 4 700.224 2 7 13 D� 1 1 0 0 2675432 3 3 dave kino 2013 года в ростопримеча 0 0 1972 778 135 2013-07-01 21:05:07 4 1 16561 0 windows 1601 0 0 0 6494516778257365839 393719418 0 0 0 0 0 5 2013-07-02 16:28:10 31 2 2 14851 1 -1016483843 61823 -1 1 S0 �\\f 0 0 0 0 0 0 0 0 0 NH 0 0 -4470345086215748575 -5322637665780806659 0
+8235569889353442646 1 1 2013-07-01 21:22:53 2013-07-02 35534 -1420082055 11579 4822773326251181180 0 2 7 http:%2F%2Fsapozhki-advertime-2/#page.google/dodge 0 0 0 8565 375 1304 978 37 15 4 700.224 2 7 13 D� 1 1 0 0 2675432 0 0 0 1 1972 778 135 2013-07-01 21:05:22 4 1 16561 0 windows 1601 0 0 1 6494516778257365839 393719418 0 0 0 1 0 5 2013-07-02 16:28:24 31 2 2 14851 1 -1016483843 61823 -1 2 S0 �\\f 0 318 0 0 0 0 0 0 0 NH 0 0 -296158784638538920 -5322637665780806659 0
diff --git a/regression-test/pipeline/performance/clickbench/query-result-target/doris-q25.result b/regression-test/pipeline/performance/clickbench/query-result-target/doris-q25.result
new file mode 100644
index 0000000000..89b52be5e8
--- /dev/null
+++ b/regression-test/pipeline/performance/clickbench/query-result-target/doris-q25.result
@@ -0,0 +1,11 @@
+SearchPhrase
+фильм небольшой бизнеса североятно
+симптомы регистратов
+ночно китая женщины
+galaxy s4 zoom фильм
+слон.руб., д. а.л. конфигурды по оргатства мультет
+скачать читалию в духовке
+расписание мультиварка для
+отдыха чем прокат
+компьютерапии серия нарий
+брита ганам котлы на шерлок
diff --git a/regression-test/pipeline/performance/clickbench/query-result-target/doris-q26.result b/regression-test/pipeline/performance/clickbench/query-result-target/doris-q26.result
new file mode 100644
index 0000000000..e30ee09f4c
--- /dev/null
+++ b/regression-test/pipeline/performance/clickbench/query-result-target/doris-q26.result
@@ -0,0 +1,11 @@
+SearchPhrase
+ береж
+ за русский стил видео какой
+ завод тандалищные прода
+ заочное по земли в обрезни и метро
+ заочное сад цены нарощения музыка визу
+ зве
+ земные огурцы раб
+ золотой сайт samsung
+ прав
+ светы женске 2 сезон
diff --git a/regression-test/pipeline/performance/clickbench/query-result-target/doris-q27.result b/regression-test/pipeline/performance/clickbench/query-result-target/doris-q27.result
new file mode 100644
index 0000000000..12c4e72e9c
--- /dev/null
+++ b/regression-test/pipeline/performance/clickbench/query-result-target/doris-q27.result
@@ -0,0 +1,11 @@
+SearchPhrase
+galaxy s4 zoom фильм
+ночно китая женщины
+симптомы регистратов
+фильм небольшой бизнеса североятно
+авом констеть ребенка краево
+анапа оперевянные волшебную
+брита ганам котлы на шерлок
+компьютерапии серия нарий
+отдыха чем прокат
+расписание мультиварка для
diff --git a/regression-test/pipeline/performance/clickbench/query-result-target/doris-q28.result b/regression-test/pipeline/performance/clickbench/query-result-target/doris-q28.result
new file mode 100644
index 0000000000..80350d269e
--- /dev/null
+++ b/regression-test/pipeline/performance/clickbench/query-result-target/doris-q28.result
@@ -0,0 +1,26 @@
+CounterID l c
+233773 469.15431297456672 2938865
+245438 271.78534028284895 2510103
+122612 238.63990921114592 3574007
+234004 204.27835414397049 238660
+1634 197.8320354918649 323229
+786 186.75131919553962 120528
+114157 142.91515101105318 216408
+515 126.22661275500828 146907
+256004 125.3675852481615 858171
+95427 120.2673587920044 374306
+199550 109.81342052808459 7115413
+220992 105.85529726210743 494614
+196239 98.348608338370056 163797
+62 93.156611799769692 738150
+96948 92.742474620859241 396093
+188878 91.982019115507157 311998
+249603 91.880066486598793 120325
+3922 87.836801132956708 8527069
+191697 86.9569081691587 124664
+97467 84.294081324612364 131178
+186300 83.971374138539 802561
+146891 77.774166261899339 605286
+38 76.438409122240387 507770
+230962 76.303670304864 169223
+77639 75.384984308614321 253961
diff --git a/regression-test/pipeline/performance/clickbench/query-result-target/doris-q29.result b/regression-test/pipeline/performance/clickbench/query-result-target/doris-q29.result
new file mode 100644
index 0000000000..1b8b612d7d
--- /dev/null
+++ b/regression-test/pipeline/performance/clickbench/query-result-target/doris-q29.result
@@ -0,0 +1,26 @@
+k l c MIN(Referer)
+svpressa.ru 307.97526863099216 242526 http://svpressa.ru/
+msuzie-showforumdisplay 263.32192343919291 183671 http://msuzie-showforumdisplay/63/~2/?name=&cost_neu%3D400%26retpath=default777TWCWkI9lalUwTXpJMU1q
+saint-peters-total=меньше 80 242.52264612008778 200520 http://saint-peters-total=меньше 80/cash/station=search&input_age1=&int[2274/trashbox.ru/details&cad=rjt&fu=0&input_who1=2&input_who1=2&input_city-4400047.html?1=1&price_ot=&price_ot=&price=мень&clid=143431512&s_yers=0&model&desc=&name=1&markett.ru%2Frenazheltyj-95692465&text=поздравстраницу&clid=4405404/menu_29.html&ei=UIX1UZTFNJTI0ci8guSn3tW.pl?cmd=showthreadreplies=978-4121-469171&history47/11/?from=&district
+domics 212.92562880641779 326094 http://domics/825179.11931861234499792
+e96.ru 210.08849973411719 1019246 http://e96.ru/%3Ffrom]=&input_act[count_num=0&dff=arian-carrina1201517&cad=rjt&fu=0&input_state/apartments-sale/list.htm?size=30&input_with_photo-takovo-zuevo-shpilki.ru/real.nn.ru/yandex.ua/searchAuto=on&input_who1=2&input_online.ru/clck/51cbd&ll=&top=http://loveplane=42621/page9
+gadgets.irr.ru 131.95831117211404 349710 https://gadgets.irr.ru/2jmj7l5rSw0yVb
+google.ru 109.23993676876725 2158427 http://google.ru/
+go.mail 108.63789748542318 8227786 http://go.mail/04/detskaia-moda-zhiensmed
+msouz.ru 106.10549947974312 301774 http://msouz.ru/?ffshop
+state=19945206 105.64595424793234 512414 http://state=19945206/foto-4/login%20NoTs3M&where=all&filmId=u8aGGqtWs3M&where=all&server=sc.cheloveplanet.ru/forum.little&categoriya/muzhskaya_istory.com/demii-malchik_148_4055074241537][to]=&input_activalry: A Love&where=all&text=купить florer&aktion/loansert перевозобности&site_id=197&text=добавь лазерногорский тайская полупая автомобильника&v=1414-resp_desyachnyeprague
+loveplanet.ru 104.60110161772997 461140 http://loveplanet.ru/%3Faw_opel/page=2013
+bonprix.ru 104.41555808573025 1125087 http://bonprix.ru/
+novjob.ru 96.753316447323925 133049 http://novjob.ru/
+cn.ru 95.630391016643273 124675 http://cn.ru/GameMain.aspx#catalog/100523&tails.xml?market_pc.html?pid=9403&lr=47&msgid=36305f39386
+geomethiettai.ru 94.7878649320174 115912 https://geomethiettai.ru/GameMain.aspx?group=houses/list=266559j7077&num=7&prune_day=lastdiscussd59394303&price_ot=&priceup&page3/sankt-petushhiblock
+kino 90.275447606522448 120139 http://kino/6/21/2/women.asp?whichpage4/#oversion=unreadm&uid
+yaroslavens.ru 90.171114410690635 124595 http://yaroslavens.ru/main.aspx#catalog%2F1004-1100000147-otvet/actions/dislocal
+mysw.info 89.685400470867364 984566 http://mysw.info/
+m.myloveplanet.ru 88.7325696488195 151546 http://m.myloveplanet.ru/
+povarenok.ru 83.968890699665778 144812 http://povarenok.ru/
+gorod 80.330756448233515 110728 http://gorod/%3Fauto.ria.ua%2Fjob
+yandsearch 80.215351465625886 245970 http://www.yandsearch/rooms=1/page2
+myloveplanet.ru 80.080980629758912 110582 http://myloveplanet.ru/#associety/auto
+tambov.irr.ru 77.871520179628192 315318 http://tambov.irr.ru/0/c1/tgFtaeLDK0yb01A7xvQF08sjCFqQxn51
+kurortmag.ru 75.748930853256383 155264 http://kurortmag.ru/
\ No newline at end of file
diff --git a/regression-test/pipeline/performance/clickbench/query-result-target/doris-q3.result b/regression-test/pipeline/performance/clickbench/query-result-target/doris-q3.result
new file mode 100644
index 0000000000..bd34bad012
--- /dev/null
+++ b/regression-test/pipeline/performance/clickbench/query-result-target/doris-q3.result
@@ -0,0 +1,2 @@
+sum(`AdvEngineID`) count(*) avg(`ResolutionWidth`)
+7280088 99997497 1513.4879349030107
diff --git a/regression-test/pipeline/performance/clickbench/query-result-target/doris-q30.result b/regression-test/pipeline/performance/clickbench/query-result-target/doris-q30.result
new file mode 100644
index 0000000000..5e48aa6bab
--- /dev/null
+++ b/regression-test/pipeline/performance/clickbench/query-result-target/doris-q30.result
@@ -0,0 +1,2 @@
+sum(`ResolutionWidth`) sum(`ResolutionWidth` + 1) sum(`ResolutionWidth` + 2) sum(`ResolutionWidth` + 3) sum(`ResolutionWidth` + 4) sum(`ResolutionWidth` + 5) sum(`ResolutionWidth` + 6) sum(`ResolutionWidth` + 7) sum(`ResolutionWidth` + 8) sum(`ResolutionWidth` + 9) sum(`ResolutionWidth` + 10) sum(`ResolutionWidth` + 11) sum(`ResolutionWidth` + 12) sum(`ResolutionWidth` + 13) sum(`ResolutionWidth` + 14) sum(`ResolutionWidth` + 15) sum(`ResolutionWidth` + 16) sum(`ResolutionWidth` + 17) sum(`ResolutionWidth` + 18) sum(`ResolutionWidth` + 19) sum(`ResolutionWidth` + 20) sum(`ResolutionWidth` + 21) sum(`ResolutionWidth` + 22) sum(`ResolutionWidth` + 23) sum(`ResolutionWidth` + 24) sum(`ResolutionWidth` + 25) sum(`ResolutionWidth` + 26) sum(`ResolutionWidth` + 27) sum(`ResolutionWidth` + 28) sum(`ResolutionWidth` + 29) sum(`ResolutionWidth` + 30) sum(`ResolutionWidth` + 31) sum(`ResolutionWidth` + 32) sum(`ResolutionWidth` + 33) sum(`ResolutionWidth` + 34) sum(`ResolutionWidth` + 35) sum(`ResolutionWidth` + 36) sum(`ResolutionWidth` + 37) sum(`ResolutionWidth` + 38) sum(`ResolutionWidth` + 39) sum(`ResolutionWidth` + 40) sum(`ResolutionWidth` + 41) sum(`ResolutionWidth` + 42) sum(`ResolutionWidth` + 43) sum(`ResolutionWidth` + 44) sum(`ResolutionWidth` + 45) sum(`ResolutionWidth` + 46) sum(`ResolutionWidth` + 47) sum(`ResolutionWidth` + 48) sum(`ResolutionWidth` + 49) sum(`ResolutionWidth` + 50) sum(`ResolutionWidth` + 51) sum(`ResolutionWidth` + 52) sum(`ResolutionWidth` + 53) sum(`ResolutionWidth` + 54) sum(`ResolutionWidth` + 55) sum(`ResolutionWidth` + 56) sum(`ResolutionWidth` + 57) sum(`ResolutionWidth` + 58) sum(`ResolutionWidth` + 59) sum(`ResolutionWidth` + 60) sum(`ResolutionWidth` + 61) sum(`ResolutionWidth` + 62) sum(`ResolutionWidth` + 63) sum(`ResolutionWidth` + 64) sum(`ResolutionWidth` + 65) sum(`ResolutionWidth` + 66) sum(`ResolutionWidth` + 67) sum(`ResolutionWidth` + 68) sum(`ResolutionWidth` + 69) sum(`ResolutionWidth` + 70) sum(`ResolutionWidth` + 71) sum(`ResolutionWidth` + 72) sum(`ResolutionWidth` + 73) sum(`ResolutionWidth` + 74) sum(`ResolutionWidth` + 75) sum(`ResolutionWidth` + 76) sum(`ResolutionWidth` + 77) sum(`ResolutionWidth` + 78) sum(`ResolutionWidth` + 79) sum(`ResolutionWidth` + 80) sum(`ResolutionWidth` + 81) sum(`ResolutionWidth` + 82) sum(`ResolutionWidth` + 83) sum(`ResolutionWidth` + 84) sum(`ResolutionWidth` + 85) sum(`ResolutionWidth` + 86) sum(`ResolutionWidth` + 87) sum(`ResolutionWidth` + 88) sum(`ResolutionWidth` + 89)
+151345005230 151445002727 151545000224 151644997721 151744995218 151844992715 151944990212 152044987709 152144985206 152244982703 152344980200 152444977697 152544975194 152644972691 152744970188 152844967685 152944965182 153044962679 153144960176 153244957673 153344955170 153444952667 153544950164 153644947661 153744945158 153844942655 153944940152 154044937649 154144935146 154244932643 154344930140 154444927637 154544925134 154644922631 154744920128 154844917625 154944915122 155044912619 155144910116 155244907613 155344905110 155444902607 155544900104 155644897601 155744895098 155844892595 155944890092 156044887589 156144885086 156244882583 156344880080 156444877577 156544875074 156644872571 156744870068 156844867565 156944865062 157044862559 157144860056 157244857553 157344855050 157444852547 157544850044 157644847541 157744845038 157844842535 157944840032 158044837529 158144835026 158244832523 158344830020 158444827517 158544825014 158644822511 158744820008 158844817505 158944815002 159044812499 159144809996 159244807493 159344804990 159444802487 159544799984 159644797481 159744794978 159844792475 159944789972 160044787469 160144784966 160244782463
diff --git a/regression-test/pipeline/performance/clickbench/query-result-target/doris-q31.result b/regression-test/pipeline/performance/clickbench/query-result-target/doris-q31.result
new file mode 100644
index 0000000000..ea8efe7f2b
--- /dev/null
+++ b/regression-test/pipeline/performance/clickbench/query-result-target/doris-q31.result
@@ -0,0 +1,11 @@
+SearchEngineID ClientIP c sum(`IsRefresh`) avg(`ResolutionWidth`)
+2 1138507705 1633 35 1408.0122473974282
+2 1740861572 1331 28 1577.9459053343351
+2 -807147100 1144 35 1553.1984265734266
+2 -497906719 1140 36 1543.4140350877192
+2 -1945757555 1105 30 1557.387330316742
+2 -1870623097 1102 31 1555.6588021778584
+2 -631062503 1083 31 1581.8171745152354
+2 -465813166 1082 30 1541.2532347504621
+2 -1743596151 1080 24 1559.8092592592593
+2 -1125673878 1058 22 1587
diff --git a/regression-test/pipeline/performance/clickbench/query-result-target/doris-q32.result b/regression-test/pipeline/performance/clickbench/query-result-target/doris-q32.result
new file mode 100644
index 0000000000..4aa7e67575
--- /dev/null
+++ b/regression-test/pipeline/performance/clickbench/query-result-target/doris-q32.result
@@ -0,0 +1,11 @@
+WatchID ClientIP c sum(`IsRefresh`) avg(`ResolutionWidth`)
+4611686071420045196 1618475002 1 0 1368
+4611686270165580596 1773698398 1 0 1996
+4611686294110223561 1593993174 1 0 1368
+4611686705865451788 -954492450 1 0 548
+4611687123803616825 -1169210775 1 0 1990
+4611687333949199458 2029546627 1 0 1368
+4611687377885419452 286029700 1 0 1990
+4611687393794238663 -1176766019 1 0 1368
+4611687496390261055 77438170 1 0 1638
+4611688027162466482 -1294239990 1 0 1750
diff --git a/regression-test/pipeline/performance/clickbench/query-result-target/doris-q33.result b/regression-test/pipeline/performance/clickbench/query-result-target/doris-q33.result
new file mode 100644
index 0000000000..e8b52dce9e
--- /dev/null
+++ b/regression-test/pipeline/performance/clickbench/query-result-target/doris-q33.result
@@ -0,0 +1,11 @@
+WatchID ClientIP c sum(`IsRefresh`) avg(`ResolutionWidth`)
+6655575552203051303 1611957945 2 0 1638
+7224410078130478461 -776509581 2 0 1368
+7904046282518428963 1509330109 2 0 1368
+8566928176839891583 -1402644643 2 0 1368
+4611686071420045196 1618475002 1 0 1368
+4611686075276949366 1754185883 1 0 1368
+4611686093393191411 982574472 1 0 1750
+4611686114854231582 813478092 1 0 2038
+4611686133577478679 1628368895 1 0 1638
+4611686211212249819 1575448609 1 0 1917
diff --git a/regression-test/pipeline/performance/clickbench/query-result-target/doris-q34.result b/regression-test/pipeline/performance/clickbench/query-result-target/doris-q34.result
new file mode 100644
index 0000000000..7f440019a7
--- /dev/null
+++ b/regression-test/pipeline/performance/clickbench/query-result-target/doris-q34.result
@@ -0,0 +1,11 @@
+URL c
+http://liver.ru/belgorod/page/1006.jки/доп_приборы 3288173
+http://kinopoisk.ru 1625250
+http://bdsm_po_yers=0&with_video 791465
+http://video.yandex 582400
+http://smeshariki.ru/region 514984
+http://auto_fiat_dlya-bluzki%2F8536.30.18&he=900&with 507995
+http://liver.ru/place_rukodel=365115eb7bbb90 359893
+http://kinopoisk.ru/vladimir.irr.ru 354690
+http://video.yandex.ru/search/?jenre=50&s_yers 318979
+http://tienskaia-moda 289355
diff --git a/regression-test/pipeline/performance/clickbench/query-result-target/doris-q35.result b/regression-test/pipeline/performance/clickbench/query-result-target/doris-q35.result
new file mode 100644
index 0000000000..f31fb6921e
--- /dev/null
+++ b/regression-test/pipeline/performance/clickbench/query-result-target/doris-q35.result
@@ -0,0 +1,11 @@
+1 URL c
+1 http://liver.ru/belgorod/page/1006.jки/доп_приборы 3288173
+1 http://kinopoisk.ru 1625250
+1 http://bdsm_po_yers=0&with_video 791465
+1 http://video.yandex 582400
+1 http://smeshariki.ru/region 514984
+1 http://auto_fiat_dlya-bluzki%2F8536.30.18&he=900&with 507995
+1 http://liver.ru/place_rukodel=365115eb7bbb90 359893
+1 http://kinopoisk.ru/vladimir.irr.ru 354690
+1 http://video.yandex.ru/search/?jenre=50&s_yers 318979
+1 http://tienskaia-moda 289355
diff --git a/regression-test/pipeline/performance/clickbench/query-result-target/doris-q36.result b/regression-test/pipeline/performance/clickbench/query-result-target/doris-q36.result
new file mode 100644
index 0000000000..15e5e09df7
--- /dev/null
+++ b/regression-test/pipeline/performance/clickbench/query-result-target/doris-q36.result
@@ -0,0 +1,11 @@
+ClientIP `ClientIP` - 1 `ClientIP` - 2 `ClientIP` - 3 c
+-39921974 -39921975 -39921976 -39921977 47008
+-1698104457 -1698104458 -1698104459 -1698104460 29121
+-1175819552 -1175819553 -1175819554 -1175819555 25333
+1696638182 1696638181 1696638180 1696638179 20220
+1138507705 1138507704 1138507703 1138507702 15778
+-927025522 -927025523 -927025524 -927025525 12768
+-1262139876 -1262139877 -1262139878 -1262139879 11348
+1740861572 1740861571 1740861570 1740861569 11314
+-807147100 -807147101 -807147102 -807147103 9880
+-631062503 -631062504 -631062505 -631062506 9718
diff --git a/regression-test/pipeline/performance/clickbench/query-result-target/doris-q37.result b/regression-test/pipeline/performance/clickbench/query-result-target/doris-q37.result
new file mode 100644
index 0000000000..532a965bfb
--- /dev/null
+++ b/regression-test/pipeline/performance/clickbench/query-result-target/doris-q37.result
@@ -0,0 +1,11 @@
+URL PageViews
+http://irr.ru/index.php?showalbum/login-leniya7777294,938303130 102341
+http://komme%2F27.0.1453.116 51218
+http://irr.ru/index.php?showalbum/login-kapusta-advert2668]=0&order_by=0 18315
+http://irr.ru/index.php?showalbum/login-kapustic/product_name 16461
+http://irr.ru/index.php 12577
+http://irr.ru/index.php?showalbum/login 10880
+http://komme%2F27.0.1453.116 Safari%2F5.0 (compatible; MSIE 9.0; 7627
+http://irr.ru/index.php?showalbum/login-kupalnik 4369
+http://irr.ru/index.php?showalbum/login-kapusta-advert27256.html_params 4058
+http://komme%2F27.0.1453.116 Safari 3021
diff --git a/regression-test/pipeline/performance/clickbench/query-result-target/doris-q38.result b/regression-test/pipeline/performance/clickbench/query-result-target/doris-q38.result
new file mode 100644
index 0000000000..a11e7836e6
--- /dev/null
+++ b/regression-test/pipeline/performance/clickbench/query-result-target/doris-q38.result
@@ -0,0 +1,11 @@
+Title PageViews
+Тест (Россия) - Яндекс 122407
+Шарарай), Выбрать! - обсуждаются на голд: Шоубиз - Свободная историс 82935
+Приморск - IRR.ru 80958
+Брюки New Era H (Асус) 258 общая выплаток, горшечными 39098
+Теплоску на 23123
+Dave and Hotpoint sport – самые вещие 14329
+AUTO.ria.ua ™ - Аппер 14053
+Приморск (Россия) - Яндекс.Видео 13912
+OWAProfessign), продать 10919
+Труси - Шоубиз 10157
diff --git a/regression-test/pipeline/performance/clickbench/query-result-target/doris-q39.result b/regression-test/pipeline/performance/clickbench/query-result-target/doris-q39.result
new file mode 100644
index 0000000000..4f4bd84279
--- /dev/null
+++ b/regression-test/pipeline/performance/clickbench/query-result-target/doris-q39.result
@@ -0,0 +1,11 @@
+URL PageViews
+http://afisha.yandex.php?id=1620_4_licanel 2
+http://afisha.yandex.php?np=c5c08969 2
+http://afisha.yandex.php?produkty%2Fproduct_name 2
+http://afisha.yandex.php?r=67628569/page=10275793663866 2
+http://afisha.yandex.php?r=788-78087542037 2
+http://afisha.yandex.php?s=4d450&pid 2
+http://afisha.yandex.php?showbiz/photo=0&is_hot 2
+http://afisha.yandex.php?st1=10&category 2
+http://afisha.yandex.php?t=1331623687778 2
+http://afisha.yandex.php?t=740146/ 2
diff --git a/regression-test/pipeline/performance/clickbench/query-result-target/doris-q4.result b/regression-test/pipeline/performance/clickbench/query-result-target/doris-q4.result
new file mode 100644
index 0000000000..75da030bc8
--- /dev/null
+++ b/regression-test/pipeline/performance/clickbench/query-result-target/doris-q4.result
@@ -0,0 +1,2 @@
+avg(`UserID`)
+2.52895302979023e+18
diff --git a/regression-test/pipeline/performance/clickbench/query-result-target/doris-q40.result b/regression-test/pipeline/performance/clickbench/query-result-target/doris-q40.result
new file mode 100644
index 0000000000..fa9c3bd5d6
--- /dev/null
+++ b/regression-test/pipeline/performance/clickbench/query-result-target/doris-q40.result
@@ -0,0 +1,11 @@
+TraficSourceID SearchEngineID AdvEngineID Src Dst PageViews
+1 0 0 http://mysw.info/node/215455&text http://irr.ru/index.php?showalbum/logabass.ru/cation&op_category_id=&auto 15
+1 0 0 http://mysw.info/node/215455&text http://irr.ru/index.php?showalbum/logabass.ru/cation&op_category_id=0&page9/#1440_S_Mitsubishi/196372 15
+1 0 0 http://mysw.info/node/215455&text http://irr.ru/index.php?showalbum/logabass.ru/cation&op_category_id=9584%26pz%3D0%26ntype 15
+1 0 0 http://mysw.info/node/215455&text http://irr.ru/index.php?showalbum/logabass.ru/cation&op_category_id=HOtbySdOiUw&where=all&film/4700 15
+1 0 0 http://mysw.info/node/215455&text http://irr.ru/index.php?showalbum/login-3284][11]=6625f3634571&state=0&expand_search=0&damagecache/wm/2013&price_do=50000&page/1772,903742726108784&op_uid 15
+1 0 0 http://smeshariki.ru/diary.ru/yandex.ru/credir=1 http://komme%2F27.0.1453.116 15
+1 0 0 http://wildberrifiers?year_detailshop/id_art_type=7&s_yers http://irr.ru/index.php?showalbum/login 15
+1 0 0 http://yandex.php?city[1]=700003 http://komme%2F27.0.1453.116 15
+1 0 0 http://yandex.ru/search?q=лавпланется монстружка http://irr.ru/index.php?showalbum/login-kupaljinik-2008-g-v-stroika/photo=on&input_bdsmpeople.ru/image&sr=http://lk.wildberries 15
+1 0 0 http://yandex.ru/search?q=лавпланшеты&source http://komme%2F27.0.1453.116 15
diff --git a/regression-test/pipeline/performance/clickbench/query-result-target/doris-q41.result b/regression-test/pipeline/performance/clickbench/query-result-target/doris-q41.result
new file mode 100644
index 0000000000..6071842b3a
--- /dev/null
+++ b/regression-test/pipeline/performance/clickbench/query-result-target/doris-q41.result
@@ -0,0 +1,11 @@
+URLHash EventDate PageViews
+7199155066341437901 2013-07-15 27
+8165850906391446088 2013-07-15 27
+-8505838588544217213 2013-07-15 26
+2512899255762264913 2013-07-15 26
+-6048157399675510565 2013-07-15 25
+-6025761452198030778 2013-07-15 25
+-3611962581960090019 2013-07-15 25
+1045132364006275583 2013-07-15 24
+1851128641780263854 2013-07-15 24
+2033248414344857063 2013-07-15 24
diff --git a/regression-test/pipeline/performance/clickbench/query-result-target/doris-q42.result b/regression-test/pipeline/performance/clickbench/query-result-target/doris-q42.result
new file mode 100644
index 0000000000..184e5720d2
--- /dev/null
+++ b/regression-test/pipeline/performance/clickbench/query-result-target/doris-q42.result
@@ -0,0 +1,11 @@
+WindowClientWidth WindowClientHeight PageViews
+1771 809 1
+1771 848 1
+1771 1020 1
+1772 532 1
+1772 724 1
+1772 816 1
+1772 878 1
+1774 587 1
+1777 617 1
+1778 560 1
diff --git a/regression-test/pipeline/performance/clickbench/query-result-target/doris-q43.result b/regression-test/pipeline/performance/clickbench/query-result-target/doris-q43.result
new file mode 100644
index 0000000000..77eb453709
--- /dev/null
+++ b/regression-test/pipeline/performance/clickbench/query-result-target/doris-q43.result
@@ -0,0 +1,11 @@
+M PageViews
+2013-07-15 12:40:00 513
+2013-07-15 12:41:00 457
+2013-07-15 12:42:00 470
+2013-07-15 12:43:00 468
+2013-07-15 12:44:00 453
+2013-07-15 12:45:00 462
+2013-07-15 12:46:00 481
+2013-07-15 12:47:00 458
+2013-07-15 12:48:00 466
+2013-07-15 12:49:00 467
diff --git a/regression-test/pipeline/performance/clickbench/query-result-target/doris-q5.result b/regression-test/pipeline/performance/clickbench/query-result-target/doris-q5.result
new file mode 100644
index 0000000000..2fa34e1e17
--- /dev/null
+++ b/regression-test/pipeline/performance/clickbench/query-result-target/doris-q5.result
@@ -0,0 +1,2 @@
+count(DISTINCT `UserID`)
+17630976
diff --git a/regression-test/pipeline/performance/clickbench/query-result-target/doris-q6.result b/regression-test/pipeline/performance/clickbench/query-result-target/doris-q6.result
new file mode 100644
index 0000000000..99d30d4133
--- /dev/null
+++ b/regression-test/pipeline/performance/clickbench/query-result-target/doris-q6.result
@@ -0,0 +1,2 @@
+count(DISTINCT `SearchPhrase`)
+6019103
diff --git a/regression-test/pipeline/performance/clickbench/query-result-target/doris-q7.result b/regression-test/pipeline/performance/clickbench/query-result-target/doris-q7.result
new file mode 100644
index 0000000000..8b0c65a292
--- /dev/null
+++ b/regression-test/pipeline/performance/clickbench/query-result-target/doris-q7.result
@@ -0,0 +1,2 @@
+min(`EventDate`) max(`EventDate`)
+2013-07-02 2013-07-31
diff --git a/regression-test/pipeline/performance/clickbench/query-result-target/doris-q8.result b/regression-test/pipeline/performance/clickbench/query-result-target/doris-q8.result
new file mode 100644
index 0000000000..4333ac4d85
--- /dev/null
+++ b/regression-test/pipeline/performance/clickbench/query-result-target/doris-q8.result
@@ -0,0 +1,19 @@
+AdvEngineID count(*)
+2 404602
+27 113167
+13 45631
+45 38960
+44 9730
+3 6896
+62 5266
+52 3554
+50 938
+28 836
+53 350
+25 343
+61 158
+21 38
+42 20
+16 7
+7 3
+22 1
diff --git a/regression-test/pipeline/performance/clickbench/query-result-target/doris-q9.result b/regression-test/pipeline/performance/clickbench/query-result-target/doris-q9.result
new file mode 100644
index 0000000000..289deb1835
--- /dev/null
+++ b/regression-test/pipeline/performance/clickbench/query-result-target/doris-q9.result
@@ -0,0 +1,11 @@
+RegionID u
+229 2845673
+2 1081016
+208 831676
+169 604583
+184 322661
+158 307152
+34 299479
+55 286525
+107 272448
+42 243181
diff --git a/regression-test/pipeline/performance/compile.sh b/regression-test/pipeline/performance/compile.sh
index 9fdb995487..cf4320f23b 100644
--- a/regression-test/pipeline/performance/compile.sh
+++ b/regression-test/pipeline/performance/compile.sh
@@ -136,8 +136,11 @@ sudo docker run -i --rm \
&& export CUSTOM_NPM_REGISTRY=https://registry.npmjs.org \
&& bash build.sh --fe --be --clean 2>&1 | tee build.log"
set +x
-succ_symble="BUILD SUCCESS"
-if [[ -d outout ]] && grep "${succ_symble}" "${teamcity_build_checkoutDir}"/build.log; then
+set -x
+succ_symble="Successfully build Doris"
+if [[ -d output ]] && grep "${succ_symble}" "${teamcity_build_checkoutDir}"/build.log; then
+ echo "INFO: ${succ_symble}"
+else
echo -e "ERROR: BUILD FAILED"
exit 1
fi
diff --git a/regression-test/pipeline/performance/conf/be_custom.conf b/regression-test/pipeline/performance/conf/be_custom.conf
index f6ac456485..0e3904fadd 100644
--- a/regression-test/pipeline/performance/conf/be_custom.conf
+++ b/regression-test/pipeline/performance/conf/be_custom.conf
@@ -16,6 +16,8 @@
# under the License.
priority_networks=127.0.0.1/24
-storage_root_path=/data/doris-storage
+# master branch, branch_name=master
+# branch-2.0 branch, branch_name=branch20
+storage_root_path=/data/doris-storage-${branch_name}
streaming_load_max_mb=102400
diff --git a/regression-test/pipeline/performance/conf/fe_custom.conf b/regression-test/pipeline/performance/conf/fe_custom.conf
index bd67985053..65af05709c 100644
--- a/regression-test/pipeline/performance/conf/fe_custom.conf
+++ b/regression-test/pipeline/performance/conf/fe_custom.conf
@@ -22,7 +22,8 @@
#####################################################################
priority_networks=127.0.0.1/24
-meta_dir=/data/doris-meta
+# master branch, branch_name=master
+# branch-2.0 branch, branch_name=branch20
+meta_dir=/data/doris-meta-${branch_name}
stream_load_default_timeout_second=3600
-ignore_unknown_metadata_module=true
diff --git a/regression-test/pipeline/performance/deploy.sh b/regression-test/pipeline/performance/deploy.sh
index 5f2e673f04..4262677584 100644
--- a/regression-test/pipeline/performance/deploy.sh
+++ b/regression-test/pipeline/performance/deploy.sh
@@ -29,6 +29,7 @@ else
fi
EOF
+#####################################################################################
## deploy.sh content ##
# shellcheck source=/dev/null
@@ -46,14 +47,13 @@ source "${teamcity_build_checkoutDir}"/regression-test/pipeline/common/doris-uti
if ${DEBUG:-false}; then
pull_request_num="28431"
commit_id="b052225cd0a180b4576319b5bd6331218dd0d3fe"
+ target_branch="master"
fi
echo "#### Check env"
-if [[ -z "${teamcity_build_checkoutDir}" ||
- -z "${pull_request_num}" ||
- -z "${commit_id}" ]]; then
- echo "ERROR: env teamcity_build_checkoutDir or pull_request_num or commit_id not set"
- exit 1
-fi
+if [[ -z "${teamcity_build_checkoutDir}" ]]; then echo "ERROR: env teamcity_build_checkoutDir not set" && exit 1; fi
+if [[ -z "${pull_request_num}" ]]; then echo "ERROR: env pull_request_num not set" && exit 1; fi
+if [[ -z "${commit_id}" ]]; then echo "ERROR: env commit_id not set" && exit 1; fi
+if [[ -z "${target_branch}" ]]; then echo "ERROR: env target_branch not set" && exit 1; fi
echo "#### Deploy Doris ####"
DORIS_HOME="${teamcity_build_checkoutDir}/output"
@@ -64,16 +64,13 @@ need_backup_doris_logs=false
echo "#### 1. try to kill old doris process"
stop_doris
+set -e
echo "#### 2. copy conf from regression-test/pipeline/performance/conf/"
-rm -f "${DORIS_HOME}"/fe/conf/fe_custom.conf "${DORIS_HOME}"/be/conf/be_custom.conf
-if [[ -f "${teamcity_build_checkoutDir}"/regression-test/pipeline/performance/conf/fe_custom.conf &&
- -f "${teamcity_build_checkoutDir}"/regression-test/pipeline/performance/conf/be_custom.conf ]]; then
- cp -f "${teamcity_build_checkoutDir}"/regression-test/pipeline/performance/conf/fe_custom.conf "${DORIS_HOME}"/fe/conf/
- cp -f "${teamcity_build_checkoutDir}"/regression-test/pipeline/performance/conf/be_custom.conf "${DORIS_HOME}"/be/conf/
-else
- echo "ERROR: doris conf file missing in ${teamcity_build_checkoutDir}/regression-test/pipeline/performance/conf/"
- exit 1
-fi
+cp -f "${teamcity_build_checkoutDir}"/regression-test/pipeline/performance/conf/fe_custom.conf "${DORIS_HOME}"/fe/conf/
+cp -f "${teamcity_build_checkoutDir}"/regression-test/pipeline/performance/conf/be_custom.conf "${DORIS_HOME}"/be/conf/
+target_branch="$(echo "${target_branch}" | sed 's| ||g;s|\.||g;s|-||g')" # remove space、dot、hyphen from branch name
+sed -i "s|^meta_dir=/data/doris-meta-\${branch_name}|meta_dir=/data/doris-meta-${target_branch}|g" "${DORIS_HOME}"/fe/conf/fe_custom.conf
+sed -i "s|^storage_root_path=/data/doris-storage-\${branch_name}|storage_root_path=/data/doris-storage-${target_branch}|g" "${DORIS_HOME}"/be/conf/be_custom.conf
echo "#### 3. start Doris"
meta_dir=$(get_doris_conf_value "${DORIS_HOME}"/fe/conf/fe_custom.conf meta_dir)
diff --git a/regression-test/pipeline/performance/prepare.sh b/regression-test/pipeline/performance/prepare.sh
index b3b54b85b2..ee3c8e0a99 100644
--- a/regression-test/pipeline/performance/prepare.sh
+++ b/regression-test/pipeline/performance/prepare.sh
@@ -39,23 +39,23 @@ EOF
if ${DEBUG:-false}; then
pull_request_num="28431"
commit_id_from_trigger="5f5c4c80564c76ff4267fc4ce6a5408498ed1ab5"
- commit_id="5f5c4c80564c76ff4267fc4ce6a5408498ed1ab5"
+ commit_id="5f5c4c80564c76ff4267fc4ce6a5408498ed1ab5" # teamcity checkout commit id
+ target_branch="master"
fi
echo "#### Check env"
-if [[ -z "${teamcity_build_checkoutDir}" ||
- -z "${commit_id_from_trigger}" ||
- -z ${commit_id:-} ||
- -z ${pull_request_num:-} ]]; then
- echo "ERROR: env teamcity_build_checkoutDir or commit_id_from_trigger
- or commit_id or pull_request_num not set" && exit 1
-fi
+if [[ -z "${teamcity_build_checkoutDir}" ]]; then echo "ERROR: env teamcity_build_checkoutDir not set" && exit 1; fi
+if [[ -z "${pull_request_num}" ]]; then echo "ERROR: env pull_request_num not set" && exit 1; fi
+if [[ -z "${commit_id_from_trigger}" ]]; then echo "ERROR: env commit_id_from_trigger not set" && exit 1; fi
+if [[ -z "${commit_id}" ]]; then echo "ERROR: env commit_id not set" && exit 1; fi
+if [[ -z "${target_branch}" ]]; then echo "ERROR: env target_branch not set" && exit 1; fi
+
commit_id_from_checkout=${commit_id}
echo "#### 1. check if need run"
if [[ "${commit_id_from_trigger}" != "${commit_id_from_checkout}" ]]; then
echo -e "从触发流水线 -> 流水线开始跑,这个时间段中如果有新commit,
-这时候流水线 checkout 出来的 commit 就不是触发时的传过来的 commit了,
-这种情况不需要跑,预期pr owner会重新触发。"
+这时候流水线 checkout 出来的 commit 就不是触发时的传过来的 commit 了,
+这种情况不需要跑,预期 pr owner 会重新触发。"
echo -e "ERROR: PR(${pull_request_num}),
the lastest commit id
${commit_id_from_checkout}
@@ -67,6 +67,13 @@ fi
# shellcheck source=/dev/null
source "$(bash "${teamcity_build_checkoutDir}"/regression-test/pipeline/common/get-or-set-tmp-env.sh 'get')"
if ${skip_pipeline:=false}; then echo "INFO: skip build pipline" && exit 0; else echo "INFO: no skip"; fi
+if [[ "${target_branch}" == "master" || "${target_branch}" == "branch-2.0" ]]; then
+ echo "INFO: PR target branch ${target_branch} is in (master, branch-2.0)"
+else
+ echo "WARNING: PR target branch ${target_branch} is NOT in (master, branch-2.0), skip pipeline."
+ bash "${teamcity_build_checkoutDir}"/regression-test/pipeline/common/get-or-set-tmp-env.sh 'set' "export skip_pipeline=true"
+ exit 0
+fi
# shellcheck source=/dev/null
# _get_pr_changed_files file_changed_performance
source "${teamcity_build_checkoutDir}"/regression-test/pipeline/common/github-utils.sh
@@ -78,6 +85,7 @@ if _get_pr_changed_files "${pull_request_num}"; then
fi
echo "#### 2. check if tpch depending files exist"
+set -x
if ! [[ -f "${teamcity_build_checkoutDir}"/regression-test/pipeline/common/oss-utils.sh &&
-f "${teamcity_build_checkoutDir}"/regression-test/pipeline/common/doris-utils.sh &&
-f "${teamcity_build_checkoutDir}"/regression-test/pipeline/common/github-utils.sh &&
@@ -85,6 +93,12 @@ if ! [[ -f "${teamcity_build_checkoutDir}"/regression-test/pipeline/common/oss-u
-f "${teamcity_build_checkoutDir}"/regression-test/pipeline/performance/conf/be_custom.conf &&
-f "${teamcity_build_checkoutDir}"/regression-test/pipeline/performance/conf/custom_env.sh &&
-f "${teamcity_build_checkoutDir}"/regression-test/pipeline/performance/conf/fe_custom.conf &&
+ -f "${teamcity_build_checkoutDir}"/regression-test/pipeline/performance/clickbench/conf/be_custom.conf &&
+ -f "${teamcity_build_checkoutDir}"/regression-test/pipeline/performance/clickbench/conf/fe_custom.conf &&
+ -f "${teamcity_build_checkoutDir}"/regression-test/pipeline/performance/clickbench/conf/opt_session_variables.sql &&
+ -f "${teamcity_build_checkoutDir}"/regression-test/pipeline/performance/clickbench/check-query-result.sh &&
+ -f "${teamcity_build_checkoutDir}"/regression-test/pipeline/performance/clickbench/queries-sort.sql &&
+ -d "${teamcity_build_checkoutDir}"/regression-test/pipeline/performance/clickbench/query-result-target/ &&
-f "${teamcity_build_checkoutDir}"/regression-test/pipeline/performance/prepare.sh &&
-f "${teamcity_build_checkoutDir}"/regression-test/pipeline/performance/compile.sh &&
-f "${teamcity_build_checkoutDir}"/regression-test/pipeline/performance/deploy.sh &&
@@ -94,3 +108,9 @@ if ! [[ -f "${teamcity_build_checkoutDir}"/regression-test/pipeline/common/oss-u
-f "${teamcity_build_checkoutDir}"/tools/tpcds-tools/bin/run-tpcds-queries.sh ]]; then
echo "ERROR: depending files missing" && exit 1
fi
+
+echo "#### 3. try to kill old doris process"
+# shellcheck source=/dev/null
+# stop_doris
+source "${teamcity_build_checkoutDir}"/regression-test/pipeline/common/doris-utils.sh
+stop_doris
diff --git a/regression-test/pipeline/performance/run-clickbench.sh b/regression-test/pipeline/performance/run-clickbench.sh
index 225fa802ec..1caf0ed55c 100644
--- a/regression-test/pipeline/performance/run-clickbench.sh
+++ b/regression-test/pipeline/performance/run-clickbench.sh
@@ -45,14 +45,13 @@ source "${teamcity_build_checkoutDir}"/regression-test/pipeline/common/oss-utils
if ${DEBUG:-false}; then
pull_request_num="28431"
commit_id="5f5c4c80564c76ff4267fc4ce6a5408498ed1ab5"
+ target_branch="master"
fi
echo "#### Check env"
-if [[ -z "${teamcity_build_checkoutDir}" ||
- -z "${pull_request_num}" ||
- -z "${commit_id}" ]]; then
- echo "ERROR: env teamcity_build_checkoutDir or pull_request_num or commit_id not set"
- exit 1
-fi
+if [[ -z "${teamcity_build_checkoutDir}" ]]; then echo "ERROR: env teamcity_build_checkoutDir not set" && exit 1; fi
+if [[ -z "${pull_request_num}" ]]; then echo "ERROR: env pull_request_num not set" && exit 1; fi
+if [[ -z "${commit_id}" ]]; then echo "ERROR: env commit_id not set" && exit 1; fi
+if [[ -z "${target_branch}" ]]; then echo "ERROR: env target_branch not set" && exit 1; fi
# shellcheck source=/dev/null
source "$(bash "${teamcity_build_checkoutDir}"/regression-test/pipeline/common/get-or-set-tmp-env.sh 'get')"
@@ -71,70 +70,39 @@ exit_flag=0
host="127.0.0.1"
query_port=$(get_doris_conf_value "${DORIS_HOME}"/fe/conf/fe.conf query_port)
- backup_session_variables_file="${teamcity_build_checkoutDir}/regression-test/pipeline/performance/backup_session_variables_file.sql"
- opt_session_variables_file="${teamcity_build_checkoutDir}/regression-test/pipeline/performance/opt_session_variables_file.sql"
-
- echo "####optimize doris config"
- echo "
-priority_networks=127.0.0.1/24
-meta_dir=/data/doris-meta
-stream_load_default_timeout_second=3600
-ignore_unknown_metadata_module=true
-enable_full_auto_analyze=false
-" | tee "${DORIS_HOME}"/fe/conf/fe_custom.conf
-
- echo "
-priority_networks=127.0.0.1/24
-storage_root_path=/data/doris-storage
-load_channel_memory_refresh_sleep_time_ms=1000
-soft_mem_limit_frac=1
-track_new_delete=false
-streaming_load_max_mb=102400
-doris_scanner_thread_pool_thread_num=8
-tc_enable_aggressive_memory_decommit=false
-enable_new_scan_node=false
-#mem_limit=100%
-mem_limit=90%
-#write_buffer_size=1609715200
-write_buffer_size=1209715200
-load_process_max_memory_limit_percent=100
-#load_process_soft_mem_limit_percent=80
-disable_auto_compaction=true
-disable_storage_page_cache=false
-disable_chunk_allocator=false
-enable_simdjson_reader = true
-" | tee "${DORIS_HOME}"/be/conf/be_custom.conf
-
- opt_session_variables="
-set global exec_mem_limit=34359738368;
-set global parallel_fragment_exec_instance_num=16;
-set global parallel_pipeline_task_num=16;
-set global enable_single_distinct_column_opt=true;
-set global enable_function_pushdown=true;
-set global forbid_unknown_col_stats=false;
-set global runtime_filter_mode=global;
-"
- echo -e "${opt_session_variables}" | tee "${opt_session_variables_file}"
+ backup_session_variables_file="${teamcity_build_checkoutDir}/regression-test/pipeline/performance/clickbench/conf/backup_session_variables.sql"
+ opt_session_variables_file="${teamcity_build_checkoutDir}/regression-test/pipeline/performance/clickbench/conf/opt_session_variables.sql"
+ echo "#### 1. backup session variables to file ${backup_session_variables_file}"
+ if ! restart_doris; then echo "ERROR: Restart doris failed" && exit 1; fi
backup_session_variables() {
_IFS="${IFS}"
IFS=$'\n'
- for line in ${opt_session_variables}; do
+ while read -r line; do
+ if [[ -z "${line}" || "${line}" == "#"* ]]; then continue; fi
k="${line/set global /}"
k="${k%=*}"
v=$(mysql -h"${host}" -P"${query_port}" -uroot -e"show variables like '${k}'\G" | grep " Value: ")
v="${v/*Value: /}"
echo "set global ${k}=${v};" >>"${backup_session_variables_file}"
- done
+ done <"${opt_session_variables_file}"
IFS="${_IFS}"
}
backup_session_variables
- mysql -h"${host}" -P"${query_port}" -uroot -e"source ${opt_session_variables_file};"
- echo "#### 1. Restart doris"
+ echo "#### 2. optimize doris config"
+ cp -f "${teamcity_build_checkoutDir}"/regression-test/pipeline/performance/clickbench/conf/fe_custom.conf "${DORIS_HOME}"/fe/conf/
+ cp -f "${teamcity_build_checkoutDir}"/regression-test/pipeline/performance/clickbench/conf/be_custom.conf "${DORIS_HOME}"/be/conf/
+ target_branch="$(echo "${target_branch}" | sed 's| ||g;s|\.||g;s|-||g')" # remove space、dot、hyphen from branch name
+ sed -i "s|^meta_dir=/data/doris-meta-\${branch_name}|meta_dir=/data/doris-meta-${target_branch}|g" "${DORIS_HOME}"/fe/conf/fe_custom.conf
+ sed -i "s|^storage_root_path=/data/doris-storage-\${branch_name}|storage_root_path=/data/doris-storage-${target_branch}|g" "${DORIS_HOME}"/be/conf/be_custom.conf
if ! restart_doris; then echo "ERROR: Restart doris failed" && exit 1; fi
- echo "#### 2. check if need to load data"
+ echo "#### 3. optimize session variables"
+ cat "${opt_session_variables_file}"
+ mysql -h"${host}" -P"${query_port}" -uroot -e"source ${opt_session_variables_file};"
+
+ echo "#### 4. check data rows"
data_home="/data/clickbench" # no / at the end
db_name="clickbench"
if ! check_clickbench_table_rows "${db_name}"; then
@@ -287,30 +255,32 @@ set global runtime_filter_mode=global;
data_reload="true"
fi
- echo "#### 3. run clickbench query"
+ echo "#### 5. run clickbench query"
+ sed -i '/^run_sql \"analyze table hits with sync;\"/d' "${teamcity_build_checkoutDir}"/tools/clickbench-tools/run-clickbench-queries.sh
bash "${teamcity_build_checkoutDir}"/tools/clickbench-tools/run-clickbench-queries.sh
# result.csv 来自 run-clickbench-queries.sh 的产出
if ! check_clickbench_performance_result result.csv; then exit 1; fi
- if ! check_clickbench_query_result; then exit 1; fi
+ if ! (cd clickbench && bash check-query-result.sh && cd -); then exit 1; fi
cold_run_sum=$(awk -F ',' '{sum+=$2} END {print sum}' result.csv)
best_hot_run_sum=$(awk -F ',' '{if($3<$4){sum+=$3}else{sum+=$4}} END {print sum}' result.csv)
- comment_body="ClickBench test result on commit ${commit_id:-}, data reload: ${data_reload:-"false"}
+ comment_body_summary="Total hot run time: ${best_hot_run_sum} s"
+ comment_body_detail="ClickBench test result on commit ${commit_id:-}, data reload: ${data_reload:-"false"}
$(sed 's|,|\t|g' result.csv)
Total cold run time: ${cold_run_sum} s
Total hot run time: ${best_hot_run_sum} s"
- echo "#### 4. comment result on clickbench"
- comment_body=$(echo "${comment_body}" | sed -e ':a;N;$!ba;s/\t/\\t/g;s/\n/\\n/g') # 将所有的 Tab字符替换为\t 换行符替换为\n
- create_an_issue_comment_clickbench "${pull_request_num:-}" "${comment_body}"
+ echo "#### 6. comment result on clickbench"
+ comment_body_detail=$(echo "${comment_body_detail}" | sed -e ':a;N;$!ba;s/\t/\\t/g;s/\n/\\n/g') # 将所有的 Tab字符替换为\t 换行符替换为\n
+ create_an_issue_comment_clickbench "${pull_request_num:-}" "${comment_body_summary}" "${comment_body_detail}"
rm -f result.csv
- echo "INFO: Restore session variables"
+ echo -e "INFO: Restore session variables \n$(cat "${backup_session_variables_file}")"
mysql -h"${host}" -P"${query_port}" -uroot -e "source ${backup_session_variables_file};"
rm -f "${backup_session_variables_file}"
)
exit_flag="$?"
-echo "#### 5. check if need backup doris logs"
+echo "#### 7. check if need backup doris logs"
if [[ ${exit_flag} != "0" ]]; then
stop_doris
print_doris_fe_log
diff --git a/regression-test/pipeline/performance/run-load.sh b/regression-test/pipeline/performance/run-load.sh
index 784ac38aaf..47664b5ecf 100644
--- a/regression-test/pipeline/performance/run-load.sh
+++ b/regression-test/pipeline/performance/run-load.sh
@@ -36,7 +36,7 @@ EOF
# restart_doris, set_session_variable
source "${teamcity_build_checkoutDir}"/regression-test/pipeline/common/doris-utils.sh
# shellcheck source=/dev/null
-# create_an_issue_comment
+# create_an_issue_comment_load
source "${teamcity_build_checkoutDir}"/regression-test/pipeline/common/github-utils.sh
# shellcheck source=/dev/null
# upload_doris_log_to_oss
@@ -45,14 +45,13 @@ source "${teamcity_build_checkoutDir}"/regression-test/pipeline/common/oss-utils
if ${DEBUG:-false}; then
pull_request_num="28431"
commit_id="5f5c4c80564c76ff4267fc4ce6a5408498ed1ab5"
+ target_branch="master"
fi
echo "#### Check env"
-if [[ -z "${teamcity_build_checkoutDir}" ||
- -z "${pull_request_num}" ||
- -z "${commit_id}" ]]; then
- echo "ERROR: env teamcity_build_checkoutDir or pull_request_num or commit_id not set"
- exit 1
-fi
+if [[ -z "${teamcity_build_checkoutDir}" ]]; then echo "ERROR: env teamcity_build_checkoutDir not set" && exit 1; fi
+if [[ -z "${pull_request_num}" ]]; then echo "ERROR: env pull_request_num not set" && exit 1; fi
+if [[ -z "${commit_id}" ]]; then echo "ERROR: env commit_id not set" && exit 1; fi
+if [[ -z "${target_branch}" ]]; then echo "ERROR: env target_branch not set" && exit 1; fi
# shellcheck source=/dev/null
source "$(bash "${teamcity_build_checkoutDir}"/regression-test/pipeline/common/get-or-set-tmp-env.sh 'get')"
@@ -77,7 +76,7 @@ exit_flag=0
shopt -s inherit_errexit
stream_load_json() {
- echo "#### create table"
+ echo "## create table"
ddl="
CREATE TABLE IF NOT EXISTS hits_json (
CounterID INT NOT NULL,
@@ -191,7 +190,7 @@ exit_flag=0
PROPERTIES (\"replication_num\"=\"1\");
"
${clt} -D"${DB}" -e"${ddl}"
- echo "#### load data"
+ echo "## load data"
if [[ ! -d "${data_home}" ]]; then mkdir -p "${data_home}"; fi
if [[ ! -f "${data_home}"/hits.json.1000000 ]] || [[ $(wc -c "${data_home}"/hits.json.1000000 | awk '{print $1}') != '2358488459' ]]; then
cd "${data_home}"
@@ -212,7 +211,7 @@ exit_flag=0
sleep 5
if [[ $(${clt} -D"${DB}" -e"select count(*) from hits_json" | sed -n '2p') != 1000000 ]]; then echo "check load fail..." && return 1; fi
- echo "#### record load test result"
+ echo "## record load test result"
stream_load_json_size=$(echo "${ret}" | jq '.LoadBytes')
stream_load_json_time=$(printf "%.0f" "$(echo "scale=1;$(echo "${ret}" | jq '.LoadTimeMs')/1000" | bc)")
stream_load_json_speed=$(echo "${stream_load_json_size} / 1024 / 1024/ ${stream_load_json_time}" | bc)
@@ -222,7 +221,7 @@ exit_flag=0
}
stream_load_orc() {
- echo "#### create table"
+ echo "## create table"
ddl="
CREATE TABLE IF NOT EXISTS hits_orc (
CounterID INT NOT NULL,
@@ -336,7 +335,7 @@ exit_flag=0
PROPERTIES (\"replication_num\"=\"1\");
"
${clt} -D"${DB}" -e"${ddl}"
- echo "#### load data"
+ echo "## load data"
if [[ ! -d "${data_home}" ]]; then mkdir -p "${data_home}"; fi
if [[ ! -f "${data_home}"/hits_0.orc ]] || [[ $(wc -c "${data_home}"/hits_0.orc | awk '{print $1}') != '1101869774' ]]; then
cd "${data_home}"
@@ -355,7 +354,7 @@ exit_flag=0
sleep 5
if [[ $(${clt} -D"${DB}" -e"select count(*) from hits_orc" | sed -n '2p') != 8800160 ]]; then echo "check load fail..." && return 1; fi
- echo "#### record load test result"
+ echo "## record load test result"
stream_load_orc_size=$(echo "${ret}" | jq '.LoadBytes')
stream_load_orc_time=$(printf "%.0f" "$(echo "scale=1;$(echo "${ret}" | jq '.LoadTimeMs')/1000" | bc)")
stream_load_orc_speed=$(echo "${stream_load_orc_size} / 1024 / 1024/ ${stream_load_orc_time}" | bc)
@@ -365,7 +364,7 @@ exit_flag=0
}
stream_load_parquet() {
- echo "#### create table"
+ echo "## create table"
ddl="
CREATE TABLE IF NOT EXISTS hits_parquet (
CounterID INT NOT NULL,
@@ -479,7 +478,7 @@ exit_flag=0
PROPERTIES (\"replication_num\"=\"1\");
"
${clt} -D"${DB}" -e"${ddl}"
- echo "#### load data"
+ echo "## load data"
stream_load_parquet_size=0
stream_load_parquet_time=0
if [[ ! -d "${data_home}" ]]; then mkdir -p "${data_home}"; fi
@@ -507,7 +506,7 @@ exit_flag=0
sleep 5
if [[ $(${clt} -D"${DB}" -e"select count(*) from hits_parquet" | sed -n '2p') != 5000000 ]]; then echo "check load fail..." && return 1; fi
- echo "#### record load test result"
+ echo "## record load test result"
stream_load_parquet_speed=$(echo "${stream_load_parquet_size} / 1024 / 1024/ ${stream_load_parquet_time}" | bc)
export stream_load_parquet_size
export stream_load_parquet_time
@@ -515,7 +514,7 @@ exit_flag=0
}
insert_into_select() {
- echo "#### create table"
+ echo "## create table"
ddl="
CREATE TABLE IF NOT EXISTS hits_insert_into_select (
CounterID INT NOT NULL,
@@ -630,7 +629,7 @@ exit_flag=0
"
${clt} -D"${DB}" -e"${ddl}"
- echo "#### load data by INSERT INTO SELECT"
+ echo "## load data by INSERT INTO SELECT"
insert_into_select_time=0
insert_into_select_rows=10000000
start=$(date +%s%3N)
@@ -644,7 +643,7 @@ exit_flag=0
sleep 5
if [[ $(${clt} -D"${DB}" -e"select count(*) from hits_insert_into_select" | sed -n '2p') != "${insert_into_select_rows}" ]]; then echo "check load fail..." && return 1; fi
- echo "#### record load test result"
+ echo "## record load test result"
insert_into_select_speed=$(echo "${insert_into_select_rows} / 1000 / ${insert_into_select_time}" | bc)
export insert_into_select_rows
export insert_into_select_time
@@ -652,9 +651,14 @@ exit_flag=0
}
echo "#### 1. Restart doris"
+ cp -f "${teamcity_build_checkoutDir}"/regression-test/pipeline/performance/conf/fe_custom.conf "${DORIS_HOME}"/fe/conf/
+ cp -f "${teamcity_build_checkoutDir}"/regression-test/pipeline/performance/conf/be_custom.conf "${DORIS_HOME}"/be/conf/
+ target_branch="$(echo "${target_branch}" | sed 's| ||g;s|\.||g;s|-||g')" # remove space、dot、hyphen from branch name
+ sed -i "s|^meta_dir=/data/doris-meta-\${branch_name}|meta_dir=/data/doris-meta-${target_branch}|g" "${DORIS_HOME}"/fe/conf/fe_custom.conf
+ sed -i "s|^storage_root_path=/data/doris-storage-\${branch_name}|storage_root_path=/data/doris-storage-${target_branch}|g" "${DORIS_HOME}"/be/conf/be_custom.conf
if ! restart_doris; then echo "ERROR: Restart doris failed" && exit 1; fi
- echo "#### 3. run streamload test"
+ echo "#### 2. run load test"
set_session_variable runtime_filter_mode global
${clt} -e "DROP DATABASE IF EXISTS ${DB}" && sleep 1
${clt} -e "CREATE DATABASE IF NOT EXISTS ${DB}" && sleep 5
@@ -662,22 +666,28 @@ exit_flag=0
if ! stream_load_orc; then exit 1; fi
if ! stream_load_parquet; then exit 1; fi
if ! insert_into_select; then exit 1; fi
- if ! check_load_performance; then exit 1; fi
+
+ echo "#### 3. check load performance"
+ if [[ ${stream_load_json_speed} -lt ${stream_load_json_speed_threshold} ]]; then echo "ERROR: stream_load_json_speed ${stream_load_json_speed} is less than the threshold ${stream_load_json_speed_threshold}" && exit 1; fi
+ if [[ ${stream_load_orc_speed} -lt ${stream_load_orc_speed_threshold} ]]; then echo "ERROR: stream_load_json_speed ${stream_load_orc_speed} is less than the threshold ${stream_load_orc_speed_threshold}" && exit 1; fi
+ if [[ ${stream_load_parquet_speed} -lt ${stream_load_parquet_speed_threshold} ]]; then echo "ERROR: stream_load_json_speed ${stream_load_parquet_speed} is less than the threshold ${stream_load_parquet_speed_threshold}" && exit 1; fi
+ if [[ ${insert_into_select_speed} -lt ${insert_into_select_speed_threshold} ]]; then echo "ERROR: stream_load_json_speed ${insert_into_select_speed} is less than the threshold ${insert_into_select_speed_threshold}" && exit 1; fi
echo "#### 4. comment result on tpch"
- comment_body="Load test result on commit ${commit_id:-} with default conf and session variables"
+ comment_body="Load test result on commit ${commit_id:-} with default session variables"
if [[ -n ${stream_load_json_time} ]]; then comment_body="${comment_body}\n stream load json: ${stream_load_json_time} seconds loaded ${stream_load_json_size} Bytes, about ${stream_load_json_speed} MB/s"; fi
if [[ -n ${stream_load_orc_time} ]]; then comment_body="${comment_body}\n stream load orc: ${stream_load_orc_time} seconds loaded ${stream_load_orc_size} Bytes, about ${stream_load_orc_speed} MB/s"; fi
- if [[ -n ${stream_load_parquet_time} ]]; then comment_body="${comment_body}\n stream load parquet: ${stream_load_parquet_time} seconds loaded ${stream_load_parquet_size} Bytes, about ${stream_load_parquet_speed} MB/s"; fi
- if [[ -n ${insert_into_select_time} ]]; then comment_body="${comment_body}\n insert into select: ${insert_into_select_time} seconds inserted ${insert_into_select_rows} Rows, about ${insert_into_select_speed}K ops/s"; fi
+ if [[ -n ${stream_load_parquet_time} ]]; then comment_body="${comment_body}\n stream load parquet: ${stream_load_parquet_time} seconds loaded ${stream_load_parquet_size} Bytes, about ${stream_load_parquet_speed} MB/s"; fi
+ if [[ -n ${insert_into_select_time} ]]; then comment_body="${comment_body}\n insert into select: ${insert_into_select_time} seconds inserted ${insert_into_select_rows} Rows, about ${insert_into_select_speed}K ops/s"; fi
comment_body=$(echo "${comment_body}" | sed -e ':a;N;$!ba;s/\t/\\t/g;s/\n/\\n/g') # 将所有的 Tab字符替换为\t 换行符替换为\n
- create_an_issue_comment_tpch "${pull_request_num:-}" "${comment_body}"
+ create_an_issue_comment_load "${pull_request_num:-}" "${comment_body}"
)
exit_flag="$?"
echo "#### 5. check if need backup doris logs"
if [[ ${exit_flag} != "0" ]]; then
+ stop_doris
print_doris_fe_log
print_doris_be_log
if file_name=$(archive_doris_logs "${pull_request_num}_${commit_id}_doris_logs.tar.gz"); then
diff --git a/regression-test/pipeline/performance/run-tpcds.sh b/regression-test/pipeline/performance/run-tpcds.sh
index 0684454ca4..bff7a9872d 100644
--- a/regression-test/pipeline/performance/run-tpcds.sh
+++ b/regression-test/pipeline/performance/run-tpcds.sh
@@ -45,15 +45,14 @@ source "${teamcity_build_checkoutDir}"/regression-test/pipeline/common/oss-utils
if ${DEBUG:-false}; then
pull_request_num="28431"
commit_id="5f5c4c80564c76ff4267fc4ce6a5408498ed1ab5"
+ target_branch="master"
SF="1"
fi
echo "#### Check env"
-if [[ -z "${teamcity_build_checkoutDir}" ||
- -z "${pull_request_num}" ||
- -z "${commit_id}" ]]; then
- echo "ERROR: env teamcity_build_checkoutDir or pull_request_num or commit_id not set"
- exit 1
-fi
+if [[ -z "${teamcity_build_checkoutDir}" ]]; then echo "ERROR: env teamcity_build_checkoutDir not set" && exit 1; fi
+if [[ -z "${pull_request_num}" ]]; then echo "ERROR: env pull_request_num not set" && exit 1; fi
+if [[ -z "${commit_id}" ]]; then echo "ERROR: env commit_id not set" && exit 1; fi
+if [[ -z "${target_branch}" ]]; then echo "ERROR: env target_branch not set" && exit 1; fi
# shellcheck source=/dev/null
source "$(bash "${teamcity_build_checkoutDir}"/regression-test/pipeline/common/get-or-set-tmp-env.sh 'get')"
@@ -131,14 +130,16 @@ exit_flag=0
if ! check_tpcds_result "${teamcity_build_checkoutDir}"/run-tpcds-queries.log; then exit 1; fi
line_end=$(sed -n '/^Total hot run time/=' "${teamcity_build_checkoutDir}"/run-tpcds-queries.log)
line_begin=$((line_end - 100))
- comment_body="TPC-DS sf${SF} test result on commit ${commit_id:-}, data reload: ${data_reload:-"false"}
+ comment_body_summary="$(sed -n "${line_end}p" "${teamcity_build_checkoutDir}"/run-tpcds-queries.log)"
+ comment_body_detail="TPC-DS sf${SF} test result on commit ${commit_id:-}, data reload: ${data_reload:-"false"}
run tpcds-sf${SF} query with default conf and session variables
$(sed -n "${line_begin},${line_end}p" "${teamcity_build_checkoutDir}"/run-tpcds-queries.log)"
echo "#### 4. comment result on tpcds"
- comment_body=$(echo "${comment_body}" | sed -e ':a;N;$!ba;s/\t/\\t/g;s/\n/\\n/g') # 将所有的 Tab字符替换为\t 换行符替换为\n
- create_an_issue_comment_tpcds "${pull_request_num:-}" "${comment_body}"
+ comment_body_summary=$(echo "${comment_body_summary}" | sed -e ':a;N;$!ba;s/\t/\\t/g;s/\n/\\n/g') # 将所有的 Tab字符替换为\t 换行符替换为\n
+ comment_body_detail=$(echo "${comment_body_detail}" | sed -e ':a;N;$!ba;s/\t/\\t/g;s/\n/\\n/g') # 将所有的 Tab字符替换为\t 换行符替换为\n
+ create_an_issue_comment_tpcds "${pull_request_num:-}" "${comment_body_summary}" "${comment_body_detail}"
rm -f result.csv
)
exit_flag="$?"
diff --git a/regression-test/pipeline/performance/run-tpch.sh b/regression-test/pipeline/performance/run-tpch.sh
index d3e408eef8..a8f5dcdd30 100644
--- a/regression-test/pipeline/performance/run-tpch.sh
+++ b/regression-test/pipeline/performance/run-tpch.sh
@@ -45,15 +45,14 @@ source "${teamcity_build_checkoutDir}"/regression-test/pipeline/common/oss-utils
if ${DEBUG:-false}; then
pull_request_num="28431"
commit_id="5f5c4c80564c76ff4267fc4ce6a5408498ed1ab5"
+ target_branch="master"
SF="1"
fi
echo "#### Check env"
-if [[ -z "${teamcity_build_checkoutDir}" ||
- -z "${pull_request_num}" ||
- -z "${commit_id}" ]]; then
- echo "ERROR: env teamcity_build_checkoutDir or pull_request_num or commit_id not set"
- exit 1
-fi
+if [[ -z "${teamcity_build_checkoutDir}" ]]; then echo "ERROR: env teamcity_build_checkoutDir not set" && exit 1; fi
+if [[ -z "${pull_request_num}" ]]; then echo "ERROR: env pull_request_num not set" && exit 1; fi
+if [[ -z "${commit_id}" ]]; then echo "ERROR: env commit_id not set" && exit 1; fi
+if [[ -z "${target_branch}" ]]; then echo "ERROR: env target_branch not set" && exit 1; fi
# shellcheck source=/dev/null
source "$(bash "${teamcity_build_checkoutDir}"/regression-test/pipeline/common/get-or-set-tmp-env.sh 'get')"
@@ -123,7 +122,8 @@ exit_flag=0
if ! check_tpch_result "${teamcity_build_checkoutDir}"/run-tpch-queries.log; then exit 1; fi
line_end=$(sed -n '/^Total hot run time/=' "${teamcity_build_checkoutDir}"/run-tpch-queries.log)
line_begin=$((line_end - 23))
- comment_body="Tpch sf${SF} test result on commit ${commit_id:-}, data reload: ${data_reload:-"false"}
+ comment_body_summary="$(sed -n "${line_end}p" "${teamcity_build_checkoutDir}"/run-tpch-queries.log)"
+ comment_body_detail="Tpch sf${SF} test result on commit ${commit_id:-}, data reload: ${data_reload:-"false"}
------ Round 1 ----------------------------------
$(sed -n "${line_begin},${line_end}p" "${teamcity_build_checkoutDir}"/run-tpch-queries.log)"
@@ -134,14 +134,15 @@ $(sed -n "${line_begin},${line_end}p" "${teamcity_build_checkoutDir}"/run-tpch-q
if ! grep '^Total hot run time' "${teamcity_build_checkoutDir}"/run-tpch-queries.log >/dev/null; then exit 1; fi
line_end=$(sed -n '/^Total hot run time/=' "${teamcity_build_checkoutDir}"/run-tpch-queries.log)
line_begin=$((line_end - 23))
- comment_body="${comment_body}
+ comment_body_detail="${comment_body_detail}
----- Round 2, with runtime_filter_mode=off -----
$(sed -n "${line_begin},${line_end}p" "${teamcity_build_checkoutDir}"/run-tpch-queries.log)"
echo "#### 5. comment result on tpch"
- comment_body=$(echo "${comment_body}" | sed -e ':a;N;$!ba;s/\t/\\t/g;s/\n/\\n/g') # 将所有的 Tab字符替换为\t 换行符替换为\n
- create_an_issue_comment_tpch "${pull_request_num:-}" "${comment_body}"
+ comment_body_summary="$(echo "${comment_body_summary}" | sed -e ':a;N;$!ba;s/\t/\\t/g;s/\n/\\n/g')" # 将所有的 Tab字符替换为\t 换行符替换为\n
+ comment_body_detail="$(echo "${comment_body_detail}" | sed -e ':a;N;$!ba;s/\t/\\t/g;s/\n/\\n/g')" # 将所有的 Tab字符替换为\t 换行符替换为\n
+ create_an_issue_comment_tpch "${pull_request_num:-}" "${comment_body_summary}" "${comment_body_detail}"
rm -f result.csv
)
exit_flag="$?"