新增 TAOS_FIELD_DB 枚举类型,没办法解决查询语句有 join 的情况,不具备扩展性。
另外为何不复用 TAOS_FIELD_QUERY 呢?
目前有下面几种方案
- 用新的api获取dbmeta
int stmt_get_db_meta(TAOS_STMT2 *stmt, void * dbMeta)
- 还是复用taos_stmt2_get_fields,吧TAOS_FIELD_DB类型改成TAOS_FIELD_QUERY(已有)
pField->field_type = TAOS_FIELD_QUERY,;
pField->type = TSDB_DATA_TYPE_NULL; // use null type to avoid unexpected behavior
pField->scale = 0;
pField->bytes = 0;
pField->name=dbName;
pField->precision = (uint8_t)dbCfg.precision;
- 从绑定时入手:
当buffer_type = TSDB_DATA_TYPE_TIMESTAMP
typedef struct TAOS_STMT2_BIND {
int buffer_type;
void *buffer;
int32_t *length;
char *is_null;
int num;
} TAOS_STMT2_BIND;
按照TSDB_DATA_TYPE_VARCHAR类型绑定时间戳,在内部根据db的precision进行转换成相应的时间戳写入
# 代表s
2026-05-14T15:30:45Z
# 代表ms
2026-05-14T15:30:45.123Z
# 代表us
2026-05-14T15:30:45.123456Z
# 代表ns
2026-05-14T15:30:45.123456789Z
或者通过length制定精度,通用做法
length 3 -> ms
length 6 -> us
length 9 -> ns