Adding the sqlite sourcecode
This commit is contained in:
1 parent
bdb54a1f8f
commit
406b584760
2208 files changed
+1172785
-1
No files matched your search
@@ -0,0 +1,96 @@
|
||||
|
||||
|
||||
#include "lsmtest.h"
|
||||
|
||||
struct Datasource {
|
||||
int eType;
|
||||
|
||||
int nMinKey;
|
||||
int nMaxKey;
|
||||
int nMinVal;
|
||||
int nMaxVal;
|
||||
|
||||
char *aKey;
|
||||
char *aVal;
|
||||
};
|
||||
|
||||
void testDatasourceEntry(
|
||||
Datasource *p,
|
||||
int iData,
|
||||
void **ppKey, int *pnKey,
|
||||
void **ppVal, int *pnVal
|
||||
){
|
||||
assert( (ppKey==0)==(pnKey==0) );
|
||||
assert( (ppVal==0)==(pnVal==0) );
|
||||
|
||||
if( ppKey ){
|
||||
int nKey = 0;
|
||||
switch( p->eType ){
|
||||
case TEST_DATASOURCE_RANDOM: {
|
||||
int nRange = (1 + p->nMaxKey - p->nMinKey);
|
||||
nKey = (int)( testPrngValue((u32)iData) % nRange ) + p->nMinKey;
|
||||
testPrngString((u32)iData, p->aKey, nKey);
|
||||
break;
|
||||
}
|
||||
case TEST_DATASOURCE_SEQUENCE:
|
||||
nKey = sprintf(p->aKey, "%012d", iData);
|
||||
break;
|
||||
}
|
||||
*ppKey = p->aKey;
|
||||
*pnKey = nKey;
|
||||
}
|
||||
if( ppVal ){
|
||||
u32 nVal = testPrngValue((u32)iData)%(1+p->nMaxVal-p->nMinVal)+p->nMinVal;
|
||||
testPrngString((u32)~iData, p->aVal, (int)nVal);
|
||||
*ppVal = p->aVal;
|
||||
*pnVal = (int)nVal;
|
||||
}
|
||||
}
|
||||
|
||||
void testDatasourceFree(Datasource *p){
|
||||
testFree(p);
|
||||
}
|
||||
|
||||
/*
|
||||
** Return a pointer to a nul-terminated string that corresponds to the
|
||||
** contents of the datasource-definition passed as the first argument.
|
||||
** The caller should eventually free the returned pointer using testFree().
|
||||
*/
|
||||
char *testDatasourceName(const DatasourceDefn *p){
|
||||
char *zRet;
|
||||
zRet = testMallocPrintf("%s.(%d-%d).(%d-%d)",
|
||||
(p->eType==TEST_DATASOURCE_SEQUENCE ? "seq" : "rnd"),
|
||||
p->nMinKey, p->nMaxKey,
|
||||
p->nMinVal, p->nMaxVal
|
||||
);
|
||||
return zRet;
|
||||
}
|
||||
|
||||
Datasource *testDatasourceNew(const DatasourceDefn *pDefn){
|
||||
Datasource *p;
|
||||
int nMinKey;
|
||||
int nMaxKey;
|
||||
int nMinVal;
|
||||
int nMaxVal;
|
||||
|
||||
if( pDefn->eType==TEST_DATASOURCE_SEQUENCE ){
|
||||
nMinKey = 128;
|
||||
nMaxKey = 128;
|
||||
}else{
|
||||
nMinKey = MAX(0, pDefn->nMinKey);
|
||||
nMaxKey = MAX(nMinKey, pDefn->nMaxKey);
|
||||
}
|
||||
nMinVal = MAX(0, pDefn->nMinVal);
|
||||
nMaxVal = MAX(nMinVal, pDefn->nMaxVal);
|
||||
|
||||
p = (Datasource *)testMalloc(sizeof(Datasource) + nMaxKey + nMaxVal + 1);
|
||||
p->eType = pDefn->eType;
|
||||
p->nMinKey = nMinKey;
|
||||
p->nMinVal = nMinVal;
|
||||
p->nMaxKey = nMaxKey;
|
||||
p->nMaxVal = nMaxVal;
|
||||
|
||||
p->aKey = (char *)&p[1];
|
||||
p->aVal = &p->aKey[nMaxKey];
|
||||
return p;
|
||||
};
|
||||
Reference in new issue
Block a user