LCOV - code coverage report
Current view: top level - libreoffice/workdir/unxlngi6.pro/UnpackedTarball/python3/Modules/_sqlite - util.c (source / functions) Hit Total Coverage
Test: libreoffice_filtered.info Lines: 0 31 0.0 %
Date: 2012-12-17 Functions: 0 2 0.0 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : /* util.c - various utility functions
       2             :  *
       3             :  * Copyright (C) 2005-2010 Gerhard Häring <gh@ghaering.de>
       4             :  *
       5             :  * This file is part of pysqlite.
       6             :  *
       7             :  * This software is provided 'as-is', without any express or implied
       8             :  * warranty.  In no event will the authors be held liable for any damages
       9             :  * arising from the use of this software.
      10             :  *
      11             :  * Permission is granted to anyone to use this software for any purpose,
      12             :  * including commercial applications, and to alter it and redistribute it
      13             :  * freely, subject to the following restrictions:
      14             :  *
      15             :  * 1. The origin of this software must not be misrepresented; you must not
      16             :  *    claim that you wrote the original software. If you use this software
      17             :  *    in a product, an acknowledgment in the product documentation would be
      18             :  *    appreciated but is not required.
      19             :  * 2. Altered source versions must be plainly marked as such, and must not be
      20             :  *    misrepresented as being the original software.
      21             :  * 3. This notice may not be removed or altered from any source distribution.
      22             :  */
      23             : 
      24             : #include "module.h"
      25             : #include "connection.h"
      26             : 
      27           0 : int pysqlite_step(sqlite3_stmt* statement, pysqlite_Connection* connection)
      28             : {
      29             :     int rc;
      30             : 
      31           0 :     if (statement == NULL) {
      32             :         /* this is a workaround for SQLite 3.5 and later. it now apparently
      33             :          * returns NULL for "no-operation" statements */
      34           0 :         rc = SQLITE_OK;
      35             :     } else {
      36           0 :         Py_BEGIN_ALLOW_THREADS
      37           0 :         rc = sqlite3_step(statement);
      38           0 :         Py_END_ALLOW_THREADS
      39             :     }
      40             : 
      41           0 :     return rc;
      42             : }
      43             : 
      44             : /**
      45             :  * Checks the SQLite error code and sets the appropriate DB-API exception.
      46             :  * Returns the error code (0 means no error occurred).
      47             :  */
      48           0 : int _pysqlite_seterror(sqlite3* db, sqlite3_stmt* st)
      49             : {
      50             :     int errorcode;
      51             : 
      52             :     /* SQLite often doesn't report anything useful, unless you reset the statement first */
      53           0 :     if (st != NULL) {
      54           0 :         (void)sqlite3_reset(st);
      55             :     }
      56             : 
      57           0 :     errorcode = sqlite3_errcode(db);
      58             : 
      59           0 :     switch (errorcode)
      60             :     {
      61             :         case SQLITE_OK:
      62           0 :             PyErr_Clear();
      63           0 :             break;
      64             :         case SQLITE_INTERNAL:
      65             :         case SQLITE_NOTFOUND:
      66           0 :             PyErr_SetString(pysqlite_InternalError, sqlite3_errmsg(db));
      67           0 :             break;
      68             :         case SQLITE_NOMEM:
      69           0 :             (void)PyErr_NoMemory();
      70           0 :             break;
      71             :         case SQLITE_ERROR:
      72             :         case SQLITE_PERM:
      73             :         case SQLITE_ABORT:
      74             :         case SQLITE_BUSY:
      75             :         case SQLITE_LOCKED:
      76             :         case SQLITE_READONLY:
      77             :         case SQLITE_INTERRUPT:
      78             :         case SQLITE_IOERR:
      79             :         case SQLITE_FULL:
      80             :         case SQLITE_CANTOPEN:
      81             :         case SQLITE_PROTOCOL:
      82             :         case SQLITE_EMPTY:
      83             :         case SQLITE_SCHEMA:
      84           0 :             PyErr_SetString(pysqlite_OperationalError, sqlite3_errmsg(db));
      85           0 :             break;
      86             :         case SQLITE_CORRUPT:
      87           0 :             PyErr_SetString(pysqlite_DatabaseError, sqlite3_errmsg(db));
      88           0 :             break;
      89             :         case SQLITE_TOOBIG:
      90           0 :             PyErr_SetString(pysqlite_DataError, sqlite3_errmsg(db));
      91           0 :             break;
      92             :         case SQLITE_CONSTRAINT:
      93             :         case SQLITE_MISMATCH:
      94           0 :             PyErr_SetString(pysqlite_IntegrityError, sqlite3_errmsg(db));
      95           0 :             break;
      96             :         case SQLITE_MISUSE:
      97           0 :             PyErr_SetString(pysqlite_ProgrammingError, sqlite3_errmsg(db));
      98           0 :             break;
      99             :         default:
     100           0 :             PyErr_SetString(pysqlite_DatabaseError, sqlite3_errmsg(db));
     101           0 :             break;
     102             :     }
     103             : 
     104           0 :     return errorcode;
     105             : }
     106             : 

Generated by: LCOV version 1.10