⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pbliftst.c

📁 B树算法实现
💻 C
📖 第 1 页 / 共 2 页
字号:
                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 + -