mirror of
https://github.com/taosdata/TDengine
synced 2026-05-24 10:09:01 +00:00
* decimal: create table * decimal: add test case decimal.py * decimal: add decimal.c * support input decimal * decimal test * refactor svalue * fix test cases * add decimal unit test * add decimal test cmake * support insert and query decimal type * define wide integer, support decimal128 * support decimal128 divide * set decimal type expr res types * scalar decimal * convert to decimal * fix decimal64/128 from str and to str * fix decimal from str and decimal to str * decimal simple conversion * unit test for decimal * decimal conversion and unit tests * decimal + - * / * decimal scalar ops and comparision * start to refactor GET_TYPED_DATA * support decimal max func, cast func * refactor GET_TYPED_DATA interface * decimal scalar comparision * start to implement sum for decimal * support sum and avg for decimal type * decimal tests * add decimal test * decimal add test cases * decimal use int256/int128 * decimal testing * fix decimal table meta and add tests for decimal col streams * fix create stream and create tsma * test insert decimal values * decimal from str * test decimal input * test parse decimal from string * add taos_fetch_field_e api * decimal insert tests * test decimal operators * decimal operator test * feat:support decimal in raw block * decimal operator tests * decimal test * feat:support decimal in raw block * feat:support decimal in raw block * feat:add schemaExt to SMqDataRsp * feat:remove add schemaExt to SMqDataRsp * feat:remove add schemaExt to SMqDataRsp * feat:remove add schemaExt to SMqDataRsp * decimal test operators * decimal operator test * test decimal operators * test decimal compare operators * decimal unary operator test * decimal col with decimal col oper test * test decimal col filtering * fix decimal float operator test * decimal test where filtering * fix decimal filtering * fix decimal order by * fix decimal op test * test decimal agg funcs * test decimal functions * remove assert * fix ci build for ret check * fix decimal windows build * fix ci ret check * skip decimal ret check * skip decimal ret check * fix decimal tests * fix decimal ci test * decimal test * fix(tmq): heap user after free * fix(tmq): double free * fix(tmq): double free * fix decimal tests * fix(decimal): decimal test ci build * fix(decimal): windows build * fix(decimal): decimal test build * fix(decimal): fix decimal build and tests * fix(decimal): fix decimal tests * fix(decimal): fix taos_fetch_fields_e api * fix(decimal): fix decimal taos_fetch_fields_e api * fix(decimal): rebase 3.0 * fix(decimal): fix decimal functions * fix(decimal): fix decimal test case memory leak * fix(decimal): fix decimal tests * fix(decimal): fix decimal test case * fix(decimal): fix decimal tests * feat(decimal): fix unit tests * feat(decimal): fix deicmal unit test --------- Co-authored-by: wangmm0220 <wangmm0220@gmail.com> Co-authored-by: yihaoDeng <yhdeng@taosdata.com>
95 lines
No EOL
3.8 KiB
C
95 lines
No EOL
3.8 KiB
C
/*
|
|
* Copyright (c) 2019 TAOS Data, Inc. <jhtao@taosdata.com>
|
|
*
|
|
* This program is free software: you can use, redistribute, and/or modify
|
|
* it under the terms of the GNU Affero General Public License, version 3
|
|
* or later ("AGPL"), as published by the Free Software Foundation.
|
|
*
|
|
* This program is distributed in the hope that it will be useful, but WITHOUT
|
|
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
|
* FITNESS FOR A PARTICULAR PURPOSE.
|
|
*
|
|
* You should have received a copy of the GNU Affero General Public License
|
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
*/
|
|
|
|
#include <assert.h>
|
|
#include <stdio.h>
|
|
#include <time.h>
|
|
#include "taos.h"
|
|
#include "types.h"
|
|
|
|
TAOS* pConn = NULL;
|
|
void action(char* sql) {
|
|
TAOS_RES* pRes = taos_query(pConn, sql);
|
|
ASSERT(taos_errno(pRes) == 0);
|
|
taos_free_result(pRes);
|
|
}
|
|
|
|
int32_t test_write_raw_block(char* query, char* dst) {
|
|
TAOS_RES* pRes = taos_query(pConn, query);
|
|
ASSERT(taos_errno(pRes) == 0);
|
|
void* data = NULL;
|
|
int32_t numOfRows = 0;
|
|
int error_code = taos_fetch_raw_block(pRes, &numOfRows, &data);
|
|
ASSERT(error_code == 0);
|
|
error_code = taos_write_raw_block(pConn, numOfRows, data, dst);
|
|
taos_free_result(pRes);
|
|
return error_code;
|
|
}
|
|
|
|
int32_t test_write_raw_block_with_fields(char* query, char* dst) {
|
|
TAOS_RES* pRes = taos_query(pConn, query);
|
|
ASSERT(taos_errno(pRes) == 0);
|
|
void* data = NULL;
|
|
int32_t numOfRows = 0;
|
|
int error_code = taos_fetch_raw_block(pRes, &numOfRows, &data);
|
|
ASSERT(error_code == 0);
|
|
|
|
int numFields = taos_num_fields(pRes);
|
|
TAOS_FIELD* fields = taos_fetch_fields(pRes);
|
|
error_code = taos_write_raw_block_with_fields(pConn, numOfRows, data, dst, fields, numFields);
|
|
taos_free_result(pRes);
|
|
return error_code;
|
|
}
|
|
|
|
void init_env() {
|
|
pConn = taos_connect("localhost", "root", "taosdata", NULL, 0);
|
|
ASSERT(pConn);
|
|
|
|
action("drop database if exists db_raw");
|
|
action("create database if not exists db_raw vgroups 2");
|
|
action("use db_raw");
|
|
|
|
action(
|
|
"CREATE STABLE `meters` (`ts` TIMESTAMP, `current` INT, `voltage` INT, `phase` FLOAT, data decimal(4,2)) TAGS (`groupid` INT, "
|
|
"`location` VARCHAR(16))");
|
|
action("create table d0 using meters tags(1, 'San Francisco')");
|
|
action("create table d1 using meters tags(2, 'San Francisco')");
|
|
action("create table d2 using meters tags(3, 'San Francisco')");
|
|
action("insert into d0 (ts, current, data) values (now, 120, 2.32)");
|
|
|
|
action("create table ntba(ts timestamp, addr binary(32))");
|
|
action("create table ntbb(ts timestamp, addr binary(8))");
|
|
action("create table ntbc(ts timestamp, addr binary(8), c2 int)");
|
|
|
|
action("insert into ntba values(now,'123456789abcdefg123456789')");
|
|
action("insert into ntbb values(now + 1s,'hello')");
|
|
action("insert into ntbc values(now + 13s, 'sdf', 123)");
|
|
}
|
|
|
|
int main(int argc, char* argv[]) {
|
|
printf("test write_raw_block start.\n");
|
|
init_env();
|
|
ASSERT(test_write_raw_block("select * from d0", "d1") == 0); // test schema same
|
|
ASSERT(test_write_raw_block("select * from ntbb", "ntba") == 0); // test schema compatible
|
|
ASSERT(test_write_raw_block("select * from ntbb", "ntbc") == 0); // test schema small
|
|
ASSERT(test_write_raw_block("select * from ntbc", "ntbb") == 0); // test schema bigger
|
|
ASSERT(test_write_raw_block("select * from ntba", "ntbb") != 0); // test schema mismatch
|
|
ASSERT(test_write_raw_block("select * from ntba", "no-exist-table") != 0); // test no exist table
|
|
ASSERT(test_write_raw_block("select addr from ntba", "ntbb") != 0); // test without ts
|
|
ASSERT(test_write_raw_block_with_fields("select ts,phase from d0", "d2") == 0); // test with fields
|
|
|
|
printf("test write_raw_block end.\n");
|
|
return 0;
|
|
} |