nanoSecondCheck.py 9.2 KB
Newer Older
1
# #################################################################
B
bryanchang0603 已提交
2 3
#           Copyright (c) 2016 by TAOS Technologies, Inc.
#                     All rights reserved.
4

B
bryanchang0603 已提交
5 6 7 8
#  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
9 10

# #################################################################
B
bryanchang0603 已提交
11 12 13

# -*- coding: utf-8 -*-

14
# TODO: after TD-4518 and TD-4510 is resolved, add the exception test case for these situations
B
bryanchang0603 已提交
15 16 17 18 19 20 21 22

import sys
from util.log import *
from util.cases import *
from util.sql import *
import time
from datetime import datetime
import os
23

B
bryanchang0603 已提交
24 25 26 27 28 29 30 31 32 33

class TDTestCase:
    def init(self, conn, logSql):
        tdLog.debug("start to execute %s" % __file__)
        tdSql.init(conn.cursor(), logSql)

    def run(self):
        tdSql.prepare()
        tdSql.execute('reset query cache')
        tdSql.execute('drop database if exists db')
N
Navneet Kumar 已提交
34 35 36
        tdSql.error('create database db keep 365000') 
        tdSql.execute('create database db precision "ns"')
        tdSql.query('show databases')
B
bryanchang0603 已提交
37 38
        tdSql.checkData(0,16,'ns')
        tdSql.execute('use db')
39 40

        tdLog.debug('testing nanosecond support in 1st timestamp')
B
bryanchang0603 已提交
41
        tdSql.execute('create table tb (ts timestamp, speed int)')
N
Navneet Kumar 已提交
42 43 44 45 46 47
        tdSql.execute('insert into tb values(\'2021-06-10 0:00:00.100000001\', 1)')
        tdSql.execute('insert into tb values(1623254400150000000, 2)')
        tdSql.execute('import into tb values(1623254400300000000, 3)')
        tdSql.execute('import into tb values(1623254400299999999, 4)')
        tdSql.execute('insert into tb values(1623254400300000001, 5)')
        tdSql.execute('insert into tb values(1623254400999999999, 7)')
B
bryanchang0603 已提交
48

B
bryanchang0603 已提交
49

N
Navneet Kumar 已提交
50
        tdSql.query('select * from tb')
51 52 53 54 55 56 57
        tdSql.checkData(0,0,'2021-06-10 0:00:00.100000001')
        tdSql.checkData(1,0,'2021-06-10 0:00:00.150000000')
        tdSql.checkData(2,0,'2021-06-10 0:00:00.299999999')
        tdSql.checkData(3,1,3)
        tdSql.checkData(4,1,5)
        tdSql.checkData(5,1,7)
        tdSql.checkRows(6)
N
Navneet Kumar 已提交
58
        tdSql.query('select count(*) from tb where ts > 1623254400100000000 and ts < 1623254400100000002')
59
        tdSql.checkData(0,0,1)
N
Navneet Kumar 已提交
60
        tdSql.query('select count(*) from tb where ts > \'2021-06-10 0:00:00.100000001\' and ts < \'2021-06-10 0:00:00.160000000\'')
61 62
        tdSql.checkData(0,0,1)

N
Navneet Kumar 已提交
63
        tdSql.query('select count(*) from tb where ts > 1623254400100000000 and ts < 1623254400150000000')
64
        tdSql.checkData(0,0,1)
N
Navneet Kumar 已提交
65
        tdSql.query('select count(*) from tb where ts > \'2021-06-10 0:00:00.100000000\' and ts < \'2021-06-10 0:00:00.150000000\'')
66 67
        tdSql.checkData(0,0,1)

N
Navneet Kumar 已提交
68
        tdSql.query('select count(*) from tb where ts > 1623254400400000000')
69
        tdSql.checkData(0,0,1)
N
Navneet Kumar 已提交
70
        tdSql.query('select count(*) from tb where ts < \'2021-06-10 00:00:00.400000000\'')
71
        tdSql.checkData(0,0,5)
B
bryanchang0603 已提交
72

N
Navneet Kumar 已提交
73
        tdSql.query('select count(*) from tb where ts > now + 400000000b')
74
        tdSql.checkRows(0)
B
bryanchang0603 已提交
75

N
Navneet Kumar 已提交
76
        tdSql.query('select count(*) from tb where ts >= \'2021-06-10 0:00:00.100000001\'')
77
        tdSql.checkData(0,0,6)
B
bryanchang0603 已提交
78

N
Navneet Kumar 已提交
79
        tdSql.query('select count(*) from tb where ts <= 1623254400300000000')
80
        tdSql.checkData(0,0,4)
B
bryanchang0603 已提交
81

N
Navneet Kumar 已提交
82
        tdSql.query('select count(*) from tb where ts = \'2021-06-10 0:00:00.000000000\'')
83
        tdSql.checkRows(0)
B
bryanchang0603 已提交
84

N
Navneet Kumar 已提交
85
        tdSql.query('select count(*) from tb where ts = 1623254400150000000')
86
        tdSql.checkData(0,0,1)
B
bryanchang0603 已提交
87

N
Navneet Kumar 已提交
88
        tdSql.query('select count(*) from tb where ts = \'2021-06-10 0:00:00.100000001\'')
89
        tdSql.checkData(0,0,1)
B
bryanchang0603 已提交
90

N
Navneet Kumar 已提交
91
        tdSql.query('select count(*) from tb where ts between 1623254400000000000 and 1623254400400000000')
92
        tdSql.checkData(0,0,5)
B
bryanchang0603 已提交
93

N
Navneet Kumar 已提交
94
        tdSql.query('select count(*) from tb where ts between \'2021-06-10 0:00:00.299999999\' and \'2021-06-10 0:00:00.300000001\'')
95
        tdSql.checkData(0,0,3)
B
bryanchang0603 已提交
96

N
Navneet Kumar 已提交
97
        tdSql.query('select avg(speed) from tb interval(5000000000b)')
98
        tdSql.checkRows(1)
B
bryanchang0603 已提交
99

100 101
        tdSql.query('select avg(speed) from tb interval(100000000b)')
        tdSql.checkRows(4)
B
bryanchang0603 已提交
102

N
Navneet Kumar 已提交
103 104
        tdSql.error('select avg(speed) from tb interval(1b)')
        tdSql.error('select avg(speed) from tb interval(999b)')
105

N
Navneet Kumar 已提交
106
        tdSql.query('select avg(speed) from tb interval(1000b)')
107 108
        tdSql.checkRows(5)

N
Navneet Kumar 已提交
109
        tdSql.query('select avg(speed) from tb interval(1u)')
110 111
        tdSql.checkRows(5)

N
Navneet Kumar 已提交
112
        tdSql.query('select avg(speed) from tb interval(100000000b) sliding (100000000b)')
113
        tdSql.checkRows(4)
B
bryanchang0603 已提交
114

115 116 117
        tdSql.query('select last(*) from tb')
        tdSql.checkData(0,0, '2021-06-10 0:00:00.999999999')
        tdSql.checkData(0,0, 1623254400999999999)
B
bryanchang0603 已提交
118

119 120 121
        tdSql.query('select first(*) from tb')
        tdSql.checkData(0,0, 1623254400100000001)
        tdSql.checkData(0,0, '2021-06-10 0:00:00.100000001')
B
bryanchang0603 已提交
122

N
Navneet Kumar 已提交
123 124
        tdSql.execute('insert into tb values(now + 500000000b, 6)')
        tdSql.query('select * from tb')
125
        tdSql.checkRows(7)
B
bryanchang0603 已提交
126

127
        tdLog.debug('testing nanosecond support in other timestamps')
N
Navneet Kumar 已提交
128 129 130 131 132 133 134 135 136
        tdSql.execute('create table tb2 (ts timestamp, speed int, ts2 timestamp)')
        tdSql.execute('insert into tb2 values(\'2021-06-10 0:00:00.100000001\', 1, \'2021-06-11 0:00:00.100000001\')')
        tdSql.execute('insert into tb2 values(1623254400150000000, 2, 1623340800150000000)')
        tdSql.execute('import into tb2 values(1623254400300000000, 3, 1623340800300000000)')
        tdSql.execute('import into tb2 values(1623254400299999999, 4, 1623340800299999999)')
        tdSql.execute('insert into tb2 values(1623254400300000001, 5, 1623340800300000001)')
        tdSql.execute('insert into tb2 values(1623254400999999999, 7, 1623513600999999999)')

        tdSql.query('select * from tb2')
137 138 139 140 141 142 143
        tdSql.checkData(0,0,'2021-06-10 0:00:00.100000001')
        tdSql.checkData(1,0,'2021-06-10 0:00:00.150000000')
        tdSql.checkData(2,1,4)
        tdSql.checkData(3,1,3)
        tdSql.checkData(4,2,'2021-06-11 00:00:00.300000001')
        tdSql.checkData(5,2,'2021-06-13 00:00:00.999999999')
        tdSql.checkRows(6)
N
Navneet Kumar 已提交
144
        tdSql.query('select count(*) from tb2 where ts2 > 1623340800000000000 and ts2 < 1623340800150000000')
145
        tdSql.checkData(0,0,1)
N
Navneet Kumar 已提交
146
        tdSql.query('select count(*) from tb2 where ts2 > \'2021-06-11 0:00:00.100000000\' and ts2 < \'2021-06-11 0:00:00.100000002\'')
147 148
        tdSql.checkData(0,0,1)

N
Navneet Kumar 已提交
149
        tdSql.query('select count(*) from tb2 where ts2 > 1623340800500000000')
150
        tdSql.checkData(0,0,1)
N
Navneet Kumar 已提交
151
        tdSql.query('select count(*) from tb2 where ts2 < \'2021-06-11 0:00:00.400000000\'')
152
        tdSql.checkData(0,0,5)
B
bryanchang0603 已提交
153

N
Navneet Kumar 已提交
154
        tdSql.query('select count(*) from tb2 where ts2 > now + 400000000b')
155
        tdSql.checkRows(0)
B
bryanchang0603 已提交
156

N
Navneet Kumar 已提交
157
        tdSql.query('select count(*) from tb2 where ts2 >= \'2021-06-11 0:00:00.100000001\'')
158
        tdSql.checkData(0,0,6)
B
bryanchang0603 已提交
159

N
Navneet Kumar 已提交
160
        tdSql.query('select count(*) from tb2 where ts2 <= 1623340800400000000')
161
        tdSql.checkData(0,0,5)
B
bryanchang0603 已提交
162

N
Navneet Kumar 已提交
163
        tdSql.query('select count(*) from tb2 where ts2 = \'2021-06-11 0:00:00.000000000\'')
164
        tdSql.checkRows(0)
B
bryanchang0603 已提交
165

N
Navneet Kumar 已提交
166
        tdSql.query('select count(*) from tb2 where ts2 = \'2021-06-11 0:00:00.300000001\'')
167
        tdSql.checkData(0,0,1)
B
bryanchang0603 已提交
168

N
Navneet Kumar 已提交
169
        tdSql.query('select count(*) from tb2 where ts2 = 1623340800300000001')
170
        tdSql.checkData(0,0,1)
B
bryanchang0603 已提交
171

N
Navneet Kumar 已提交
172
        tdSql.query('select count(*) from tb2 where ts2 between 1623340800000000000 and 1623340800450000000')
173
        tdSql.checkData(0,0,5)
B
bryanchang0603 已提交
174

N
Navneet Kumar 已提交
175
        tdSql.query('select count(*) from tb2 where ts2 between \'2021-06-11 0:00:00.299999999\' and \'2021-06-11 0:00:00.300000001\'')
176
        tdSql.checkData(0,0,3)
B
bryanchang0603 已提交
177

N
Navneet Kumar 已提交
178
        tdSql.query('select count(*) from tb2 where ts2 <> 1623513600999999999')
179
        tdSql.checkData(0,0,5)
B
bryanchang0603 已提交
180

N
Navneet Kumar 已提交
181
        tdSql.query('select count(*) from tb2 where ts2 <> \'2021-06-11 0:00:00.100000001\'')
182
        tdSql.checkData(0,0,5)
B
bryanchang0603 已提交
183

N
Navneet Kumar 已提交
184
        tdSql.query('select count(*) from tb2 where ts2 <> \'2021-06-11 0:00:00.100000000\'')
B
bryanchang0603 已提交
185 186
        tdSql.checkData(0,0,6)

N
Navneet Kumar 已提交
187
        tdSql.query('select count(*) from tb2 where ts2 != 1623513600999999999')
188
        tdSql.checkData(0,0,5)
B
bryanchang0603 已提交
189

N
Navneet Kumar 已提交
190
        tdSql.query('select count(*) from tb2 where ts2 != \'2021-06-11 0:00:00.100000001\'')
191
        tdSql.checkData(0,0,5)
B
bryanchang0603 已提交
192

N
Navneet Kumar 已提交
193
        tdSql.query('select count(*) from tb2 where ts2 != \'2021-06-11 0:00:00.100000000\'')
B
bryanchang0603 已提交
194 195
        tdSql.checkData(0,0,6)

N
Navneet Kumar 已提交
196 197
        tdSql.execute('insert into tb2 values(now + 500000000b, 6, now +2d)')
        tdSql.query('select * from tb2')
198
        tdSql.checkRows(7)
B
bryanchang0603 已提交
199

200
        tdLog.debug('testing ill nanosecond format handling')
N
Navneet Kumar 已提交
201
        tdSql.execute('create table tb3 (ts timestamp, speed int)')
202

N
Navneet Kumar 已提交
203 204 205
        tdSql.error('insert into tb3 values(16232544001500000, 2)')
        tdSql.execute('insert into tb3 values(\'2021-06-10 0:00:00.123456\', 2)')
        tdSql.query('select * from tb3 where ts = \'2021-06-10 0:00:00.123456000\'')
206
        tdSql.checkRows(1)
207

N
Navneet Kumar 已提交
208 209
        tdSql.execute('insert into tb3 values(\'2021-06-10 0:00:00.123456789000\', 2)')
        tdSql.query('select * from tb3 where ts = \'2021-06-10 0:00:00.123456789\'')
210
        tdSql.checkRows(1)
211

B
bryanchang0603 已提交
212 213
        os.system('sudo timedatectl set-ntp on')

B
bryanchang0603 已提交
214 215 216 217 218 219
    def stop(self):
        tdSql.close()
        tdLog.success("%s successfully executed" % __file__)


tdCases.addWindows(__file__, TDTestCase())
220
tdCases.addLinux(__file__, TDTestCase())