Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions source/common/src/tdataformat.c
Original file line number Diff line number Diff line change
Expand Up @@ -3522,7 +3522,7 @@ static int32_t tColDataMergeSortMerge(SColData *aColData, int32_t start, int32_t
tColDataArrGetRowKey(aColData, nColData, i, &keyi);
} else {
TAOS_CHECK_RETURN(tColDataCopyRowAppend(aColData, j++, aDstColData, nColData));
tColDataArrGetRowKey(aColData, nColData, j, &keyj);
if (j <= end) tColDataArrGetRowKey(aColData, nColData, j, &keyj);
}
}

Expand Down Expand Up @@ -3693,7 +3693,7 @@ int32_t tColDataSortMerge(SArray **arr) {
TAOS_CHECK_RETURN(tColDataSort(aColData, nColData));
}

if (doMerge != 1) {
if ((doMerge != 1) && (doSort == 1)) {
tColDataArrGetRowKey(aColData, nColData, 0, &lastKey);
for (int32_t iVal = 1; iVal < aColData[0].nVal; ++iVal) {
SRowKey key;
Expand Down
66 changes: 41 additions & 25 deletions tests/system-test/1-insert/test_stmt_muti_insert_query.py
Original file line number Diff line number Diff line change
Expand Up @@ -81,13 +81,16 @@ def newcon(self,host,cfg):
print(con)
return con

def test_stmt_insert_multi(self,conn):
def clear_env(self,conn):
conn.close()

def test_stmt_insert_multi(self,conn,asc=True):
# type: (TaosConnection) -> None

dbname = "db_stmt"
try:
conn.execute("drop database if exists %s" % dbname)
conn.execute("create database if not exists %s" % dbname)
conn.execute("create database if not exists %s keep 36500d" % dbname)
conn.select_db(dbname)

conn.execute(
Expand All @@ -100,23 +103,27 @@ def test_stmt_insert_multi(self,conn):
start = datetime.now()
stmt = conn.statement("insert into stb1 values(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)")

rows = 512 # refact for TD-37374, don't change the value of rows
params = new_multi_binds(16)
params[0].timestamp((1626861392589, 1626861392590, 1626861392591))
params[1].bool((True, None, False))
params[2].tinyint([-128, -128, None]) # -128 is tinyint null
params[3].tinyint([0, 127, None])
params[4].smallint([3, None, 2])
params[5].int([3, 4, None])
params[6].bigint([3, 4, None])
params[7].tinyint_unsigned([3, 4, None])
params[8].smallint_unsigned([3, 4, None])
params[9].int_unsigned([3, 4, None])
params[10].bigint_unsigned([3, 4, None])
params[11].float([3, None, 1])
params[12].double([3, None, 1.2])
params[13].binary(["abc", "dddafadfadfadfadfa", None])
params[14].nchar(["涛思数据", None, "a long string with 中文字符"])
params[15].timestamp([None, None, 1626861392591])
if asc == True:
params[0].timestamp(list(range(1626861392589, 1626861392589 + rows, 1)))
else:
params[0].timestamp(list(range(1626861392589 + rows - 1, 1626861392589 - 1, -1)))
params[1].bool(list(itertools.islice(itertools.cycle((True, None, False, False)), rows)))
params[2].tinyint(list(itertools.islice(itertools.cycle((-128, -128, None, None)), rows))) # -128 is tinyint null
params[3].tinyint(list(itertools.islice(itertools.cycle((0, 127, None, None)), rows)))
params[4].smallint(list(itertools.islice(itertools.cycle((3, None, 2, 2)), rows)))
params[5].int(list(itertools.islice(itertools.cycle((3, 4, None, None)), rows)))
params[6].bigint(list(itertools.islice(itertools.cycle((3, 4, None, None)), rows)))
params[7].tinyint_unsigned(list(itertools.islice(itertools.cycle((3, 4, None, None)), rows)))
params[8].smallint_unsigned(list(itertools.islice(itertools.cycle((3, 4, None, None)), rows)))
params[9].int_unsigned(list(itertools.islice(itertools.cycle((3, 4, None, None)), rows)))
params[10].bigint_unsigned(list(itertools.islice(itertools.cycle((3, 4, None, None)), rows)))
params[11].float(list(itertools.islice(itertools.cycle((3, None, 1, 2)), rows)))
params[12].double(list(itertools.islice(itertools.cycle((3, None, 1.2, 1.3)), rows)))
params[13].binary(list(itertools.islice(itertools.cycle(("abc", "dddafadfadfadfadfa", None, None)), rows)))
params[14].nchar(list(itertools.islice(itertools.cycle(("涛思数据", None, "a long string with 中文字符", None)), rows)))
params[15].timestamp(list(itertools.islice(itertools.cycle((None, None, 1626861392591, None)), rows)))
# print(type(stmt))
tdLog.debug("bind_param_batch start")
stmt.bind_param_batch(params)
Expand All @@ -125,7 +132,7 @@ def test_stmt_insert_multi(self,conn):
tdLog.debug("execute end")
end = datetime.now()
print("elapsed time: ", end - start)
assert stmt.affected_rows == 3
assert stmt.affected_rows == rows

#query 1
querystmt=conn.statement("select ?,bu from stb1")
Expand All @@ -143,8 +150,12 @@ def test_stmt_insert_multi(self,conn):
# rows=result.fetch_all()
print(rows)
assert rows[1][0] == "ts"
assert rows[0][1] == 3
assert rows[2][1] == None
if asc == True:
assert rows[0][1] == 3
assert rows[3][1] == None
else:
assert rows[0][1] == None
assert rows[3][1] == 3

#query 2
querystmt1=conn.statement("select * from stb1 where bu < ?")
Expand All @@ -156,15 +167,18 @@ def test_stmt_insert_multi(self,conn):
result1=querystmt1.use_result()
rows1=result1.fetch_all()
print(rows1)
assert str(rows1[0][0]) == "2021-07-21 17:56:32.589000"
if asc == True:
assert str(rows1[0][0]) == "2021-07-21 17:56:32.589000"
else:
assert str(rows1[0][0]) == "2021-07-21 17:56:32.592000"
assert rows1[0][10] == 3
tdLog.debug("close start")

stmt.close()

# conn.execute("drop database if exists %s" % dbname)
conn.close()
tdLog.success("%s successfully executed" % __file__)
# conn.close()
tdLog.success("%s successfully executed, asc:%s" % (__file__, asc))

except Exception as err:
# conn.execute("drop database if exists %s" % dbname)
Expand All @@ -176,7 +190,9 @@ def run(self):
config = buildPath+ "../sim/dnode1/cfg/"
host="localhost"
connectstmt=self.newcon(host,config)
self.test_stmt_insert_multi(connectstmt)
self.test_stmt_insert_multi(connectstmt, True)
self.test_stmt_insert_multi(connectstmt, False)
self.clear_env(connectstmt)
return


Expand Down
Loading