RPM Package Manager, CVS Repository
  http://rpm5.org/cvs/
  ____________________________________________________________________________

  Server: rpm5.org                         Name:   Jeff Johnson
  Root:   /v/rpm/cvs                       Email:  j...@rpm5.org
  Module: rpm                              Date:   04-May-2012 21:55:15
  Branch: rpm-5_4                          Handle: 2012050419551500

  Modified files:           (Branch: rpm-5_4)
    rpm/rpmdb               sqlite.c

  Log:
    - sqldb: add copious spewage preparing for the Second Coming of sqldb.

  Summary:
    Revision    Changes     Path
    1.44.4.1    +194 -141   rpm/rpmdb/sqlite.c
  ____________________________________________________________________________

  patch -p0 <<'@@ .'
  Index: rpm/rpmdb/sqlite.c
  ============================================================================
  $ cvs diff -u -r1.44 -r1.44.4.1 sqlite.c
  --- rpm/rpmdb/sqlite.c        5 Oct 2009 20:31:50 -0000       1.44
  +++ rpm/rpmdb/sqlite.c        4 May 2012 19:55:15 -0000       1.44.4.1
  @@ -63,17 +63,44 @@
   #endif
   
   /*@unchecked@*/
  -static int _debug = 0;
  +static int _debug = -1;
   
  -/* Define the things normally in a header... */
  -struct _sql_db_s;    typedef struct _sql_db_s        SQL_DB;
  -struct _sql_dbcursor_s;      typedef struct _sql_dbcursor_s *SCP_t;
  +#define SQLDEBUG(_dbi, _list)   if (_debug) fprintf _list
   
  +struct _sql_db_s;    typedef struct _sql_db_s        SQL_DB;
   struct _sql_db_s {
       sqlite3 * db;            /* Database pointer */
       int transaction;         /* Do we have a transaction open? */
   };
   
  +/* =================================================================== */
  +/*@-globuse -mustmod @*/     /* FIX: rpmError not annotated yet. */
  +static int Xcvtdberr(/*@unused@*/ dbiIndex dbi, const char * msg,
  +             int error, int printit,
  +             const char * func, const char * fn, unsigned ln)
  +     /*@globals fileSystem @*/
  +     /*@modifies fileSystem @*/
  +{
  +    int rc = error;
  +
  +    if (printit && rc) {
  +     const char * errmsg = dbi != NULL
  +             ? sqlite3_errmsg(((SQL_DB *)dbi->dbi_db)->db)
  +             : "";
  +/*@-moduncon@*/ /* FIX: annotate db3 methods */
  +     rpmlog(RPMLOG_ERR, "%s:%s:%u: %s(%d): %s\n",
  +             func, fn, ln, msg, rc, errmsg);
  +/*@=moduncon@*/
  +    }
  +
  +    return rc;
  +}
  +/*@=globuse =mustmod @*/
  +#define      cvtdberr(_dbi, _msg, _error)    \
  +    Xcvtdberr(_dbi, _msg, _error, _debug, __FUNCTION__, __FILE__, __LINE__)
  +
  +/* =================================================================== */
  +struct _sql_dbcursor_s;      typedef struct _sql_dbcursor_s *SCP_t;
   struct _sql_dbcursor_s {
   /*@shared@*/
       DB *dbp;
  @@ -112,7 +139,7 @@
   
   /*@-redef@*/
   union _dbswap {
  -    rpmuint32_t ui;
  +    uint32_t ui;
       unsigned char uc[4];
   };
   /*@=redef@*/
  @@ -142,8 +169,7 @@
          /* Nothing to do, was not already in chroot */
          return;
   
  -if (_debug)
  -fprintf(stderr, "sql:chroot(%s)\n", dbi->dbi_root);
  +SQLDEBUG(dbi, (stderr, "==> %s(%s)\n", __FUNCTION__, dbi->dbi_root));
   
       {
         int currDirLen = 0;
  @@ -176,8 +202,7 @@
          /* Nothing to do, not in chroot */
          return;
   
  -if (_debug)
  -fprintf(stderr, "sql:chroot(.)\n");
  +SQLDEBUG(dbi, (stderr, "==> %s(%s)\n", __FUNCTION__, dbi->dbi_root));
   
   /*@-modobserver@*/
       xx = Chroot(".");
  @@ -234,8 +259,7 @@
   {
       int ix;
   
  -if (_debug)
  -fprintf(stderr, "*** scpResetKeys(%p)\n", scp);
  +SQLDEBUG(NULL, (stderr, "--> %s(%p)\n", __FUNCTION__, scp));
   dbg_scp(scp);
   
       for ( ix =0 ; ix < scp->nkeys ; ix++ ) {
  @@ -256,8 +280,7 @@
   {
       int xx;
   
  -if (_debug)
  -fprintf(stderr, "*** scpResetAv(%p)\n", scp);
  +SQLDEBUG(NULL, (stderr, "--> %s(%p)\n", __FUNCTION__, scp));
   dbg_scp(scp);
   
       if (scp->av != NULL) {
  @@ -295,8 +318,7 @@
   {
       int xx;
   
  -if (_debug)
  -fprintf(stderr, "*** scpReset(%p)\n", scp);
  +SQLDEBUG(NULL, (stderr, "--> %s(%p)\n", __FUNCTION__, scp));
   dbg_scp(scp);
   
       if (scp->cmd) {
  @@ -304,10 +326,10 @@
        scp->cmd = NULL;
       }
       if (scp->pStmt) {
  -     xx = sqlite3_reset(scp->pStmt);
  -     if (xx) rpmlog(RPMLOG_WARNING, "reset %d\n", xx);
  -     xx = sqlite3_finalize(scp->pStmt);
  -     if (xx) rpmlog(RPMLOG_WARNING, "finalize %d\n", xx);
  +     xx = cvtdberr(NULL, "sqlite3_reset",
  +             sqlite3_reset(scp->pStmt));
  +     xx = cvtdberr(NULL, "sqlite3_finalize",
  +             sqlite3_finalize(scp->pStmt));
        scp->pStmt = NULL;
       }
   
  @@ -326,8 +348,7 @@
       scp->av = _free(scp->av);
       scp->avlen = _free(scp->avlen);
   
  -if (_debug)
  -fprintf(stderr, "*** scpFree(%p)\n", scp);
  +SQLDEBUG(NULL, (stderr, "<-- %s(%p)\n", __FUNCTION__, scp));
       scp = _free(scp);
       return NULL;
   }
  @@ -345,8 +366,7 @@
       scp->lkey = NULL;
       scp->ldata = NULL;
   
  -if (_debug)
  -fprintf(stderr, "*** scpNew(%p)\n", scp);
  +SQLDEBUG(NULL, (stderr, "<-- %s(%p)\n", __FUNCTION__, scp));
       return scp;
   }
   
  @@ -362,7 +382,7 @@
       int rc;
       int i;
   
  -    scp->nc = sqlite3_column_count(scp->pStmt);
  +    scp->nc = sqlite3_column_count(scp->pStmt);      /* XXX cvtdberr? */
   
       if (scp->nr == 0 && scp->av != NULL)
        need = 2 * scp->nc;
  @@ -392,11 +412,11 @@
   /*@-infloopsuncon@*/
       loop = 1;
       while (loop) {
  -     rc = sqlite3_step(scp->pStmt);
  +     rc = cvtdberr(dbi, "sqlite3_step",
  +             sqlite3_step(scp->pStmt));
        switch (rc) {
        case SQLITE_DONE:
  -if (_debug)
  -fprintf(stderr, "sqlite3_step: DONE scp %p [%d:%d] av %p avlen %p\n", scp, 
scp->ac, scp->nalloc, scp->av, scp->avlen);
  +SQLDEBUG(dbi, (stderr, "%s(%p,%p): DONE [%d:%d] av %p avlen %p\n", 
__FUNCTION__, dbi, scp, scp->ac, scp->nalloc, scp->av, scp->avlen));
            loop = 0;
            /*@switchbreak@*/ break;
        case SQLITE_ROW:
  @@ -419,8 +439,7 @@
                if (!strcmp(vtype, "blob")) {
                    const void * v = sqlite3_column_blob(scp->pStmt, i);
                    nb = sqlite3_column_bytes(scp->pStmt, i);
  -if (_debug)
  -fprintf(stderr, "\t%d %s %s %p[%d]\n", i, cname, vtype, v, (int)nb);
  +SQLDEBUG(dbi, (stderr, "\t%d %s %s %p[%d]\n", i, cname, vtype, v, (int)nb));
                    if (nb > 0) {
                        void * t = xmalloc(nb);
                        scp->av[scp->ac] = memcpy(t, v, nb);
  @@ -431,8 +450,7 @@
                if (!strcmp(vtype, "double")) {
                    double v = sqlite3_column_double(scp->pStmt, i);
                    nb = sizeof(v);
  -if (_debug)
  -fprintf(stderr, "\t%d %s %s %g\n", i, cname, vtype, v);
  +SQLDEBUG(dbi, (stderr, "\t%d %s %s %g\n", i, cname, vtype, v));
                    if (nb > 0) {
                        scp->av[scp->ac] = memcpy(xmalloc(nb), &v, nb);
                        scp->avlen[scp->ac] = nb;
  @@ -443,8 +461,7 @@
                if (!strcmp(vtype, "int")) {
                    rpmint32_t v = sqlite3_column_int(scp->pStmt, i);
                    nb = sizeof(v);
  -if (_debug)
  -fprintf(stderr, "\t%d %s %s %d\n", i, cname, vtype, (int) v);
  +SQLDEBUG(dbi, (stderr, "\t%d %s %s %d\n", i, cname, vtype, (int) v));
                    if (nb > 0) {
                        scp->av[scp->ac] = memcpy(xmalloc(nb), &v, nb);
                        scp->avlen[scp->ac] = nb;
  @@ -460,8 +477,7 @@
                if (!strcmp(vtype, "int64")) {
                    int64_t v = sqlite3_column_int64(scp->pStmt, i);
                    nb = sizeof(v);
  -if (_debug)
  -fprintf(stderr, "\t%d %s %s %ld\n", i, cname, vtype, (long)v);
  +SQLDEBUG(dbi, (stderr, "\t%d %s %s %ld\n", i, cname, vtype, (long)v));
                    if (nb > 0) {
                        scp->av[scp->ac] = memcpy(xmalloc(nb), &v, nb);
                        scp->avlen[scp->ac] = nb;
  @@ -472,8 +488,7 @@
                if (!strcmp(vtype, "text")) {
                    const char * v = (const char 
*)sqlite3_column_text(scp->pStmt, i);
                    nb = strlen(v) + 1;
  -if (_debug)
  -fprintf(stderr, "\t%d %s %s \"%s\"\n", i, cname, vtype, v);
  +SQLDEBUG(dbi, (stderr, "\t%d %s %s \"%s\"\n", i, cname, vtype, v));
                    if (nb > 0) {
                        scp->av[scp->ac] = memcpy(xmalloc(nb), v, nb);
                        scp->avlen[scp->ac] = nb;
  @@ -533,13 +548,16 @@
     _DBSWAP(dbswap);
     memcpy(&hnum, &dbswap.ui, sizeof(dbswap.ui));
   }
  -         rc = sqlite3_bind_int(scp->pStmt, pos, hnum);
  +         rc = cvtdberr(dbi, "sqlite3_bind_int",
  +                     sqlite3_bind_int(scp->pStmt, pos, hnum));
        } break;
       default:
        switch (tagType(dbi->dbi_rpmtag) & RPM_MASK_TYPE) {
        case RPM_BIN_TYPE:
   /*@-castfcnptr -nullpass@*/ /* FIX: annotate sqlite. */
  -         rc = sqlite3_bind_blob(scp->pStmt, pos, key->data, key->size, 
SQLITE_STATIC);
  +         rc = cvtdberr(dbi, "sqlite3_bind_blob",
  +                     sqlite3_bind_blob(scp->pStmt, pos,
  +                             key->data, key->size, SQLITE_STATIC));
   /*@=castfcnptr =nullpass@*/
            /*@innerbreak@*/ break;
        case RPM_UINT8_TYPE:
  @@ -547,14 +565,16 @@
   /*@i@*/ assert(key->size == sizeof(unsigned char));
   assert(swapped == 0); /* Byte swap?! */
            memcpy(&i, key->data, sizeof(i));
  -         rc = sqlite3_bind_int(scp->pStmt, pos, (int) i);
  +         rc = cvtdberr(dbi, "sqlite3_bind_int",
  +                     sqlite3_bind_int(scp->pStmt, pos, (int) i));
        } /*@innerbreak@*/ break;
        case RPM_UINT16_TYPE:
        {       unsigned short i;
   /*@i@*/ assert(key->size == sizeof(rpmuint16_t));
   assert(swapped == 0); /* Byte swap?! */
            memcpy(&i, key->data, sizeof(i));
  -         rc = sqlite3_bind_int(scp->pStmt, pos, (int) i);
  +         rc = cvtdberr(dbi, "sqlite3_bind_int",
  +                     sqlite3_bind_int(scp->pStmt, pos, (int) i));
        } /*@innerbreak@*/ break;
        case RPM_UINT64_TYPE:
   assert(0);   /* borken */
  @@ -571,13 +591,16 @@
     _DBSWAP(dbswap);
     memcpy(&i, &dbswap.ui, sizeof(dbswap.ui));
   }
  -         rc = sqlite3_bind_int(scp->pStmt, pos, i);
  +         rc = cvtdberr(dbi, "sqlite3_bind_int",
  +                     sqlite3_bind_int(scp->pStmt, pos, i));
        }   /*@innerbreak@*/ break;
           case RPM_STRING_TYPE:
           case RPM_STRING_ARRAY_TYPE:
           case RPM_I18NSTRING_TYPE:
   /*@-castfcnptr -nullpass@*/ /* FIX: annotate sqlite. */
  -         rc = sqlite3_bind_text(scp->pStmt, pos, key->data, key->size, 
SQLITE_STATIC);
  +         rc = cvtdberr(dbi, "sqlite3_bind_text",
  +                     sqlite3_bind_text(scp->pStmt, pos,
  +                             key->data, key->size, SQLITE_STATIC));
   /*@=castfcnptr =nullpass@*/
            /*@innerbreak@*/ break;
           }
  @@ -594,13 +617,15 @@
   
   assert(data->data != NULL);
   /*@-castfcnptr -nullpass@*/ /* FIX: annotate sqlite */
  -    rc = sqlite3_bind_blob(scp->pStmt, pos, data->data, data->size, 
SQLITE_STATIC);
  +    rc = cvtdberr(dbi, "sqlite3_bind_blob",
  +             sqlite3_bind_blob(scp->pStmt, pos,
  +                     data->data, data->size, SQLITE_STATIC));
   /*@=castfcnptr =nullpass@*/
   
       return rc;
   }
   
  -/*===================================================================*/
  +/* =================================================================== */
   /*
    * Transaction support
    */
  @@ -613,15 +638,15 @@
   
       /* XXX:  Transaction Support */
       if (!sqldb->transaction) {
  -      char * pzErrmsg;
  -      rc = sqlite3_exec(sqldb->db, "BEGIN TRANSACTION;", NULL, NULL, 
&pzErrmsg);
  +     char * pzErrmsg;
  +     rc = cvtdberr(dbi, "sqlite3_exec",
  +             sqlite3_exec(sqldb->db, "BEGIN TRANSACTION;", NULL, NULL, 
&pzErrmsg));
   
  -if (_debug)
  -fprintf(stderr, "Begin %s SQL transaction %s (%d)\n",
  -             dbi->dbi_subfile, pzErrmsg, rc);
  +SQLDEBUG(dbi, (stderr, "Begin %s SQL transaction %s (%d)\n",
  +             dbi->dbi_subfile, pzErrmsg, rc));
   
  -      if (rc == 0)
  -     sqldb->transaction = 1;
  +     if (rc == 0)
  +         sqldb->transaction = 1;
       }
   
       return rc;
  @@ -635,15 +660,15 @@
   
       /* XXX:  Transaction Support */
       if (sqldb->transaction) {
  -      char * pzErrmsg;
  -      rc = sqlite3_exec(sqldb->db, "END TRANSACTION;", NULL, NULL, 
&pzErrmsg);
  +     char * pzErrmsg;
  +     rc = cvtdberr(dbi, "sqlite3_exec",
  +             sqlite3_exec(sqldb->db, "END TRANSACTION;", NULL, NULL, 
&pzErrmsg));
   
  -if (_debug)
  -fprintf(stderr, "End %s SQL transaction %s (%d)\n",
  -             dbi->dbi_subfile, pzErrmsg, rc);
  +SQLDEBUG(dbi, (stderr, "End %s SQL transaction %s (%d)\n",
  +             dbi->dbi_subfile, pzErrmsg, rc));
   
  -      if (rc == 0)
  -     sqldb->transaction = 0;
  +     if (rc == 0)
  +         sqldb->transaction = 0;
       }
   
       return rc;
  @@ -657,18 +682,18 @@
   
       /* XXX:  Transactions */
       if ( sqldb->transaction ) {
  -      char * pzErrmsg;
  -      rc = sqlite3_exec(sqldb->db, "COMMIT;", NULL, NULL, &pzErrmsg);
  +     char * pzErrmsg;
  +     rc = cvtdberr(dbi, "sqlite3_exec",
  +             sqlite3_exec(sqldb->db, "COMMIT;", NULL, NULL, &pzErrmsg));
   
  -if (_debug)
  -fprintf(stderr, "Commit %s SQL transaction(s) %s (%d)\n",
  -             dbi->dbi_subfile, pzErrmsg, rc);
  +SQLDEBUG(dbi, (stderr, "Commit %s SQL transaction(s) %s (%d)\n",
  +             dbi->dbi_subfile, pzErrmsg, rc));
   
  -      sqldb->transaction=0;
  +     sqldb->transaction = 0;
   
  -      /* Start a new transaction if we were in the middle of one */
  -      if ( flag == 0 )
  -     rc = sql_startTransaction(dbi);
  +     /* Start a new transaction if we were in the middle of one */
  +     if ( flag == 0 )
  +         rc = sql_startTransaction(dbi);
       }
   
       return rc;
  @@ -689,7 +714,7 @@
       return 1;
   }
   
  -/*===================================================================*/
  +/* =================================================================== */
   
   /**
    * Verify the DB is setup.. if not initialize it
  @@ -716,24 +741,28 @@
           tmpdir = rpmGenPath(root, dbi->dbi_tmpdir, NULL);
           /*@=mods@*/
           sprintf(cmd, "PRAGMA temp_store_directory = '%s';", tmpdir);
  -        xx = sqlite3_exec(sqldb->db, cmd, NULL, NULL, (char 
**)&scp->pzErrmsg);
  +     xx = cvtdberr(dbi, "sqlite3_exec",
  +             sqlite3_exec(sqldb->db, cmd, NULL, NULL, (char 
**)&scp->pzErrmsg));
           tmpdir = _free(tmpdir);
       }
       if (dbi->dbi_eflags & DB_EXCL) {
           int xx;
           sprintf(cmd, "PRAGMA locking_mode = EXCLUSIVE;");
  -        xx = sqlite3_exec(sqldb->db, cmd, NULL, NULL, (char 
**)&scp->pzErrmsg);
  +     xx = cvtdberr(dbi, "sqlite3_exec",
  +             sqlite3_exec(sqldb->db, cmd, NULL, NULL, (char 
**)&scp->pzErrmsg));
       }
   #ifdef       DYING
       if (dbi->dbi_pagesize > 0) {
           int xx;
           sprintf(cmd, "PRAGMA cache_size = %d;", dbi->dbi_cachesize);
  -        xx = sqlite3_exec(sqldb->db, cmd, NULL, NULL, (char 
**)&scp->pzErrmsg);
  +     xx = cvtdberr(dbi, "sqlite3_exec",
  +             sqlite3_exec(sqldb->db, cmd, NULL, NULL, (char 
**)&scp->pzErrmsg));
       }
       if (dbi->dbi_cachesize > 0) {
           int xx;
           sprintf(cmd, "PRAGMA page_size = %d;", dbi->dbi_pagesize);
  -        xx = sqlite3_exec(sqldb->db, cmd, NULL, NULL, (char 
**)&scp->pzErrmsg);
  +     xx = cvtdberr(dbi, "sqlite3_exec",
  +             sqlite3_exec(sqldb->db, cmd, NULL, NULL, (char 
**)&scp->pzErrmsg));
       }
   #endif
   
  @@ -742,8 +771,9 @@
        "SELECT name FROM 'sqlite_master' WHERE type='table' and name='%s';",
                dbi->dbi_subfile);
   /*@-nullstate@*/
  -    rc = sqlite3_get_table(sqldb->db, cmd,
  -     &scp->av, &scp->nr, &scp->nc, (char **)&scp->pzErrmsg);
  +    rc = cvtdberr(dbi, "sqlite3_get_table",
  +             sqlite3_get_table(sqldb->db, cmd,
  +                     &scp->av, &scp->nr, &scp->nc, (char **)&scp->pzErrmsg));
   /*@=nullstate@*/
       if (rc)
        goto exit;
  @@ -776,23 +806,26 @@
                /*@innerbreak@*/ break;
            }
        }
  -if (_debug)
  -fprintf(stderr, "\t%s(%d) type(%d) keytype %s\n", tagName(dbi->dbi_rpmtag), 
dbi->dbi_rpmtag, (tagType(dbi->dbi_rpmtag) & RPM_MASK_TYPE), keytype);
  +SQLDEBUG(dbi, (stderr, "\t%s(%d) type(%d) keytype %s\n", 
tagName(dbi->dbi_rpmtag), dbi->dbi_rpmtag, (tagType(dbi->dbi_rpmtag) & 
RPM_MASK_TYPE), keytype));
        sprintf(cmd, "CREATE %sTABLE '%s' (key %s, value %s)",
                        dbi->dbi_temporary ? "TEMPORARY " : "",
                        dbi->dbi_subfile, keytype, valtype);
  -     rc = sqlite3_exec(sqldb->db, cmd, NULL, NULL, (char **)&scp->pzErrmsg);
  +     rc = cvtdberr(dbi, "sqlite3_exec",
  +             sqlite3_exec(sqldb->db, cmd, NULL, NULL,
  +                     (char **)&scp->pzErrmsg));
        if (rc)
            goto exit;
   
        sprintf(cmd, "CREATE %sTABLE 'db_info' (endian TEXT)",
                        dbi->dbi_temporary ? "TEMPORARY " : "");
  -     rc = sqlite3_exec(sqldb->db, cmd, NULL, NULL, (char **)&scp->pzErrmsg);
  +     rc = cvtdberr(dbi, "sqlite3_exec",
  +             sqlite3_exec(sqldb->db, cmd, NULL, NULL, (char 
**)&scp->pzErrmsg));
        if (rc)
            goto exit;
   
        sprintf(cmd, "INSERT INTO 'db_info' values('%u')", (unsigned)((union 
_dbswap *)&endian)->uc[0]);
  -     rc = sqlite3_exec(sqldb->db, cmd, NULL, NULL, (char **)&scp->pzErrmsg);
  +     rc = cvtdberr(dbi, "sqlite3_exec",
  +             sqlite3_exec(sqldb->db, cmd, NULL, NULL, (char 
**)&scp->pzErrmsg));
        if (rc)
            goto exit;
       }
  @@ -800,7 +833,8 @@
       if (dbi->dbi_no_fsync) {
        int xx;
           sprintf(cmd, "PRAGMA synchronous = OFF;");
  -        xx = sqlite3_exec(sqldb->db, cmd, NULL, NULL, (char 
**)&scp->pzErrmsg);
  +     xx = cvtdberr(dbi, "sqlite3_exec",
  +             sqlite3_exec(sqldb->db, cmd, NULL, NULL, (char 
**)&scp->pzErrmsg));
       }
   
   exit:
  @@ -828,8 +862,7 @@
       SCP_t scp = (SCP_t)dbcursor;
       int rc;
   
  -if (_debug)
  -fprintf(stderr, "==> sql_cclose(%p)\n", scp);
  +SQLDEBUG(dbi, (stderr, "==> sql_cclose(%p)\n", scp));
   
       if (scp->lkey)
        scp->lkey = _free(scp->lkey);
  @@ -867,12 +900,15 @@
       int rc = 0;
   
       if (sqldb) {
  +     int xx;
  +
   enterChroot(dbi);
   
        /* Commit, don't open a new one */
        rc = sql_commitTransaction(dbi, 1);
   
  -     (void) sqlite3_close(sqldb->db);
  +     xx = cvtdberr(dbi, "sqlite3_close",
  +             sqlite3_close(sqldb->db));
   
        rpmlog(RPMLOG_DEBUG, D_("closed   sql db         %s\n"),
                dbi->dbi_subfile);
  @@ -1003,7 +1039,8 @@
           /* mask-out permission bits which are not requested (security) */
           umask_safed = umask(~((mode_t)(dbi->dbi_perms)));
   /*@=longunsignedintegral@*/
  -    xx = sqlite3_open(dbfname, &sqldb->db);
  +    xx = cvtdberr(dbi, "sqlite3_open",
  +             sqlite3_open(dbfname, &sqldb->db));
       if (dbi->dbi_perms) {
           if ((0644 /* = SQLite hard-coded default */ & dbi->dbi_perms) != 
dbi->dbi_perms) {
               /* add requested permission bits which are still missing 
(semantic) */
  @@ -1017,7 +1054,8 @@
        sql_errcode = sqlite3_errmsg(sqldb->db);
   
       if (sqldb->db)
  -     (void) sqlite3_busy_handler(sqldb->db, &sql_busy_handler, dbi);
  +     xx = cvtdberr(dbi, "sqlite3_busty_handler",
  +             sqlite3_busy_handler(sqldb->db, &sql_busy_handler, dbi));
   
       sqldb->transaction = 0;  /* Initialize no current transactions */
   
  @@ -1065,6 +1103,7 @@
       rc = sql_commitTransaction(dbi, 0);
   leaveChroot(dbi);
   
  +SQLDEBUG(dbi, (stderr, "<-- %s(%p,0x%x) rc %d\n", __FUNCTION__, dbi, flags, 
rc));
       return rc;
   }
   
  @@ -1079,9 +1118,9 @@
        /*@globals fileSystem @*/
        /*@modifies fileSystem @*/
   {
  -if (_debug)
  -fprintf(stderr, "*** sql_exists:\n");
  -    return EINVAL;
  +    int rc = EINVAL;
  +SQLDEBUG(dbi, (stderr, "<-- %s(%p,%p,0x%x) rc %d\n", __FUNCTION__, dbi, key, 
flags, rc));
  +    return rc;
   }
   
   /** \ingroup dbi
  @@ -1093,9 +1132,9 @@
    */
   static int sql_seqno(dbiIndex dbi, int64_t * seqnop, unsigned int flags)
   {
  -if (_debug)
  -fprintf(stderr, "*** sql_seqno:\n");
  -    return EINVAL;
  +    int rc = EINVAL;
  +SQLDEBUG(dbi, (stderr, "<-- %s(%p,%p,0x%x) rc %d\n", __FUNCTION__, dbi, 
seqnop, flags, rc));
  +    return rc;
   }
   
   /**
  @@ -1116,8 +1155,7 @@
       DBC * dbcursor = (DBC *)scp;
       int rc = 0;
   
  -if (_debug)
  -fprintf(stderr, "==> sql_copen(%s) tag %d type %d scp %p\n", 
tagName(dbi->dbi_rpmtag), dbi->dbi_rpmtag, (tagType(dbi->dbi_rpmtag) & 
RPM_MASK_TYPE), scp);
  +SQLDEBUG(dbi, (stderr, "==> %s(%s) tag %d type %d scp %p\n", __FUNCTION__, 
tagName(dbi->dbi_rpmtag), dbi->dbi_rpmtag, (tagType(dbi->dbi_rpmtag) & 
RPM_MASK_TYPE), scp));
   
   enterChroot(dbi);
   
  @@ -1153,20 +1191,25 @@
       SCP_t scp = scpNew(dbi->dbi_db);
       int rc = 0;
   
  -dbg_keyval("sql_cdel", dbi, dbcursor, key, data, flags);
  +dbg_keyval(__FUNCTION__, dbi, dbcursor, key, data, flags);
   enterChroot(dbi);
   
       scp->cmd = sqlite3_mprintf("DELETE FROM '%q' WHERE key=? AND value=?;",
        dbi->dbi_subfile);
   
  -    rc = sqlite3_prepare(sqldb->db, scp->cmd, (int)strlen(scp->cmd), 
&scp->pStmt, &scp->pzErrmsg);
  +    rc = cvtdberr(dbi, "sqlite3_prepare",
  +             sqlite3_prepare(sqldb->db, scp->cmd, (int)strlen(scp->cmd),
  +             &scp->pStmt, &scp->pzErrmsg));
       if (rc) rpmlog(RPMLOG_WARNING, "cdel(%s) prepare %s (%d)\n", 
dbi->dbi_subfile, sqlite3_errmsg(sqldb->db), rc);
  -    rc = sql_bind_key(dbi, scp, 1, key);
  +    rc = cvtdberr(dbi, "sql_bind_key",
  +             sql_bind_key(dbi, scp, 1, key));
       if (rc) rpmlog(RPMLOG_WARNING, "cdel(%s) bind key %s (%d)\n", 
dbi->dbi_subfile, sqlite3_errmsg(sqldb->db), rc);
  -    rc = sql_bind_data(dbi, scp, 2, data);
  +    rc = cvtdberr(dbi, "sql_bind_data",
  +             sql_bind_data(dbi, scp, 2, data));
       if (rc) rpmlog(RPMLOG_WARNING, "cdel(%s) bind data %s (%d)\n", 
dbi->dbi_subfile, sqlite3_errmsg(sqldb->db), rc);
   
  -    rc = sql_step(dbi, scp);
  +    rc = cvtdberr(dbi, "sql_step",
  +             sql_step(dbi, scp));
       if (rc) rpmlog(RPMLOG_WARNING, "cdel(%s) sql_step rc %d\n", 
dbi->dbi_subfile, rc);
   
       scp = scpFree(scp);
  @@ -1196,7 +1239,7 @@
       int ix;
   
   assert(dbcursor != NULL);
  -dbg_keyval("sql_cget", dbi, dbcursor, key, data, flags);
  +dbg_keyval(__FUNCTION__, dbi, dbcursor, key, data, flags);
   
   enterChroot(dbi);
   
  @@ -1204,9 +1247,8 @@
        * First determine if this is a new scan or existing scan
        */
   
  -if (_debug)
  -fprintf(stderr, "\tcget(%s) scp %p rc %d flags %d av %p\n",
  -             dbi->dbi_subfile, scp, rc, flags, scp->av);
  +SQLDEBUG(dbi, (stderr, "\tcget(%s) scp %p rc %d flags %d av %p\n",
  +             dbi->dbi_subfile, scp, rc, flags, scp->av));
       if ( flags == DB_SET || scp->used == 0 ) {
           scp->used = 1; /* Signal this scp as now in use... */
   /*@i@*/      scp = scpReset(scp);    /* Free av and avlen, reset counters.*/
  @@ -1239,7 +1281,10 @@
                    dbi->dbi_subfile);
                break;
            }
  -         rc = sqlite3_prepare(sqldb->db, scp->cmd, (int)strlen(scp->cmd), 
&scp->pStmt, &scp->pzErrmsg);
  +         rc = cvtdberr(dbi, "sqlite3_prepare",
  +                     sqlite3_prepare(sqldb->db, scp->cmd,
  +                             (int)strlen(scp->cmd), &scp->pStmt,
  +                             &scp->pzErrmsg));
            if (rc) rpmlog(RPMLOG_WARNING, "cget(%s) sequential prepare %s 
(%d)\n", dbi->dbi_subfile, sqlite3_errmsg(sqldb->db), rc);
   
            rc = sql_step(dbi, scp);
  @@ -1271,7 +1316,9 @@
   
           /* Prepare SQL statement to retrieve the value for the current key */
           scp->cmd = sqlite3_mprintf("SELECT value FROM '%q' WHERE key=?;", 
dbi->dbi_subfile);
  -        rc = sqlite3_prepare(sqldb->db, scp->cmd, (int)strlen(scp->cmd), 
&scp->pStmt, &scp->pzErrmsg);
  +        rc = cvtdberr(dbi, "sqlite3_prepare",
  +             sqlite3_prepare(sqldb->db, scp->cmd, (int)strlen(scp->cmd),
  +                     &scp->pStmt, &scp->pzErrmsg));
   
           if (rc) rpmlog(RPMLOG_WARNING, "cget(%s) prepare %s (%d)\n", 
dbi->dbi_subfile, sqlite3_errmsg(sqldb->db), rc);
       }
  @@ -1286,13 +1333,16 @@
        goto exit;
   
       /* Bind key to prepared statement */
  -    rc = sql_bind_key(dbi, scp, 1, scp->keys[scp->rx]);
  +    rc = cvtdberr(dbi, "sql_bind_key",
  +             sql_bind_key(dbi, scp, 1, scp->keys[scp->rx]));
       if (rc) rpmlog(RPMLOG_WARNING, "cget(%s)  key bind %s (%d)\n", 
dbi->dbi_subfile, sqlite3_errmsg(sqldb->db), rc);
   
  -    rc = sql_step(dbi, scp);
  +    rc = cvtdberr(dbi, "sql_step",
  +             sql_step(dbi, scp));
       if (rc) rpmlog(RPMLOG_WARNING, "cget(%s) sql_step rc %d\n", 
dbi->dbi_subfile, rc);
   
  -    rc = sqlite3_reset(scp->pStmt);
  +    rc = cvtdberr(dbi, "sqlite3_reset",
  +             sqlite3_reset(scp->pStmt));
       if (rc) rpmlog(RPMLOG_WARNING, "reset %d\n", rc);
   
   /* 1 key should return 0 or 1 row/value */
  @@ -1340,17 +1390,14 @@
       scp->rx++;
   
       /* XXX FIXME: ptr alignment is fubar here. */
  -if (_debug)
  -fprintf(stderr, "\tcget(%s) found  key 0x%x (%d)\n", dbi->dbi_subfile,
  -             key->data == NULL ? 0 : *(unsigned int *)key->data, key->size);
  -if (_debug)
  -fprintf(stderr, "\tcget(%s) found data 0x%x (%d)\n", dbi->dbi_subfile,
  -             key->data == NULL ? 0 : *(unsigned int *)data->data, 
data->size);
  +SQLDEBUG(dbi, (stderr, "\tcget(%s) found  key 0x%x (%d)\n", dbi->dbi_subfile,
  +             key->data == NULL ? 0 : *(unsigned int *)key->data, key->size));
  +SQLDEBUG(dbi, (stderr, "\tcget(%s) found data 0x%x (%d)\n", dbi->dbi_subfile,
  +             key->data == NULL ? 0 : *(unsigned int *)data->data, 
data->size));
   
   exit:
       if (rc == DB_NOTFOUND) {
  -if (_debug)
  -fprintf(stderr, "\tcget(%s) not found\n", dbi->dbi_subfile);
  +SQLDEBUG(dbi, (stderr, "\tcget(%s) not found\n", dbi->dbi_subfile));
       }
   
   leaveChroot(dbi);
  @@ -1384,11 +1431,15 @@
       default:
        scp->cmd = sqlite3_mprintf("INSERT OR REPLACE INTO '%q' VALUES(?, ?);",
                dbi->dbi_subfile);
  -     rc = sqlite3_prepare(sqldb->db, scp->cmd, (int)strlen(scp->cmd), 
&scp->pStmt, &scp->pzErrmsg);
  +     rc = cvtdberr(dbi, "sqlite3_prepare",
  +             sqlite3_prepare(sqldb->db, scp->cmd, (int)strlen(scp->cmd),
  +                     &scp->pStmt, &scp->pzErrmsg));
        if (rc) rpmlog(RPMLOG_WARNING, "cput(%s) prepare %s 
(%d)\n",dbi->dbi_subfile,  sqlite3_errmsg(sqldb->db), rc);
  -     rc = sql_bind_key(dbi, scp, 1, key);
  +     rc = cvtdberr(dbi, "sql_bind_key",
  +             sql_bind_key(dbi, scp, 1, key));
        if (rc) rpmlog(RPMLOG_WARNING, "cput(%s)  key bind %s (%d)\n", 
dbi->dbi_subfile, sqlite3_errmsg(sqldb->db), rc);
  -     rc = sql_bind_data(dbi, scp, 2, data);
  +     rc = cvtdberr(dbi, "sql_bind_data",
  +             sql_bind_data(dbi, scp, 2, data));
        if (rc) rpmlog(RPMLOG_WARNING, "cput(%s) data bind %s (%d)\n", 
dbi->dbi_subfile, sqlite3_errmsg(sqldb->db), rc);
   
        rc = sql_step(dbi, scp);
  @@ -1421,8 +1472,9 @@
   enterChroot(dbi);
   
   /*@-nullstate@*/
  -    sql_rc = sqlite3_get_table(sqldb->db, "SELECT endian FROM 'db_info';",
  -     &scp->av, &scp->nr, &scp->nc, (char **)&scp->pzErrmsg);
  +    sql_rc = cvtdberr(dbi, "sqlite3_get_table",
  +             sqlite3_get_table(sqldb->db, "SELECT endian FROM 'db_info';",
  +             &scp->av, &scp->nr, &scp->nc, (char **)&scp->pzErrmsg));
   /*@=nullstate@*/
   
       if (sql_rc == 0 && scp->nr > 0) {
  @@ -1470,9 +1522,9 @@
                /*@unused@*/ unsigned int flags)
        /*@*/
   {
  -if (_debug)
  -fprintf(stderr, "*** sql_associate:\n");
  -    return EINVAL;
  +    int rc = EINVAL;
  +SQLDEBUG(dbi, (stderr, "<-- %s(%p,%p,%p,0x%x) rc %d subfile %s\n", 
__FUNCTION__, dbi, dbisecondary, callback, flags, rc, dbi->dbi_subfile));
  +    return rc;
   }
   
   /**
  @@ -1489,9 +1541,9 @@
                /*@unused@*/ unsigned int flags)
        /*@*/
   {
  -if (_debug)
  -fprintf(stderr, "*** sql_associate_foreign:\n");
  -    return EINVAL;
  +    int rc = EINVAL;
  +SQLDEBUG(dbi, (stderr, "<-- %s(%p,%p,%p,0x%x) rc %d subfile %s\n", 
__FUNCTION__, dbi, dbisecondary, callback, flags, rc, dbi->dbi_subfile));
  +    return rc;
   }
   
   /**
  @@ -1509,9 +1561,9 @@
        /*@globals fileSystem @*/
        /*@modifies dbi, *dbcp, fileSystem @*/
   {
  -if (_debug)
  -fprintf(stderr, "*** sql_join:\n");
  -    return EINVAL;
  +    int rc = EINVAL;
  +SQLDEBUG(dbi, (stderr, "<-- %s(%p,%p,%p,0x%x) rc %d\n", __FUNCTION__, dbi, 
curslist, dbcp, flags, rc));
  +    return rc;
   }
   
   /**
  @@ -1529,9 +1581,9 @@
        /*@globals fileSystem @*/
        /*@modifies dbi, *dbcp, fileSystem @*/
   {
  -if (_debug)
  -fprintf(stderr, "*** sql_cdup:\n");
  -    return EINVAL;
  +    int rc = EINVAL;
  +SQLDEBUG(dbi, (stderr, "<-- %s(%p,%p,%p,0x%x) rc %d\n", __FUNCTION__, dbi, 
dbcursor, dbcp, flags, rc));
  +    return rc;
   }
   
   /**
  @@ -1553,9 +1605,9 @@
        /*@globals fileSystem @*/
        /*@modifies *dbcursor, *key, *pkey, *data, fileSystem @*/
   {
  -if (_debug)
  -fprintf(stderr, "*** sql_cpget:\n");
  -    return EINVAL;
  +    int rc = EINVAL;
  +SQLDEBUG(dbi, (stderr, "<-- %s(%p,%p,%p,%p,%p,0x%x) rc %d\n", __FUNCTION__, 
dbi, dbcursor, key, pkey, data, flags, rc));
  +    return rc;
   }
   
   /**
  @@ -1573,9 +1625,9 @@
        /*@globals fileSystem @*/
        /*@modifies *dbcursor, fileSystem @*/
   {
  -if (_debug)
  -fprintf(stderr, "*** sql_ccount:\n");
  -    return EINVAL;
  +    int rc = EINVAL;
  +SQLDEBUG(dbi, (stderr, "<-- %s(%p,%p,%p,0x%x) rc %d\n", __FUNCTION__, dbi, 
dbcursor, countp, flags, rc));
  +    return rc;
   }
   
   /** \ingroup dbi
  @@ -1603,8 +1655,9 @@
   
       scp->cmd = sqlite3_mprintf("SELECT COUNT('key') FROM '%q';", 
dbi->dbi_subfile);
   /*@-nullstate@*/
  -    rc = sqlite3_get_table(sqldb->db, scp->cmd,
  -             &scp->av, &scp->nr, &scp->nc, (char **)&scp->pzErrmsg);
  +    rc = cvtdberr(dbi, "sqlite3_get_table",
  +             sqlite3_get_table(sqldb->db, scp->cmd, &scp->av,
  +                     &scp->nr, &scp->nc, (char **)&scp->pzErrmsg));
   /*@=nullstate@*/
   
       if ( rc == 0 && scp->nr > 0) {
  @@ .
______________________________________________________________________
RPM Package Manager                                    http://rpm5.org
CVS Sources Repository                                rpm-cvs@rpm5.org

Reply via email to