sync home office
This commit is contained in:
parent
22a97ca07e
commit
e9e6b1fa1f
|
@ -137,8 +137,8 @@ typedef int32_t (*TUdfTeardownFunc)();
|
||||||
//typedef int32_t addVariableLengthColumnData(SColumnData *columnData, int rowIndex, bool isNull, int32_t dataLen, char * data);
|
//typedef int32_t addVariableLengthColumnData(SColumnData *columnData, int rowIndex, bool isNull, int32_t dataLen, char * data);
|
||||||
|
|
||||||
typedef int32_t (*TUdfFreeUdfColumnFunc)(SUdfColumn* column);
|
typedef int32_t (*TUdfFreeUdfColumnFunc)(SUdfColumn* column);
|
||||||
|
|
||||||
typedef int32_t (*TUdfScalarProcFunc)(SUdfDataBlock block, SUdfColumn *resultCol);
|
typedef int32_t (*TUdfScalarProcFunc)(SUdfDataBlock block, SUdfColumn *resultCol);
|
||||||
|
|
||||||
typedef int32_t (*TUdfAggInitFunc)(SUdfInterBuf *buf);
|
typedef int32_t (*TUdfAggInitFunc)(SUdfInterBuf *buf);
|
||||||
typedef int32_t (*TUdfAggProcessFunc)(SUdfDataBlock block, SUdfInterBuf *interBuf);
|
typedef int32_t (*TUdfAggProcessFunc)(SUdfDataBlock block, SUdfInterBuf *interBuf);
|
||||||
typedef int32_t (*TUdfAggFinalizeFunc)(SUdfInterBuf buf, SUdfInterBuf *resultData);
|
typedef int32_t (*TUdfAggFinalizeFunc)(SUdfInterBuf buf, SUdfInterBuf *resultData);
|
||||||
|
|
|
@ -51,6 +51,21 @@ target_link_libraries(
|
||||||
udf1 PUBLIC os
|
udf1 PUBLIC os
|
||||||
)
|
)
|
||||||
|
|
||||||
|
add_library(udf2 MODULE test/udf2.c)
|
||||||
|
target_include_directories(
|
||||||
|
udf1
|
||||||
|
PUBLIC
|
||||||
|
"${TD_SOURCE_DIR}/include/libs/function"
|
||||||
|
"${TD_SOURCE_DIR}/include/util"
|
||||||
|
"${TD_SOURCE_DIR}/include/common"
|
||||||
|
"${TD_SOURCE_DIR}/include/client"
|
||||||
|
"${TD_SOURCE_DIR}/include/os"
|
||||||
|
PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/inc"
|
||||||
|
)
|
||||||
|
target_link_libraries(
|
||||||
|
udf2 PUBLIC os
|
||||||
|
)
|
||||||
|
|
||||||
#SET(EXECUTABLE_OUTPUT_PATH ${CMAKE_BINARY_DIR}/build/bin)
|
#SET(EXECUTABLE_OUTPUT_PATH ${CMAKE_BINARY_DIR}/build/bin)
|
||||||
add_executable(udfd src/udfd.c)
|
add_executable(udfd src/udfd.c)
|
||||||
target_include_directories(
|
target_include_directories(
|
||||||
|
|
|
@ -9,11 +9,11 @@
|
||||||
#undef free
|
#undef free
|
||||||
#define free free
|
#define free free
|
||||||
|
|
||||||
int32_t udf1_setup() {
|
int32_t udf1_init() {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int32_t udf1_teardown() {
|
int32_t udf1_destroy() {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,81 @@
|
||||||
|
#include <string.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
|
#include "tudf.h"
|
||||||
|
|
||||||
|
#undef malloc
|
||||||
|
#define malloc malloc
|
||||||
|
#undef free
|
||||||
|
#define free free
|
||||||
|
|
||||||
|
int32_t udf2_init() {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int32_t udf2_destroy() {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int32_t udf2_start(SUdfInterBuf *buf) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
int32_t udf2(SUdfDataBlock block, SUdfInterBuf *interBuf) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
int32_t udf2_finish(SUdfInterBuf buf, SUdfInterBuf *resultData) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
int32_t udf2(SUdfDataBlock block, SUdfColumn *resultCol) {
|
||||||
|
SUdfColumnData *resultData = &resultCol->colData;
|
||||||
|
resultData->numOfRows = block.numOfRows;
|
||||||
|
SUdfColumnData *srcData = &block.udfCols[0]->colData;
|
||||||
|
resultData->varLengthColumn = srcData->varLengthColumn;
|
||||||
|
|
||||||
|
if (resultData->varLengthColumn) {
|
||||||
|
resultData->varLenCol.varOffsetsLen = srcData->varLenCol.varOffsetsLen;
|
||||||
|
resultData->varLenCol.varOffsets = malloc(resultData->varLenCol.varOffsetsLen);
|
||||||
|
memcpy(resultData->varLenCol.varOffsets, srcData->varLenCol.varOffsets, srcData->varLenCol.varOffsetsLen);
|
||||||
|
|
||||||
|
resultData->varLenCol.payloadLen = srcData->varLenCol.payloadLen;
|
||||||
|
resultData->varLenCol.payload = malloc(resultData->varLenCol.payloadLen);
|
||||||
|
memcpy(resultData->varLenCol.payload, srcData->varLenCol.payload, srcData->varLenCol.payloadLen);
|
||||||
|
} else {
|
||||||
|
resultData->fixLenCol.nullBitmapLen = srcData->fixLenCol.nullBitmapLen;
|
||||||
|
resultData->fixLenCol.nullBitmap = malloc(resultData->fixLenCol.nullBitmapLen);
|
||||||
|
memcpy(resultData->fixLenCol.nullBitmap, srcData->fixLenCol.nullBitmap, srcData->fixLenCol.nullBitmapLen);
|
||||||
|
|
||||||
|
resultData->fixLenCol.dataLen = srcData->fixLenCol.dataLen;
|
||||||
|
resultData->fixLenCol.data = malloc(resultData->fixLenCol.dataLen);
|
||||||
|
memcpy(resultData->fixLenCol.data, srcData->fixLenCol.data, srcData->fixLenCol.dataLen);
|
||||||
|
for (int32_t i = 0; i < resultData->numOfRows; ++i) {
|
||||||
|
*(resultData->fixLenCol.data + i * sizeof(int32_t)) = 88;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
SUdfColumnMeta *meta = &resultCol->colMeta;
|
||||||
|
meta->bytes = 4;
|
||||||
|
meta->type = TSDB_DATA_TYPE_INT;
|
||||||
|
meta->scale = 0;
|
||||||
|
meta->precision = 0;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int32_t udf2_free(SUdfColumn *col) {
|
||||||
|
SUdfColumnData *data = &col->colData;
|
||||||
|
if (data->varLengthColumn) {
|
||||||
|
free(data->varLenCol.varOffsets);
|
||||||
|
data->varLenCol.varOffsets = NULL;
|
||||||
|
free(data->varLenCol.payload);
|
||||||
|
data->varLenCol.payload = NULL;
|
||||||
|
} else {
|
||||||
|
free(data->fixLenCol.nullBitmap);
|
||||||
|
data->fixLenCol.nullBitmap = NULL;
|
||||||
|
free(data->fixLenCol.data);
|
||||||
|
data->fixLenCol.data = NULL;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
Loading…
Reference in New Issue