From 165fd7555bfd24cb1bd4e0ce405602a3f8816714 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9Chappyguoxy=E2=80=9D?= <“happy_guoxy@163.com”> Date: Thu, 1 Feb 2024 10:38:09 +0800 Subject: [PATCH 1/6] test: add agg group not return value cases --- .../2-query/agg_group_NotReturnValue.py | 1606 +++++++++++++++++ 1 file changed, 1606 insertions(+) create mode 100755 tests/system-test/2-query/agg_group_NotReturnValue.py diff --git a/tests/system-test/2-query/agg_group_NotReturnValue.py b/tests/system-test/2-query/agg_group_NotReturnValue.py new file mode 100755 index 0000000000..d25395cbbd --- /dev/null +++ b/tests/system-test/2-query/agg_group_NotReturnValue.py @@ -0,0 +1,1606 @@ +################################################################### +# Copyright (c) 2016 by TAOS Technologies, Inc. +# All rights reserved. +# +# This file is proprietary and confidential to TAOS Technologies. +# No part of this file may be reproduced, stored, transmitted, +# disclosed or used in any form or by any means other than as +# expressly provided by the written permission from Jianhui Tao +# +################################################################### + +# -*- coding: utf-8 -*- +from util.cases import tdCases +#from .nestedQueryInterval import * +from .nestedQuery import * +from faker import Faker +import random + +class TDTestCase(TDTestCase): + updatecfgDict = {'countAlwaysReturnValue':0} + + def data_check_tbname(self,sql,groupby='Y',partitionby='Y',base_fun='',replace_fun='',base_column='',replace_column=''): + + if groupby=='Y': + sql = sql.replace(f'{base_fun}',f'{replace_fun}').replace(f'{base_column}',f'{replace_column}') + tdSql.query(sql) + tdSql.checkRows(12) + tdSql.checkData(0, 1, 100) + tdSql.checkData(1, 1, 200) + tdSql.checkData(2, 1, 00) + tdSql.checkData(3, 1, 0) + tdSql.checkData(4, 1, 00) + tdSql.checkData(5, 1, 0) + tdSql.checkData(6, 1, 0) + tdSql.checkData(7, 1, 00) + tdSql.checkData(8, 1, 00) + tdSql.checkData(9, 1, 0) + tdSql.checkData(10, 1, 00) + tdSql.checkData(11, 1, 0) + elif groupby=='UNIONALL': + sql = sql.replace(f'{base_fun}',f'{replace_fun}').replace(f'{base_column}',f'{replace_column}') + tdSql.query(sql) + tdSql.checkRows(24) + tdSql.checkData(0, 1, 100) + tdSql.checkData(1, 1, 100) + tdSql.checkData(2, 1, 200) + tdSql.checkData(3, 1, 200) + tdSql.checkData(4, 1, 00) + tdSql.checkData(5, 1, 0) + tdSql.checkData(6, 1, 0) + tdSql.checkData(7, 1, 00) + tdSql.checkData(8, 1, 00) + tdSql.checkData(9, 1, 0) + tdSql.checkData(10, 1, 00) + tdSql.checkData(11, 1, 0) + elif groupby=='UNIONALLNULL': + sql = sql.replace(f'{base_fun}',f'{replace_fun}').replace(f'{base_column}',f'{replace_column}') + tdSql.query(sql) + tdSql.checkRows(24) + tdSql.checkData(0, 1, 0) + tdSql.checkData(1, 1, 00) + tdSql.checkData(2, 1, 00) + tdSql.checkData(3, 1, 0) + tdSql.checkData(4, 1, 00) + tdSql.checkData(5, 1, 0) + tdSql.checkData(6, 1, 0) + tdSql.checkData(7, 1, 00) + tdSql.checkData(8, 1, 00) + tdSql.checkData(9, 1, 0) + tdSql.checkData(10, 1, 00) + tdSql.checkData(11, 1, 0) + elif groupby=='NULL': + sql = sql.replace(f'{base_fun}',f'{replace_fun}').replace(f'{base_column}',f'{replace_column}') + tdSql.query(sql) + tdSql.checkRows(12) + tdSql.checkData(0, 1, 0) + tdSql.checkData(1, 1, 0) + tdSql.checkData(2, 1, 00) + tdSql.checkData(3, 1, 0) + tdSql.checkData(4, 1, 00) + tdSql.checkData(5, 1, 0) + tdSql.checkData(6, 1, 0) + tdSql.checkData(7, 1, 00) + tdSql.checkData(8, 1, 00) + tdSql.checkData(9, 1, 0) + tdSql.checkData(10, 1, 00) + tdSql.checkData(11, 1, 0) + elif groupby=='HAVING=0': + sql = sql.replace(f'{base_fun}',f'{replace_fun}').replace(f'{base_column}',f'{replace_column}') + tdSql.query(sql) + tdSql.checkRows(10) + tdSql.checkData(0, 1, 0) + tdSql.checkData(1, 1, 0) + tdSql.checkData(2, 1, 00) + tdSql.checkData(3, 1, 0) + tdSql.checkData(4, 1, 00) + tdSql.checkData(5, 1, 0) + tdSql.checkData(6, 1, 0) + tdSql.checkData(7, 1, 00) + tdSql.checkData(8, 1, 00) + tdSql.checkData(9, 1, 0) + elif groupby=='HAVING>0': + sql = sql.replace(f'{base_fun}',f'{replace_fun}').replace(f'{base_column}',f'{replace_column}') + tdSql.query(sql) + tdSql.checkRows(2) + tdSql.checkData(0, 1, 100) + tdSql.checkData(1, 1, 200) + elif groupby=='HAVING>04': + sql = sql.replace(f'{base_fun}',f'{replace_fun}').replace(f'{base_column}',f'{replace_column}') + tdSql.query(sql) + tdSql.checkRows(4) + tdSql.checkData(0, 1, 100) + tdSql.checkData(1, 1, 100) + tdSql.checkData(2, 1, 200) + tdSql.checkData(3, 1, 200) + elif groupby=='HAVINGCOLUMN=0': + sql = sql.replace(f'{base_fun}',f'{replace_fun}').replace(f'{base_column}',f'{replace_column}') + tdSql.query(sql) + tdSql.checkRows(2) + tdSql.checkData(0, 1, 0) + tdSql.checkData(1, 1, 0) + elif groupby=='NOTSUPPORT': + sql = sql.replace(f'{base_fun}',f'{replace_fun}').replace(f'{base_column}',f'{replace_column}') + tdSql.query(sql) + tdSql.checkRows(2) + tdSql.checkData(0, 1, 0) + tdSql.checkData(1, 1, 0) + elif groupby=='AGG0': + sql = sql.replace(f'{base_fun}',f'{replace_fun}').replace(f'{base_column}',f'{replace_column}') + tdSql.query(sql) + tdSql.checkRows(0) + elif groupby=='AGG2': + sql = sql.replace(f'{base_fun}',f'{replace_fun}').replace(f'{base_column}',f'{replace_column}') + tdSql.query(sql) + tdSql.checkRows(2) + elif groupby=='AGG2_NULL': + sql = sql.replace(f'{base_fun}',f'{replace_fun}').replace(f'{base_column}',f'{replace_column}') + tdSql.query(sql) + tdSql.checkRows(2) + tdSql.checkData(0, 1, 'None') + tdSql.checkData(1, 1, 'None') + elif groupby=='AGG4': + sql = sql.replace(f'{base_fun}',f'{replace_fun}').replace(f'{base_column}',f'{replace_column}') + tdSql.query(sql) + tdSql.checkRows(4) + elif groupby=='AGG4_NULL': + sql = sql.replace(f'{base_fun}',f'{replace_fun}').replace(f'{base_column}',f'{replace_column}') + tdSql.query(sql) + tdSql.checkRows(4) + tdSql.checkData(0, 1, 'None') + tdSql.checkData(1, 1, 'None') + elif groupby=='AGG10': + sql = sql.replace(f'{base_fun}',f'{replace_fun}').replace(f'{base_column}',f'{replace_column}') + tdSql.query(sql) + tdSql.checkRows(10) + elif groupby=='AGG12': + sql = sql.replace(f'{base_fun}',f'{replace_fun}').replace(f'{base_column}',f'{replace_column}') + tdSql.query(sql) + tdSql.checkRows(12) + elif groupby=='AGG20': + sql = sql.replace(f'{base_fun}',f'{replace_fun}').replace(f'{base_column}',f'{replace_column}') + tdSql.query(sql) + tdSql.checkRows(20) + elif groupby=='AGG24': + sql = sql.replace(f'{base_fun}',f'{replace_fun}').replace(f'{base_column}',f'{replace_column}') + tdSql.query(sql) + tdSql.checkRows(24) + else: + sql = sql.replace(f'{base_fun}',f'{replace_fun}').replace(f'{base_column}',f'{replace_column}') + tdSql.query(sql) + tdSql.checkRows(12) + + + if partitionby=='Y': + sql = sql.replace(f'{base_fun}',f'{replace_fun}').replace(f'{base_column}',f'{replace_column}') + sql = sql.replace('group','partition') + tdSql.query(sql) + tdSql.checkRows(12) + tdSql.checkData(0, 1, 100) + tdSql.checkData(1, 1, 200) + tdSql.checkData(2, 1, 00) + tdSql.checkData(3, 1, 0) + tdSql.checkData(4, 1, 00) + tdSql.checkData(5, 1, 0) + tdSql.checkData(6, 1, 0) + tdSql.checkData(7, 1, 00) + tdSql.checkData(8, 1, 00) + tdSql.checkData(9, 1, 0) + tdSql.checkData(10, 1, 00) + tdSql.checkData(11, 1, 0) + elif groupby=='UNIONALL': + sql = sql.replace(f'{base_fun}',f'{replace_fun}').replace(f'{base_column}',f'{replace_column}') + sql = sql.replace('group','partition') + tdSql.query(sql) + tdSql.checkRows(24) + tdSql.checkData(0, 1, 100) + tdSql.checkData(1, 1, 100) + tdSql.checkData(2, 1, 200) + tdSql.checkData(3, 1, 200) + tdSql.checkData(4, 1, 00) + tdSql.checkData(5, 1, 0) + tdSql.checkData(6, 1, 0) + tdSql.checkData(7, 1, 00) + tdSql.checkData(8, 1, 00) + tdSql.checkData(9, 1, 0) + tdSql.checkData(10, 1, 00) + tdSql.checkData(11, 1, 0) + elif groupby=='UNIONALLNULL': + sql = sql.replace(f'{base_fun}',f'{replace_fun}').replace(f'{base_column}',f'{replace_column}') + sql = sql.replace('group','partition') + tdSql.query(sql) + tdSql.checkRows(24) + tdSql.checkData(0, 1, 00) + tdSql.checkData(1, 1, 00) + tdSql.checkData(2, 1, 00) + tdSql.checkData(3, 1, 0) + tdSql.checkData(4, 1, 00) + tdSql.checkData(5, 1, 0) + tdSql.checkData(6, 1, 0) + tdSql.checkData(7, 1, 00) + tdSql.checkData(8, 1, 00) + tdSql.checkData(9, 1, 0) + tdSql.checkData(10, 1, 00) + tdSql.checkData(11, 1, 0) + elif partitionby=='NULL': + sql = sql.replace(f'{base_fun}',f'{replace_fun}').replace(f'{base_column}',f'{replace_column}') + sql = sql.replace('group','partition') + tdSql.query(sql) + tdSql.checkRows(12) + tdSql.checkData(0, 1, 0) + tdSql.checkData(1, 1, 0) + tdSql.checkData(2, 1, 00) + tdSql.checkData(3, 1, 0) + tdSql.checkData(4, 1, 00) + tdSql.checkData(5, 1, 0) + tdSql.checkData(6, 1, 0) + tdSql.checkData(7, 1, 00) + tdSql.checkData(8, 1, 00) + tdSql.checkData(9, 1, 0) + tdSql.checkData(10, 1, 00) + tdSql.checkData(11, 1, 0) + elif partitionby=='HAVING=0': + sql = sql.replace(f'{base_fun}',f'{replace_fun}').replace(f'{base_column}',f'{replace_column}') + sql = sql.replace('group','partition') + tdSql.query(sql) + tdSql.checkRows(10) + tdSql.checkData(0, 1, 0) + tdSql.checkData(1, 1, 0) + tdSql.checkData(2, 1, 00) + tdSql.checkData(3, 1, 0) + tdSql.checkData(4, 1, 00) + tdSql.checkData(5, 1, 0) + tdSql.checkData(6, 1, 0) + tdSql.checkData(7, 1, 00) + tdSql.checkData(8, 1, 00) + tdSql.checkData(9, 1, 0) + elif partitionby=='HAVING>0': + sql = sql.replace(f'{base_fun}',f'{replace_fun}').replace(f'{base_column}',f'{replace_column}') + sql = sql.replace('group','partition') + tdSql.query(sql) + tdSql.checkRows(2) + tdSql.checkData(0, 1, 100) + tdSql.checkData(1, 1, 200) + elif partitionby=='HAVING>04': + sql = sql.replace(f'{base_fun}',f'{replace_fun}').replace(f'{base_column}',f'{replace_column}') + tdSql.query(sql) + tdSql.checkRows(4) + tdSql.checkData(0, 1, 100) + tdSql.checkData(1, 1, 100) + tdSql.checkData(2, 1, 200) + tdSql.checkData(3, 1, 200) + elif partitionby=='HAVINGCOLUMN=0': + sql = sql.replace(f'{base_fun}',f'{replace_fun}').replace(f'{base_column}',f'{replace_column}') + sql = sql.replace('group','partition') + tdSql.query(sql) + tdSql.checkRows(2) + tdSql.checkData(0, 1, 0) + tdSql.checkData(1, 1, 0) + elif partitionby=='NOTSUPPORT': + sql = sql.replace(f'{base_fun}',f'{replace_fun}').replace(f'{base_column}',f'{replace_column}') + sql = sql.replace('group','partition') + tdSql.query(sql) + tdSql.checkRows(2) + tdSql.checkData(0, 1, 0) + tdSql.checkData(1, 1, 0) + elif partitionby=='AGG0': + sql = sql.replace(f'{base_fun}',f'{replace_fun}').replace(f'{base_column}',f'{replace_column}') + sql = sql.replace('group','partition') + tdSql.query(sql) + tdSql.checkRows(0) + elif partitionby=='AGG2': + sql = sql.replace(f'{base_fun}',f'{replace_fun}').replace(f'{base_column}',f'{replace_column}') + sql = sql.replace('group','partition') + tdSql.query(sql) + tdSql.checkRows(2) + elif partitionby=='AGG2_NULL': + sql = sql.replace(f'{base_fun}',f'{replace_fun}').replace(f'{base_column}',f'{replace_column}') + tdSql.query(sql) + tdSql.checkRows(2) + tdSql.checkData(0, 1, 'None') + tdSql.checkData(1, 1, 'None') + elif partitionby=='AGG4': + sql = sql.replace(f'{base_fun}',f'{replace_fun}').replace(f'{base_column}',f'{replace_column}') + sql = sql.replace('group','partition') + tdSql.query(sql) + tdSql.checkRows(4) + elif partitionby=='AGG4_NULL': + sql = sql.replace(f'{base_fun}',f'{replace_fun}').replace(f'{base_column}',f'{replace_column}') + tdSql.query(sql) + tdSql.checkRows(4) + tdSql.checkData(0, 1, 'None') + tdSql.checkData(1, 1, 'None') + elif partitionby=='AGG10': + sql = sql.replace(f'{base_fun}',f'{replace_fun}').replace(f'{base_column}',f'{replace_column}') + sql = sql.replace('group','partition') + tdSql.query(sql) + tdSql.checkRows(10) + elif partitionby=='AGG12': + sql = sql.replace(f'{base_fun}',f'{replace_fun}').replace(f'{base_column}',f'{replace_column}') + sql = sql.replace('group','partition') + tdSql.query(sql) + tdSql.checkRows(12) + elif partitionby=='AGG20': + sql = sql.replace(f'{base_fun}',f'{replace_fun}').replace(f'{base_column}',f'{replace_column}') + sql = sql.replace('group','partition') + tdSql.query(sql) + tdSql.checkRows(20) + elif partitionby=='AGG24': + sql = sql.replace(f'{base_fun}',f'{replace_fun}').replace(f'{base_column}',f'{replace_column}') + sql = sql.replace('group','partition') + tdSql.query(sql) + tdSql.checkRows(24) + else: + sql = sql.replace(f'{base_fun}',f'{replace_fun}').replace(f'{base_column}',f'{replace_column}') + sql = sql.replace('group','partition') + tdSql.query(sql) + tdSql.checkRows(12) + + + def tbname_count(self, dbname="nested",base_fun="AGG",replace_fun="COUNT",base_column="COLUMN",replace_column="q_int",execute="Y"): + + # stable count(*) + sql = f"select tbname,AGG(COLUMN) from {dbname}.stable_1 group by tbname order by tbname " + self.data_check_tbname(sql,'HAVING>0','HAVING>0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql1 = f"select * from ({sql})" + self.data_check_tbname(sql1,'HAVING>0','HAVING>0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql2 = f"select * from ({sql}) order by tbname " + self.data_check_tbname(sql2,'HAVING>0','HAVING>0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + #where null \ not null + sql = f"select tbname,AGG(COLUMN) from {dbname}.stable_1 where ts is not null group by tbname order by tbname " + self.data_check_tbname(sql,'HAVING>0','HAVING>0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql1 = f"select * from ({sql})" + self.data_check_tbname(sql1,'HAVING>0','HAVING>0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql2 = f"select * from ({sql}) order by tbname " + self.data_check_tbname(sql2,'HAVING>0','HAVING>0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql = f"select tbname,AGG(COLUMN) from {dbname}.stable_1 where ts is null group by tbname order by tbname " + self.data_check_tbname(sql,'AGG0','AGG0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql1 = f"select * from ({sql})" + self.data_check_tbname(sql1,'AGG0','AGG0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql2 = f"select * from ({sql}) order by tbname " + self.data_check_tbname(sql2,'AGG0','AGG0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + #union + sql = f"select tbname tb,AGG(COLUMN) from {dbname}.stable_1 group by tbname order by tbname " + sql = f"({sql}) union ({sql}) order by tb" + self.data_check_tbname(sql,'HAVING>0','HAVING>0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql1 = f"select * from ({sql})" + self.data_check_tbname(sql1,'HAVING>0','HAVING>0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql2 = f"select * from ({sql}) order by tb " + self.data_check_tbname(sql2,'HAVING>0','HAVING>0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + #union all + sql = f"select tbname tb,AGG(COLUMN) from {dbname}.stable_1 group by tbname order by tbname " + sql = f"({sql}) union all ({sql}) order by tb" + self.data_check_tbname(sql,'HAVING>04','HAVING>04',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql1 = f"select * from ({sql})" + self.data_check_tbname(sql1,'HAVING>04','HAVING>04',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql2 = f"select * from ({sql}) order by tb " + self.data_check_tbname(sql2,'HAVING>04','HAVING>04',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + + #having <=0 + sql = f"select tbname,AGG(COLUMN) from {dbname}.stable_1 group by tbname having count(*) = 0 order by tbname " + self.data_check_tbname(sql,'AGG0','AGG0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql1 = f"select * from ({sql})" + self.data_check_tbname(sql1,'AGG0','AGG0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql2 = f"select * from ({sql}) order by tbname " + self.data_check_tbname(sql2,'AGG0','AGG0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql = f"select tbname,AGG(COLUMN) from {dbname}.stable_1 group by tbname having count(*) <= 0 order by tbname " + self.data_check_tbname(sql,'AGG0','AGG0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql1 = f"select * from ({sql})" + self.data_check_tbname(sql1,'AGG0','AGG0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql2 = f"select * from ({sql}) order by tbname " + self.data_check_tbname(sql2,'AGG0','AGG0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + + sql = f"select tbname,AGG(COLUMN) from {dbname}.stable_1 where ts is null group by tbname having count(*) <= 0 order by tbname " + self.data_check_tbname(sql,'AGG0','AGG0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql1 = f"select * from ({sql})" + self.data_check_tbname(sql1,'AGG0','AGG0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql2 = f"select * from ({sql}) order by tbname " + self.data_check_tbname(sql2,'AGG0','AGG0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + #count + having <=0 + sql = f"select tbname,AGG(COLUMN) from {dbname}.stable_1 group by tbname having AGG(COLUMN) = 0 order by tbname " + self.data_check_tbname(sql,'AGG0','AGG0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql1 = f"select * from ({sql})" + self.data_check_tbname(sql1,'AGG0','AGG0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql2 = f"select * from ({sql}) order by tbname " + self.data_check_tbname(sql2,'AGG0','AGG0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + + sql = f"select tbname,AGG(COLUMN) from {dbname}.stable_1 group by tbname having AGG(COLUMN) <= 0 order by tbname " + self.data_check_tbname(sql,'AGG0','AGG0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql1 = f"select * from ({sql})" + self.data_check_tbname(sql1,'AGG0','AGG0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql2 = f"select * from ({sql}) order by tbname " + self.data_check_tbname(sql2,'AGG0','AGG0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + + sql = f"select tbname,AGG(COLUMN) from {dbname}.stable_1 where ts is null group by tbname having AGG(COLUMN) = 0 order by tbname " + self.data_check_tbname(sql,'AGG0','AGG0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql1 = f"select * from ({sql})" + self.data_check_tbname(sql1,'AGG0','AGG0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql2 = f"select * from ({sql}) order by tbname " + self.data_check_tbname(sql2,'AGG0','AGG0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + #having >0 + sql = f"select tbname,AGG(COLUMN) from {dbname}.stable_1 group by tbname having count(*) != 0 order by tbname " + self.data_check_tbname(sql,'HAVING>0','HAVING>0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql1 = f"select * from ({sql})" + self.data_check_tbname(sql1,'HAVING>0','HAVING>0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql2 = f"select * from ({sql}) order by tbname " + self.data_check_tbname(sql2,'HAVING>0','HAVING>0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql = f"select tbname,AGG(COLUMN) from {dbname}.stable_1 group by tbname having count(*) > 0 order by tbname " + self.data_check_tbname(sql,'HAVING>0','HAVING>0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql1 = f"select * from ({sql})" + self.data_check_tbname(sql1,'HAVING>0','HAVING>0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql2 = f"select * from ({sql}) order by tbname " + self.data_check_tbname(sql2,'HAVING>0','HAVING>0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + + sql = f"select tbname,AGG(COLUMN) from {dbname}.stable_1 where ts is null group by tbname having count(*) > 0 order by tbname " + self.data_check_tbname(sql,'AGG0','AGG0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql1 = f"select * from ({sql})" + self.data_check_tbname(sql1,'AGG0','AGG0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql2 = f"select * from ({sql}) order by tbname " + self.data_check_tbname(sql2,'AGG0','AGG0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + #count + having >0 + sql = f"select tbname,AGG(COLUMN) from {dbname}.stable_1 group by tbname having AGG(COLUMN) != 0 order by tbname " + self.data_check_tbname(sql,'HAVING>0','HAVING>0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql1 = f"select * from ({sql})" + self.data_check_tbname(sql1,'HAVING>0','HAVING>0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql2 = f"select * from ({sql}) order by tbname " + self.data_check_tbname(sql2,'HAVING>0','HAVING>0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql = f"select tbname,AGG(COLUMN) from {dbname}.stable_1 group by tbname having AGG(COLUMN) > 0 order by tbname " + self.data_check_tbname(sql,'HAVING>0','HAVING>0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql1 = f"select * from ({sql})" + self.data_check_tbname(sql1,'HAVING>0','HAVING>0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql2 = f"select * from ({sql}) order by tbname " + self.data_check_tbname(sql2,'HAVING>0','HAVING>0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql = f"select tbname,AGG(COLUMN) from {dbname}.stable_1 where ts is null group by tbname having AGG(COLUMN) != 0 order by tbname " + self.data_check_tbname(sql,'AGG0','AGG0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql1 = f"select * from ({sql})" + self.data_check_tbname(sql1,'AGG0','AGG0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql2 = f"select * from ({sql}) order by tbname " + self.data_check_tbname(sql2,'AGG0','AGG0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + #order by count(*) + sql = f"select tbname,AGG(COLUMN) from {dbname}.stable_1 group by tbname order by tbname,count(*) " + self.data_check_tbname(sql,'HAVING>0','HAVING>0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql1 = f"select * from ({sql})" + self.data_check_tbname(sql1,'HAVING>0','HAVING>0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql2 = f"select * from ({sql}) order by tbname " + self.data_check_tbname(sql2,'HAVING>0','HAVING>0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql = f"select tbname,AGG(COLUMN) from {dbname}.stable_1 where ts is null group by tbname order by tbname,count(*) " + self.data_check_tbname(sql,'AGG0','AGG0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql1 = f"select * from ({sql})" + self.data_check_tbname(sql1,'AGG0','AGG0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql2 = f"select * from ({sql}) order by tbname " + self.data_check_tbname(sql2,'AGG0','AGG0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + def tbname_count_null(self, dbname="nested",base_fun="AGG",replace_fun="COUNT",base_column="COLUMN",replace_column="q_int",execute="Y"): + + # stable count(*) + sql = f"select tbname,AGG(COLUMN) from {dbname}.stable_1 group by tbname order by tbname " + self.data_check_tbname(sql,'AGG2_NULL','AGG2_NULL',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql1 = f"select * from ({sql})" + self.data_check_tbname(sql1,'AGG2_NULL','AGG2_NULL',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql2 = f"select * from ({sql}) order by tbname " + self.data_check_tbname(sql2,'AGG2_NULL','AGG2_NULL',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + #where null \ not null + sql = f"select tbname,AGG(COLUMN) from {dbname}.stable_1 where ts is not null group by tbname order by tbname " + self.data_check_tbname(sql,'AGG2_NULL','AGG2_NULL',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql1 = f"select * from ({sql})" + self.data_check_tbname(sql1,'AGG2_NULL','AGG2_NULL',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql2 = f"select * from ({sql}) order by tbname " + self.data_check_tbname(sql2,'AGG2_NULL','AGG2_NULL',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql = f"select tbname,AGG(COLUMN) from {dbname}.stable_1 where ts is null group by tbname order by tbname " + self.data_check_tbname(sql,'AGG0','AGG0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql1 = f"select * from ({sql})" + self.data_check_tbname(sql1,'AGG0','AGG0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql2 = f"select * from ({sql}) order by tbname " + self.data_check_tbname(sql2,'AGG0','AGG0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + #union + sql = f"select tbname tb,AGG(COLUMN) from {dbname}.stable_1 group by tbname order by tbname " + sql = f"({sql}) union ({sql}) order by tb" + self.data_check_tbname(sql,'AGG2_NULL','AGG2_NULL',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql1 = f"select * from ({sql})" + self.data_check_tbname(sql1,'AGG2_NULL','AGG2_NULL',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql2 = f"select * from ({sql}) order by tb " + self.data_check_tbname(sql2,'AGG2_NULL','AGG2_NULL',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + #union all + sql = f"select tbname tb,AGG(COLUMN) from {dbname}.stable_1 group by tbname order by tbname " + sql = f"({sql}) union all ({sql}) order by tb" + self.data_check_tbname(sql,'AGG4_NULL','AGG4_NULL',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql1 = f"select * from ({sql})" + self.data_check_tbname(sql1,'AGG4_NULL','AGG4_NULL',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql2 = f"select * from ({sql}) order by tb " + self.data_check_tbname(sql2,'AGG4_NULL','AGG4_NULL',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + #having <=0 + sql = f"select tbname,AGG(COLUMN) from {dbname}.stable_1 group by tbname having count(*) = 0 order by tbname " + self.data_check_tbname(sql,'AGG0','AGG0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql1 = f"select * from ({sql})" + self.data_check_tbname(sql1,'AGG0','AGG0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql2 = f"select * from ({sql}) order by tbname " + self.data_check_tbname(sql2,'AGG0','AGG0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql = f"select tbname,AGG(COLUMN) from {dbname}.stable_1 group by tbname having count(*) <= 0 order by tbname " + self.data_check_tbname(sql,'AGG0','AGG0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql1 = f"select * from ({sql})" + self.data_check_tbname(sql1,'AGG0','AGG0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql2 = f"select * from ({sql}) order by tbname " + self.data_check_tbname(sql2,'AGG0','AGG0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + + sql = f"select tbname,AGG(COLUMN) from {dbname}.stable_1 where ts is null group by tbname having count(*) <= 0 order by tbname " + self.data_check_tbname(sql,'AGG0','AGG0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql1 = f"select * from ({sql})" + self.data_check_tbname(sql1,'AGG0','AGG0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql2 = f"select * from ({sql}) order by tbname " + self.data_check_tbname(sql2,'AGG0','AGG0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + #having >0 + sql = f"select tbname,AGG(COLUMN) from {dbname}.stable_1 group by tbname having count(*) != 0 order by tbname " + self.data_check_tbname(sql,'AGG2_NULL','AGG2_NULL',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql1 = f"select * from ({sql})" + self.data_check_tbname(sql1,'AGG2_NULL','AGG2_NULL',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql2 = f"select * from ({sql}) order by tbname " + self.data_check_tbname(sql2,'AGG2_NULL','AGG2_NULL',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql = f"select tbname,AGG(COLUMN) from {dbname}.stable_1 group by tbname having count(*) > 0 order by tbname " + self.data_check_tbname(sql,'AGG2_NULL','AGG2_NULL',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql1 = f"select * from ({sql})" + self.data_check_tbname(sql1,'AGG2_NULL','AGG2_NULL',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql2 = f"select * from ({sql}) order by tbname " + self.data_check_tbname(sql2,'AGG2_NULL','AGG2_NULL',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + + sql = f"select tbname,AGG(COLUMN) from {dbname}.stable_1 where ts is null group by tbname having count(*) != 0 order by tbname " + self.data_check_tbname(sql,'AGG0','AGG0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql1 = f"select * from ({sql})" + self.data_check_tbname(sql1,'AGG0','AGG0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql2 = f"select * from ({sql}) order by tbname " + self.data_check_tbname(sql2,'AGG0','AGG0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + #order by count(*) + sql = f"select tbname,AGG(COLUMN) from {dbname}.stable_1 group by tbname order by tbname,count(*) " + self.data_check_tbname(sql,'AGG2_NULL','AGG2_NULL',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql1 = f"select * from ({sql})" + self.data_check_tbname(sql1,'AGG2_NULL','AGG2_NULL',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql2 = f"select * from ({sql}) order by tbname " + self.data_check_tbname(sql2,'AGG2_NULL','AGG2_NULL',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql = f"select tbname,AGG(COLUMN) from {dbname}.stable_1 where ts is null group by tbname order by tbname,count(*) " + self.data_check_tbname(sql,'AGG0','AGG0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql1 = f"select * from ({sql})" + self.data_check_tbname(sql1,'AGG0','AGG0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql2 = f"select * from ({sql}) order by tbname " + self.data_check_tbname(sql2,'AGG0','AGG0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + def tbname_count_all(self): + #random data + fake = Faker('zh_CN') + random_data_big = fake.random_int(min=-9223372036854775807, max=9223372036854775807, step=10) + random_data_str = fake.pystr() + random_data_float = fake.pyfloat() + + #random cal + calculations = ['+','-','*','/'] + calculation = random.sample(calculations,1) + calculation = str(calculation).replace("[","").replace("]","").replace("'","").replace(", ","") + + #random data column + data_columns = ['q_int','q_bigint','q_smallint','q_tinyint','q_float','q_double'] + data_null_columns = ['q_int_null','q_bigint_null','q_smallint_null','q_tinyint_null','q_float_null','q_double_null'] + + data_column = random.sample(data_columns,1) + data_column = str(data_column).replace("[","").replace("]","").replace("'","").replace(", ","") + + data_null_column = random.sample(data_null_columns,1) + data_null_column = str(data_null_column).replace("[","").replace("]","").replace("'","").replace(", ","") + + data_all_columns = data_columns + data_null_columns + data_all_column = random.sample(data_all_columns,1) + data_all_column = str(data_all_column).replace("[","").replace("]","").replace("'","").replace(", ","") + + #random data tag + data_tags = ['t_int','t_bigint','t_smallint','t_tinyint','t_float','t_double'] + data_null_tags = ['t_int_null','t_bigint_null','t_smallint_null','t_tinyint_null','t_float_null','t_double_null'] + + data_tag = random.sample(data_tags,1) + data_tag = str(data_tag).replace("[","").replace("]","").replace("'","").replace(", ","") + + data_null_tag = random.sample(data_null_tags,1) + data_null_tag = str(data_null_tag).replace("[","").replace("]","").replace("'","").replace(", ","") + + data_all_tags = data_tags + data_null_tags + data_all_tag = random.sample(data_all_tags,1) + data_all_tag = str(data_all_tag).replace("[","").replace("]","").replace("'","").replace(", ","") + + #random ts column + ts_columns = ['ts','_c0','_C0','_rowts'] + ts_column = random.sample(ts_columns,1) + ts_column = str(ts_column).replace("[","").replace("]","").replace("'","").replace(", ","") + #random other column + other_columns = ['q_bool','q_binary','q_nchar','q_ts','loc','t_bool','t_binary','t_nchar','t_ts'] + other_column = random.sample(other_columns,1) + other_column = str(other_column).replace("[","").replace("]","").replace("'","").replace(", ","") + + #random other null column and tag + other_null_columns = ['q_bool_null','q_binary_null','q_nchar_null','q_ts_null','t_bool_null','t_binary_null','t_nchar_null','t_ts_null'] + other_null_column = random.sample(other_null_columns,1) + other_null_column = str(other_null_column).replace("[","").replace("]","").replace("'","").replace(", ","") + + #random all column + all_columns = data_all_columns + data_all_tags + ts_columns + other_columns + other_null_columns + all_column = random.sample(all_columns,1) + all_column = str(all_column).replace("[","").replace("]","").replace("'","").replace(", ","") + + + self.tbname_count_null(replace_fun='count',replace_column=f'{data_null_column}') + self.tbname_count_null(replace_fun='count',replace_column=f'{data_null_tag}') + self.tbname_count_null(replace_fun='count',replace_column=f'{other_null_column}') + + self.tbname_count(replace_fun='count',replace_column='*') + self.tbname_count(replace_fun='count',replace_column=f'{data_column}') + self.tbname_count(replace_fun='count',replace_column=f'{ts_column}') + + self.tbname_count(replace_fun='count',replace_column=f'{other_column}') + self.tbname_count(replace_fun='count',replace_column=f'{data_tag}') + + self.tbname_count(replace_fun='count',replace_column=f'{random_data_big}') + self.tbname_count(replace_fun='count',replace_column=f'{random_data_float}') + self.tbname_count(replace_fun='count',replace_column=f'\'{random_data_str}\'') + self.tbname_count(replace_fun='count',replace_column=f'{random_data_big} {calculation} (abs({data_column})+1)') + self.tbname_count(replace_fun='count',replace_column=f'{random_data_float} {calculation} (abs({data_column})+1)') + + def tbname_agg(self, dbname="nested",base_fun="AGG",replace_fun="",base_column="COLUMN",replace_column="q_int",execute="Y"): + + # stable count(*) + sql = f"select tbname,AGG(COLUMN) from {dbname}.stable_1 group by tbname order by tbname " + self.data_check_tbname(sql,'AGG2','AGG2',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql1 = f"select * from ({sql})" + self.data_check_tbname(sql1,'AGG2','AGG2',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql2 = f"select * from ({sql}) order by tbname " + self.data_check_tbname(sql2,'AGG2','AGG2',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + #where null \ not null + sql = f"select tbname,AGG(COLUMN) from {dbname}.stable_1 where ts is not null group by tbname order by tbname " + self.data_check_tbname(sql,'AGG2','AGG2',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql1 = f"select * from ({sql})" + self.data_check_tbname(sql1,'AGG2','AGG2',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql2 = f"select * from ({sql}) order by tbname " + self.data_check_tbname(sql2,'AGG2','AGG2',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql = f"select tbname,AGG(COLUMN) from {dbname}.stable_1 where ts is null group by tbname order by tbname " + self.data_check_tbname(sql,'AGG0','AGG0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql1 = f"select * from ({sql})" + self.data_check_tbname(sql1,'AGG0','AGG0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql2 = f"select * from ({sql}) order by tbname " + self.data_check_tbname(sql2,'AGG0','AGG0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + + #union + sql = f"select tbname tb,AGG(COLUMN) from {dbname}.stable_1 group by tbname order by tbname " + sql = f"({sql}) union ({sql}) order by tb" + self.data_check_tbname(sql,'AGG2','AGG2',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql1 = f"select * from ({sql})" + self.data_check_tbname(sql1,'AGG2','AGG2',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql2 = f"select * from ({sql}) order by tb " + self.data_check_tbname(sql2,'AGG2','AGG2',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + #union all + sql = f"select tbname tb,AGG(COLUMN) from {dbname}.stable_1 group by tbname order by tbname " + sql = f"({sql}) union all ({sql}) order by tb" + self.data_check_tbname(sql,'AGG4','AGG4',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql1 = f"select * from ({sql})" + self.data_check_tbname(sql1,'AGG4','AGG4',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql2 = f"select * from ({sql}) order by tb " + self.data_check_tbname(sql2,'AGG4','AGG4',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + if execute=="Y": + sql = f"select tbname,AGG(COLUMN) from {dbname}.stable_1 group by tbname having count(*) = 0 order by tbname " + self.data_check_tbname(sql,'AGG0','AGG0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql1 = f"select * from ({sql})" + self.data_check_tbname(sql1,'AGG0','AGG0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql2 = f"select * from ({sql}) order by tbname " + self.data_check_tbname(sql2,'AGG0','AGG0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql = f"select tbname,AGG(COLUMN) from {dbname}.stable_1 group by tbname having count(*) <= 0 order by tbname " + self.data_check_tbname(sql,'AGG0','AGG0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql1 = f"select * from ({sql})" + self.data_check_tbname(sql1,'AGG0','AGG0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql2 = f"select * from ({sql}) order by tbname " + self.data_check_tbname(sql2,'AGG0','AGG0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + + sql = f"select tbname,AGG(COLUMN) from {dbname}.stable_1 group by tbname having count(*) != 0 order by tbname " + self.data_check_tbname(sql,'AGG2','AGG2',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql1 = f"select * from ({sql})" + self.data_check_tbname(sql1,'AGG2','AGG2',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql2 = f"select * from ({sql}) order by tbname " + self.data_check_tbname(sql2,'AGG2','AGG2',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql = f"select tbname,AGG(COLUMN) from {dbname}.stable_1 group by tbname having count(*) > 0 order by tbname " + self.data_check_tbname(sql,'AGG2','AGG2',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql1 = f"select * from ({sql})" + self.data_check_tbname(sql1,'AGG2','AGG2',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql2 = f"select * from ({sql}) order by tbname " + self.data_check_tbname(sql2,'AGG2','AGG2',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + + sql = f"select tbname,AGG(COLUMN) from {dbname}.stable_1 group by tbname order by tbname,count(*) " + self.data_check_tbname(sql,'AGG2','AGG2',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql1 = f"select * from ({sql})" + self.data_check_tbname(sql1,'AGG2','AGG2',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql2 = f"select * from ({sql}) order by tbname " + self.data_check_tbname(sql2,'AGG2','AGG2',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + # Mixed scene + if execute=="Y": + sql = f"select tbname,AGG(COLUMN) from {dbname}.stable_1 group by tbname having count(*) = 0 order by tbname " + self.data_check_tbname(sql,'AGG0','AGG0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql1 = f"select * from ({sql})" + self.data_check_tbname(sql1,'AGG0','AGG0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql2 = f"select * from ({sql}) order by tbname " + self.data_check_tbname(sql2,'AGG0','AGG0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + + sql = f"select tbname,AGG(COLUMN) from {dbname}.stable_1 group by tbname having count(*) <= 0 order by tbname " + self.data_check_tbname(sql,'AGG0','AGG0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql1 = f"select * from ({sql})" + self.data_check_tbname(sql1,'AGG0','AGG0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql2 = f"select * from ({sql}) order by tbname " + self.data_check_tbname(sql2,'AGG0','AGG0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + #union + sql = f"select tbname tb,AGG(COLUMN) from {dbname}.stable_1 group by tbname having count(*) = 0 order by tbname " + sql = f"({sql}) union ({sql}) order by tb" + self.data_check_tbname(sql,'AGG0','AGG0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql1 = f"select * from ({sql})" + self.data_check_tbname(sql1,'AGG0','AGG0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql2 = f"select * from ({sql}) order by tb " + self.data_check_tbname(sql2,'AGG0','AGG0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + #union all + sql = f"select tbname tb,AGG(COLUMN) from {dbname}.stable_1 group by tbname having count(*) <= 0 order by tbname " + sql = f"({sql}) union all ({sql}) order by tb" + self.data_check_tbname(sql,'AGG0','AGG0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql1 = f"select * from ({sql})" + self.data_check_tbname(sql1,'AGG0','AGG0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql2 = f"select * from ({sql}) order by tb " + self.data_check_tbname(sql2,'AGG0','AGG0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + + + sql = f"select tbname,AGG(COLUMN) from {dbname}.stable_1 group by tbname having count(*) != 0 order by tbname " + self.data_check_tbname(sql,'AGG2','AGG2',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql1 = f"select * from ({sql})" + self.data_check_tbname(sql1,'AGG2','AGG2',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql2 = f"select * from ({sql}) order by tbname " + self.data_check_tbname(sql2,'AGG2','AGG2',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + + sql = f"select tbname,AGG(COLUMN) from {dbname}.stable_1 group by tbname having count(*) > 0 order by tbname " + self.data_check_tbname(sql,'AGG2','AGG2',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql1 = f"select * from ({sql})" + self.data_check_tbname(sql1,'AGG2','AGG2',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql2 = f"select * from ({sql}) order by tbname " + self.data_check_tbname(sql2,'AGG2','AGG2',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + #union + sql = f"select tbname tb,AGG(COLUMN) from {dbname}.stable_1 group by tbname having count(*) != 0 order by tbname " + sql = f"({sql}) union ({sql}) order by tb" + self.data_check_tbname(sql,'AGG2','AGG2',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql1 = f"select * from ({sql})" + self.data_check_tbname(sql1,'AGG2','AGG2',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql2 = f"select * from ({sql}) order by tb " + self.data_check_tbname(sql2,'AGG2','AGG2',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + #union all + sql = f"select tbname tb,AGG(COLUMN) from {dbname}.stable_1 group by tbname having count(*) > 0 order by tbname " + sql = f"({sql}) union all ({sql}) order by tb" + self.data_check_tbname(sql,'AGG4','AGG4',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql1 = f"select * from ({sql})" + self.data_check_tbname(sql1,'AGG4','AGG4',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql2 = f"select * from ({sql}) order by tb " + self.data_check_tbname(sql2,'AGG4','AGG4',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + + + sql = f"select tbname,AGG(COLUMN) from {dbname}.stable_1 group by tbname order by tbname,AGG(COLUMN) " + self.data_check_tbname(sql,'AGG2','AGG2',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql1 = f"select * from ({sql})" + self.data_check_tbname(sql1,'AGG2','AGG2',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql2 = f"select * from ({sql}) order by tbname " + self.data_check_tbname(sql2,'AGG2','AGG2',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + #union + sql = f"select tbname tb,AGG(COLUMN) from {dbname}.stable_1 group by tbname order by tbname,AGG(COLUMN) " + sql = f"({sql}) union ({sql}) order by tb" + self.data_check_tbname(sql,'AGG2','AGG2',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql1 = f"select * from ({sql})" + self.data_check_tbname(sql1,'AGG2','AGG2',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql2 = f"select * from ({sql}) order by tb " + self.data_check_tbname(sql2,'AGG2','AGG2',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + #union all + sql = f"select tbname tb,AGG(COLUMN) from {dbname}.stable_1 group by tbname order by tbname,AGG(COLUMN) " + sql = f"({sql}) union all ({sql}) order by tb" + self.data_check_tbname(sql,'AGG4','AGG4',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql1 = f"select * from ({sql})" + self.data_check_tbname(sql1,'AGG4','AGG4',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql2 = f"select * from ({sql}) order by tb " + self.data_check_tbname(sql2,'AGG4','AGG4',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + + + sql = f"select tbname,AGG(COLUMN),count(*) from {dbname}.stable_1 group by tbname order by tbname,AGG(COLUMN) " + self.data_check_tbname(sql,'AGG2','AGG2',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql1 = f"select * from ({sql})" + self.data_check_tbname(sql1,'AGG2','AGG2',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql2 = f"select * from ({sql}) order by tbname " + self.data_check_tbname(sql2,'AGG2','AGG2',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + #union + sql = f"select tbname tb,AGG(COLUMN),count(*) from {dbname}.stable_1 group by tbname order by tbname,AGG(COLUMN)" + sql = f"({sql}) union ({sql}) order by tb" + self.data_check_tbname(sql,'AGG2','AGG2',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql1 = f"select * from ({sql})" + self.data_check_tbname(sql1,'AGG2','AGG2',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql2 = f"select * from ({sql}) order by tb " + self.data_check_tbname(sql2,'AGG2','AGG2',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + #union all + sql = f"select tbname tb ,AGG(COLUMN),count(*) from {dbname}.stable_1 group by tbname order by tbname,AGG(COLUMN)" + sql = f"({sql}) union all ({sql}) order by tb" + self.data_check_tbname(sql,'AGG4','AGG4',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql1 = f"select * from ({sql})" + self.data_check_tbname(sql1,'AGG4','AGG4',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql2 = f"select * from ({sql}) order by tb " + self.data_check_tbname(sql2,'AGG4','AGG4',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + + + sql = f"select tbname,AGG(COLUMN) from {dbname}.stable_1 group by tbname order by tbname,AGG(COLUMN),count(*) " + self.data_check_tbname(sql,'AGG2','AGG2',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql1 = f"select * from ({sql})" + self.data_check_tbname(sql1,'AGG2','AGG2',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql2 = f"select * from ({sql}) order by tbname " + self.data_check_tbname(sql2,'AGG2','AGG2',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + #union + sql = f"select tbname tb,AGG(COLUMN) from {dbname}.stable_1 group by tbname order by tbname,AGG(COLUMN),count(*)" + sql = f"({sql}) union ({sql}) order by tb" + self.data_check_tbname(sql,'AGG2','AGG2',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql1 = f"select * from ({sql})" + self.data_check_tbname(sql1,'AGG2','AGG2',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql2 = f"select * from ({sql}) order by tb " + self.data_check_tbname(sql2,'AGG2','AGG2',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + #union all + sql = f"select tbname tb,AGG(COLUMN) from {dbname}.stable_1 group by tbname order by tbname,AGG(COLUMN),count(*)" + sql = f"({sql}) union all ({sql}) order by tb" + self.data_check_tbname(sql,'AGG4','AGG4',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql1 = f"select * from ({sql})" + self.data_check_tbname(sql1,'AGG4','AGG4',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql2 = f"select * from ({sql}) order by tb " + self.data_check_tbname(sql2,'AGG4','AGG4',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + + + def tbname_agg_all(self): + #random data + fake = Faker('zh_CN') + random_data_big = fake.random_int(min=-9223372036854775807, max=9223372036854775807, step=10) + random_data_str = fake.pystr() + random_data_float = fake.pyfloat() + random_data_start = fake.random_int(min=0, max=100, step=1) + random_data_end = fake.random_int(min=0, max=100, step=1) + + #random cal + calculations = ['+','-','*','/'] + calculation = random.sample(calculations,1) + calculation = str(calculation).replace("[","").replace("]","").replace("'","").replace(", ","") + + #random data column + data_columns = ['q_int','q_bigint','q_smallint','q_tinyint','q_float','q_double','t_int','t_bigint','t_smallint','t_tinyint','t_float','t_double'] + data_null_columns = ['q_int_null','q_bigint_null','q_smallint_null','q_tinyint_null','q_float_null','q_double_null','t_int','t_bigint','t_smallint','t_tinyint','t_float','t_double'] + data_columns = data_columns + data_null_columns + data_column = random.sample(data_null_columns,1) + data_column = str(data_column).replace("[","").replace("]","").replace("'","").replace(", ","") + #random ts column + ts_columns = ['ts','_c0','_C0','_rowts'] + ts_column = random.sample(ts_columns,1) + ts_column = str(ts_column).replace("[","").replace("]","").replace("'","").replace(", ","") + #random ts unit column + ts_units = ['1a','1s','1m','1h','1d','1w'] + ts_unit = random.sample(ts_units,1) + ts_unit = str(ts_unit).replace("[","").replace("]","").replace("'","").replace(", ","") + #random str column + str_columns = ['q_int','q_bigint','q_smallint','q_tinyint','q_float','q_double','t_int','t_bigint','t_smallint','t_tinyint','t_float','t_double'] + str_column = random.sample(str_columns,1) + str_column = str(str_column).replace("[","").replace("]","").replace("'","").replace(", ","") + #random other column + other_columns = ['q_bool','q_binary','q_nchar','q_ts','loc','t_bool','t_binary','t_nchar','t_ts'] + other_column = random.sample(other_columns,1) + other_column = str(other_column).replace("[","").replace("]","").replace("'","").replace(", ","") + #random all column + all_columns = data_columns + ts_columns + str_columns + other_columns + all_column = random.sample(all_columns,1) + all_column = str(all_column).replace("[","").replace("]","").replace("'","").replace(", ","") + + self.tbname_agg(replace_fun='sum',replace_column=f'{data_column}') + self.tbname_agg(replace_fun='sum',replace_column=f'{random_data_big}') + self.tbname_agg(replace_fun='sum',replace_column=f'{random_data_float}') + self.tbname_agg(replace_fun='sum',replace_column=f'{random_data_big} {calculation} {data_column}') + self.tbname_agg(replace_fun='sum',replace_column=f'{random_data_float} {calculation} {data_column}') + + self.tbname_agg(replace_fun='avg',replace_column=f'{data_column}') + self.tbname_agg(replace_fun='avg',replace_column=f'{random_data_big}') + self.tbname_agg(replace_fun='avg',replace_column=f'{random_data_float}') + self.tbname_agg(replace_fun='avg',replace_column=f'{random_data_big} {calculation} {data_column}') + self.tbname_agg(replace_fun='avg',replace_column=f'{random_data_float} {calculation} {data_column}') + + self.tbname_agg(replace_fun='spread',replace_column=f'{data_column}') + self.tbname_agg(replace_fun='spread',replace_column=f'{random_data_big}') + self.tbname_agg(replace_fun='spread',replace_column=f'{random_data_float}') + self.tbname_agg(replace_fun='spread',replace_column=f'{random_data_big} {calculation} {data_column}') + self.tbname_agg(replace_fun='spread',replace_column=f'{random_data_float} {calculation} {data_column}') + + self.tbname_agg(replace_fun='stddev',replace_column=f'{data_column}') + self.tbname_agg(replace_fun='stddev',replace_column=f'{random_data_big}') + self.tbname_agg(replace_fun='stddev',replace_column=f'{random_data_float}') + self.tbname_agg(replace_fun='stddev',replace_column=f'{random_data_big} {calculation} {data_column}') + self.tbname_agg(replace_fun='stddev',replace_column=f'{random_data_float} {calculation} {data_column}') + + self.tbname_agg(replace_fun='elapsed',replace_column=f'{ts_column}') + self.tbname_agg(replace_fun='elapsed',replace_column=f'{ts_column},{ts_unit}') + + self.tbname_agg(replace_fun='hyperloglog',replace_column=f'{all_column}') + self.tbname_agg(replace_fun='hyperloglog',replace_column=f'{random_data_big}') + self.tbname_agg(replace_fun='hyperloglog',replace_column=f'{random_data_float}') + self.tbname_agg(replace_fun='hyperloglog',replace_column=f'\'{random_data_str}\'') + self.tbname_agg(replace_fun='hyperloglog',replace_column=f'{random_data_big} {calculation} {data_column}') + self.tbname_agg(replace_fun='hyperloglog',replace_column=f'{random_data_float} {calculation} {data_column}') + + self.tbname_agg(replace_fun='apercentile',replace_column=f'{data_column},{random_data_start}') + self.tbname_agg(replace_fun='apercentile',replace_column=f'{data_column},{random_data_start},"default"') + self.tbname_agg(replace_fun='apercentile',replace_column=f'{data_column},{random_data_start},"t-digest"') + # not support + # self.tbname_agg(replace_fun='percentile',replace_column=f'{data_column},{random_data_start}') + # self.tbname_agg(replace_fun='percentile',replace_column=f'{data_column},{random_data_end}') + # self.tbname_agg(replace_fun='percentile',replace_column=f'{data_column},{random_data_big}') + + self.tbname_agg(replace_fun='leastsquares',replace_column=f'{data_column},{random_data_start},{random_data_end}') + self.tbname_agg(replace_fun='leastsquares',replace_column=f'{data_column},{random_data_start},{random_data_big}') + + self.tbname_agg(replace_fun='histogram',replace_column=f'{data_column},"user_input","[-100000000000,100000000000]",0',execute='N') + self.tbname_agg(replace_fun='histogram',replace_column=f'{data_column},"user_input","[-100000000000,100000000000]",1',execute='N') + histogram_logbin = '{"start":1.0, "factor": 2.0, "count": 1, "infinity": false}' + histogram_linear_bin = '{"start":1.0, "width": 2.0, "count": 1, "infinity": false}' + self.tbname_agg(replace_fun='histogram',replace_column=f'{data_column},"log_bin",\'{histogram_logbin}\',1',execute='N') + self.tbname_agg(replace_fun='histogram',replace_column=f'{data_column},"linear_bin",\'{histogram_linear_bin}\',1',execute='N') + + + + def tag_count(self, dbname="nested",base_fun="AGG",replace_fun="COUNT",base_column="COLUMN",replace_column="q_int",execute="Y"): + + # stable count(*) + sql = f"select loc,AGG(COLUMN) from {dbname}.stable_1 group by loc order by loc " + self.data_check_tbname(sql,'HAVING>0','HAVING>0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql1 = f"select * from ({sql})" + self.data_check_tbname(sql1,'HAVING>0','HAVING>0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql2 = f"select * from ({sql}) order by loc " + self.data_check_tbname(sql2,'HAVING>0','HAVING>0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + #where null \ not null + sql = f"select loc,AGG(COLUMN) from {dbname}.stable_1 where ts is not null group by loc order by loc " + self.data_check_tbname(sql,'HAVING>0','HAVING>0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql1 = f"select * from ({sql})" + self.data_check_tbname(sql1,'HAVING>0','HAVING>0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql2 = f"select * from ({sql}) order by loc " + self.data_check_tbname(sql2,'HAVING>0','HAVING>0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql = f"select loc,AGG(COLUMN) from {dbname}.stable_1 where ts is null group by loc order by loc " + self.data_check_tbname(sql,'AGG0','AGG0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql1 = f"select * from ({sql})" + self.data_check_tbname(sql1,'AGG0','AGG0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql2 = f"select * from ({sql}) order by loc " + self.data_check_tbname(sql2,'AGG0','AGG0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + #union + sql = f"select loc tb,AGG(COLUMN) from {dbname}.stable_1 group by loc order by loc " + sql = f"({sql}) union ({sql}) order by tb" + self.data_check_tbname(sql,'HAVING>0','HAVING>0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql1 = f"select * from ({sql})" + self.data_check_tbname(sql1,'HAVING>0','HAVING>0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql2 = f"select * from ({sql}) order by tb " + self.data_check_tbname(sql2,'HAVING>0','HAVING>0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + #union all + sql = f"select loc tb,AGG(COLUMN) from {dbname}.stable_1 group by loc order by loc " + sql = f"({sql}) union all ({sql}) order by tb" + self.data_check_tbname(sql,'HAVING>04','HAVING>04',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql1 = f"select * from ({sql})" + self.data_check_tbname(sql1,'HAVING>04','HAVING>04',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql2 = f"select * from ({sql}) order by tb " + self.data_check_tbname(sql2,'HAVING>04','HAVING>04',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + + #having <=0 + sql = f"select loc,AGG(COLUMN) from {dbname}.stable_1 group by loc having count(*) = 0 order by loc " + self.data_check_tbname(sql,'AGG0','AGG0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql1 = f"select * from ({sql})" + self.data_check_tbname(sql1,'AGG0','AGG0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql2 = f"select * from ({sql}) order by loc " + self.data_check_tbname(sql2,'AGG0','AGG0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql = f"select loc,AGG(COLUMN) from {dbname}.stable_1 group by loc having count(*) <= 0 order by loc " + self.data_check_tbname(sql,'AGG0','AGG0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql1 = f"select * from ({sql})" + self.data_check_tbname(sql1,'AGG0','AGG0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql2 = f"select * from ({sql}) order by loc " + self.data_check_tbname(sql2,'AGG0','AGG0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + + sql = f"select loc,AGG(COLUMN) from {dbname}.stable_1 where ts is null group by loc having count(*) <= 0 order by loc " + self.data_check_tbname(sql,'AGG0','AGG0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql1 = f"select * from ({sql})" + self.data_check_tbname(sql1,'AGG0','AGG0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql2 = f"select * from ({sql}) order by loc " + self.data_check_tbname(sql2,'AGG0','AGG0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + #count + having <=0 + sql = f"select loc,AGG(COLUMN) from {dbname}.stable_1 group by loc having AGG(COLUMN) = 0 order by loc " + self.data_check_tbname(sql,'AGG0','AGG0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql1 = f"select * from ({sql})" + self.data_check_tbname(sql1,'AGG0','AGG0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql2 = f"select * from ({sql}) order by loc " + self.data_check_tbname(sql2,'AGG0','AGG0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + + sql = f"select loc,AGG(COLUMN) from {dbname}.stable_1 group by loc having AGG(COLUMN) <= 0 order by loc " + self.data_check_tbname(sql,'AGG0','AGG0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql1 = f"select * from ({sql})" + self.data_check_tbname(sql1,'AGG0','AGG0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql2 = f"select * from ({sql}) order by loc " + self.data_check_tbname(sql2,'AGG0','AGG0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + + sql = f"select loc,AGG(COLUMN) from {dbname}.stable_1 where ts is null group by loc having AGG(COLUMN) = 0 order by loc " + self.data_check_tbname(sql,'AGG0','AGG0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql1 = f"select * from ({sql})" + self.data_check_tbname(sql1,'AGG0','AGG0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql2 = f"select * from ({sql}) order by loc " + self.data_check_tbname(sql2,'AGG0','AGG0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + #having >0 + sql = f"select loc,AGG(COLUMN) from {dbname}.stable_1 group by loc having count(*) != 0 order by loc " + self.data_check_tbname(sql,'HAVING>0','HAVING>0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql1 = f"select * from ({sql})" + self.data_check_tbname(sql1,'HAVING>0','HAVING>0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql2 = f"select * from ({sql}) order by loc " + self.data_check_tbname(sql2,'HAVING>0','HAVING>0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql = f"select loc,AGG(COLUMN) from {dbname}.stable_1 group by loc having count(*) > 0 order by loc " + self.data_check_tbname(sql,'HAVING>0','HAVING>0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql1 = f"select * from ({sql})" + self.data_check_tbname(sql1,'HAVING>0','HAVING>0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql2 = f"select * from ({sql}) order by loc " + self.data_check_tbname(sql2,'HAVING>0','HAVING>0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + + sql = f"select loc,AGG(COLUMN) from {dbname}.stable_1 where ts is null group by loc having count(*) > 0 order by loc " + self.data_check_tbname(sql,'AGG0','AGG0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql1 = f"select * from ({sql})" + self.data_check_tbname(sql1,'AGG0','AGG0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql2 = f"select * from ({sql}) order by loc " + self.data_check_tbname(sql2,'AGG0','AGG0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + #count + having >0 + sql = f"select loc,AGG(COLUMN) from {dbname}.stable_1 group by loc having AGG(COLUMN) != 0 order by loc " + self.data_check_tbname(sql,'HAVING>0','HAVING>0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql1 = f"select * from ({sql})" + self.data_check_tbname(sql1,'HAVING>0','HAVING>0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql2 = f"select * from ({sql}) order by loc " + self.data_check_tbname(sql2,'HAVING>0','HAVING>0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql = f"select loc,AGG(COLUMN) from {dbname}.stable_1 group by loc having AGG(COLUMN) > 0 order by loc " + self.data_check_tbname(sql,'HAVING>0','HAVING>0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql1 = f"select * from ({sql})" + self.data_check_tbname(sql1,'HAVING>0','HAVING>0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql2 = f"select * from ({sql}) order by loc " + self.data_check_tbname(sql2,'HAVING>0','HAVING>0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql = f"select loc,AGG(COLUMN) from {dbname}.stable_1 where ts is null group by loc having AGG(COLUMN) != 0 order by loc " + self.data_check_tbname(sql,'AGG0','AGG0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql1 = f"select * from ({sql})" + self.data_check_tbname(sql1,'AGG0','AGG0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql2 = f"select * from ({sql}) order by loc " + self.data_check_tbname(sql2,'AGG0','AGG0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + #order by count(*) + sql = f"select loc,AGG(COLUMN) from {dbname}.stable_1 group by loc order by loc,count(*) " + self.data_check_tbname(sql,'HAVING>0','HAVING>0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql1 = f"select * from ({sql})" + self.data_check_tbname(sql1,'HAVING>0','HAVING>0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql2 = f"select * from ({sql}) order by loc " + self.data_check_tbname(sql2,'HAVING>0','HAVING>0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql = f"select loc,AGG(COLUMN) from {dbname}.stable_1 where ts is null group by loc order by loc,count(*) " + self.data_check_tbname(sql,'AGG0','AGG0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql1 = f"select * from ({sql})" + self.data_check_tbname(sql1,'AGG0','AGG0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql2 = f"select * from ({sql}) order by loc " + self.data_check_tbname(sql2,'AGG0','AGG0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + def tag_count_null(self, dbname="nested",base_fun="AGG",replace_fun="COUNT",base_column="COLUMN",replace_column="q_int",execute="Y"): + + # stable count(*) + sql = f"select loc,AGG(COLUMN) from {dbname}.stable_1 group by loc order by loc " + self.data_check_tbname(sql,'AGG2_NULL','AGG2_NULL',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql1 = f"select * from ({sql})" + self.data_check_tbname(sql1,'AGG2_NULL','AGG2_NULL',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql2 = f"select * from ({sql}) order by loc " + self.data_check_tbname(sql2,'AGG2_NULL','AGG2_NULL',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + #where null \ not null + sql = f"select loc,AGG(COLUMN) from {dbname}.stable_1 where ts is not null group by loc order by loc " + self.data_check_tbname(sql,'AGG2_NULL','AGG2_NULL',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql1 = f"select * from ({sql})" + self.data_check_tbname(sql1,'AGG2_NULL','AGG2_NULL',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql2 = f"select * from ({sql}) order by loc " + self.data_check_tbname(sql2,'AGG2_NULL','AGG2_NULL',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql = f"select loc,AGG(COLUMN) from {dbname}.stable_1 where ts is null group by loc order by loc " + self.data_check_tbname(sql,'AGG0','AGG0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql1 = f"select * from ({sql})" + self.data_check_tbname(sql1,'AGG0','AGG0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql2 = f"select * from ({sql}) order by loc " + self.data_check_tbname(sql2,'AGG0','AGG0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + #union + sql = f"select loc tb,AGG(COLUMN) from {dbname}.stable_1 group by loc order by loc " + sql = f"({sql}) union ({sql}) order by tb" + self.data_check_tbname(sql,'AGG2_NULL','AGG2_NULL',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql1 = f"select * from ({sql})" + self.data_check_tbname(sql1,'AGG2_NULL','AGG2_NULL',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql2 = f"select * from ({sql}) order by tb " + self.data_check_tbname(sql2,'AGG2_NULL','AGG2_NULL',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + #union all + sql = f"select loc tb,AGG(COLUMN) from {dbname}.stable_1 group by loc order by loc " + sql = f"({sql}) union all ({sql}) order by tb" + self.data_check_tbname(sql,'AGG4_NULL','AGG4_NULL',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql1 = f"select * from ({sql})" + self.data_check_tbname(sql1,'AGG4_NULL','AGG4_NULL',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql2 = f"select * from ({sql}) order by tb " + self.data_check_tbname(sql2,'AGG4_NULL','AGG4_NULL',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + #having <=0 + sql = f"select loc,AGG(COLUMN) from {dbname}.stable_1 group by loc having count(*) = 0 order by loc " + self.data_check_tbname(sql,'AGG0','AGG0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql1 = f"select * from ({sql})" + self.data_check_tbname(sql1,'AGG0','AGG0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql2 = f"select * from ({sql}) order by loc " + self.data_check_tbname(sql2,'AGG0','AGG0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql = f"select loc,AGG(COLUMN) from {dbname}.stable_1 group by loc having count(*) <= 0 order by loc " + self.data_check_tbname(sql,'AGG0','AGG0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql1 = f"select * from ({sql})" + self.data_check_tbname(sql1,'AGG0','AGG0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql2 = f"select * from ({sql}) order by loc " + self.data_check_tbname(sql2,'AGG0','AGG0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + + sql = f"select loc,AGG(COLUMN) from {dbname}.stable_1 where ts is null group by loc having count(*) <= 0 order by loc " + self.data_check_tbname(sql,'AGG0','AGG0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql1 = f"select * from ({sql})" + self.data_check_tbname(sql1,'AGG0','AGG0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql2 = f"select * from ({sql}) order by loc " + self.data_check_tbname(sql2,'AGG0','AGG0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + #having >0 + sql = f"select loc,AGG(COLUMN) from {dbname}.stable_1 group by loc having count(*) != 0 order by loc " + self.data_check_tbname(sql,'AGG2_NULL','AGG2_NULL',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql1 = f"select * from ({sql})" + self.data_check_tbname(sql1,'AGG2_NULL','AGG2_NULL',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql2 = f"select * from ({sql}) order by loc " + self.data_check_tbname(sql2,'AGG2_NULL','AGG2_NULL',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql = f"select loc,AGG(COLUMN) from {dbname}.stable_1 group by loc having count(*) > 0 order by loc " + self.data_check_tbname(sql,'AGG2_NULL','AGG2_NULL',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql1 = f"select * from ({sql})" + self.data_check_tbname(sql1,'AGG2_NULL','AGG2_NULL',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql2 = f"select * from ({sql}) order by loc " + self.data_check_tbname(sql2,'AGG2_NULL','AGG2_NULL',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + + sql = f"select loc,AGG(COLUMN) from {dbname}.stable_1 where ts is null group by loc having count(*) != 0 order by loc " + self.data_check_tbname(sql,'AGG0','AGG0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql1 = f"select * from ({sql})" + self.data_check_tbname(sql1,'AGG0','AGG0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql2 = f"select * from ({sql}) order by loc " + self.data_check_tbname(sql2,'AGG0','AGG0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + #order by count(*) + sql = f"select loc,AGG(COLUMN) from {dbname}.stable_1 group by loc order by loc,count(*) " + self.data_check_tbname(sql,'AGG2_NULL','AGG2_NULL',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql1 = f"select * from ({sql})" + self.data_check_tbname(sql1,'AGG2_NULL','AGG2_NULL',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql2 = f"select * from ({sql}) order by loc " + self.data_check_tbname(sql2,'AGG2_NULL','AGG2_NULL',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql = f"select loc,AGG(COLUMN) from {dbname}.stable_1 where ts is null group by loc order by loc,count(*) " + self.data_check_tbname(sql,'AGG0','AGG0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql1 = f"select * from ({sql})" + self.data_check_tbname(sql1,'AGG0','AGG0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql2 = f"select * from ({sql}) order by loc " + self.data_check_tbname(sql2,'AGG0','AGG0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + def tag_count_all(self): + #random data + fake = Faker('zh_CN') + random_data_big = fake.random_int(min=-9223372036854775807, max=9223372036854775807, step=10) + random_data_str = fake.pystr() + random_data_float = fake.pyfloat() + + #random cal + calculations = ['+','-','*','/'] + calculation = random.sample(calculations,1) + calculation = str(calculation).replace("[","").replace("]","").replace("'","").replace(", ","") + + #random data column + data_columns = ['q_int','q_bigint','q_smallint','q_tinyint','q_float','q_double'] + data_null_columns = ['q_int_null','q_bigint_null','q_smallint_null','q_tinyint_null','q_float_null','q_double_null'] + + data_column = random.sample(data_columns,1) + data_column = str(data_column).replace("[","").replace("]","").replace("'","").replace(", ","") + + data_null_column = random.sample(data_null_columns,1) + data_null_column = str(data_null_column).replace("[","").replace("]","").replace("'","").replace(", ","") + + data_all_columns = data_columns + data_null_columns + data_all_column = random.sample(data_all_columns,1) + data_all_column = str(data_all_column).replace("[","").replace("]","").replace("'","").replace(", ","") + + #random data tag + data_tags = ['t_int','t_bigint','t_smallint','t_tinyint','t_float','t_double'] + data_null_tags = ['t_int_null','t_bigint_null','t_smallint_null','t_tinyint_null','t_float_null','t_double_null'] + + data_tag = random.sample(data_tags,1) + data_tag = str(data_tag).replace("[","").replace("]","").replace("'","").replace(", ","") + + data_null_tag = random.sample(data_null_tags,1) + data_null_tag = str(data_null_tag).replace("[","").replace("]","").replace("'","").replace(", ","") + + data_all_tags = data_tags + data_null_tags + data_all_tag = random.sample(data_all_tags,1) + data_all_tag = str(data_all_tag).replace("[","").replace("]","").replace("'","").replace(", ","") + + #random ts column + ts_columns = ['ts','_c0','_C0','_rowts'] + ts_column = random.sample(ts_columns,1) + ts_column = str(ts_column).replace("[","").replace("]","").replace("'","").replace(", ","") + #random other column + other_columns = ['q_bool','q_binary','q_nchar','q_ts','loc','t_bool','t_binary','t_nchar','t_ts'] + other_column = random.sample(other_columns,1) + other_column = str(other_column).replace("[","").replace("]","").replace("'","").replace(", ","") + + #random other null column and tag + other_null_columns = ['q_bool_null','q_binary_null','q_nchar_null','q_ts_null','t_bool_null','t_binary_null','t_nchar_null','t_ts_null'] + other_null_column = random.sample(other_null_columns,1) + other_null_column = str(other_null_column).replace("[","").replace("]","").replace("'","").replace(", ","") + + #random all column + all_columns = data_all_columns + data_all_tags + ts_columns + other_columns + other_null_columns + all_column = random.sample(all_columns,1) + all_column = str(all_column).replace("[","").replace("]","").replace("'","").replace(", ","") + + + self.tag_count_null(replace_fun='count',replace_column=f'{data_null_column}') + self.tag_count_null(replace_fun='count',replace_column=f'{data_null_tag}') + self.tag_count_null(replace_fun='count',replace_column=f'{other_null_column}') + + self.tag_count(replace_fun='count',replace_column='*') + self.tag_count(replace_fun='count',replace_column=f'{data_column}') + self.tag_count(replace_fun='count',replace_column=f'{ts_column}') + + self.tag_count(replace_fun='count',replace_column=f'{other_column}') + self.tag_count(replace_fun='count',replace_column=f'{data_tag}') + + self.tag_count(replace_fun='count',replace_column=f'{random_data_big}') + self.tag_count(replace_fun='count',replace_column=f'{random_data_float}') + self.tag_count(replace_fun='count',replace_column=f'\'{random_data_str}\'') + self.tag_count(replace_fun='count',replace_column=f'{random_data_big} {calculation} (abs({data_column})+1)') + self.tag_count(replace_fun='count',replace_column=f'{random_data_float} {calculation} (abs({data_column})+1)') + + + + def modify_tables(self): + fake = Faker('zh_CN') + tdSql.execute('delete from stable_1_3;') + tdSql.execute('delete from stable_1_4;') + tdSql.execute('''create table stable_1_5 using stable_1 tags('stable_1_5', '%d' , '%d', '%d' , '%d' , 1 , 'binary6.%s' , 'nchar6.%s' , '%f', '%f' ,'%d') ;''' + %(fake.random_int(min=-2147483647, max=2147483647, step=1), fake.random_int(min=-9223372036854775807, max=9223372036854775807, step=1), + fake.random_int(min=-32767, max=32767, step=1) , fake.random_int(min=-127, max=127, step=1) , + fake.pystr() ,fake.pystr() ,fake.pyfloat(),fake.pyfloat(),fake.random_int(min=-2147483647, max=2147483647, step=1))) + tdSql.execute('''create table stable_1_6 using stable_1 tags('stable_1_6', '%d' , '%d', '%d' , '%d' , 1 , 'binary6.%s' , 'nchar6.%s' , '%f', '%f' ,'%d') ;''' + %(fake.random_int(min=-2147483647, max=2147483647, step=1), fake.random_int(min=-9223372036854775807, max=9223372036854775807, step=1), + fake.random_int(min=-32767, max=32767, step=1) , fake.random_int(min=-127, max=127, step=1) , + fake.pystr() ,fake.pystr() ,fake.pyfloat(),fake.pyfloat(),fake.random_int(min=-2147483647, max=2147483647, step=1))) + tdSql.execute('''create table stable_1_7 using stable_1 tags('stable_1_7', '%d' , '%d', '%d' , '%d' , 1 , 'binary6.%s' , 'nchar6.%s' , '%f', '%f' ,'%d') ;''' + %(fake.random_int(min=-2147483647, max=2147483647, step=1), fake.random_int(min=-9223372036854775807, max=9223372036854775807, step=1), + fake.random_int(min=-32767, max=32767, step=1) , fake.random_int(min=-127, max=127, step=1) , + fake.pystr() ,fake.pystr() ,fake.pyfloat(),fake.pyfloat(),fake.random_int(min=-2147483647, max=2147483647, step=1))) + tdSql.execute('''create table stable_1_8 using stable_1 tags('stable_1_8', '%d' , '%d', '%d' , '%d' , 1 , 'binary6.%s' , 'nchar6.%s' , '%f', '%f' ,'%d') ;''' + %(fake.random_int(min=-2147483647, max=2147483647, step=1), fake.random_int(min=-9223372036854775807, max=9223372036854775807, step=1), + fake.random_int(min=-32767, max=32767, step=1) , fake.random_int(min=-127, max=127, step=1) , + fake.pystr() ,fake.pystr() ,fake.pyfloat(),fake.pyfloat(),fake.random_int(min=-2147483647, max=2147483647, step=1))) + tdSql.execute('''create table stable_1_9 using stable_1 tags('stable_1_9', '%d' , '%d', '%d' , '%d' , 1 , 'binary6.%s' , 'nchar6.%s' , '%f', '%f' ,'%d') ;''' + %(fake.random_int(min=-2147483647, max=2147483647, step=1), fake.random_int(min=-9223372036854775807, max=9223372036854775807, step=1), + fake.random_int(min=-32767, max=32767, step=1) , fake.random_int(min=-127, max=127, step=1) , + fake.pystr() ,fake.pystr() ,fake.pyfloat(),fake.pyfloat(),fake.random_int(min=-2147483647, max=2147483647, step=1))) + tdSql.execute('''create table stable_1_90 using stable_1 tags('stable_1_90', '%d' , '%d', '%d' , '%d' , 1 , 'binary6.%s' , 'nchar6.%s' , '%f', '%f' ,'%d') ;''' + %(fake.random_int(min=-2147483647, max=2147483647, step=1), fake.random_int(min=-9223372036854775807, max=9223372036854775807, step=1), + fake.random_int(min=-32767, max=32767, step=1) , fake.random_int(min=-127, max=127, step=1) , + fake.pystr() ,fake.pystr() ,fake.pyfloat(),fake.pyfloat(),fake.random_int(min=-2147483647, max=2147483647, step=1))) + tdSql.execute('''create table stable_1_91 using stable_1 tags('stable_1_91', '%d' , '%d', '%d' , '%d' , 1 , 'binary6.%s' , 'nchar6.%s' , '%f', '%f' ,'%d') ;''' + %(fake.random_int(min=-2147483647, max=2147483647, step=1), fake.random_int(min=-9223372036854775807, max=9223372036854775807, step=1), + fake.random_int(min=-32767, max=32767, step=1) , fake.random_int(min=-127, max=127, step=1) , + fake.pystr() ,fake.pystr() ,fake.pyfloat(),fake.pyfloat(),fake.random_int(min=-2147483647, max=2147483647, step=1))) + tdSql.execute('''create table stable_1_92 using stable_1 tags('stable_1_92', '%d' , '%d', '%d' , '%d' , 1 , 'binary6.%s' , 'nchar6.%s' , '%f', '%f' ,'%d') ;''' + %(fake.random_int(min=-2147483647, max=2147483647, step=1), fake.random_int(min=-9223372036854775807, max=9223372036854775807, step=1), + fake.random_int(min=-32767, max=32767, step=1) , fake.random_int(min=-127, max=127, step=1) , + fake.pystr() ,fake.pystr() ,fake.pyfloat(),fake.pyfloat(),fake.random_int(min=-2147483647, max=2147483647, step=1))) + + tdSql.execute('alter stable stable_1 add tag t_int_null INT;') + tdSql.execute('alter stable stable_1 add tag t_bigint_null BIGINT;') + tdSql.execute('alter stable stable_1 add tag t_smallint_null SMALLINT;') + tdSql.execute('alter stable stable_1 add tag t_tinyint_null TINYINT;') + tdSql.execute('alter stable stable_1 add tag t_bool_null BOOL;') + tdSql.execute('alter stable stable_1 add tag t_binary_null VARCHAR(100);') + tdSql.execute('alter stable stable_1 add tag t_nchar_null NCHAR(100);') + tdSql.execute('alter stable stable_1 add tag t_float_null FLOAT;') + tdSql.execute('alter stable stable_1 add tag t_double_null DOUBLE;') + tdSql.execute('alter stable stable_1 add tag t_ts_null TIMESTAMP;') + + tdSql.execute('alter stable stable_1 drop column q_nchar8;') + tdSql.execute('alter stable stable_1 drop column q_binary8;') + tdSql.execute('alter stable stable_1 drop column q_nchar7;') + tdSql.execute('alter stable stable_1 drop column q_binary7;') + tdSql.execute('alter stable stable_1 drop column q_nchar6;') + tdSql.execute('alter stable stable_1 drop column q_binary6;') + tdSql.execute('alter stable stable_1 drop column q_nchar5;') + tdSql.execute('alter stable stable_1 drop column q_binary5;') + tdSql.execute('alter stable stable_1 drop column q_nchar4;') + tdSql.execute('alter stable stable_1 drop column q_binary4;') + + def run(self): + tdSql.prepare() + + startTime = time.time() + + # self.create_tables() + # self.insert_data() + + self.dropandcreateDB_random("nested", 1) + self.modify_tables() + + for i in range(2): + self.tag_count_all() + self.tbname_count_all() + self.tbname_agg_all() + + + endTime = time.time() + print("total time %ds" % (endTime - startTime)) + + + + + def stop(self): + tdSql.close() + tdLog.success("%s successfully executed" % __file__) + + +tdCases.addWindows(__file__, TDTestCase()) +tdCases.addLinux(__file__, TDTestCase()) From 077ed6841ce74db77ba34fad181adef307048961 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9Chappyguoxy=E2=80=9D?= <“happy_guoxy@163.com”> Date: Thu, 1 Feb 2024 10:38:31 +0800 Subject: [PATCH 2/6] test: add agg group always return value cases --- .../2-query/agg_group_AlwaysReturnValue.py | 1605 +++++++++++++++++ 1 file changed, 1605 insertions(+) create mode 100755 tests/system-test/2-query/agg_group_AlwaysReturnValue.py diff --git a/tests/system-test/2-query/agg_group_AlwaysReturnValue.py b/tests/system-test/2-query/agg_group_AlwaysReturnValue.py new file mode 100755 index 0000000000..9ed0e3fc4a --- /dev/null +++ b/tests/system-test/2-query/agg_group_AlwaysReturnValue.py @@ -0,0 +1,1605 @@ +################################################################### +# Copyright (c) 2016 by TAOS Technologies, Inc. +# All rights reserved. +# +# This file is proprietary and confidential to TAOS Technologies. +# No part of this file may be reproduced, stored, transmitted, +# disclosed or used in any form or by any means other than as +# expressly provided by the written permission from Jianhui Tao +# +################################################################### + +# -*- coding: utf-8 -*- +from util.cases import tdCases +#from .nestedQueryInterval import * +from .nestedQuery import * +from faker import Faker +import random + +class TDTestCase(TDTestCase): + + def data_check_tbname(self,sql,groupby='Y',partitionby='Y',base_fun='',replace_fun='',base_column='',replace_column=''): + + if groupby=='Y': + sql = sql.replace(f'{base_fun}',f'{replace_fun}').replace(f'{base_column}',f'{replace_column}') + tdSql.query(sql) + tdSql.checkRows(12) + tdSql.checkData(0, 1, 100) + tdSql.checkData(1, 1, 200) + tdSql.checkData(2, 1, 00) + tdSql.checkData(3, 1, 0) + tdSql.checkData(4, 1, 00) + tdSql.checkData(5, 1, 0) + tdSql.checkData(6, 1, 0) + tdSql.checkData(7, 1, 00) + tdSql.checkData(8, 1, 00) + tdSql.checkData(9, 1, 0) + tdSql.checkData(10, 1, 00) + tdSql.checkData(11, 1, 0) + elif groupby=='UNIONALL': + sql = sql.replace(f'{base_fun}',f'{replace_fun}').replace(f'{base_column}',f'{replace_column}') + tdSql.query(sql) + tdSql.checkRows(24) + tdSql.checkData(0, 1, 100) + tdSql.checkData(1, 1, 100) + tdSql.checkData(2, 1, 200) + tdSql.checkData(3, 1, 200) + tdSql.checkData(4, 1, 00) + tdSql.checkData(5, 1, 0) + tdSql.checkData(6, 1, 0) + tdSql.checkData(7, 1, 00) + tdSql.checkData(8, 1, 00) + tdSql.checkData(9, 1, 0) + tdSql.checkData(10, 1, 00) + tdSql.checkData(11, 1, 0) + elif groupby=='UNIONALLNULL': + sql = sql.replace(f'{base_fun}',f'{replace_fun}').replace(f'{base_column}',f'{replace_column}') + tdSql.query(sql) + tdSql.checkRows(24) + tdSql.checkData(0, 1, 0) + tdSql.checkData(1, 1, 00) + tdSql.checkData(2, 1, 00) + tdSql.checkData(3, 1, 0) + tdSql.checkData(4, 1, 00) + tdSql.checkData(5, 1, 0) + tdSql.checkData(6, 1, 0) + tdSql.checkData(7, 1, 00) + tdSql.checkData(8, 1, 00) + tdSql.checkData(9, 1, 0) + tdSql.checkData(10, 1, 00) + tdSql.checkData(11, 1, 0) + elif groupby=='NULL': + sql = sql.replace(f'{base_fun}',f'{replace_fun}').replace(f'{base_column}',f'{replace_column}') + tdSql.query(sql) + tdSql.checkRows(12) + tdSql.checkData(0, 1, 0) + tdSql.checkData(1, 1, 0) + tdSql.checkData(2, 1, 00) + tdSql.checkData(3, 1, 0) + tdSql.checkData(4, 1, 00) + tdSql.checkData(5, 1, 0) + tdSql.checkData(6, 1, 0) + tdSql.checkData(7, 1, 00) + tdSql.checkData(8, 1, 00) + tdSql.checkData(9, 1, 0) + tdSql.checkData(10, 1, 00) + tdSql.checkData(11, 1, 0) + elif groupby=='HAVING=0': + sql = sql.replace(f'{base_fun}',f'{replace_fun}').replace(f'{base_column}',f'{replace_column}') + tdSql.query(sql) + tdSql.checkRows(10) + tdSql.checkData(0, 1, 0) + tdSql.checkData(1, 1, 0) + tdSql.checkData(2, 1, 00) + tdSql.checkData(3, 1, 0) + tdSql.checkData(4, 1, 00) + tdSql.checkData(5, 1, 0) + tdSql.checkData(6, 1, 0) + tdSql.checkData(7, 1, 00) + tdSql.checkData(8, 1, 00) + tdSql.checkData(9, 1, 0) + elif groupby=='HAVING>0': + sql = sql.replace(f'{base_fun}',f'{replace_fun}').replace(f'{base_column}',f'{replace_column}') + tdSql.query(sql) + tdSql.checkRows(2) + tdSql.checkData(0, 1, 100) + tdSql.checkData(1, 1, 200) + elif groupby=='HAVING>04': + sql = sql.replace(f'{base_fun}',f'{replace_fun}').replace(f'{base_column}',f'{replace_column}') + tdSql.query(sql) + tdSql.checkRows(4) + tdSql.checkData(0, 1, 100) + tdSql.checkData(1, 1, 100) + tdSql.checkData(2, 1, 200) + tdSql.checkData(3, 1, 200) + elif groupby=='HAVINGCOLUMN=0': + sql = sql.replace(f'{base_fun}',f'{replace_fun}').replace(f'{base_column}',f'{replace_column}') + tdSql.query(sql) + tdSql.checkRows(2) + tdSql.checkData(0, 1, 0) + tdSql.checkData(1, 1, 0) + elif groupby=='NOTSUPPORT': + sql = sql.replace(f'{base_fun}',f'{replace_fun}').replace(f'{base_column}',f'{replace_column}') + tdSql.query(sql) + tdSql.checkRows(2) + tdSql.checkData(0, 1, 0) + tdSql.checkData(1, 1, 0) + elif groupby=='AGG0': + sql = sql.replace(f'{base_fun}',f'{replace_fun}').replace(f'{base_column}',f'{replace_column}') + tdSql.query(sql) + tdSql.checkRows(0) + elif groupby=='AGG2': + sql = sql.replace(f'{base_fun}',f'{replace_fun}').replace(f'{base_column}',f'{replace_column}') + tdSql.query(sql) + tdSql.checkRows(2) + elif groupby=='AGG2_NULL': + sql = sql.replace(f'{base_fun}',f'{replace_fun}').replace(f'{base_column}',f'{replace_column}') + tdSql.query(sql) + tdSql.checkRows(2) + tdSql.checkData(0, 1, 'None') + tdSql.checkData(1, 1, 'None') + elif groupby=='AGG4': + sql = sql.replace(f'{base_fun}',f'{replace_fun}').replace(f'{base_column}',f'{replace_column}') + tdSql.query(sql) + tdSql.checkRows(4) + elif groupby=='AGG4_NULL': + sql = sql.replace(f'{base_fun}',f'{replace_fun}').replace(f'{base_column}',f'{replace_column}') + tdSql.query(sql) + tdSql.checkRows(4) + tdSql.checkData(0, 1, 'None') + tdSql.checkData(1, 1, 'None') + elif groupby=='AGG10': + sql = sql.replace(f'{base_fun}',f'{replace_fun}').replace(f'{base_column}',f'{replace_column}') + tdSql.query(sql) + tdSql.checkRows(10) + elif groupby=='AGG12': + sql = sql.replace(f'{base_fun}',f'{replace_fun}').replace(f'{base_column}',f'{replace_column}') + tdSql.query(sql) + tdSql.checkRows(12) + elif groupby=='AGG20': + sql = sql.replace(f'{base_fun}',f'{replace_fun}').replace(f'{base_column}',f'{replace_column}') + tdSql.query(sql) + tdSql.checkRows(20) + elif groupby=='AGG24': + sql = sql.replace(f'{base_fun}',f'{replace_fun}').replace(f'{base_column}',f'{replace_column}') + tdSql.query(sql) + tdSql.checkRows(24) + else: + sql = sql.replace(f'{base_fun}',f'{replace_fun}').replace(f'{base_column}',f'{replace_column}') + tdSql.query(sql) + tdSql.checkRows(12) + + + if partitionby=='Y': + sql = sql.replace(f'{base_fun}',f'{replace_fun}').replace(f'{base_column}',f'{replace_column}') + sql = sql.replace('group','partition') + tdSql.query(sql) + tdSql.checkRows(12) + tdSql.checkData(0, 1, 100) + tdSql.checkData(1, 1, 200) + tdSql.checkData(2, 1, 00) + tdSql.checkData(3, 1, 0) + tdSql.checkData(4, 1, 00) + tdSql.checkData(5, 1, 0) + tdSql.checkData(6, 1, 0) + tdSql.checkData(7, 1, 00) + tdSql.checkData(8, 1, 00) + tdSql.checkData(9, 1, 0) + tdSql.checkData(10, 1, 00) + tdSql.checkData(11, 1, 0) + elif groupby=='UNIONALL': + sql = sql.replace(f'{base_fun}',f'{replace_fun}').replace(f'{base_column}',f'{replace_column}') + sql = sql.replace('group','partition') + tdSql.query(sql) + tdSql.checkRows(24) + tdSql.checkData(0, 1, 100) + tdSql.checkData(1, 1, 100) + tdSql.checkData(2, 1, 200) + tdSql.checkData(3, 1, 200) + tdSql.checkData(4, 1, 00) + tdSql.checkData(5, 1, 0) + tdSql.checkData(6, 1, 0) + tdSql.checkData(7, 1, 00) + tdSql.checkData(8, 1, 00) + tdSql.checkData(9, 1, 0) + tdSql.checkData(10, 1, 00) + tdSql.checkData(11, 1, 0) + elif groupby=='UNIONALLNULL': + sql = sql.replace(f'{base_fun}',f'{replace_fun}').replace(f'{base_column}',f'{replace_column}') + sql = sql.replace('group','partition') + tdSql.query(sql) + tdSql.checkRows(24) + tdSql.checkData(0, 1, 00) + tdSql.checkData(1, 1, 00) + tdSql.checkData(2, 1, 00) + tdSql.checkData(3, 1, 0) + tdSql.checkData(4, 1, 00) + tdSql.checkData(5, 1, 0) + tdSql.checkData(6, 1, 0) + tdSql.checkData(7, 1, 00) + tdSql.checkData(8, 1, 00) + tdSql.checkData(9, 1, 0) + tdSql.checkData(10, 1, 00) + tdSql.checkData(11, 1, 0) + elif partitionby=='NULL': + sql = sql.replace(f'{base_fun}',f'{replace_fun}').replace(f'{base_column}',f'{replace_column}') + sql = sql.replace('group','partition') + tdSql.query(sql) + tdSql.checkRows(12) + tdSql.checkData(0, 1, 0) + tdSql.checkData(1, 1, 0) + tdSql.checkData(2, 1, 00) + tdSql.checkData(3, 1, 0) + tdSql.checkData(4, 1, 00) + tdSql.checkData(5, 1, 0) + tdSql.checkData(6, 1, 0) + tdSql.checkData(7, 1, 00) + tdSql.checkData(8, 1, 00) + tdSql.checkData(9, 1, 0) + tdSql.checkData(10, 1, 00) + tdSql.checkData(11, 1, 0) + elif partitionby=='HAVING=0': + sql = sql.replace(f'{base_fun}',f'{replace_fun}').replace(f'{base_column}',f'{replace_column}') + sql = sql.replace('group','partition') + tdSql.query(sql) + tdSql.checkRows(10) + tdSql.checkData(0, 1, 0) + tdSql.checkData(1, 1, 0) + tdSql.checkData(2, 1, 00) + tdSql.checkData(3, 1, 0) + tdSql.checkData(4, 1, 00) + tdSql.checkData(5, 1, 0) + tdSql.checkData(6, 1, 0) + tdSql.checkData(7, 1, 00) + tdSql.checkData(8, 1, 00) + tdSql.checkData(9, 1, 0) + elif partitionby=='HAVING>0': + sql = sql.replace(f'{base_fun}',f'{replace_fun}').replace(f'{base_column}',f'{replace_column}') + sql = sql.replace('group','partition') + tdSql.query(sql) + tdSql.checkRows(2) + tdSql.checkData(0, 1, 100) + tdSql.checkData(1, 1, 200) + elif partitionby=='HAVING>04': + sql = sql.replace(f'{base_fun}',f'{replace_fun}').replace(f'{base_column}',f'{replace_column}') + tdSql.query(sql) + tdSql.checkRows(4) + tdSql.checkData(0, 1, 100) + tdSql.checkData(1, 1, 100) + tdSql.checkData(2, 1, 200) + tdSql.checkData(3, 1, 200) + elif partitionby=='HAVINGCOLUMN=0': + sql = sql.replace(f'{base_fun}',f'{replace_fun}').replace(f'{base_column}',f'{replace_column}') + sql = sql.replace('group','partition') + tdSql.query(sql) + tdSql.checkRows(2) + tdSql.checkData(0, 1, 0) + tdSql.checkData(1, 1, 0) + elif partitionby=='NOTSUPPORT': + sql = sql.replace(f'{base_fun}',f'{replace_fun}').replace(f'{base_column}',f'{replace_column}') + sql = sql.replace('group','partition') + tdSql.query(sql) + tdSql.checkRows(2) + tdSql.checkData(0, 1, 0) + tdSql.checkData(1, 1, 0) + elif partitionby=='AGG0': + sql = sql.replace(f'{base_fun}',f'{replace_fun}').replace(f'{base_column}',f'{replace_column}') + sql = sql.replace('group','partition') + tdSql.query(sql) + tdSql.checkRows(0) + elif partitionby=='AGG2': + sql = sql.replace(f'{base_fun}',f'{replace_fun}').replace(f'{base_column}',f'{replace_column}') + sql = sql.replace('group','partition') + tdSql.query(sql) + tdSql.checkRows(2) + elif partitionby=='AGG2_NULL': + sql = sql.replace(f'{base_fun}',f'{replace_fun}').replace(f'{base_column}',f'{replace_column}') + tdSql.query(sql) + tdSql.checkRows(2) + tdSql.checkData(0, 1, 'None') + tdSql.checkData(1, 1, 'None') + elif partitionby=='AGG4': + sql = sql.replace(f'{base_fun}',f'{replace_fun}').replace(f'{base_column}',f'{replace_column}') + sql = sql.replace('group','partition') + tdSql.query(sql) + tdSql.checkRows(4) + elif partitionby=='AGG4_NULL': + sql = sql.replace(f'{base_fun}',f'{replace_fun}').replace(f'{base_column}',f'{replace_column}') + tdSql.query(sql) + tdSql.checkRows(4) + tdSql.checkData(0, 1, 'None') + tdSql.checkData(1, 1, 'None') + elif partitionby=='AGG10': + sql = sql.replace(f'{base_fun}',f'{replace_fun}').replace(f'{base_column}',f'{replace_column}') + sql = sql.replace('group','partition') + tdSql.query(sql) + tdSql.checkRows(10) + elif partitionby=='AGG12': + sql = sql.replace(f'{base_fun}',f'{replace_fun}').replace(f'{base_column}',f'{replace_column}') + sql = sql.replace('group','partition') + tdSql.query(sql) + tdSql.checkRows(12) + elif partitionby=='AGG20': + sql = sql.replace(f'{base_fun}',f'{replace_fun}').replace(f'{base_column}',f'{replace_column}') + sql = sql.replace('group','partition') + tdSql.query(sql) + tdSql.checkRows(20) + elif partitionby=='AGG24': + sql = sql.replace(f'{base_fun}',f'{replace_fun}').replace(f'{base_column}',f'{replace_column}') + sql = sql.replace('group','partition') + tdSql.query(sql) + tdSql.checkRows(24) + else: + sql = sql.replace(f'{base_fun}',f'{replace_fun}').replace(f'{base_column}',f'{replace_column}') + sql = sql.replace('group','partition') + tdSql.query(sql) + tdSql.checkRows(12) + + + def tbname_count(self, dbname="nested",base_fun="AGG",replace_fun="COUNT",base_column="COLUMN",replace_column="q_int",execute="Y"): + + # stable count(*) + sql = f"select tbname,AGG(COLUMN) from {dbname}.stable_1 group by tbname order by tbname " + self.data_check_tbname(sql,'Y','Y',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql1 = f"select * from ({sql})" + self.data_check_tbname(sql1,'Y','Y',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql2 = f"select * from ({sql}) order by tbname " + self.data_check_tbname(sql2,'Y','Y',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + #where null \ not null + sql = f"select tbname,AGG(COLUMN) from {dbname}.stable_1 where ts is not null group by tbname order by tbname " + self.data_check_tbname(sql,'Y','Y',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql1 = f"select * from ({sql})" + self.data_check_tbname(sql1,'Y','Y',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql2 = f"select * from ({sql}) order by tbname " + self.data_check_tbname(sql2,'Y','Y',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql = f"select tbname,AGG(COLUMN) from {dbname}.stable_1 where ts is null group by tbname order by tbname " + self.data_check_tbname(sql,'NULL','NULL',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql1 = f"select * from ({sql})" + self.data_check_tbname(sql1,'NULL','NULL',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql2 = f"select * from ({sql}) order by tbname " + self.data_check_tbname(sql2,'NULL','NULL',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + #union + sql = f"select tbname tb,AGG(COLUMN) from {dbname}.stable_1 group by tbname order by tbname " + sql = f"({sql}) union ({sql}) order by tb" + self.data_check_tbname(sql,'Y','Y',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql1 = f"select * from ({sql})" + self.data_check_tbname(sql1,'Y','Y',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql2 = f"select * from ({sql}) order by tb " + self.data_check_tbname(sql2,'Y','Y',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + #union all + sql = f"select tbname tb,AGG(COLUMN) from {dbname}.stable_1 group by tbname order by tbname " + sql = f"({sql}) union all ({sql}) order by tb" + self.data_check_tbname(sql,'UNIONALL','UNIONALL',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql1 = f"select * from ({sql})" + self.data_check_tbname(sql1,'UNIONALL','UNIONALL',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql2 = f"select * from ({sql}) order by tb " + self.data_check_tbname(sql2,'UNIONALL','UNIONALL',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + + #having <=0 + sql = f"select tbname,AGG(COLUMN) from {dbname}.stable_1 group by tbname having count(*) = 0 order by tbname " + self.data_check_tbname(sql,'HAVING=0','HAVING=0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql1 = f"select * from ({sql})" + self.data_check_tbname(sql1,'HAVING=0','HAVING=0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql2 = f"select * from ({sql}) order by tbname " + self.data_check_tbname(sql2,'HAVING=0','HAVING=0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql = f"select tbname,AGG(COLUMN) from {dbname}.stable_1 group by tbname having count(*) <= 0 order by tbname " + self.data_check_tbname(sql,'HAVING=0','HAVING=0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql1 = f"select * from ({sql})" + self.data_check_tbname(sql1,'HAVING=0','HAVING=0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql2 = f"select * from ({sql}) order by tbname " + self.data_check_tbname(sql2,'HAVING=0','HAVING=0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + + sql = f"select tbname,AGG(COLUMN) from {dbname}.stable_1 where ts is null group by tbname having count(*) <= 0 order by tbname " + self.data_check_tbname(sql,'NULL','NULL',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql1 = f"select * from ({sql})" + self.data_check_tbname(sql1,'NULL','NULL',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql2 = f"select * from ({sql}) order by tbname " + self.data_check_tbname(sql2,'NULL','NULL',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + #count + having <=0 + sql = f"select tbname,AGG(COLUMN) from {dbname}.stable_1 group by tbname having AGG(COLUMN) = 0 order by tbname " + self.data_check_tbname(sql,'HAVING=0','HAVING=0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql1 = f"select * from ({sql})" + self.data_check_tbname(sql1,'HAVING=0','HAVING=0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql2 = f"select * from ({sql}) order by tbname " + self.data_check_tbname(sql2,'HAVING=0','HAVING=0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + + sql = f"select tbname,AGG(COLUMN) from {dbname}.stable_1 group by tbname having AGG(COLUMN) <= 0 order by tbname " + self.data_check_tbname(sql,'HAVING=0','HAVING=0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql1 = f"select * from ({sql})" + self.data_check_tbname(sql1,'HAVING=0','HAVING=0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql2 = f"select * from ({sql}) order by tbname " + self.data_check_tbname(sql2,'HAVING=0','HAVING=0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + + sql = f"select tbname,AGG(COLUMN) from {dbname}.stable_1 where ts is null group by tbname having AGG(COLUMN) = 0 order by tbname " + self.data_check_tbname(sql,'NULL','NULL',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql1 = f"select * from ({sql})" + self.data_check_tbname(sql1,'NULL','NULL',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql2 = f"select * from ({sql}) order by tbname " + self.data_check_tbname(sql2,'NULL','NULL',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + #having >0 + sql = f"select tbname,AGG(COLUMN) from {dbname}.stable_1 group by tbname having count(*) != 0 order by tbname " + self.data_check_tbname(sql,'HAVING>0','HAVING>0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql1 = f"select * from ({sql})" + self.data_check_tbname(sql1,'HAVING>0','HAVING>0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql2 = f"select * from ({sql}) order by tbname " + self.data_check_tbname(sql2,'HAVING>0','HAVING>0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql = f"select tbname,AGG(COLUMN) from {dbname}.stable_1 group by tbname having count(*) > 0 order by tbname " + self.data_check_tbname(sql,'HAVING>0','HAVING>0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql1 = f"select * from ({sql})" + self.data_check_tbname(sql1,'HAVING>0','HAVING>0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql2 = f"select * from ({sql}) order by tbname " + self.data_check_tbname(sql2,'HAVING>0','HAVING>0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + + sql = f"select tbname,AGG(COLUMN) from {dbname}.stable_1 where ts is null group by tbname having count(*) > 0 order by tbname " + self.data_check_tbname(sql,'AGG0','AGG0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql1 = f"select * from ({sql})" + self.data_check_tbname(sql1,'AGG0','AGG0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql2 = f"select * from ({sql}) order by tbname " + self.data_check_tbname(sql2,'AGG0','AGG0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + #count + having >0 + sql = f"select tbname,AGG(COLUMN) from {dbname}.stable_1 group by tbname having AGG(COLUMN) != 0 order by tbname " + self.data_check_tbname(sql,'HAVING>0','HAVING>0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql1 = f"select * from ({sql})" + self.data_check_tbname(sql1,'HAVING>0','HAVING>0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql2 = f"select * from ({sql}) order by tbname " + self.data_check_tbname(sql2,'HAVING>0','HAVING>0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql = f"select tbname,AGG(COLUMN) from {dbname}.stable_1 group by tbname having AGG(COLUMN) > 0 order by tbname " + self.data_check_tbname(sql,'HAVING>0','HAVING>0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql1 = f"select * from ({sql})" + self.data_check_tbname(sql1,'HAVING>0','HAVING>0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql2 = f"select * from ({sql}) order by tbname " + self.data_check_tbname(sql2,'HAVING>0','HAVING>0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql = f"select tbname,AGG(COLUMN) from {dbname}.stable_1 where ts is null group by tbname having AGG(COLUMN) != 0 order by tbname " + self.data_check_tbname(sql,'AGG0','AGG0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql1 = f"select * from ({sql})" + self.data_check_tbname(sql1,'AGG0','AGG0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql2 = f"select * from ({sql}) order by tbname " + self.data_check_tbname(sql2,'AGG0','AGG0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + #order by count(*) + sql = f"select tbname,AGG(COLUMN) from {dbname}.stable_1 group by tbname order by tbname,count(*) " + self.data_check_tbname(sql,'Y','Y',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql1 = f"select * from ({sql})" + self.data_check_tbname(sql1,'Y','Y',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql2 = f"select * from ({sql}) order by tbname " + self.data_check_tbname(sql2,'Y','Y',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql = f"select tbname,AGG(COLUMN) from {dbname}.stable_1 where ts is null group by tbname order by tbname,count(*) " + self.data_check_tbname(sql,'NULL','NULL',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql1 = f"select * from ({sql})" + self.data_check_tbname(sql1,'NULL','NULL',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql2 = f"select * from ({sql}) order by tbname " + self.data_check_tbname(sql2,'NULL','NULL',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + def tbname_count_null(self, dbname="nested",base_fun="AGG",replace_fun="COUNT",base_column="COLUMN",replace_column="q_int",execute="Y"): + + # stable count(*) + sql = f"select tbname,AGG(COLUMN) from {dbname}.stable_1 group by tbname order by tbname " + self.data_check_tbname(sql,'NULL','NULL',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql1 = f"select * from ({sql})" + self.data_check_tbname(sql1,'NULL','NULL',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql2 = f"select * from ({sql}) order by tbname " + self.data_check_tbname(sql2,'NULL','NULL',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + #where null \ not null + sql = f"select tbname,AGG(COLUMN) from {dbname}.stable_1 where ts is not null group by tbname order by tbname " + self.data_check_tbname(sql,'NULL','NULL',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql1 = f"select * from ({sql})" + self.data_check_tbname(sql1,'NULL','NULL',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql2 = f"select * from ({sql}) order by tbname " + self.data_check_tbname(sql2,'NULL','NULL',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql = f"select tbname,AGG(COLUMN) from {dbname}.stable_1 where ts is null group by tbname order by tbname " + self.data_check_tbname(sql,'NULL','NULL',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql1 = f"select * from ({sql})" + self.data_check_tbname(sql1,'NULL','NULL',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql2 = f"select * from ({sql}) order by tbname " + self.data_check_tbname(sql2,'NULL','NULL',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + #union + sql = f"select tbname tb,AGG(COLUMN) from {dbname}.stable_1 group by tbname order by tbname " + sql = f"({sql}) union ({sql}) order by tb" + self.data_check_tbname(sql,'NULL','NULL',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql1 = f"select * from ({sql})" + self.data_check_tbname(sql1,'NULL','NULL',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql2 = f"select * from ({sql}) order by tb " + self.data_check_tbname(sql2,'NULL','NULL',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + #union all + sql = f"select tbname tb,AGG(COLUMN) from {dbname}.stable_1 group by tbname order by tbname " + sql = f"({sql}) union all ({sql}) order by tb" + self.data_check_tbname(sql,'UNIONALLNULL','UNIONALLNULL',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql1 = f"select * from ({sql})" + self.data_check_tbname(sql1,'UNIONALLNULL','UNIONALLNULL',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql2 = f"select * from ({sql}) order by tb " + self.data_check_tbname(sql2,'UNIONALLNULL','UNIONALLNULL',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + #having <=0 + sql = f"select tbname,AGG(COLUMN) from {dbname}.stable_1 group by tbname having count(*) = 0 order by tbname " + self.data_check_tbname(sql,'HAVING=0','HAVING=0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql1 = f"select * from ({sql})" + self.data_check_tbname(sql1,'HAVING=0','HAVING=0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql2 = f"select * from ({sql}) order by tbname " + self.data_check_tbname(sql2,'HAVING=0','HAVING=0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql = f"select tbname,AGG(COLUMN) from {dbname}.stable_1 group by tbname having count(*) <= 0 order by tbname " + self.data_check_tbname(sql,'HAVING=0','HAVING=0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql1 = f"select * from ({sql})" + self.data_check_tbname(sql1,'HAVING=0','HAVING=0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql2 = f"select * from ({sql}) order by tbname " + self.data_check_tbname(sql2,'HAVING=0','HAVING=0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + + sql = f"select tbname,AGG(COLUMN) from {dbname}.stable_1 where ts is null group by tbname having count(*) <= 0 order by tbname " + self.data_check_tbname(sql,'NULL','NULL',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql1 = f"select * from ({sql})" + self.data_check_tbname(sql1,'NULL','NULL',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql2 = f"select * from ({sql}) order by tbname " + self.data_check_tbname(sql2,'NULL','NULL',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + #having >0 + sql = f"select tbname,AGG(COLUMN) from {dbname}.stable_1 group by tbname having count(*) != 0 order by tbname " + self.data_check_tbname(sql,'HAVINGCOLUMN=0','HAVINGCOLUMN=0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql1 = f"select * from ({sql})" + self.data_check_tbname(sql1,'HAVINGCOLUMN=0','HAVINGCOLUMN=0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql2 = f"select * from ({sql}) order by tbname " + self.data_check_tbname(sql2,'HAVINGCOLUMN=0','HAVINGCOLUMN=0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql = f"select tbname,AGG(COLUMN) from {dbname}.stable_1 group by tbname having count(*) > 0 order by tbname " + self.data_check_tbname(sql,'HAVINGCOLUMN=0','HAVINGCOLUMN=0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql1 = f"select * from ({sql})" + self.data_check_tbname(sql1,'HAVINGCOLUMN=0','HAVINGCOLUMN=0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql2 = f"select * from ({sql}) order by tbname " + self.data_check_tbname(sql2,'HAVINGCOLUMN=0','HAVINGCOLUMN=0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + + sql = f"select tbname,AGG(COLUMN) from {dbname}.stable_1 where ts is null group by tbname having count(*) != 0 order by tbname " + self.data_check_tbname(sql,'AGG0','AGG0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql1 = f"select * from ({sql})" + self.data_check_tbname(sql1,'AGG0','AGG0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql2 = f"select * from ({sql}) order by tbname " + self.data_check_tbname(sql2,'AGG0','AGG0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + #order by count(*) + sql = f"select tbname,AGG(COLUMN) from {dbname}.stable_1 group by tbname order by tbname,count(*) " + self.data_check_tbname(sql,'NULL','NULL',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql1 = f"select * from ({sql})" + self.data_check_tbname(sql1,'NULL','NULL',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql2 = f"select * from ({sql}) order by tbname " + self.data_check_tbname(sql2,'NULL','NULL',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql = f"select tbname,AGG(COLUMN) from {dbname}.stable_1 where ts is null group by tbname order by tbname,count(*) " + self.data_check_tbname(sql,'NULL','NULL',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql1 = f"select * from ({sql})" + self.data_check_tbname(sql1,'NULL','NULL',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql2 = f"select * from ({sql}) order by tbname " + self.data_check_tbname(sql2,'NULL','NULL',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + def tbname_count_all(self): + #random data + fake = Faker('zh_CN') + random_data_big = fake.random_int(min=-9223372036854775807, max=9223372036854775807, step=10) + random_data_str = fake.pystr() + random_data_float = fake.pyfloat() + + #random cal + calculations = ['+','-','*','/'] + calculation = random.sample(calculations,1) + calculation = str(calculation).replace("[","").replace("]","").replace("'","").replace(", ","") + + #random data column + data_columns = ['q_int','q_bigint','q_smallint','q_tinyint','q_float','q_double'] + data_null_columns = ['q_int_null','q_bigint_null','q_smallint_null','q_tinyint_null','q_float_null','q_double_null'] + + data_column = random.sample(data_columns,1) + data_column = str(data_column).replace("[","").replace("]","").replace("'","").replace(", ","") + + data_null_column = random.sample(data_null_columns,1) + data_null_column = str(data_null_column).replace("[","").replace("]","").replace("'","").replace(", ","") + + data_all_columns = data_columns + data_null_columns + data_all_column = random.sample(data_all_columns,1) + data_all_column = str(data_all_column).replace("[","").replace("]","").replace("'","").replace(", ","") + + #random data tag + data_tags = ['t_int','t_bigint','t_smallint','t_tinyint','t_float','t_double'] + data_null_tags = ['t_int_null','t_bigint_null','t_smallint_null','t_tinyint_null','t_float_null','t_double_null'] + + data_tag = random.sample(data_tags,1) + data_tag = str(data_tag).replace("[","").replace("]","").replace("'","").replace(", ","") + + data_null_tag = random.sample(data_null_tags,1) + data_null_tag = str(data_null_tag).replace("[","").replace("]","").replace("'","").replace(", ","") + + data_all_tags = data_tags + data_null_tags + data_all_tag = random.sample(data_all_tags,1) + data_all_tag = str(data_all_tag).replace("[","").replace("]","").replace("'","").replace(", ","") + + #random ts column + ts_columns = ['ts','_c0','_C0','_rowts'] + ts_column = random.sample(ts_columns,1) + ts_column = str(ts_column).replace("[","").replace("]","").replace("'","").replace(", ","") + #random other column + other_columns = ['q_bool','q_binary','q_nchar','q_ts','loc','t_bool','t_binary','t_nchar','t_ts'] + other_column = random.sample(other_columns,1) + other_column = str(other_column).replace("[","").replace("]","").replace("'","").replace(", ","") + + #random other null column and tag + other_null_columns = ['q_bool_null','q_binary_null','q_nchar_null','q_ts_null','t_bool_null','t_binary_null','t_nchar_null','t_ts_null'] + other_null_column = random.sample(other_null_columns,1) + other_null_column = str(other_null_column).replace("[","").replace("]","").replace("'","").replace(", ","") + + #random all column + all_columns = data_all_columns + data_all_tags + ts_columns + other_columns + other_null_columns + all_column = random.sample(all_columns,1) + all_column = str(all_column).replace("[","").replace("]","").replace("'","").replace(", ","") + + + self.tbname_count_null(replace_fun='count',replace_column=f'{data_null_column}') + self.tbname_count_null(replace_fun='count',replace_column=f'{data_null_tag}') + self.tbname_count_null(replace_fun='count',replace_column=f'{other_null_column}') + + self.tbname_count(replace_fun='count',replace_column='*') + self.tbname_count(replace_fun='count',replace_column=f'{data_column}') + self.tbname_count(replace_fun='count',replace_column=f'{ts_column}') + + self.tbname_count(replace_fun='count',replace_column=f'{other_column}') + self.tbname_count(replace_fun='count',replace_column=f'{data_tag}') + + self.tbname_count(replace_fun='count',replace_column=f'{random_data_big}') + self.tbname_count(replace_fun='count',replace_column=f'{random_data_float}') + self.tbname_count(replace_fun='count',replace_column=f'\'{random_data_str}\'') + self.tbname_count(replace_fun='count',replace_column=f'{random_data_big} {calculation} (abs({data_column})+1)') + self.tbname_count(replace_fun='count',replace_column=f'{random_data_float} {calculation} (abs({data_column})+1)') + + def tbname_agg(self, dbname="nested",base_fun="AGG",replace_fun="",base_column="COLUMN",replace_column="q_int",execute="Y"): + + # stable count(*) + sql = f"select tbname,AGG(COLUMN) from {dbname}.stable_1 group by tbname order by tbname " + self.data_check_tbname(sql,'AGG2','AGG2',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql1 = f"select * from ({sql})" + self.data_check_tbname(sql1,'AGG2','AGG2',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql2 = f"select * from ({sql}) order by tbname " + self.data_check_tbname(sql2,'AGG2','AGG2',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + #where null \ not null + sql = f"select tbname,AGG(COLUMN) from {dbname}.stable_1 where ts is not null group by tbname order by tbname " + self.data_check_tbname(sql,'AGG2','AGG2',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql1 = f"select * from ({sql})" + self.data_check_tbname(sql1,'AGG2','AGG2',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql2 = f"select * from ({sql}) order by tbname " + self.data_check_tbname(sql2,'AGG2','AGG2',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql = f"select tbname,AGG(COLUMN) from {dbname}.stable_1 where ts is null group by tbname order by tbname " + self.data_check_tbname(sql,'AGG0','AGG0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql1 = f"select * from ({sql})" + self.data_check_tbname(sql1,'AGG0','AGG0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql2 = f"select * from ({sql}) order by tbname " + self.data_check_tbname(sql2,'AGG0','AGG0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + + #union + sql = f"select tbname tb,AGG(COLUMN) from {dbname}.stable_1 group by tbname order by tbname " + sql = f"({sql}) union ({sql}) order by tb" + self.data_check_tbname(sql,'AGG2','AGG2',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql1 = f"select * from ({sql})" + self.data_check_tbname(sql1,'AGG2','AGG2',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql2 = f"select * from ({sql}) order by tb " + self.data_check_tbname(sql2,'AGG2','AGG2',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + #union all + sql = f"select tbname tb,AGG(COLUMN) from {dbname}.stable_1 group by tbname order by tbname " + sql = f"({sql}) union all ({sql}) order by tb" + self.data_check_tbname(sql,'AGG4','AGG4',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql1 = f"select * from ({sql})" + self.data_check_tbname(sql1,'AGG4','AGG4',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql2 = f"select * from ({sql}) order by tb " + self.data_check_tbname(sql2,'AGG4','AGG4',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + if execute=="Y": + sql = f"select tbname,AGG(COLUMN) from {dbname}.stable_1 group by tbname having count(*) = 0 order by tbname " + self.data_check_tbname(sql,'AGG10','AGG10',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql1 = f"select * from ({sql})" + self.data_check_tbname(sql1,'AGG10','AGG10',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql2 = f"select * from ({sql}) order by tbname " + self.data_check_tbname(sql2,'AGG10','AGG10',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql = f"select tbname,AGG(COLUMN) from {dbname}.stable_1 group by tbname having count(*) <= 0 order by tbname " + self.data_check_tbname(sql,'AGG10','AGG10',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql1 = f"select * from ({sql})" + self.data_check_tbname(sql1,'AGG10','AGG10',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql2 = f"select * from ({sql}) order by tbname " + self.data_check_tbname(sql2,'AGG10','AGG10',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + + sql = f"select tbname,AGG(COLUMN) from {dbname}.stable_1 group by tbname having count(*) != 0 order by tbname " + self.data_check_tbname(sql,'AGG2','AGG2',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql1 = f"select * from ({sql})" + self.data_check_tbname(sql1,'AGG2','AGG2',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql2 = f"select * from ({sql}) order by tbname " + self.data_check_tbname(sql2,'AGG2','AGG2',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql = f"select tbname,AGG(COLUMN) from {dbname}.stable_1 group by tbname having count(*) > 0 order by tbname " + self.data_check_tbname(sql,'AGG2','AGG2',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql1 = f"select * from ({sql})" + self.data_check_tbname(sql1,'AGG2','AGG2',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql2 = f"select * from ({sql}) order by tbname " + self.data_check_tbname(sql2,'AGG2','AGG2',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + + sql = f"select tbname,AGG(COLUMN) from {dbname}.stable_1 group by tbname order by tbname,count(*) " + self.data_check_tbname(sql,'AGG12','AGG12',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql1 = f"select * from ({sql})" + self.data_check_tbname(sql1,'AGG12','AGG12',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql2 = f"select * from ({sql}) order by tbname " + self.data_check_tbname(sql2,'AGG12','AGG12',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + # Mixed scene + if execute=="Y": + sql = f"select tbname,AGG(COLUMN) from {dbname}.stable_1 group by tbname having count(*) = 0 order by tbname " + self.data_check_tbname(sql,'AGG10','AGG10',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql1 = f"select * from ({sql})" + self.data_check_tbname(sql1,'AGG10','AGG10',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql2 = f"select * from ({sql}) order by tbname " + self.data_check_tbname(sql2,'AGG10','AGG10',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + + sql = f"select tbname,AGG(COLUMN) from {dbname}.stable_1 group by tbname having count(*) <= 0 order by tbname " + self.data_check_tbname(sql,'AGG10','AGG10',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql1 = f"select * from ({sql})" + self.data_check_tbname(sql1,'AGG10','AGG10',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql2 = f"select * from ({sql}) order by tbname " + self.data_check_tbname(sql2,'AGG10','AGG10',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + #union + sql = f"select tbname tb,AGG(COLUMN) from {dbname}.stable_1 group by tbname having count(*) = 0 order by tbname " + sql = f"({sql}) union ({sql}) order by tb" + self.data_check_tbname(sql,'AGG10','AGG10',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql1 = f"select * from ({sql})" + self.data_check_tbname(sql1,'AGG10','AGG10',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql2 = f"select * from ({sql}) order by tb " + self.data_check_tbname(sql2,'AGG10','AGG10',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + #union all + sql = f"select tbname tb,AGG(COLUMN) from {dbname}.stable_1 group by tbname having count(*) <= 0 order by tbname " + sql = f"({sql}) union all ({sql}) order by tb" + self.data_check_tbname(sql,'AGG20','AGG20',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql1 = f"select * from ({sql})" + self.data_check_tbname(sql1,'AGG20','AGG20',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql2 = f"select * from ({sql}) order by tb " + self.data_check_tbname(sql2,'AGG20','AGG20',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + + + sql = f"select tbname,AGG(COLUMN) from {dbname}.stable_1 group by tbname having count(*) != 0 order by tbname " + self.data_check_tbname(sql,'AGG2','AGG2',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql1 = f"select * from ({sql})" + self.data_check_tbname(sql1,'AGG2','AGG2',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql2 = f"select * from ({sql}) order by tbname " + self.data_check_tbname(sql2,'AGG2','AGG2',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + + sql = f"select tbname,AGG(COLUMN) from {dbname}.stable_1 group by tbname having count(*) > 0 order by tbname " + self.data_check_tbname(sql,'AGG2','AGG2',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql1 = f"select * from ({sql})" + self.data_check_tbname(sql1,'AGG2','AGG2',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql2 = f"select * from ({sql}) order by tbname " + self.data_check_tbname(sql2,'AGG2','AGG2',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + #union + sql = f"select tbname tb,AGG(COLUMN) from {dbname}.stable_1 group by tbname having count(*) != 0 order by tbname " + sql = f"({sql}) union ({sql}) order by tb" + self.data_check_tbname(sql,'AGG2','AGG2',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql1 = f"select * from ({sql})" + self.data_check_tbname(sql1,'AGG2','AGG2',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql2 = f"select * from ({sql}) order by tb " + self.data_check_tbname(sql2,'AGG2','AGG2',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + #union all + sql = f"select tbname tb,AGG(COLUMN) from {dbname}.stable_1 group by tbname having count(*) > 0 order by tbname " + sql = f"({sql}) union all ({sql}) order by tb" + self.data_check_tbname(sql,'AGG4','AGG4',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql1 = f"select * from ({sql})" + self.data_check_tbname(sql1,'AGG4','AGG4',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql2 = f"select * from ({sql}) order by tb " + self.data_check_tbname(sql2,'AGG4','AGG4',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + + + sql = f"select tbname,AGG(COLUMN) from {dbname}.stable_1 group by tbname order by tbname,AGG(COLUMN) " + self.data_check_tbname(sql,'AGG2','AGG2',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql1 = f"select * from ({sql})" + self.data_check_tbname(sql1,'AGG2','AGG2',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql2 = f"select * from ({sql}) order by tbname " + self.data_check_tbname(sql2,'AGG2','AGG2',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + #union + sql = f"select tbname tb,AGG(COLUMN) from {dbname}.stable_1 group by tbname order by tbname,AGG(COLUMN) " + sql = f"({sql}) union ({sql}) order by tb" + self.data_check_tbname(sql,'AGG2','AGG2',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql1 = f"select * from ({sql})" + self.data_check_tbname(sql1,'AGG2','AGG2',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql2 = f"select * from ({sql}) order by tb " + self.data_check_tbname(sql2,'AGG2','AGG2',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + #union all + sql = f"select tbname tb,AGG(COLUMN) from {dbname}.stable_1 group by tbname order by tbname,AGG(COLUMN) " + sql = f"({sql}) union all ({sql}) order by tb" + self.data_check_tbname(sql,'AGG4','AGG4',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql1 = f"select * from ({sql})" + self.data_check_tbname(sql1,'AGG4','AGG4',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql2 = f"select * from ({sql}) order by tb " + self.data_check_tbname(sql2,'AGG4','AGG4',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + + + sql = f"select tbname,AGG(COLUMN),count(*) from {dbname}.stable_1 group by tbname order by tbname,AGG(COLUMN) " + self.data_check_tbname(sql,'AGG12','AGG12',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql1 = f"select * from ({sql})" + self.data_check_tbname(sql1,'AGG12','AGG12',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql2 = f"select * from ({sql}) order by tbname " + self.data_check_tbname(sql2,'AGG12','AGG12',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + #union + sql = f"select tbname tb,AGG(COLUMN),count(*) from {dbname}.stable_1 group by tbname order by tbname,AGG(COLUMN)" + sql = f"({sql}) union ({sql}) order by tb" + self.data_check_tbname(sql,'AGG12','AGG12',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql1 = f"select * from ({sql})" + self.data_check_tbname(sql1,'AGG12','AGG12',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql2 = f"select * from ({sql}) order by tb " + self.data_check_tbname(sql2,'AGG12','AGG12',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + #union all + sql = f"select tbname tb ,AGG(COLUMN),count(*) from {dbname}.stable_1 group by tbname order by tbname,AGG(COLUMN)" + sql = f"({sql}) union all ({sql}) order by tb" + self.data_check_tbname(sql,'AGG24','AGG24',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql1 = f"select * from ({sql})" + self.data_check_tbname(sql1,'AGG24','AGG24',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql2 = f"select * from ({sql}) order by tb " + self.data_check_tbname(sql2,'AGG24','AGG24',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + + + sql = f"select tbname,AGG(COLUMN) from {dbname}.stable_1 group by tbname order by tbname,AGG(COLUMN),count(*) " + self.data_check_tbname(sql,'AGG12','AGG12',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql1 = f"select * from ({sql})" + self.data_check_tbname(sql1,'AGG12','AGG12',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql2 = f"select * from ({sql}) order by tbname " + self.data_check_tbname(sql2,'AGG12','AGG12',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + #union + sql = f"select tbname tb,AGG(COLUMN) from {dbname}.stable_1 group by tbname order by tbname,AGG(COLUMN),count(*)" + sql = f"({sql}) union ({sql}) order by tb" + self.data_check_tbname(sql,'AGG12','AGG12',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql1 = f"select * from ({sql})" + self.data_check_tbname(sql1,'AGG12','AGG12',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql2 = f"select * from ({sql}) order by tb " + self.data_check_tbname(sql2,'AGG12','AGG12',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + #union all + sql = f"select tbname tb,AGG(COLUMN) from {dbname}.stable_1 group by tbname order by tbname,AGG(COLUMN),count(*)" + sql = f"({sql}) union all ({sql}) order by tb" + self.data_check_tbname(sql,'AGG24','AGG24',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql1 = f"select * from ({sql})" + self.data_check_tbname(sql1,'AGG24','AGG24',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql2 = f"select * from ({sql}) order by tb " + self.data_check_tbname(sql2,'AGG24','AGG24',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + + + def tbname_agg_all(self): + #random data + fake = Faker('zh_CN') + random_data_big = fake.random_int(min=-9223372036854775807, max=9223372036854775807, step=10) + random_data_str = fake.pystr() + random_data_float = fake.pyfloat() + random_data_start = fake.random_int(min=0, max=100, step=1) + random_data_end = fake.random_int(min=0, max=100, step=1) + + #random cal + calculations = ['+','-','*','/'] + calculation = random.sample(calculations,1) + calculation = str(calculation).replace("[","").replace("]","").replace("'","").replace(", ","") + + #random data column + data_columns = ['q_int','q_bigint','q_smallint','q_tinyint','q_float','q_double','t_int','t_bigint','t_smallint','t_tinyint','t_float','t_double'] + data_null_columns = ['q_int_null','q_bigint_null','q_smallint_null','q_tinyint_null','q_float_null','q_double_null','t_int','t_bigint','t_smallint','t_tinyint','t_float','t_double'] + data_columns = data_columns + data_null_columns + data_column = random.sample(data_null_columns,1) + data_column = str(data_column).replace("[","").replace("]","").replace("'","").replace(", ","") + #random ts column + ts_columns = ['ts','_c0','_C0','_rowts'] + ts_column = random.sample(ts_columns,1) + ts_column = str(ts_column).replace("[","").replace("]","").replace("'","").replace(", ","") + #random ts unit column + ts_units = ['1a','1s','1m','1h','1d','1w'] + ts_unit = random.sample(ts_units,1) + ts_unit = str(ts_unit).replace("[","").replace("]","").replace("'","").replace(", ","") + #random str column + str_columns = ['q_int','q_bigint','q_smallint','q_tinyint','q_float','q_double','t_int','t_bigint','t_smallint','t_tinyint','t_float','t_double'] + str_column = random.sample(str_columns,1) + str_column = str(str_column).replace("[","").replace("]","").replace("'","").replace(", ","") + #random other column + other_columns = ['q_bool','q_binary','q_nchar','q_ts','loc','t_bool','t_binary','t_nchar','t_ts'] + other_column = random.sample(other_columns,1) + other_column = str(other_column).replace("[","").replace("]","").replace("'","").replace(", ","") + #random all column + all_columns = data_columns + ts_columns + str_columns + other_columns + all_column = random.sample(all_columns,1) + all_column = str(all_column).replace("[","").replace("]","").replace("'","").replace(", ","") + + self.tbname_agg(replace_fun='sum',replace_column=f'{data_column}') + self.tbname_agg(replace_fun='sum',replace_column=f'{random_data_big}') + self.tbname_agg(replace_fun='sum',replace_column=f'{random_data_float}') + self.tbname_agg(replace_fun='sum',replace_column=f'{random_data_big} {calculation} {data_column}') + self.tbname_agg(replace_fun='sum',replace_column=f'{random_data_float} {calculation} {data_column}') + + self.tbname_agg(replace_fun='avg',replace_column=f'{data_column}') + self.tbname_agg(replace_fun='avg',replace_column=f'{random_data_big}') + self.tbname_agg(replace_fun='avg',replace_column=f'{random_data_float}') + self.tbname_agg(replace_fun='avg',replace_column=f'{random_data_big} {calculation} {data_column}') + self.tbname_agg(replace_fun='avg',replace_column=f'{random_data_float} {calculation} {data_column}') + + self.tbname_agg(replace_fun='spread',replace_column=f'{data_column}') + self.tbname_agg(replace_fun='spread',replace_column=f'{random_data_big}') + self.tbname_agg(replace_fun='spread',replace_column=f'{random_data_float}') + self.tbname_agg(replace_fun='spread',replace_column=f'{random_data_big} {calculation} {data_column}') + self.tbname_agg(replace_fun='spread',replace_column=f'{random_data_float} {calculation} {data_column}') + + self.tbname_agg(replace_fun='stddev',replace_column=f'{data_column}') + self.tbname_agg(replace_fun='stddev',replace_column=f'{random_data_big}') + self.tbname_agg(replace_fun='stddev',replace_column=f'{random_data_float}') + self.tbname_agg(replace_fun='stddev',replace_column=f'{random_data_big} {calculation} {data_column}') + self.tbname_agg(replace_fun='stddev',replace_column=f'{random_data_float} {calculation} {data_column}') + + self.tbname_agg(replace_fun='elapsed',replace_column=f'{ts_column}') + self.tbname_agg(replace_fun='elapsed',replace_column=f'{ts_column},{ts_unit}') + + self.tbname_agg(replace_fun='hyperloglog',replace_column=f'{all_column}') + self.tbname_agg(replace_fun='hyperloglog',replace_column=f'{random_data_big}') + self.tbname_agg(replace_fun='hyperloglog',replace_column=f'{random_data_float}') + self.tbname_agg(replace_fun='hyperloglog',replace_column=f'\'{random_data_str}\'') + self.tbname_agg(replace_fun='hyperloglog',replace_column=f'{random_data_big} {calculation} {data_column}') + self.tbname_agg(replace_fun='hyperloglog',replace_column=f'{random_data_float} {calculation} {data_column}') + + self.tbname_agg(replace_fun='apercentile',replace_column=f'{data_column},{random_data_start}') + self.tbname_agg(replace_fun='apercentile',replace_column=f'{data_column},{random_data_start},"default"') + self.tbname_agg(replace_fun='apercentile',replace_column=f'{data_column},{random_data_start},"t-digest"') + # not support + # self.tbname_agg(replace_fun='percentile',replace_column=f'{data_column},{random_data_start}') + # self.tbname_agg(replace_fun='percentile',replace_column=f'{data_column},{random_data_end}') + # self.tbname_agg(replace_fun='percentile',replace_column=f'{data_column},{random_data_big}') + + self.tbname_agg(replace_fun='leastsquares',replace_column=f'{data_column},{random_data_start},{random_data_end}') + self.tbname_agg(replace_fun='leastsquares',replace_column=f'{data_column},{random_data_start},{random_data_big}') + + self.tbname_agg(replace_fun='histogram',replace_column=f'{data_column},"user_input","[-100000000000,100000000000]",0',execute='N') + self.tbname_agg(replace_fun='histogram',replace_column=f'{data_column},"user_input","[-100000000000,100000000000]",1',execute='N') + histogram_logbin = '{"start":1.0, "factor": 2.0, "count": 1, "infinity": false}' + histogram_linear_bin = '{"start":1.0, "width": 2.0, "count": 1, "infinity": false}' + self.tbname_agg(replace_fun='histogram',replace_column=f'{data_column},"log_bin",\'{histogram_logbin}\',1',execute='N') + self.tbname_agg(replace_fun='histogram',replace_column=f'{data_column},"linear_bin",\'{histogram_linear_bin}\',1',execute='N') + + + + def tag_count(self, dbname="nested",base_fun="AGG",replace_fun="COUNT",base_column="COLUMN",replace_column="q_int",execute="Y"): + + # stable count(*) + sql = f"select loc,AGG(COLUMN) from {dbname}.stable_1 group by loc order by loc " + self.data_check_tbname(sql,'Y','Y',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql1 = f"select * from ({sql})" + self.data_check_tbname(sql1,'Y','Y',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql2 = f"select * from ({sql}) order by loc " + self.data_check_tbname(sql2,'Y','Y',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + #where null \ not null + sql = f"select loc,AGG(COLUMN) from {dbname}.stable_1 where ts is not null group by loc order by loc " + self.data_check_tbname(sql,'Y','Y',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql1 = f"select * from ({sql})" + self.data_check_tbname(sql1,'Y','Y',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql2 = f"select * from ({sql}) order by loc " + self.data_check_tbname(sql2,'Y','Y',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql = f"select loc,AGG(COLUMN) from {dbname}.stable_1 where ts is null group by loc order by loc " + self.data_check_tbname(sql,'NULL','NULL',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql1 = f"select * from ({sql})" + self.data_check_tbname(sql1,'NULL','NULL',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql2 = f"select * from ({sql}) order by loc " + self.data_check_tbname(sql2,'NULL','NULL',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + #union + sql = f"select loc tb,AGG(COLUMN) from {dbname}.stable_1 group by loc order by loc " + sql = f"({sql}) union ({sql}) order by tb" + self.data_check_tbname(sql,'Y','Y',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql1 = f"select * from ({sql})" + self.data_check_tbname(sql1,'Y','Y',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql2 = f"select * from ({sql}) order by tb " + self.data_check_tbname(sql2,'Y','Y',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + #union all + sql = f"select loc tb,AGG(COLUMN) from {dbname}.stable_1 group by loc order by loc " + sql = f"({sql}) union all ({sql}) order by tb" + self.data_check_tbname(sql,'UNIONALL','UNIONALL',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql1 = f"select * from ({sql})" + self.data_check_tbname(sql1,'UNIONALL','UNIONALL',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql2 = f"select * from ({sql}) order by tb " + self.data_check_tbname(sql2,'UNIONALL','UNIONALL',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + + #having <=0 + sql = f"select loc,AGG(COLUMN) from {dbname}.stable_1 group by loc having count(*) = 0 order by loc " + self.data_check_tbname(sql,'HAVING=0','HAVING=0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql1 = f"select * from ({sql})" + self.data_check_tbname(sql1,'HAVING=0','HAVING=0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql2 = f"select * from ({sql}) order by loc " + self.data_check_tbname(sql2,'HAVING=0','HAVING=0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql = f"select loc,AGG(COLUMN) from {dbname}.stable_1 group by loc having count(*) <= 0 order by loc " + self.data_check_tbname(sql,'HAVING=0','HAVING=0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql1 = f"select * from ({sql})" + self.data_check_tbname(sql1,'HAVING=0','HAVING=0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql2 = f"select * from ({sql}) order by loc " + self.data_check_tbname(sql2,'HAVING=0','HAVING=0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + + sql = f"select loc,AGG(COLUMN) from {dbname}.stable_1 where ts is null group by loc having count(*) <= 0 order by loc " + self.data_check_tbname(sql,'NULL','NULL',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql1 = f"select * from ({sql})" + self.data_check_tbname(sql1,'NULL','NULL',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql2 = f"select * from ({sql}) order by loc " + self.data_check_tbname(sql2,'NULL','NULL',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + #count + having <=0 + sql = f"select loc,AGG(COLUMN) from {dbname}.stable_1 group by loc having AGG(COLUMN) = 0 order by loc " + self.data_check_tbname(sql,'HAVING=0','HAVING=0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql1 = f"select * from ({sql})" + self.data_check_tbname(sql1,'HAVING=0','HAVING=0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql2 = f"select * from ({sql}) order by loc " + self.data_check_tbname(sql2,'HAVING=0','HAVING=0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + + sql = f"select loc,AGG(COLUMN) from {dbname}.stable_1 group by loc having AGG(COLUMN) <= 0 order by loc " + self.data_check_tbname(sql,'HAVING=0','HAVING=0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql1 = f"select * from ({sql})" + self.data_check_tbname(sql1,'HAVING=0','HAVING=0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql2 = f"select * from ({sql}) order by loc " + self.data_check_tbname(sql2,'HAVING=0','HAVING=0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + + sql = f"select loc,AGG(COLUMN) from {dbname}.stable_1 where ts is null group by loc having AGG(COLUMN) = 0 order by loc " + self.data_check_tbname(sql,'NULL','NULL',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql1 = f"select * from ({sql})" + self.data_check_tbname(sql1,'NULL','NULL',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql2 = f"select * from ({sql}) order by loc " + self.data_check_tbname(sql2,'NULL','NULL',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + #having >0 + sql = f"select loc,AGG(COLUMN) from {dbname}.stable_1 group by loc having count(*) != 0 order by loc " + self.data_check_tbname(sql,'HAVING>0','HAVING>0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql1 = f"select * from ({sql})" + self.data_check_tbname(sql1,'HAVING>0','HAVING>0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql2 = f"select * from ({sql}) order by loc " + self.data_check_tbname(sql2,'HAVING>0','HAVING>0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql = f"select loc,AGG(COLUMN) from {dbname}.stable_1 group by loc having count(*) > 0 order by loc " + self.data_check_tbname(sql,'HAVING>0','HAVING>0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql1 = f"select * from ({sql})" + self.data_check_tbname(sql1,'HAVING>0','HAVING>0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql2 = f"select * from ({sql}) order by loc " + self.data_check_tbname(sql2,'HAVING>0','HAVING>0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + + sql = f"select loc,AGG(COLUMN) from {dbname}.stable_1 where ts is null group by loc having count(*) > 0 order by loc " + self.data_check_tbname(sql,'AGG0','AGG0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql1 = f"select * from ({sql})" + self.data_check_tbname(sql1,'AGG0','AGG0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql2 = f"select * from ({sql}) order by loc " + self.data_check_tbname(sql2,'AGG0','AGG0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + #count + having >0 + sql = f"select loc,AGG(COLUMN) from {dbname}.stable_1 group by loc having AGG(COLUMN) != 0 order by loc " + self.data_check_tbname(sql,'HAVING>0','HAVING>0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql1 = f"select * from ({sql})" + self.data_check_tbname(sql1,'HAVING>0','HAVING>0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql2 = f"select * from ({sql}) order by loc " + self.data_check_tbname(sql2,'HAVING>0','HAVING>0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql = f"select loc,AGG(COLUMN) from {dbname}.stable_1 group by loc having AGG(COLUMN) > 0 order by loc " + self.data_check_tbname(sql,'HAVING>0','HAVING>0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql1 = f"select * from ({sql})" + self.data_check_tbname(sql1,'HAVING>0','HAVING>0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql2 = f"select * from ({sql}) order by loc " + self.data_check_tbname(sql2,'HAVING>0','HAVING>0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql = f"select loc,AGG(COLUMN) from {dbname}.stable_1 where ts is null group by loc having AGG(COLUMN) != 0 order by loc " + self.data_check_tbname(sql,'AGG0','AGG0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql1 = f"select * from ({sql})" + self.data_check_tbname(sql1,'AGG0','AGG0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql2 = f"select * from ({sql}) order by loc " + self.data_check_tbname(sql2,'AGG0','AGG0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + #order by count(*) + sql = f"select loc,AGG(COLUMN) from {dbname}.stable_1 group by loc order by loc,count(*) " + self.data_check_tbname(sql,'Y','Y',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql1 = f"select * from ({sql})" + self.data_check_tbname(sql1,'Y','Y',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql2 = f"select * from ({sql}) order by loc " + self.data_check_tbname(sql2,'Y','Y',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql = f"select loc,AGG(COLUMN) from {dbname}.stable_1 where ts is null group by loc order by loc,count(*) " + self.data_check_tbname(sql,'NULL','NULL',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql1 = f"select * from ({sql})" + self.data_check_tbname(sql1,'NULL','NULL',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql2 = f"select * from ({sql}) order by loc " + self.data_check_tbname(sql2,'NULL','NULL',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + def tag_count_null(self, dbname="nested",base_fun="AGG",replace_fun="COUNT",base_column="COLUMN",replace_column="q_int",execute="Y"): + + # stable count(*) + sql = f"select loc,AGG(COLUMN) from {dbname}.stable_1 group by loc order by loc " + self.data_check_tbname(sql,'NULL','NULL',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql1 = f"select * from ({sql})" + self.data_check_tbname(sql1,'NULL','NULL',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql2 = f"select * from ({sql}) order by loc " + self.data_check_tbname(sql2,'NULL','NULL',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + #where null \ not null + sql = f"select loc,AGG(COLUMN) from {dbname}.stable_1 where ts is not null group by loc order by loc " + self.data_check_tbname(sql,'NULL','NULL',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql1 = f"select * from ({sql})" + self.data_check_tbname(sql1,'NULL','NULL',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql2 = f"select * from ({sql}) order by loc " + self.data_check_tbname(sql2,'NULL','NULL',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql = f"select loc,AGG(COLUMN) from {dbname}.stable_1 where ts is null group by loc order by loc " + self.data_check_tbname(sql,'NULL','NULL',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql1 = f"select * from ({sql})" + self.data_check_tbname(sql1,'NULL','NULL',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql2 = f"select * from ({sql}) order by loc " + self.data_check_tbname(sql2,'NULL','NULL',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + #union + sql = f"select loc tb,AGG(COLUMN) from {dbname}.stable_1 group by loc order by loc " + sql = f"({sql}) union ({sql}) order by tb" + self.data_check_tbname(sql,'NULL','NULL',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql1 = f"select * from ({sql})" + self.data_check_tbname(sql1,'NULL','NULL',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql2 = f"select * from ({sql}) order by tb " + self.data_check_tbname(sql2,'NULL','NULL',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + #union all + sql = f"select loc tb,AGG(COLUMN) from {dbname}.stable_1 group by loc order by loc " + sql = f"({sql}) union all ({sql}) order by tb" + self.data_check_tbname(sql,'UNIONALLNULL','UNIONALLNULL',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql1 = f"select * from ({sql})" + self.data_check_tbname(sql1,'UNIONALLNULL','UNIONALLNULL',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql2 = f"select * from ({sql}) order by tb " + self.data_check_tbname(sql2,'UNIONALLNULL','UNIONALLNULL',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + #having <=0 + sql = f"select loc,AGG(COLUMN) from {dbname}.stable_1 group by loc having count(*) = 0 order by loc " + self.data_check_tbname(sql,'HAVING=0','HAVING=0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql1 = f"select * from ({sql})" + self.data_check_tbname(sql1,'HAVING=0','HAVING=0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql2 = f"select * from ({sql}) order by loc " + self.data_check_tbname(sql2,'HAVING=0','HAVING=0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql = f"select loc,AGG(COLUMN) from {dbname}.stable_1 group by loc having count(*) <= 0 order by loc " + self.data_check_tbname(sql,'HAVING=0','HAVING=0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql1 = f"select * from ({sql})" + self.data_check_tbname(sql1,'HAVING=0','HAVING=0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql2 = f"select * from ({sql}) order by loc " + self.data_check_tbname(sql2,'HAVING=0','HAVING=0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + + sql = f"select loc,AGG(COLUMN) from {dbname}.stable_1 where ts is null group by loc having count(*) <= 0 order by loc " + self.data_check_tbname(sql,'NULL','NULL',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql1 = f"select * from ({sql})" + self.data_check_tbname(sql1,'NULL','NULL',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql2 = f"select * from ({sql}) order by loc " + self.data_check_tbname(sql2,'NULL','NULL',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + #having >0 + sql = f"select loc,AGG(COLUMN) from {dbname}.stable_1 group by loc having count(*) != 0 order by loc " + self.data_check_tbname(sql,'HAVINGCOLUMN=0','HAVINGCOLUMN=0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql1 = f"select * from ({sql})" + self.data_check_tbname(sql1,'HAVINGCOLUMN=0','HAVINGCOLUMN=0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql2 = f"select * from ({sql}) order by loc " + self.data_check_tbname(sql2,'HAVINGCOLUMN=0','HAVINGCOLUMN=0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql = f"select loc,AGG(COLUMN) from {dbname}.stable_1 group by loc having count(*) > 0 order by loc " + self.data_check_tbname(sql,'HAVINGCOLUMN=0','HAVINGCOLUMN=0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql1 = f"select * from ({sql})" + self.data_check_tbname(sql1,'HAVINGCOLUMN=0','HAVINGCOLUMN=0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql2 = f"select * from ({sql}) order by loc " + self.data_check_tbname(sql2,'HAVINGCOLUMN=0','HAVINGCOLUMN=0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + + sql = f"select loc,AGG(COLUMN) from {dbname}.stable_1 where ts is null group by loc having count(*) != 0 order by loc " + self.data_check_tbname(sql,'AGG0','AGG0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql1 = f"select * from ({sql})" + self.data_check_tbname(sql1,'AGG0','AGG0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql2 = f"select * from ({sql}) order by loc " + self.data_check_tbname(sql2,'AGG0','AGG0',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + #order by count(*) + sql = f"select loc,AGG(COLUMN) from {dbname}.stable_1 group by loc order by loc,count(*) " + self.data_check_tbname(sql,'NULL','NULL',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql1 = f"select * from ({sql})" + self.data_check_tbname(sql1,'NULL','NULL',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql2 = f"select * from ({sql}) order by loc " + self.data_check_tbname(sql2,'NULL','NULL',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql = f"select loc,AGG(COLUMN) from {dbname}.stable_1 where ts is null group by loc order by loc,count(*) " + self.data_check_tbname(sql,'NULL','NULL',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql1 = f"select * from ({sql})" + self.data_check_tbname(sql1,'NULL','NULL',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql2 = f"select * from ({sql}) order by loc " + self.data_check_tbname(sql2,'NULL','NULL',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + def tag_count_all(self): + #random data + fake = Faker('zh_CN') + random_data_big = fake.random_int(min=-9223372036854775807, max=9223372036854775807, step=10) + random_data_str = fake.pystr() + random_data_float = fake.pyfloat() + + #random cal + calculations = ['+','-','*','/'] + calculation = random.sample(calculations,1) + calculation = str(calculation).replace("[","").replace("]","").replace("'","").replace(", ","") + + #random data column + data_columns = ['q_int','q_bigint','q_smallint','q_tinyint','q_float','q_double'] + data_null_columns = ['q_int_null','q_bigint_null','q_smallint_null','q_tinyint_null','q_float_null','q_double_null'] + + data_column = random.sample(data_columns,1) + data_column = str(data_column).replace("[","").replace("]","").replace("'","").replace(", ","") + + data_null_column = random.sample(data_null_columns,1) + data_null_column = str(data_null_column).replace("[","").replace("]","").replace("'","").replace(", ","") + + data_all_columns = data_columns + data_null_columns + data_all_column = random.sample(data_all_columns,1) + data_all_column = str(data_all_column).replace("[","").replace("]","").replace("'","").replace(", ","") + + #random data tag + data_tags = ['t_int','t_bigint','t_smallint','t_tinyint','t_float','t_double'] + data_null_tags = ['t_int_null','t_bigint_null','t_smallint_null','t_tinyint_null','t_float_null','t_double_null'] + + data_tag = random.sample(data_tags,1) + data_tag = str(data_tag).replace("[","").replace("]","").replace("'","").replace(", ","") + + data_null_tag = random.sample(data_null_tags,1) + data_null_tag = str(data_null_tag).replace("[","").replace("]","").replace("'","").replace(", ","") + + data_all_tags = data_tags + data_null_tags + data_all_tag = random.sample(data_all_tags,1) + data_all_tag = str(data_all_tag).replace("[","").replace("]","").replace("'","").replace(", ","") + + #random ts column + ts_columns = ['ts','_c0','_C0','_rowts'] + ts_column = random.sample(ts_columns,1) + ts_column = str(ts_column).replace("[","").replace("]","").replace("'","").replace(", ","") + #random other column + other_columns = ['q_bool','q_binary','q_nchar','q_ts','loc','t_bool','t_binary','t_nchar','t_ts'] + other_column = random.sample(other_columns,1) + other_column = str(other_column).replace("[","").replace("]","").replace("'","").replace(", ","") + + #random other null column and tag + other_null_columns = ['q_bool_null','q_binary_null','q_nchar_null','q_ts_null','t_bool_null','t_binary_null','t_nchar_null','t_ts_null'] + other_null_column = random.sample(other_null_columns,1) + other_null_column = str(other_null_column).replace("[","").replace("]","").replace("'","").replace(", ","") + + #random all column + all_columns = data_all_columns + data_all_tags + ts_columns + other_columns + other_null_columns + all_column = random.sample(all_columns,1) + all_column = str(all_column).replace("[","").replace("]","").replace("'","").replace(", ","") + + + self.tag_count_null(replace_fun='count',replace_column=f'{data_null_column}') + self.tag_count_null(replace_fun='count',replace_column=f'{data_null_tag}') + self.tag_count_null(replace_fun='count',replace_column=f'{other_null_column}') + + self.tag_count(replace_fun='count',replace_column='*') + self.tag_count(replace_fun='count',replace_column=f'{data_column}') + self.tag_count(replace_fun='count',replace_column=f'{ts_column}') + + self.tag_count(replace_fun='count',replace_column=f'{other_column}') + self.tag_count(replace_fun='count',replace_column=f'{data_tag}') + + self.tag_count(replace_fun='count',replace_column=f'{random_data_big}') + self.tag_count(replace_fun='count',replace_column=f'{random_data_float}') + self.tag_count(replace_fun='count',replace_column=f'\'{random_data_str}\'') + self.tag_count(replace_fun='count',replace_column=f'{random_data_big} {calculation} (abs({data_column})+1)') + self.tag_count(replace_fun='count',replace_column=f'{random_data_float} {calculation} (abs({data_column})+1)') + + + + def modify_tables(self): + fake = Faker('zh_CN') + tdSql.execute('delete from stable_1_3;') + tdSql.execute('delete from stable_1_4;') + tdSql.execute('''create table stable_1_5 using stable_1 tags('stable_1_5', '%d' , '%d', '%d' , '%d' , 1 , 'binary6.%s' , 'nchar6.%s' , '%f', '%f' ,'%d') ;''' + %(fake.random_int(min=-2147483647, max=2147483647, step=1), fake.random_int(min=-9223372036854775807, max=9223372036854775807, step=1), + fake.random_int(min=-32767, max=32767, step=1) , fake.random_int(min=-127, max=127, step=1) , + fake.pystr() ,fake.pystr() ,fake.pyfloat(),fake.pyfloat(),fake.random_int(min=-2147483647, max=2147483647, step=1))) + tdSql.execute('''create table stable_1_6 using stable_1 tags('stable_1_6', '%d' , '%d', '%d' , '%d' , 1 , 'binary6.%s' , 'nchar6.%s' , '%f', '%f' ,'%d') ;''' + %(fake.random_int(min=-2147483647, max=2147483647, step=1), fake.random_int(min=-9223372036854775807, max=9223372036854775807, step=1), + fake.random_int(min=-32767, max=32767, step=1) , fake.random_int(min=-127, max=127, step=1) , + fake.pystr() ,fake.pystr() ,fake.pyfloat(),fake.pyfloat(),fake.random_int(min=-2147483647, max=2147483647, step=1))) + tdSql.execute('''create table stable_1_7 using stable_1 tags('stable_1_7', '%d' , '%d', '%d' , '%d' , 1 , 'binary6.%s' , 'nchar6.%s' , '%f', '%f' ,'%d') ;''' + %(fake.random_int(min=-2147483647, max=2147483647, step=1), fake.random_int(min=-9223372036854775807, max=9223372036854775807, step=1), + fake.random_int(min=-32767, max=32767, step=1) , fake.random_int(min=-127, max=127, step=1) , + fake.pystr() ,fake.pystr() ,fake.pyfloat(),fake.pyfloat(),fake.random_int(min=-2147483647, max=2147483647, step=1))) + tdSql.execute('''create table stable_1_8 using stable_1 tags('stable_1_8', '%d' , '%d', '%d' , '%d' , 1 , 'binary6.%s' , 'nchar6.%s' , '%f', '%f' ,'%d') ;''' + %(fake.random_int(min=-2147483647, max=2147483647, step=1), fake.random_int(min=-9223372036854775807, max=9223372036854775807, step=1), + fake.random_int(min=-32767, max=32767, step=1) , fake.random_int(min=-127, max=127, step=1) , + fake.pystr() ,fake.pystr() ,fake.pyfloat(),fake.pyfloat(),fake.random_int(min=-2147483647, max=2147483647, step=1))) + tdSql.execute('''create table stable_1_9 using stable_1 tags('stable_1_9', '%d' , '%d', '%d' , '%d' , 1 , 'binary6.%s' , 'nchar6.%s' , '%f', '%f' ,'%d') ;''' + %(fake.random_int(min=-2147483647, max=2147483647, step=1), fake.random_int(min=-9223372036854775807, max=9223372036854775807, step=1), + fake.random_int(min=-32767, max=32767, step=1) , fake.random_int(min=-127, max=127, step=1) , + fake.pystr() ,fake.pystr() ,fake.pyfloat(),fake.pyfloat(),fake.random_int(min=-2147483647, max=2147483647, step=1))) + tdSql.execute('''create table stable_1_90 using stable_1 tags('stable_1_90', '%d' , '%d', '%d' , '%d' , 1 , 'binary6.%s' , 'nchar6.%s' , '%f', '%f' ,'%d') ;''' + %(fake.random_int(min=-2147483647, max=2147483647, step=1), fake.random_int(min=-9223372036854775807, max=9223372036854775807, step=1), + fake.random_int(min=-32767, max=32767, step=1) , fake.random_int(min=-127, max=127, step=1) , + fake.pystr() ,fake.pystr() ,fake.pyfloat(),fake.pyfloat(),fake.random_int(min=-2147483647, max=2147483647, step=1))) + tdSql.execute('''create table stable_1_91 using stable_1 tags('stable_1_91', '%d' , '%d', '%d' , '%d' , 1 , 'binary6.%s' , 'nchar6.%s' , '%f', '%f' ,'%d') ;''' + %(fake.random_int(min=-2147483647, max=2147483647, step=1), fake.random_int(min=-9223372036854775807, max=9223372036854775807, step=1), + fake.random_int(min=-32767, max=32767, step=1) , fake.random_int(min=-127, max=127, step=1) , + fake.pystr() ,fake.pystr() ,fake.pyfloat(),fake.pyfloat(),fake.random_int(min=-2147483647, max=2147483647, step=1))) + tdSql.execute('''create table stable_1_92 using stable_1 tags('stable_1_92', '%d' , '%d', '%d' , '%d' , 1 , 'binary6.%s' , 'nchar6.%s' , '%f', '%f' ,'%d') ;''' + %(fake.random_int(min=-2147483647, max=2147483647, step=1), fake.random_int(min=-9223372036854775807, max=9223372036854775807, step=1), + fake.random_int(min=-32767, max=32767, step=1) , fake.random_int(min=-127, max=127, step=1) , + fake.pystr() ,fake.pystr() ,fake.pyfloat(),fake.pyfloat(),fake.random_int(min=-2147483647, max=2147483647, step=1))) + + tdSql.execute('alter stable stable_1 add tag t_int_null INT;') + tdSql.execute('alter stable stable_1 add tag t_bigint_null BIGINT;') + tdSql.execute('alter stable stable_1 add tag t_smallint_null SMALLINT;') + tdSql.execute('alter stable stable_1 add tag t_tinyint_null TINYINT;') + tdSql.execute('alter stable stable_1 add tag t_bool_null BOOL;') + tdSql.execute('alter stable stable_1 add tag t_binary_null VARCHAR(100);') + tdSql.execute('alter stable stable_1 add tag t_nchar_null NCHAR(100);') + tdSql.execute('alter stable stable_1 add tag t_float_null FLOAT;') + tdSql.execute('alter stable stable_1 add tag t_double_null DOUBLE;') + tdSql.execute('alter stable stable_1 add tag t_ts_null TIMESTAMP;') + + tdSql.execute('alter stable stable_1 drop column q_nchar8;') + tdSql.execute('alter stable stable_1 drop column q_binary8;') + tdSql.execute('alter stable stable_1 drop column q_nchar7;') + tdSql.execute('alter stable stable_1 drop column q_binary7;') + tdSql.execute('alter stable stable_1 drop column q_nchar6;') + tdSql.execute('alter stable stable_1 drop column q_binary6;') + tdSql.execute('alter stable stable_1 drop column q_nchar5;') + tdSql.execute('alter stable stable_1 drop column q_binary5;') + tdSql.execute('alter stable stable_1 drop column q_nchar4;') + tdSql.execute('alter stable stable_1 drop column q_binary4;') + + def run(self): + tdSql.prepare() + + startTime = time.time() + + # self.create_tables() + # self.insert_data() + + self.dropandcreateDB_random("nested", 1) + self.modify_tables() + + for i in range(1): + self.tbname_count_all() + self.tag_count_all() + self.tbname_agg_all() + + + endTime = time.time() + print("total time %ds" % (endTime - startTime)) + + + + + def stop(self): + tdSql.close() + tdLog.success("%s successfully executed" % __file__) + + +tdCases.addWindows(__file__, TDTestCase()) +tdCases.addLinux(__file__, TDTestCase()) From b1841ceff5ff39b2e73dd0f5bcda818984acc209 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9Chappyguoxy=E2=80=9D?= <“happy_guoxy@163.com”> Date: Thu, 1 Feb 2024 10:41:44 +0800 Subject: [PATCH 3/6] test: add agg group always/not return value cases --- tests/parallel_test/cases.task | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/tests/parallel_test/cases.task b/tests/parallel_test/cases.task index 9bc2827157..0492741691 100644 --- a/tests/parallel_test/cases.task +++ b/tests/parallel_test/cases.task @@ -164,6 +164,14 @@ fi ,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/td-28068.py -Q 2 ,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/td-28068.py -Q 3 ,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/td-28068.py -Q 4 +,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/agg_group_AlwaysReturnValue.py +,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/agg_group_AlwaysReturnValue.py -Q 2 +,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/agg_group_AlwaysReturnValue.py -Q 3 +,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/agg_group_AlwaysReturnValue.py -Q 4 +,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/agg_group_NotReturnValue.py +,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/agg_group_NotReturnValue.py -Q 2 +,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/agg_group_NotReturnValue.py -Q 3 +,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/agg_group_NotReturnValue.py -Q 4 ,,y,system-test,./pytest.sh python3 ./test.py -f 3-enterprise/restore/restoreDnode.py -N 5 -M 3 -i False ,,y,system-test,./pytest.sh python3 ./test.py -f 3-enterprise/restore/restoreVnode.py -N 5 -M 3 -i False From 5434019d2b0ce73dc4be2550e40e61c74ae11ee0 Mon Sep 17 00:00:00 2001 From: factosea <285808407@qq.com> Date: Sun, 18 Feb 2024 15:50:34 +0800 Subject: [PATCH 4/6] fix: count(tag) when use qnode --- source/client/src/clientImpl.c | 3 +++ source/common/src/tdatablock.c | 13 +++++++++++-- source/libs/parser/src/parInsertUtil.c | 5 ++++- 3 files changed, 18 insertions(+), 3 deletions(-) diff --git a/source/client/src/clientImpl.c b/source/client/src/clientImpl.c index 9800d233e9..7556152f5a 100644 --- a/source/client/src/clientImpl.c +++ b/source/client/src/clientImpl.c @@ -2028,6 +2028,9 @@ int32_t setResultDataPtr(SReqResultInfo* pResultInfo, TAOS_FIELD* pFields, int32 int32_t rows = *(int32_t*)p; p += sizeof(int32_t); + // bool blankFill = *(bool*)p; + p += sizeof(bool); + int32_t cols = *(int32_t*)p; p += sizeof(int32_t); diff --git a/source/common/src/tdatablock.c b/source/common/src/tdatablock.c index 5382259899..d39daa53e3 100644 --- a/source/common/src/tdatablock.c +++ b/source/common/src/tdatablock.c @@ -866,9 +866,9 @@ size_t blockDataGetRowSize(SSDataBlock* pBlock) { * @return */ size_t blockDataGetSerialMetaSize(uint32_t numOfCols) { - // | version | total length | total rows | total columns | flag seg| block group id | column schema + // | version | total length | total rows | blankFull | total columns | flag seg| block group id | column schema // | each column length | - return sizeof(int32_t) + sizeof(int32_t) + sizeof(int32_t) + sizeof(int32_t) + sizeof(int32_t) + sizeof(uint64_t) + + return sizeof(int32_t) + sizeof(int32_t) + sizeof(int32_t) + sizeof(bool) + sizeof(int32_t) + sizeof(int32_t) + sizeof(uint64_t) + numOfCols * (sizeof(int8_t) + sizeof(int32_t)) + numOfCols * sizeof(int32_t); } @@ -1436,6 +1436,7 @@ SSDataBlock* createOneDataBlock(const SSDataBlock* pDataBlock, bool copyData) { pBlock->info.capacity = 0; pBlock->info.rowSize = 0; pBlock->info.id = pDataBlock->info.id; + pBlock->info.blankFill = pDataBlock->info.blankFill; size_t numOfCols = taosArrayGetSize(pDataBlock->pDataBlock); for (int32_t i = 0; i < numOfCols; ++i) { @@ -2207,6 +2208,10 @@ int32_t blockEncode(const SSDataBlock* pBlock, char* data, int32_t numOfCols) { data += sizeof(int32_t); ASSERT(*rows > 0); + bool* blankFill = (bool*)data; + *blankFill = pBlock->info.blankFill; + data += sizeof(bool); + int32_t* cols = (int32_t*)data; *cols = numOfCols; data += sizeof(int32_t); @@ -2302,6 +2307,9 @@ const char* blockDecode(SSDataBlock* pBlock, const char* pData) { int32_t numOfRows = *(int32_t*)pStart; pStart += sizeof(int32_t); + bool blankFill = *(bool*)pStart; + pStart += sizeof(bool); + // total columns sizeof(int32_t) int32_t numOfCols = *(int32_t*)pStart; pStart += sizeof(int32_t); @@ -2377,6 +2385,7 @@ const char* blockDecode(SSDataBlock* pBlock, const char* pData) { pBlock->info.dataLoad = 1; pBlock->info.rows = numOfRows; + pBlock->info.blankFill = blankFill; ASSERT(pStart - pData == dataLen); return pStart; } diff --git a/source/libs/parser/src/parInsertUtil.c b/source/libs/parser/src/parInsertUtil.c index 6b655bfae6..c4b021b992 100644 --- a/source/libs/parser/src/parInsertUtil.c +++ b/source/libs/parser/src/parInsertUtil.c @@ -660,7 +660,7 @@ int rawBlockBindData(SQuery* query, STableMeta* pTableMeta, void* data, SVCreate } char* p = (char*)data; - // | version | total length | total rows | total columns | flag seg| block group id | column schema | each column + // | version | total length | total rows | blankFill | total columns | flag seg| block group id | column schema | each column // length | int32_t version = *(int32_t*)data; p += sizeof(int32_t); @@ -669,6 +669,9 @@ int rawBlockBindData(SQuery* query, STableMeta* pTableMeta, void* data, SVCreate int32_t numOfRows = *(int32_t*)p; p += sizeof(int32_t); + // blankFill + p += sizeof(bool); + int32_t numOfCols = *(int32_t*)p; p += sizeof(int32_t); From ccba2c6612ce9e57a17774a2e594ee51ee5d7e1d Mon Sep 17 00:00:00 2001 From: factosea <285808407@qq.com> Date: Mon, 19 Feb 2024 17:28:11 +0800 Subject: [PATCH 5/6] fix: block format --- source/client/src/clientImpl.c | 6 +++--- source/common/src/tdatablock.c | 14 +++++++------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/source/client/src/clientImpl.c b/source/client/src/clientImpl.c index 7556152f5a..6c48ad1fcb 100644 --- a/source/client/src/clientImpl.c +++ b/source/client/src/clientImpl.c @@ -2028,9 +2028,6 @@ int32_t setResultDataPtr(SReqResultInfo* pResultInfo, TAOS_FIELD* pFields, int32 int32_t rows = *(int32_t*)p; p += sizeof(int32_t); - // bool blankFill = *(bool*)p; - p += sizeof(bool); - int32_t cols = *(int32_t*)p; p += sizeof(int32_t); @@ -2085,6 +2082,9 @@ int32_t setResultDataPtr(SReqResultInfo* pResultInfo, TAOS_FIELD* pFields, int32 pStart += colLength[i]; } + // bool blankFill = *(bool*)p; + p += sizeof(bool); + if (convertUcs4) { code = doConvertUCS4(pResultInfo, numOfRows, numOfCols, colLength); } diff --git a/source/common/src/tdatablock.c b/source/common/src/tdatablock.c index d39daa53e3..d364a58494 100644 --- a/source/common/src/tdatablock.c +++ b/source/common/src/tdatablock.c @@ -2208,10 +2208,6 @@ int32_t blockEncode(const SSDataBlock* pBlock, char* data, int32_t numOfCols) { data += sizeof(int32_t); ASSERT(*rows > 0); - bool* blankFill = (bool*)data; - *blankFill = pBlock->info.blankFill; - data += sizeof(bool); - int32_t* cols = (int32_t*)data; *cols = numOfCols; data += sizeof(int32_t); @@ -2287,6 +2283,10 @@ int32_t blockEncode(const SSDataBlock* pBlock, char* data, int32_t numOfCols) { // htonl(colSizes[col]), colSizes[col]); } + bool* blankFill = (bool*)data; + *blankFill = pBlock->info.blankFill; + data += sizeof(bool); + *actualLen = dataLen; *groupId = pBlock->info.id.groupId; ASSERT(dataLen > 0); @@ -2307,9 +2307,6 @@ const char* blockDecode(SSDataBlock* pBlock, const char* pData) { int32_t numOfRows = *(int32_t*)pStart; pStart += sizeof(int32_t); - bool blankFill = *(bool*)pStart; - pStart += sizeof(bool); - // total columns sizeof(int32_t) int32_t numOfCols = *(int32_t*)pStart; pStart += sizeof(int32_t); @@ -2383,6 +2380,9 @@ const char* blockDecode(SSDataBlock* pBlock, const char* pData) { pStart += colLen[i]; } + bool blankFill = *(bool*)pStart; + pStart += sizeof(bool); + pBlock->info.dataLoad = 1; pBlock->info.rows = numOfRows; pBlock->info.blankFill = blankFill; From 3439ff6e6345fa2cea4cc65fd1b4dd814a7bc365 Mon Sep 17 00:00:00 2001 From: factosea <285808407@qq.com> Date: Mon, 19 Feb 2024 20:13:05 +0800 Subject: [PATCH 6/6] fix: rawBlockBindData --- source/libs/parser/src/parInsertUtil.c | 3 --- 1 file changed, 3 deletions(-) diff --git a/source/libs/parser/src/parInsertUtil.c b/source/libs/parser/src/parInsertUtil.c index c4b021b992..917108f64d 100644 --- a/source/libs/parser/src/parInsertUtil.c +++ b/source/libs/parser/src/parInsertUtil.c @@ -669,9 +669,6 @@ int rawBlockBindData(SQuery* query, STableMeta* pTableMeta, void* data, SVCreate int32_t numOfRows = *(int32_t*)p; p += sizeof(int32_t); - // blankFill - p += sizeof(bool); - int32_t numOfCols = *(int32_t*)p; p += sizeof(int32_t);