runUdf.c 2.2 KB
Newer Older
S
shenglian zhou 已提交
1 2 3 4
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "uv.h"
5 6

#include "fnLog.h"
wafwerar's avatar
wafwerar 已提交
7
#include "os.h"
S
shenglian zhou 已提交
8
#include "tdatablock.h"
9 10
#include "tglobal.h"
#include "tudf.h"
S
shenglian zhou 已提交
11

12 13 14 15 16 17 18 19 20 21 22 23 24
static int32_t parseArgs(int32_t argc, char *argv[]) {
  for (int32_t i = 1; i < argc; ++i) {
    if (strcmp(argv[i], "-c") == 0) {
      if (i < argc - 1) {
        if (strlen(argv[++i]) >= PATH_MAX) {
          printf("config file path overflow");
          return -1;
        }
        tstrncpy(configDir, argv[i], PATH_MAX);
      } else {
        printf("'-c' requires a parameter, default is %s\n", configDir);
        return -1;
      }
S
shenglian zhou 已提交
25
    }
26
  }
S
shenglian zhou 已提交
27

28 29
  return 0;
}
S
shenglian zhou 已提交
30

31 32 33
static int32_t initLog() {
  char logName[12] = {0};
  snprintf(logName, sizeof(logName), "%slog", "udfc");
wafwerar's avatar
wafwerar 已提交
34
  return taosCreateLog(logName, 1, configDir, NULL, NULL, NULL, NULL, 0);
35 36 37 38 39
}

int main(int argc, char *argv[]) {
  parseArgs(argc, argv);
  initLog();
wafwerar's avatar
wafwerar 已提交
40
  if (taosInitCfg(configDir, NULL, NULL, NULL, NULL, 0) != 0) {
41 42 43
    fnError("failed to start since read config error");
    return -1;
  }
S
shenglian zhou 已提交
44

45 46
  udfcOpen();
  uv_sleep(1000);
S
slzhou 已提交
47

48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67
  UdfcFuncHandle handle;

  setupUdf("udf1", &handle);

  SSDataBlock  block = {0};
  SSDataBlock *pBlock = &block;
  pBlock->pDataBlock = taosArrayInit(1, sizeof(SColumnInfoData));
  pBlock->info.numOfCols = 1;
  pBlock->info.rows = 4;
  char data[16] = {0};
  char bitmap[4] = {0};
  for (int32_t i = 0; i < pBlock->info.numOfCols; ++i) {
    SColumnInfoData colInfo = {0};
    colInfo.info.type = TSDB_DATA_TYPE_INT;
    colInfo.info.bytes = sizeof(int32_t);
    colInfo.info.colId = 1;
    colInfo.pData = data;
    colInfo.nullbitmap = bitmap;
    for (int32_t j = 0; j < pBlock->info.rows; ++j) {
      colDataAppendInt32(&colInfo, j, &j);
S
slzhou 已提交
68
    }
69 70 71 72 73 74 75 76
    taosArrayPush(pBlock->pDataBlock, &colInfo);
  }

  SScalarParam input = {0};
  input.numOfRows = pBlock->info.rows;
  input.columnData = taosArrayGet(pBlock->pDataBlock, 0);
  SScalarParam output = {0};
  callUdfScalarFunc(handle, &input, 1, &output);
S
shenglian zhou 已提交
77

78 79 80 81 82 83
  SColumnInfoData *col = output.columnData;
  for (int32_t i = 0; i < output.numOfRows; ++i) {
    fprintf(stderr, "%d\t%d\n", i, *(int32_t *)(col->pData + i * sizeof(int32_t)));
  }
  teardownUdf(handle);
  udfcClose();
S
shenglian zhou 已提交
84
}