clientStmt.c 2.7 KB
Newer Older
D
dapan1121 已提交
1 2 3

#include "clientInt.h"
#include "clientLog.h"
D
stmt  
dapan1121 已提交
4
#include "clientStmt.h"
D
dapan1121 已提交
5 6
#include "tdef.h"

D
stmt  
dapan1121 已提交
7 8 9 10 11 12 13 14 15 16 17 18 19
int32_t stmtGetTbName(TAOS_STMT *stmt, char **tbName) {
  STscStmt* pStmt = (STscStmt*)stmt;

  if (NULL == pStmt->tbName) {
    tscError("no table name set");
    STMT_ERR_RET(TSDB_CODE_TSC_STMT_TBNAME_ERROR);
  }

  *tbName = pStmt->tbName;

  return TSDB_CODE_SUCCESS;
}

D
dapan1121 已提交
20 21 22 23 24 25 26 27 28 29 30
TAOS_STMT *stmtInit(TAOS *taos) {
  STscObj* pObj = (STscObj*)taos;
  STscStmt* pStmt = NULL;

  pStmt = taosMemoryCalloc(1, sizeof(STscStmt));
  if (pStmt == NULL) {
    terrno = TSDB_CODE_TSC_OUT_OF_MEMORY;
    tscError("failed to allocate memory for statement");
    return NULL;
  }
  pStmt->taos = pObj;
D
stmt  
dapan1121 已提交
31
  pStmt->status = STMT_INIT;
D
dapan1121 已提交
32

D
stmt  
dapan1121 已提交
33 34
  return pStmt;
}
D
dapan1121 已提交
35

D
stmt  
dapan1121 已提交
36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
int stmtPrepare(TAOS_STMT *stmt, const char *sql, unsigned long length) {
  STscStmt* pStmt = (STscStmt*)stmt;

  STMT_CHK_STATUS(stmt, STMT_PREPARE, TSDB_CODE_TSC_STMT_STATUS_ERROR);
  
  pStmt->sql = strndup(sql, length);
  pStmt->sqlLen = length;

  return TSDB_CODE_SUCCESS;
}


int stmtSetTbNameTags(TAOS_STMT *stmt, const char *tbName, TAOS_BIND *tags) {
  STscStmt* pStmt = (STscStmt*)stmt;

  STMT_CHK_STATUS(stmt, STMT_SETTBNAME, TSDB_CODE_TSC_STMT_STATUS_ERROR);

  if (tbName) {
    pStmt->tbName = strdup(tbName);
D
dapan1121 已提交
55 56
  }

D
stmt  
dapan1121 已提交
57 58
  if (tags) {
    pStmt->bindTags = tags;
D
dapan1121 已提交
59 60
  }

D
stmt  
dapan1121 已提交
61 62
  return TSDB_CODE_SUCCESS;
}
D
dapan1121 已提交
63

D
stmt  
dapan1121 已提交
64 65 66 67 68 69 70 71 72 73 74 75 76 77 78
int stmtBindBatch(TAOS_STMT *stmt, TAOS_MULTI_BIND *bind) {
  STscStmt* pStmt = (STscStmt*)stmt;

  STMT_CHK_STATUS(stmt, STMT_BIND, TSDB_CODE_TSC_STMT_STATUS_ERROR);

  if (NULL == pStmt->pRequest) {
    SStmtCallback stmtCb = {.pStmt = stmt, .getTbNameFn = stmtGetTbName};

    STMT_ERR_RET(buildRequest(pStmt->taos, pStmt->sql, pStmt->sqlLen, &pStmt->pRequest));
    STMT_ERR_RET(parseSql(pStmt->pRequest, false, &pStmt->pQuery, &stmtCb));
  }

  qBindStmtData(pStmt->pQuery, bind, pStmt->pRequest->msgBuf, pStmt->pRequest->msgBufLen);
  
  return TSDB_CODE_SUCCESS;
D
dapan1121 已提交
79 80
}

D
stmt  
dapan1121 已提交
81 82 83 84 85 86 87 88

int stmtAddBatch(TAOS_STMT *stmt) {
  STscStmt* pStmt = (STscStmt*)stmt;

  STMT_CHK_STATUS(stmt, STMT_BIND, TSDB_CODE_TSC_STMT_STATUS_ERROR);

  qBuildStmtOutput(pStmt->pQuery);
  
D
stmt  
dapan1121 已提交
89 90 91 92 93 94 95 96
  return TSDB_CODE_SUCCESS;
}

int stmtExec(TAOS_STMT *stmt) {
  return TSDB_CODE_SUCCESS;
}


D
stmt  
dapan1121 已提交
97
int stmtClose(TAOS_STMT *stmt) {
D
stmt  
dapan1121 已提交
98 99 100
  return TSDB_CODE_SUCCESS;
}

D
stmt  
dapan1121 已提交
101 102
char *stmtErrstr(TAOS_STMT *stmt) {
  STscStmt* pStmt = (STscStmt*)stmt;
D
stmt  
dapan1121 已提交
103

D
stmt  
dapan1121 已提交
104 105 106 107 108
  if (stmt == NULL) {
    return (char*) tstrerror(terrno);
  }

  return taos_errstr(pStmt->pRequest);
D
stmt  
dapan1121 已提交
109 110
}

D
stmt  
dapan1121 已提交
111
int stmtAffectedRows(TAOS_STMT *stmt) {
D
stmt  
dapan1121 已提交
112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128
  return TSDB_CODE_SUCCESS;
}

int stmtIsInsert(TAOS_STMT *stmt, int *insert) {
  return TSDB_CODE_SUCCESS;
}

int stmtGetParamNum(TAOS_STMT *stmt, int *nums) {
  return TSDB_CODE_SUCCESS;
}

TAOS_RES *stmtUseResult(TAOS_STMT *stmt) {
  return NULL;
}