17db96d56Sopenharmony_ci/*[clinic input]
27db96d56Sopenharmony_cipreserve
37db96d56Sopenharmony_ci[clinic start generated code]*/
47db96d56Sopenharmony_ci
57db96d56Sopenharmony_ciPyDoc_STRVAR(pysqlite_complete_statement__doc__,
67db96d56Sopenharmony_ci"complete_statement($module, /, statement)\n"
77db96d56Sopenharmony_ci"--\n"
87db96d56Sopenharmony_ci"\n"
97db96d56Sopenharmony_ci"Checks if a string contains a complete SQL statement.");
107db96d56Sopenharmony_ci
117db96d56Sopenharmony_ci#define PYSQLITE_COMPLETE_STATEMENT_METHODDEF    \
127db96d56Sopenharmony_ci    {"complete_statement", _PyCFunction_CAST(pysqlite_complete_statement), METH_FASTCALL|METH_KEYWORDS, pysqlite_complete_statement__doc__},
137db96d56Sopenharmony_ci
147db96d56Sopenharmony_cistatic PyObject *
157db96d56Sopenharmony_cipysqlite_complete_statement_impl(PyObject *module, const char *statement);
167db96d56Sopenharmony_ci
177db96d56Sopenharmony_cistatic PyObject *
187db96d56Sopenharmony_cipysqlite_complete_statement(PyObject *module, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
197db96d56Sopenharmony_ci{
207db96d56Sopenharmony_ci    PyObject *return_value = NULL;
217db96d56Sopenharmony_ci    static const char * const _keywords[] = {"statement", NULL};
227db96d56Sopenharmony_ci    static _PyArg_Parser _parser = {NULL, _keywords, "complete_statement", 0};
237db96d56Sopenharmony_ci    PyObject *argsbuf[1];
247db96d56Sopenharmony_ci    const char *statement;
257db96d56Sopenharmony_ci
267db96d56Sopenharmony_ci    args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 1, 1, 0, argsbuf);
277db96d56Sopenharmony_ci    if (!args) {
287db96d56Sopenharmony_ci        goto exit;
297db96d56Sopenharmony_ci    }
307db96d56Sopenharmony_ci    if (!PyUnicode_Check(args[0])) {
317db96d56Sopenharmony_ci        _PyArg_BadArgument("complete_statement", "argument 'statement'", "str", args[0]);
327db96d56Sopenharmony_ci        goto exit;
337db96d56Sopenharmony_ci    }
347db96d56Sopenharmony_ci    Py_ssize_t statement_length;
357db96d56Sopenharmony_ci    statement = PyUnicode_AsUTF8AndSize(args[0], &statement_length);
367db96d56Sopenharmony_ci    if (statement == NULL) {
377db96d56Sopenharmony_ci        goto exit;
387db96d56Sopenharmony_ci    }
397db96d56Sopenharmony_ci    if (strlen(statement) != (size_t)statement_length) {
407db96d56Sopenharmony_ci        PyErr_SetString(PyExc_ValueError, "embedded null character");
417db96d56Sopenharmony_ci        goto exit;
427db96d56Sopenharmony_ci    }
437db96d56Sopenharmony_ci    return_value = pysqlite_complete_statement_impl(module, statement);
447db96d56Sopenharmony_ci
457db96d56Sopenharmony_ciexit:
467db96d56Sopenharmony_ci    return return_value;
477db96d56Sopenharmony_ci}
487db96d56Sopenharmony_ci
497db96d56Sopenharmony_ciPyDoc_STRVAR(pysqlite_enable_shared_cache__doc__,
507db96d56Sopenharmony_ci"enable_shared_cache($module, /, do_enable)\n"
517db96d56Sopenharmony_ci"--\n"
527db96d56Sopenharmony_ci"\n"
537db96d56Sopenharmony_ci"Enable or disable shared cache mode for the calling thread.\n"
547db96d56Sopenharmony_ci"\n"
557db96d56Sopenharmony_ci"This method is deprecated and will be removed in Python 3.12.\n"
567db96d56Sopenharmony_ci"Shared cache is strongly discouraged by the SQLite 3 documentation.\n"
577db96d56Sopenharmony_ci"If shared cache must be used, open the database in URI mode using\n"
587db96d56Sopenharmony_ci"the cache=shared query parameter.");
597db96d56Sopenharmony_ci
607db96d56Sopenharmony_ci#define PYSQLITE_ENABLE_SHARED_CACHE_METHODDEF    \
617db96d56Sopenharmony_ci    {"enable_shared_cache", _PyCFunction_CAST(pysqlite_enable_shared_cache), METH_FASTCALL|METH_KEYWORDS, pysqlite_enable_shared_cache__doc__},
627db96d56Sopenharmony_ci
637db96d56Sopenharmony_cistatic PyObject *
647db96d56Sopenharmony_cipysqlite_enable_shared_cache_impl(PyObject *module, int do_enable);
657db96d56Sopenharmony_ci
667db96d56Sopenharmony_cistatic PyObject *
677db96d56Sopenharmony_cipysqlite_enable_shared_cache(PyObject *module, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
687db96d56Sopenharmony_ci{
697db96d56Sopenharmony_ci    PyObject *return_value = NULL;
707db96d56Sopenharmony_ci    static const char * const _keywords[] = {"do_enable", NULL};
717db96d56Sopenharmony_ci    static _PyArg_Parser _parser = {NULL, _keywords, "enable_shared_cache", 0};
727db96d56Sopenharmony_ci    PyObject *argsbuf[1];
737db96d56Sopenharmony_ci    int do_enable;
747db96d56Sopenharmony_ci
757db96d56Sopenharmony_ci    args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 1, 1, 0, argsbuf);
767db96d56Sopenharmony_ci    if (!args) {
777db96d56Sopenharmony_ci        goto exit;
787db96d56Sopenharmony_ci    }
797db96d56Sopenharmony_ci    do_enable = _PyLong_AsInt(args[0]);
807db96d56Sopenharmony_ci    if (do_enable == -1 && PyErr_Occurred()) {
817db96d56Sopenharmony_ci        goto exit;
827db96d56Sopenharmony_ci    }
837db96d56Sopenharmony_ci    return_value = pysqlite_enable_shared_cache_impl(module, do_enable);
847db96d56Sopenharmony_ci
857db96d56Sopenharmony_ciexit:
867db96d56Sopenharmony_ci    return return_value;
877db96d56Sopenharmony_ci}
887db96d56Sopenharmony_ci
897db96d56Sopenharmony_ciPyDoc_STRVAR(pysqlite_register_adapter__doc__,
907db96d56Sopenharmony_ci"register_adapter($module, type, adapter, /)\n"
917db96d56Sopenharmony_ci"--\n"
927db96d56Sopenharmony_ci"\n"
937db96d56Sopenharmony_ci"Register a function to adapt Python objects to SQLite values.");
947db96d56Sopenharmony_ci
957db96d56Sopenharmony_ci#define PYSQLITE_REGISTER_ADAPTER_METHODDEF    \
967db96d56Sopenharmony_ci    {"register_adapter", _PyCFunction_CAST(pysqlite_register_adapter), METH_FASTCALL, pysqlite_register_adapter__doc__},
977db96d56Sopenharmony_ci
987db96d56Sopenharmony_cistatic PyObject *
997db96d56Sopenharmony_cipysqlite_register_adapter_impl(PyObject *module, PyTypeObject *type,
1007db96d56Sopenharmony_ci                               PyObject *caster);
1017db96d56Sopenharmony_ci
1027db96d56Sopenharmony_cistatic PyObject *
1037db96d56Sopenharmony_cipysqlite_register_adapter(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
1047db96d56Sopenharmony_ci{
1057db96d56Sopenharmony_ci    PyObject *return_value = NULL;
1067db96d56Sopenharmony_ci    PyTypeObject *type;
1077db96d56Sopenharmony_ci    PyObject *caster;
1087db96d56Sopenharmony_ci
1097db96d56Sopenharmony_ci    if (!_PyArg_CheckPositional("register_adapter", nargs, 2, 2)) {
1107db96d56Sopenharmony_ci        goto exit;
1117db96d56Sopenharmony_ci    }
1127db96d56Sopenharmony_ci    type = (PyTypeObject *)args[0];
1137db96d56Sopenharmony_ci    caster = args[1];
1147db96d56Sopenharmony_ci    return_value = pysqlite_register_adapter_impl(module, type, caster);
1157db96d56Sopenharmony_ci
1167db96d56Sopenharmony_ciexit:
1177db96d56Sopenharmony_ci    return return_value;
1187db96d56Sopenharmony_ci}
1197db96d56Sopenharmony_ci
1207db96d56Sopenharmony_ciPyDoc_STRVAR(pysqlite_register_converter__doc__,
1217db96d56Sopenharmony_ci"register_converter($module, typename, converter, /)\n"
1227db96d56Sopenharmony_ci"--\n"
1237db96d56Sopenharmony_ci"\n"
1247db96d56Sopenharmony_ci"Register a function to convert SQLite values to Python objects.");
1257db96d56Sopenharmony_ci
1267db96d56Sopenharmony_ci#define PYSQLITE_REGISTER_CONVERTER_METHODDEF    \
1277db96d56Sopenharmony_ci    {"register_converter", _PyCFunction_CAST(pysqlite_register_converter), METH_FASTCALL, pysqlite_register_converter__doc__},
1287db96d56Sopenharmony_ci
1297db96d56Sopenharmony_cistatic PyObject *
1307db96d56Sopenharmony_cipysqlite_register_converter_impl(PyObject *module, PyObject *orig_name,
1317db96d56Sopenharmony_ci                                 PyObject *callable);
1327db96d56Sopenharmony_ci
1337db96d56Sopenharmony_cistatic PyObject *
1347db96d56Sopenharmony_cipysqlite_register_converter(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
1357db96d56Sopenharmony_ci{
1367db96d56Sopenharmony_ci    PyObject *return_value = NULL;
1377db96d56Sopenharmony_ci    PyObject *orig_name;
1387db96d56Sopenharmony_ci    PyObject *callable;
1397db96d56Sopenharmony_ci
1407db96d56Sopenharmony_ci    if (!_PyArg_CheckPositional("register_converter", nargs, 2, 2)) {
1417db96d56Sopenharmony_ci        goto exit;
1427db96d56Sopenharmony_ci    }
1437db96d56Sopenharmony_ci    if (!PyUnicode_Check(args[0])) {
1447db96d56Sopenharmony_ci        _PyArg_BadArgument("register_converter", "argument 1", "str", args[0]);
1457db96d56Sopenharmony_ci        goto exit;
1467db96d56Sopenharmony_ci    }
1477db96d56Sopenharmony_ci    if (PyUnicode_READY(args[0]) == -1) {
1487db96d56Sopenharmony_ci        goto exit;
1497db96d56Sopenharmony_ci    }
1507db96d56Sopenharmony_ci    orig_name = args[0];
1517db96d56Sopenharmony_ci    callable = args[1];
1527db96d56Sopenharmony_ci    return_value = pysqlite_register_converter_impl(module, orig_name, callable);
1537db96d56Sopenharmony_ci
1547db96d56Sopenharmony_ciexit:
1557db96d56Sopenharmony_ci    return return_value;
1567db96d56Sopenharmony_ci}
1577db96d56Sopenharmony_ci
1587db96d56Sopenharmony_ciPyDoc_STRVAR(pysqlite_enable_callback_trace__doc__,
1597db96d56Sopenharmony_ci"enable_callback_tracebacks($module, enable, /)\n"
1607db96d56Sopenharmony_ci"--\n"
1617db96d56Sopenharmony_ci"\n"
1627db96d56Sopenharmony_ci"Enable or disable callback functions throwing errors to stderr.");
1637db96d56Sopenharmony_ci
1647db96d56Sopenharmony_ci#define PYSQLITE_ENABLE_CALLBACK_TRACE_METHODDEF    \
1657db96d56Sopenharmony_ci    {"enable_callback_tracebacks", (PyCFunction)pysqlite_enable_callback_trace, METH_O, pysqlite_enable_callback_trace__doc__},
1667db96d56Sopenharmony_ci
1677db96d56Sopenharmony_cistatic PyObject *
1687db96d56Sopenharmony_cipysqlite_enable_callback_trace_impl(PyObject *module, int enable);
1697db96d56Sopenharmony_ci
1707db96d56Sopenharmony_cistatic PyObject *
1717db96d56Sopenharmony_cipysqlite_enable_callback_trace(PyObject *module, PyObject *arg)
1727db96d56Sopenharmony_ci{
1737db96d56Sopenharmony_ci    PyObject *return_value = NULL;
1747db96d56Sopenharmony_ci    int enable;
1757db96d56Sopenharmony_ci
1767db96d56Sopenharmony_ci    enable = _PyLong_AsInt(arg);
1777db96d56Sopenharmony_ci    if (enable == -1 && PyErr_Occurred()) {
1787db96d56Sopenharmony_ci        goto exit;
1797db96d56Sopenharmony_ci    }
1807db96d56Sopenharmony_ci    return_value = pysqlite_enable_callback_trace_impl(module, enable);
1817db96d56Sopenharmony_ci
1827db96d56Sopenharmony_ciexit:
1837db96d56Sopenharmony_ci    return return_value;
1847db96d56Sopenharmony_ci}
1857db96d56Sopenharmony_ci
1867db96d56Sopenharmony_ciPyDoc_STRVAR(pysqlite_adapt__doc__,
1877db96d56Sopenharmony_ci"adapt($module, obj, proto=PrepareProtocolType, alt=<unrepresentable>, /)\n"
1887db96d56Sopenharmony_ci"--\n"
1897db96d56Sopenharmony_ci"\n"
1907db96d56Sopenharmony_ci"Adapt given object to given protocol.");
1917db96d56Sopenharmony_ci
1927db96d56Sopenharmony_ci#define PYSQLITE_ADAPT_METHODDEF    \
1937db96d56Sopenharmony_ci    {"adapt", _PyCFunction_CAST(pysqlite_adapt), METH_FASTCALL, pysqlite_adapt__doc__},
1947db96d56Sopenharmony_ci
1957db96d56Sopenharmony_cistatic PyObject *
1967db96d56Sopenharmony_cipysqlite_adapt_impl(PyObject *module, PyObject *obj, PyObject *proto,
1977db96d56Sopenharmony_ci                    PyObject *alt);
1987db96d56Sopenharmony_ci
1997db96d56Sopenharmony_cistatic PyObject *
2007db96d56Sopenharmony_cipysqlite_adapt(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
2017db96d56Sopenharmony_ci{
2027db96d56Sopenharmony_ci    PyObject *return_value = NULL;
2037db96d56Sopenharmony_ci    PyObject *obj;
2047db96d56Sopenharmony_ci    PyObject *proto = (PyObject *)clinic_state()->PrepareProtocolType;
2057db96d56Sopenharmony_ci    PyObject *alt = NULL;
2067db96d56Sopenharmony_ci
2077db96d56Sopenharmony_ci    if (!_PyArg_CheckPositional("adapt", nargs, 1, 3)) {
2087db96d56Sopenharmony_ci        goto exit;
2097db96d56Sopenharmony_ci    }
2107db96d56Sopenharmony_ci    obj = args[0];
2117db96d56Sopenharmony_ci    if (nargs < 2) {
2127db96d56Sopenharmony_ci        goto skip_optional;
2137db96d56Sopenharmony_ci    }
2147db96d56Sopenharmony_ci    proto = args[1];
2157db96d56Sopenharmony_ci    if (nargs < 3) {
2167db96d56Sopenharmony_ci        goto skip_optional;
2177db96d56Sopenharmony_ci    }
2187db96d56Sopenharmony_ci    alt = args[2];
2197db96d56Sopenharmony_ciskip_optional:
2207db96d56Sopenharmony_ci    return_value = pysqlite_adapt_impl(module, obj, proto, alt);
2217db96d56Sopenharmony_ci
2227db96d56Sopenharmony_ciexit:
2237db96d56Sopenharmony_ci    return return_value;
2247db96d56Sopenharmony_ci}
2257db96d56Sopenharmony_ci/*[clinic end generated code: output=ecaf4e0a239c2685 input=a9049054013a1b77]*/
226