add func.c
parent
ca5e806e4c
commit
cd0ed89559
|
@ -0,0 +1,106 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2018 Savens Liu
|
||||||
|
*
|
||||||
|
* The original has been patented, Open source is not equal to open rights.
|
||||||
|
* Anyone can clone, download, learn and discuss for free. Without the permission
|
||||||
|
* of the copyright owner or author, it shall not be merged, published, licensed or sold.
|
||||||
|
* The copyright owner or author has the right to pursue his responsibility.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||||
|
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||||
|
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||||
|
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
|
||||||
|
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||||
|
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||||
|
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||||
|
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||||
|
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||||
|
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||||
|
* POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "tvm.h"
|
||||||
|
|
||||||
|
/************************************************************************************************
|
||||||
|
function
|
||||||
|
************************************************************************************************/
|
||||||
|
extern void vCondInsInit(FdCond *pstCond, TABLE t);
|
||||||
|
|
||||||
|
/*************************************************************************************************
|
||||||
|
description:dump the unused
|
||||||
|
parameters:
|
||||||
|
pstSavm --stvm handle
|
||||||
|
t --table
|
||||||
|
return:
|
||||||
|
RC_SUCC --success
|
||||||
|
RC_FAIL --failure
|
||||||
|
*************************************************************************************************/
|
||||||
|
long lUnuseDump(SATvm *pstSavm, TABLE t)
|
||||||
|
{
|
||||||
|
FILE *fp = NULL;
|
||||||
|
char szFile[512];
|
||||||
|
RunTime *pstRun = NULL;
|
||||||
|
SHTruck *pstTruck = NULL;
|
||||||
|
size_t lRow = 0, lOffset, lDump = 0;
|
||||||
|
|
||||||
|
if(!pstSavm)
|
||||||
|
{
|
||||||
|
pstSavm->m_lErrno = CONDIT_IS_NIL;
|
||||||
|
return RC_FAIL;
|
||||||
|
}
|
||||||
|
|
||||||
|
memset(szFile, 0, sizeof(szFile));
|
||||||
|
if(RC_SUCC != lInitSATvm(pstSavm, t))
|
||||||
|
return RC_FAIL;
|
||||||
|
|
||||||
|
vHoldConnect(pstSavm);
|
||||||
|
if(NULL == (pstRun = (RunTime *)pInitHitTest(pstSavm, t)))
|
||||||
|
return RC_FAIL;
|
||||||
|
|
||||||
|
if(RES_REMOT_SID == pstRun->m_lLocal)
|
||||||
|
{
|
||||||
|
pstSavm->m_lErrno = RMT_NOT_SUPPT;
|
||||||
|
return RC_FAIL;
|
||||||
|
}
|
||||||
|
|
||||||
|
snprintf(szFile, sizeof(szFile), "%s/%d.udb", getenv("TVMDBD"), t);
|
||||||
|
if(NULL == (fp = fopen(szFile, "ab")))
|
||||||
|
{
|
||||||
|
pstSavm->m_lErrno = FILE_NOT_RSET;
|
||||||
|
return RC_FAIL;
|
||||||
|
}
|
||||||
|
|
||||||
|
lOffset = lGetTblData(t);
|
||||||
|
pstRun->m_lCurLine = 0;
|
||||||
|
pstSavm->lSize = lGetRowSize(t);
|
||||||
|
pstTruck = (PSHTruck)pGetNode(pstRun->m_pvAddr, lOffset);
|
||||||
|
for(lRow = 0; (lRow < ((TblDef *)pstRun->m_pvAddr)->m_lValid) && (lOffset < lGetTableSize(t));
|
||||||
|
pstTruck = (PSHTruck)pGetNode(pstRun->m_pvAddr, lOffset))
|
||||||
|
{
|
||||||
|
if(IS_TRUCK_NULL(pstTruck) || pstTruck->m_lTimes == 0)
|
||||||
|
{
|
||||||
|
lOffset += lGetRowTruck(t);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
fwrite(pstTruck->m_pvData, lGetRowSize(t), 1, fp);
|
||||||
|
pstSavm->pstVoid = pstTruck->m_pvData;
|
||||||
|
vCondInsInit(&pstSavm->stCond, t);
|
||||||
|
lDelete(pstSavm);
|
||||||
|
|
||||||
|
lDump ++;
|
||||||
|
lOffset += lGetRowTruck(t);
|
||||||
|
}
|
||||||
|
fclose(fp);
|
||||||
|
vForceDisconnect(pstSavm, t);
|
||||||
|
pstSavm->m_lEffect = lDump;
|
||||||
|
|
||||||
|
fprintf(stdout, "export table:%s valid:%ld, completed successfully !!\n", sGetTableName(t),
|
||||||
|
pstSavm->m_lEffect);
|
||||||
|
return RC_SUCC;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/****************************************************************************************
|
||||||
|
code end
|
||||||
|
****************************************************************************************/
|
Loading…
Reference in New Issue