17db96d56Sopenharmony_ci/* connection.h - definitions for the connection type 27db96d56Sopenharmony_ci * 37db96d56Sopenharmony_ci * Copyright (C) 2004-2010 Gerhard Häring <gh@ghaering.de> 47db96d56Sopenharmony_ci * 57db96d56Sopenharmony_ci * This file is part of pysqlite. 67db96d56Sopenharmony_ci * 77db96d56Sopenharmony_ci * This software is provided 'as-is', without any express or implied 87db96d56Sopenharmony_ci * warranty. In no event will the authors be held liable for any damages 97db96d56Sopenharmony_ci * arising from the use of this software. 107db96d56Sopenharmony_ci * 117db96d56Sopenharmony_ci * Permission is granted to anyone to use this software for any purpose, 127db96d56Sopenharmony_ci * including commercial applications, and to alter it and redistribute it 137db96d56Sopenharmony_ci * freely, subject to the following restrictions: 147db96d56Sopenharmony_ci * 157db96d56Sopenharmony_ci * 1. The origin of this software must not be misrepresented; you must not 167db96d56Sopenharmony_ci * claim that you wrote the original software. If you use this software 177db96d56Sopenharmony_ci * in a product, an acknowledgment in the product documentation would be 187db96d56Sopenharmony_ci * appreciated but is not required. 197db96d56Sopenharmony_ci * 2. Altered source versions must be plainly marked as such, and must not be 207db96d56Sopenharmony_ci * misrepresented as being the original software. 217db96d56Sopenharmony_ci * 3. This notice may not be removed or altered from any source distribution. 227db96d56Sopenharmony_ci */ 237db96d56Sopenharmony_ci 247db96d56Sopenharmony_ci#ifndef PYSQLITE_CONNECTION_H 257db96d56Sopenharmony_ci#define PYSQLITE_CONNECTION_H 267db96d56Sopenharmony_ci#define PY_SSIZE_T_CLEAN 277db96d56Sopenharmony_ci#include "Python.h" 287db96d56Sopenharmony_ci#include "pythread.h" 297db96d56Sopenharmony_ci#include "structmember.h" 307db96d56Sopenharmony_ci 317db96d56Sopenharmony_ci#include "module.h" 327db96d56Sopenharmony_ci 337db96d56Sopenharmony_ci#include "sqlite3.h" 347db96d56Sopenharmony_ci 357db96d56Sopenharmony_citypedef struct _callback_context 367db96d56Sopenharmony_ci{ 377db96d56Sopenharmony_ci PyObject *callable; 387db96d56Sopenharmony_ci PyObject *module; 397db96d56Sopenharmony_ci pysqlite_state *state; 407db96d56Sopenharmony_ci} callback_context; 417db96d56Sopenharmony_ci 427db96d56Sopenharmony_citypedef struct 437db96d56Sopenharmony_ci{ 447db96d56Sopenharmony_ci PyObject_HEAD 457db96d56Sopenharmony_ci sqlite3 *db; 467db96d56Sopenharmony_ci pysqlite_state *state; 477db96d56Sopenharmony_ci 487db96d56Sopenharmony_ci /* the type detection mode. Only 0, PARSE_DECLTYPES, PARSE_COLNAMES or a 497db96d56Sopenharmony_ci * bitwise combination thereof makes sense */ 507db96d56Sopenharmony_ci int detect_types; 517db96d56Sopenharmony_ci 527db96d56Sopenharmony_ci /* NULL for autocommit, otherwise a string with the isolation level */ 537db96d56Sopenharmony_ci const char *isolation_level; 547db96d56Sopenharmony_ci 557db96d56Sopenharmony_ci /* 1 if a check should be performed for each API call if the connection is 567db96d56Sopenharmony_ci * used from the same thread it was created in */ 577db96d56Sopenharmony_ci int check_same_thread; 587db96d56Sopenharmony_ci 597db96d56Sopenharmony_ci int initialized; 607db96d56Sopenharmony_ci 617db96d56Sopenharmony_ci /* thread identification of the thread the connection was created in */ 627db96d56Sopenharmony_ci unsigned long thread_ident; 637db96d56Sopenharmony_ci 647db96d56Sopenharmony_ci PyObject *statement_cache; 657db96d56Sopenharmony_ci 667db96d56Sopenharmony_ci /* Lists of weak references to cursors and blobs used within this connection */ 677db96d56Sopenharmony_ci PyObject *cursors; 687db96d56Sopenharmony_ci PyObject *blobs; 697db96d56Sopenharmony_ci 707db96d56Sopenharmony_ci /* Counters for how many cursors were created in the connection. May be 717db96d56Sopenharmony_ci * reset to 0 at certain intervals */ 727db96d56Sopenharmony_ci int created_cursors; 737db96d56Sopenharmony_ci 747db96d56Sopenharmony_ci PyObject* row_factory; 757db96d56Sopenharmony_ci 767db96d56Sopenharmony_ci /* Determines how bytestrings from SQLite are converted to Python objects: 777db96d56Sopenharmony_ci * - PyUnicode_Type: Python Unicode objects are constructed from UTF-8 bytestrings 787db96d56Sopenharmony_ci * - PyBytes_Type: The bytestrings are returned as-is. 797db96d56Sopenharmony_ci * - Any custom callable: Any object returned from the callable called with the bytestring 807db96d56Sopenharmony_ci * as single parameter. 817db96d56Sopenharmony_ci */ 827db96d56Sopenharmony_ci PyObject* text_factory; 837db96d56Sopenharmony_ci 847db96d56Sopenharmony_ci // Remember contexts used by the trace, progress, and authoriser callbacks 857db96d56Sopenharmony_ci callback_context *trace_ctx; 867db96d56Sopenharmony_ci callback_context *progress_ctx; 877db96d56Sopenharmony_ci callback_context *authorizer_ctx; 887db96d56Sopenharmony_ci 897db96d56Sopenharmony_ci /* Exception objects: borrowed refs. */ 907db96d56Sopenharmony_ci PyObject* Warning; 917db96d56Sopenharmony_ci PyObject* Error; 927db96d56Sopenharmony_ci PyObject* InterfaceError; 937db96d56Sopenharmony_ci PyObject* DatabaseError; 947db96d56Sopenharmony_ci PyObject* DataError; 957db96d56Sopenharmony_ci PyObject* OperationalError; 967db96d56Sopenharmony_ci PyObject* IntegrityError; 977db96d56Sopenharmony_ci PyObject* InternalError; 987db96d56Sopenharmony_ci PyObject* ProgrammingError; 997db96d56Sopenharmony_ci PyObject* NotSupportedError; 1007db96d56Sopenharmony_ci} pysqlite_Connection; 1017db96d56Sopenharmony_ci 1027db96d56Sopenharmony_ciint pysqlite_check_thread(pysqlite_Connection* self); 1037db96d56Sopenharmony_ciint pysqlite_check_connection(pysqlite_Connection* con); 1047db96d56Sopenharmony_ci 1057db96d56Sopenharmony_ciint pysqlite_connection_setup_types(PyObject *module); 1067db96d56Sopenharmony_ci 1077db96d56Sopenharmony_ci#endif 108