📄 pbliftst.c
字号:
pblsay( "# rc %ld, pbl_errno %d, errno %d\n", rc, pbl_errno, errno ); } else { pblsay( "# keylen %ld, key %s\n", rc, buffer ); } } else if( !strcmp( command, "updatedata" )) { printf( "# updatedata data\n" ); if( !isam ) { continue; } getWord( buffer ); ival = strlen( buffer ) + 1; pblsay( "# pblIsamUpdateData( %s, %d )\n", buffer, ival ); rc = pblIsamUpdateData( isam, buffer, ival ); if( rc < 0 ) { pblsay( "# rc %ld, pbl_errno %d, errno %d\n", rc, pbl_errno, errno ); } else { pblsay( "# datalen %ld\n", rc ); } } else if( !strcmp( command, "updatekey" )) { int index; printf( "# updatekey index key\n" ); if( !isam ) { continue; } getWord( buffer ); index = atoi( buffer ); getWord( buffer ); ival = strlen( buffer ); pblsay( "# pblIsamUpdateKey( %d, %s, %d )\n", index, buffer, ival ); rc = pblIsamUpdateKey( isam, index, buffer, ival ); if( rc < 0 ) { pblsay( "# rc %ld, pbl_errno %d, errno %d\n", rc, pbl_errno, errno ); } else { pblsay( "# rc %ld\n", rc ); } } else if( !strcmp( command, "ndelete" )) { int n; int i; printf( "# ndelete n\n" ); if( !isam ) { continue; } getWord( buffer ); n = atoi( buffer ); pblsay( "# pblIsamDelete( %d records )\n", n ); for( i = 0; i < n; i++ ) { rc = pblIsamGet( isam, PBLTHIS, 0, buffer ); if( rc < 0 ) { pblsay( "# i %d, rc %ld, pbl_errno %d, errno %d\n", i, rc, pbl_errno, errno ); break; } rc = pblIsamDelete( isam ); if( rc < 0 ) { pblsay( "# i %d, rc %ld, pbl_errno %d, errno %d\n", i, rc, pbl_errno, errno ); break; } } if( rc >= 0 ) { pblsay( "# deleted %d records, rc %ld\n", i, rc ); } } else if( !strcmp( command, "insert" )) { printf( "# insert ,key1,key2... data\n" ); if( !isam ) { continue; } getWord( buffer ); getWord( filename ); ival = strlen( buffer ); len = strlen( filename ) + 1; pblsay( "# pblIsamInsert( %d, %s, %d, %s, %d )\n", 1, buffer, ival, filename, len ); commatolength( buffer ); rc = pblIsamInsert( isam, buffer, ival, filename, len ); if( !rc ) { pblsay( "# rc 0\n" ); continue; } pblsay( "# rc %ld, pbl_errno %d, errno %d\n", rc, pbl_errno, errno ); } else if( !strcmp( command, "ninsert" )) { int nkeys = 3; char * keys[ PBL_ISAMTEST_BUFLEN ]; int n; int i; int k; printf( "# ninsert n key1,key2,... data\n" ); if( !isam ) { continue; } getWord( buffer ); n = atoi( buffer ); getWord( buffer ); getWord( filename ); len = strlen( filename ) + 1; ptr = buffer; for( nkeys = 0; nkeys < PBL_ISAMTEST_BUFLEN; nkeys++ ) { keys[ nkeys ] = ptr; ptr = strchr( ptr, ',' ); if( !ptr ) { break; } *ptr = 0; ptr++; } for( i = 0; i < n; i++ ) { ival = 0; command[ 0 ] = 0; for( k = 0; k <= nkeys; k++ ) { snprintf( command + ival, sizeof( command ) - ival, ",%s%d", keys[ k ], i ); ival += strlen( command + ival ); } if( i == 0 ) { ival = strlen( command ); pblsay( "# pblIsamInsert( %d, %s, %d, %s, %d )\n", 1, command, ival, filename, len ); } commatolength( command ); rc = pblIsamInsert( isam, command, ival, filename, len ); if( rc < 0 ) { pblsay( "# i %d, rc %ld, pbl_errno %d, errno %d\n", i, rc, pbl_errno, errno ); break; } } if( rc >= 0 ) { pblsay( "# inserted %d records, rc %ld\n", i, rc ); } } else if( !strcmp( command, "datalen" )) { printf( "# datalen\n" ); if( !isam ) { continue; } pblsay( "# pblIsamReadDatalen( currentrecord )\n" ); rc = pblIsamReadDatalen( isam ); if( rc < 0 ) { pblsay( "# rc %ld, pbl_errno %d, errno %d\n", rc, pbl_errno, errno ); } else { pblsay( "# datalen %ld\n", rc ); } } else if( !strcmp( command, "get" )) { int index; printf( "# get index < NEXT | PREV | FIRST | LAST | THIS >\n" ); if( !isam ) { continue; } getWord( buffer ); index = atoi( buffer ); getWord( filename ); if( !strncmp( filename, "NE", 2 )) { ival = PBLNEXT; } else if( !strncmp( filename, "PR", 2 )) { ival = PBLPREV; } else if( !strncmp( filename, "FI", 2 )) { ival = PBLFIRST; } else if( !strncmp( filename, "LA", 2 )) { ival = PBLLAST; } else { ival = PBLTHIS; } pblsay( "# pblIsamGet( %d, %d )\n", ival, index ); rc = pblIsamGet( isam, ival, index, buffer ); if( rc < 0 ) { pblsay( "# rc %ld, pbl_errno %d, errno %d\n", rc, pbl_errno, errno ); } else { pblsay( "# keylen %ld, key %.*s\n", rc, rc, buffer ); } } else if( !strcmp( command, "find" )) { int index = 0; printf( "# find index key < LT | LE | FI | EQ | LA | GE | GT >\n" ); if( !isam ) { continue; } getWord( buffer ); index = atoi( buffer ); getWord( buffer ); getWord( filename ); if( !strncmp( filename, "GT", 2 )) { ival = PBLGT; } else if( !strncmp( filename, "FI", 2 )) { ival = PBLFI; } else if( !strncmp( filename, "LA", 2 )) { ival = PBLLA; } else if( !strncmp( filename, "GE", 2 )) { ival = PBLGE; } else if( !strncmp( filename, "LE", 2 )) { ival = PBLLE; } else if( !strncmp( filename, "LT", 2 )) { ival = PBLLT; } else { strcpy( filename, "EQ" ); ival = PBLEQ; } len = strlen( buffer ); pblsay( "# pblIsamFind( %s, %s, %d )\n", filename, buffer, len ); rc = pblIsamFind( isam, ival, index, buffer, len, filename ); if( rc < 0 ) { pblsay( "# rc %ld, pbl_errno %d, errno %d\n", rc, pbl_errno, errno ); } else { pblsay( "# keylen %ld, key %s\n", rc, filename ); } } else if( !strcmp( command, "nfind" )) { int index; int n; int i; printf( "# nfind n index key " "< LT | LE | FI | EQ | LA | GE | GT >\n" ); if( !isam ) { continue; } getWord( buffer ); n = atoi( buffer ); getWord( buffer ); index = atoi( buffer ); /* * read the key to search for */ getWord( buffer ); getWord( filename ); if( !strncmp( filename, "GT", 2 )) { ival = PBLGT; } else if( !strncmp( filename, "FI", 2 )) { ival = PBLFI; } else if( !strncmp( filename, "LA", 2 )) { ival = PBLLA; } else if( !strncmp( filename, "GE", 2 )) { ival = PBLGE; } else if( !strncmp( filename, "LE", 2 )) { ival = PBLLE; } else if( !strncmp( filename, "LT", 2 )) { ival = PBLLT; } else { strcpy( filename, "EQ" ); ival = PBLEQ; } for( i = 0; i < n; i++ ) { if( i == 127 )
{
len = strlen( command );
}
snprintf( command, sizeof( command ), "%s%d", buffer, ((( rand() << 16 ) ^ rand()) & 0x7fffffff ) % n ); if( i == 0 ) { len = strlen( buffer ); pblsay( "# pblIsamFind( %d, %s, %d, %s, %d )\n", 1, filename, index, buffer, len ); } len = strlen( command );
if( i == 127 )
{
len = strlen( command );
} rc = pblIsamFind( isam, ival, index, command, len, filename ); if(( rc < 0 ) && ( pbl_errno != PBL_ERROR_NOT_FOUND )) { pblsay( "# i %d, %s, %d, rc %ld, pbl_errno %d, errno %d\n", i, command, len, rc, pbl_errno, errno ); break; } } if( i >= n ) { pblsay( "# found %d records, rc %ld\n", i, 0 ); } } else { printf( "# q FOR QUIT\n" ); printf( "# open filename keyfile1,dkeyfile2,... update\n" ); printf( "# transaction < START | COMMIT | ROLLBACK >\n" ); printf( "# close\n" ); printf( "# flush\n" ); printf( "# insert ,key1,key2... data\n" ); printf( "# ninsert n key1,key2,... data\n" ); printf( "# find index key < LT | LE | FI | EQ | LA | GE | GT >\n" ); printf( "# nfind n index key " "< LT | LE | FI | EQ | LA | GE | GT >\n" ); printf( "# get index < NEXT | PREV | FIRST | LAST | THIS >\n" ); printf( "# datalen\n" ); printf( "# readdata\n" ); printf( "# readkey index\n" ); printf( "# updatedata data\n" ); printf( "# updatekey index key\n" ); printf( "# ndelete n\n" ); } }#ifdef PBL_MEMTRACE pbl_memtrace_out( 0 );#endif return( 0 );}int main( int argc, char * argv[] ){ return( pblISAMFILE_TestFrame( argc, argv ));}static void pblsay(char *p1, char *p2, char *p3, char *p4, char *p5,char *p6, char *p7, char *p8, char *p9, char *p10,char *p11, char *p12, char *p13, char *p14, char *p15){ fprintf( stdout, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15 ); fprintf( logfile, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15 ); //fflush( logfile ); //fflush( stdout );}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -