diff --git a/demo/count b/demo/count index 6d7bd5c..c1076df 100755 Binary files a/demo/count and b/demo/count differ diff --git a/demo/create b/demo/create index 9c5659c..f5f38a4 100755 Binary files a/demo/create and b/demo/create differ diff --git a/demo/delete b/demo/delete index 98c98a8..d772f1b 100755 Binary files a/demo/delete and b/demo/delete differ diff --git a/demo/drop b/demo/drop index 92854ef..844ebdb 100755 Binary files a/demo/drop and b/demo/drop differ diff --git a/demo/extreme b/demo/extreme index 9aefbee..e5227b4 100755 Binary files a/demo/extreme and b/demo/extreme differ diff --git a/demo/group b/demo/group index bc259e1..91389a2 100755 Binary files a/demo/group and b/demo/group differ diff --git a/demo/insert b/demo/insert index 18a0ec1..d4c42b5 100755 Binary files a/demo/insert and b/demo/insert differ diff --git a/demo/insert.c b/demo/insert.c index 4752095..d9ff04a 100644 --- a/demo/insert.c +++ b/demo/insert.c @@ -26,13 +26,14 @@ long lInsertUserInfo() } memset(&stUser, 0, sizeof(dbUser)); - stUser.acct_id = 10021; // 对结构体赋值 +// stUser.acct_id = 10021; // 对结构体赋值 strcpy(stUser.user_no, "20180223"); // 对结构体赋值 strcpy(stUser.user_type, "1"); // 对结构体赋值 strcpy(stUser.user_nm, "Savens Liu"); // 对结构体赋值 strcpy(stUser.user_addr, "China"); // 对结构体赋值 strcpy(stUser.user_phone, "18672911111"); // 对结构体赋值 defineinit(pstSavm, stUser, TBL_USER_INFO); // 绑定变量 + decorate(pstSavm, dbUser, acct_id, FIELD_INCR); // 自增llong型 if(RC_SUCC != lInsert(pstSavm)) // 插入记录 { diff --git a/demo/makefile b/demo/makefile index c891059..d03c0e0 100755 --- a/demo/makefile +++ b/demo/makefile @@ -1,6 +1,6 @@ INCDIR= -I/usr/include -I$(HOME)/include -I./ -I./include -I../include LIBDIR= -L$(HOME)/lib -L../lib -lstvm -lm -lc -ldl -lpthread -CC=cc -fPIC +CC=cc -fPIC -g CO=-c -pg OUTLIB=../lib OUTBIN=../bin diff --git a/demo/press_demo b/demo/press_demo index 26fa0b0..fad8a68 100755 Binary files a/demo/press_demo and b/demo/press_demo differ diff --git a/demo/query b/demo/query index f9623c7..94f7f89 100755 Binary files a/demo/query and b/demo/query differ diff --git a/demo/select b/demo/select index 32d4b83..8fc7fba 100755 Binary files a/demo/select and b/demo/select differ diff --git a/demo/truncate b/demo/truncate index b9664f6..4650dec 100755 Binary files a/demo/truncate and b/demo/truncate differ diff --git a/demo/update b/demo/update index f64f5a0..04ffe70 100755 Binary files a/demo/update and b/demo/update differ diff --git a/src/makefile b/src/makefile index e005d36..873758a 100755 --- a/src/makefile +++ b/src/makefile @@ -4,8 +4,9 @@ AR=ar LD=ld LN=ln #CC=cc -fPIC -O2 -Wno-unused-result -m64 -march=native -CC=cc -fPIC -O2 -Wno-unused-result -march=native -CO=-c -g -O2 -DMAX_INDEX_LEN=64 -DMAX_FILED_NUM=64 -Wno-unused-result +#CC=cc -fPIC -O2 -Wno-unused-result -march=native +CC=cc -fPIC -Wno-unused-result +CO=-c -g -DMAX_INDEX_LEN=64 -DMAX_FILED_NUM=64 -Wno-unused-result LDFLAG=-shared -g OUTLIB=../lib OUTBIN=../bin diff --git a/src/stvm.c b/src/stvm.c index 8954353..4d731f2 100644 --- a/src/stvm.c +++ b/src/stvm.c @@ -1006,6 +1006,26 @@ long lDefineTable(char *pszCreate, char *pszTable) return RC_SUCC; } +/************************************************************************************************** + description:append table to tab list + parameters: + return: + **************************************************************************************************/ +void vAppendTabList(char *pszTable) +{ + long lLen = 0; + + lLen = strlen(g_stCustom.m_pszWord); + lLen += strlen(pszTable) + 1; + if(lLen > ALLOC_CMD_LEN) + return ; + strcat(g_stCustom.m_pszWord, supper(pszTable)); + strcat(g_stCustom.m_pszWord, ","); + + g_stCustom.m_lWord = lgetstrnum(g_stCustom.m_pszWord, ","); + return ; +} + /************************************************************************************************* description:create table by file parameters: @@ -1067,7 +1087,7 @@ long lCreateByFile(char *pszFile) return RC_FAIL; fprintf(stdout, "---(%s) was created ---\n", szTable); - + vAppendTabList(szTable); TFree(pszCreate); return RC_SUCC; @@ -3770,15 +3790,8 @@ void vInitTableList(SATvm *pstSavm, bool bRmt) return ; for(i = 0, lRet = strlen(g_stCustom.m_pszWord); i < lRows; i ++) - { - lRet += strlen(pstIndex[i].m_szTable) + 1; - if(lRet > ALLOC_CMD_LEN) - break; - strcat(g_stCustom.m_pszWord, pstIndex[i].m_szTable); - strcat(g_stCustom.m_pszWord, ","); - } + vAppendTabList(pstIndex[i].m_szTable); - g_stCustom.m_lWord = lgetstrnum(g_stCustom.m_pszWord, ","); TFree(pstIndex); return ; } diff --git a/src/tcp.c b/src/tcp.c index 682bb37..6c3846e 100644 --- a/src/tcp.c +++ b/src/tcp.c @@ -1339,7 +1339,8 @@ long lEventOperate(SATvm *pstSavm, SKCon *pstCon, TFace *pstFace, char *pvDat else { lData = pstFace->m_lDLen + sizeof(TFace); - pstFace->m_lRows = pstSavm->m_lEffect; + pstFace->m_lRows = pstSavm->m_lEffect; + pstFace->m_lDLen = pstSavm->m_lEType; } lSendBuffer(pstCon->m_skSock, (void *)pstFace, lData); @@ -1347,8 +1348,12 @@ long lEventOperate(SATvm *pstSavm, SKCon *pstCon, TFace *pstFace, char *pvDat case OPERATE_QUERY: if(RC_SUCC != lQuery(pstSavm, (size_t *)&pstFace->m_lRows, (void *)&pvOut)) pstFace->m_lErrno = pstSavm->m_lErrno; + else + { + lData = pstFace->m_lDLen * pstFace->m_lRows; + pstFace->m_lDLen = pstSavm->m_lEType; + } - lData = pstFace->m_lDLen * pstFace->m_lRows; if(sizeof(TFace) != lSendBuffer(pstCon->m_skSock, (void *)pstFace, sizeof(TFace))) { TFree(pvOut); @@ -1359,14 +1364,29 @@ long lEventOperate(SATvm *pstSavm, SKCon *pstCon, TFace *pstFace, char *pvDat TFree(pvOut); return RC_SUCC; case OPERATE_REPLACE: + pstSavm->m_bWork = pstCon->m_bWork; + pstSavm->m_pstWork = pstCon->m_pstWork; + if(RC_SUCC != lReplace(pstSavm, pvData)) + pstFace->m_lErrno = pstSavm->m_lErrno; + else + { + pstFace->m_lRows = pstSavm->m_lEffect; + pstFace->m_lDLen = pstSavm->m_lEType; + } + pstCon->m_pstWork = pstSavm->m_pstWork; + lSendBuffer(pstCon->m_skSock, (void *)pstFace, sizeof(TFace)); + return RC_SUCC; case OPERATE_UPDATE: pstSavm->m_bWork = pstCon->m_bWork; pstSavm->m_pstWork = pstCon->m_pstWork; if(RC_SUCC != lUpdate(pstSavm, pvData)) pstFace->m_lErrno = pstSavm->m_lErrno; else - pstFace->m_lRows = pstSavm->m_lEffect; - pstCon->m_pstWork = pstSavm->m_pstWork; + { + pstFace->m_lRows = pstSavm->m_lEffect; + pstFace->m_lDLen = pstSavm->m_lEType; + } + pstCon->m_pstWork = pstSavm->m_pstWork; lSendBuffer(pstCon->m_skSock, (void *)pstFace, sizeof(TFace)); return RC_SUCC; case OPERATE_DELETE: @@ -1374,12 +1394,20 @@ long lEventOperate(SATvm *pstSavm, SKCon *pstCon, TFace *pstFace, char *pvDat pstSavm->m_pstWork = pstCon->m_pstWork; if(RC_SUCC != lDelete(pstSavm)) pstFace->m_lErrno = pstSavm->m_lErrno; + else + { + pstFace->m_lDLen = pstSavm->m_lEType; + pstFace->m_lRows = pstSavm->m_lEffect; + } pstCon->m_pstWork = pstSavm->m_pstWork; - pstFace->m_lRows = pstSavm->m_lEffect; lSendBuffer(pstCon->m_skSock, (void *)pstFace, sizeof(TFace)); return RC_SUCC; - case OPERATS_REPLACE: + pstSavm->m_bWork = pstCon->m_bWork; + pstSavm->m_pstWork = pstCon->m_pstWork; + if(RC_SUCC == lReplace(pstSavm, pvData)) + pstCon->m_pstWork = pstSavm->m_pstWork; + return RC_SUCC; case OPERAYS_UPDATE: pstSavm->m_bWork = pstCon->m_bWork; pstSavm->m_pstWork = pstCon->m_pstWork; @@ -1405,7 +1433,7 @@ long lEventOperate(SATvm *pstSavm, SKCon *pstCon, TFace *pstFace, char *pvDat pstFace->m_lErrno = pstSavm->m_lErrno; else pstFace->m_lRows = pstSavm->m_lEffect; - pstCon->m_pstWork = pstSavm->m_pstWork; + pstCon->m_pstWork = pstSavm->m_pstWork; lSendBuffer(pstCon->m_skSock, (void *)pstFace, sizeof(TFace)); return RC_SUCC; case OPERATE_TRCATE: @@ -1418,6 +1446,8 @@ long lEventOperate(SATvm *pstSavm, SKCon *pstCon, TFace *pstFace, char *pvDat case OPERATE_COUNT: if(RC_SUCC != lCount(pstSavm, (size_t *)&pstFace->m_lRows)) pstFace->m_lErrno = pstSavm->m_lErrno; + else + pstFace->m_lDLen = pstSavm->m_lEType; lSendBuffer(pstCon->m_skSock, (void *)pstFace, sizeof(TFace)); return RC_SUCC; @@ -1431,7 +1461,8 @@ long lEventOperate(SATvm *pstSavm, SKCon *pstCon, TFace *pstFace, char *pvDat else { lData = pstFace->m_lDLen + sizeof(TFace); - pstFace->m_lRows = pstSavm->m_lEffect; + pstFace->m_lRows = pstSavm->m_lEffect; + pstFace->m_lDLen = pstSavm->m_lEType; } lSendBuffer(pstCon->m_skSock, (void *)pstFace, lData); return RC_SUCC; @@ -1479,8 +1510,12 @@ long lEventOperate(SATvm *pstSavm, SKCon *pstCon, TFace *pstFace, char *pvDat case OPERATE_GROUP: if(RC_SUCC != lGroup(pstSavm, (size_t *)&pstFace->m_lRows, (void *)&pvOut)) pstFace->m_lErrno = pstSavm->m_lErrno; + else + { + lData = pstFace->m_lDLen * pstFace->m_lRows; + pstFace->m_lDLen = pstSavm->m_lEType; + } - lData = pstFace->m_lDLen * pstFace->m_lRows; if(sizeof(TFace) != lSendBuffer(pstCon->m_skSock, (void *)pstFace, sizeof(TFace))) { TFree(pvOut); @@ -4002,6 +4037,7 @@ long lTvmSelect(SATvm *pstSavm, void *pvOut) return RC_FAIL; pstSavm->m_lEffect = pstFace->m_lRows; + pstSavm->m_lEType = pstFace->m_lDLen; if(pstSavm->lSize != lRecvBuffer(pstSavm->m_skSock, (char *)pvOut, pstSavm->lSize)) { pstSavm->m_lErrno = SOCK_COM_EXCP; @@ -4083,6 +4119,7 @@ long lTvmQuery(SATvm *pstSavm, size_t *plOut, void **ppvOut) *plOut = pstFace->m_lRows; pstSavm->m_lEffect = pstFace->m_lRows; + pstSavm->m_lEType = pstFace->m_lDLen; return RC_SUCC; } @@ -4406,11 +4443,12 @@ long lTvmDelete(SATvm *pstSavm) return RC_FAIL; } - pstSavm->m_lErrno = ((TFace *)pstRun->pstVoid)->m_lErrno; + pstSavm->m_lErrno = pstFace->m_lErrno; if(0 != pstSavm->m_lErrno) return RC_FAIL; - pstSavm->m_lEffect = ((TFace *)pstRun->pstVoid)->m_lRows; + pstSavm->m_lEffect = pstFace->m_lRows; + pstSavm->m_lEType = pstFace->m_lDLen; return RC_SUCC; } @@ -4474,11 +4512,12 @@ long lTvmUpdate(SATvm *pstSavm, void *pvData) return RC_FAIL; } - pstSavm->m_lErrno = ((TFace *)pstRun->pstVoid)->m_lErrno; + pstSavm->m_lErrno = pstFace->m_lErrno; if(0 != pstSavm->m_lErrno) return RC_FAIL; - pstSavm->m_lEffect = ((TFace *)pstRun->pstVoid)->m_lRows; + pstSavm->m_lEffect = pstFace->m_lRows; + pstSavm->m_lEType = pstFace->m_lDLen; return RC_SUCC; } @@ -4528,7 +4567,7 @@ long lTvmReplace(SATvm *pstSavm, void *pvData) vBuildPacket(pstRun->pstVoid, pstSavm->pstVoid, &pstSavm->stCond, &lWrite); vBuildPacket(pstRun->pstVoid, pvData, pstCond, &lWrite); - pstFace->m_lRows = lWrite - sizeof(TFace); + pstFace->m_lRows = lWrite - sizeof(TFace); if(lWrite != lSendBuffer(pstSavm->m_skSock, (void *)pstRun->pstVoid, lWrite)) { @@ -4542,11 +4581,12 @@ long lTvmReplace(SATvm *pstSavm, void *pvData) return RC_FAIL; } - pstSavm->m_lErrno = ((TFace *)pstRun->pstVoid)->m_lErrno; + pstSavm->m_lErrno = pstFace->m_lErrno; if(0 != pstSavm->m_lErrno) return RC_FAIL; - pstSavm->m_lEffect = ((TFace *)pstRun->pstVoid)->m_lRows; + pstSavm->m_lEffect = pstFace->m_lRows; + pstSavm->m_lEType = pstFace->m_lDLen; return RC_SUCC; } @@ -4682,6 +4722,7 @@ long lTvmGroup(SATvm *pstSavm, size_t *plOut, void **ppvOut) *plOut = pstFace->m_lRows; pstSavm->m_lEffect = pstFace->m_lRows; + pstSavm->m_lEType = pstFace->m_lDLen; return RC_SUCC; } @@ -4742,6 +4783,7 @@ long lTvmCount(SATvm *pstSavm, size_t *plCount) return RC_FAIL; *plCount = pstFace->m_lRows; + pstSavm->m_lEType = pstFace->m_lDLen; return RC_SUCC; } @@ -4809,6 +4851,7 @@ long lTvmExtreme(SATvm *pstSavm, void *pvOut) if(0 != pstSavm->m_lErrno) return RC_FAIL; + pstSavm->m_lEType = pstFace->m_lDLen; if(pstSavm->lSize != lRecvBuffer(pstSavm->m_skSock, (char *)pvOut, pstSavm->lSize)) { pstSavm->m_lErrno = SOCK_COM_EXCP;