cjson
fuzzing
inputs
test1 test10 test11 test2 test3 test3.bu test3.uf test3.uu test4 test5 test6 test7 test8 test9library_config
cJSONConfig.cmake.in cJSONConfigVersion.cmake.in libcjson.pc.in libcjson_utils.pc.in uninstall.cmaketests
inputs
test1 test1.expected test10 test10.expected test11 test11.expected test2 test2.expected test3 test3.expected test4 test4.expected test5 test5.expected test6 test7 test7.expected test8 test8.expected test9 test9.expectedjson-patch-tests
.editorconfig .gitignore .npmignore README.md cjson-utils-tests.json package.json spec_tests.json tests.jsonunity
auto
colour_prompt.rb colour_reporter.rb generate_config.yml generate_module.rb generate_test_runner.rb parse_output.rb stylize_as_junit.rb test_file_filter.rb type_sanitizer.rb unity_test_summary.py unity_test_summary.rb unity_to_junit.pydocs
ThrowTheSwitchCodingStandard.md UnityAssertionsCheatSheetSuitableforPrintingandPossiblyFraming.pdf UnityAssertionsReference.md UnityConfigurationGuide.md UnityGettingStartedGuide.md UnityHelperScriptsGuide.md license.txtexamples
unity_config.hcurl
.github
scripts
cleancmd.pl cmp-config.pl cmp-pkg-config.sh codespell-ignore.words codespell.sh distfiles.sh pyspelling.words pyspelling.yaml randcurl.pl requirements-docs.txt requirements-proselint.txt requirements.txt shellcheck-ci.sh shellcheck.sh spellcheck.curl trimmarkdownheader.pl typos.sh typos.toml verify-examples.pl verify-synopsis.pl yamlcheck.sh yamlcheck.yamlworkflows
appveyor-status.yml checkdocs.yml checksrc.yml checkurls.yml codeql.yml configure-vs-cmake.yml curl-for-win.yml distcheck.yml fuzz.yml http3-linux.yml label.yml linux-old.yml linux.yml macos.yml non-native.yml windows.ymlCMake
CurlSymbolHiding.cmake CurlTests.c FindBrotli.cmake FindCares.cmake FindGSS.cmake FindGnuTLS.cmake FindLDAP.cmake FindLibbacktrace.cmake FindLibgsasl.cmake FindLibidn2.cmake FindLibpsl.cmake FindLibssh.cmake FindLibssh2.cmake FindLibuv.cmake FindMbedTLS.cmake FindNGHTTP2.cmake FindNGHTTP3.cmake FindNGTCP2.cmake FindNettle.cmake FindQuiche.cmake FindRustls.cmake FindWolfSSL.cmake FindZstd.cmake Macros.cmake OtherTests.cmake PickyWarnings.cmake Utilities.cmake cmake_uninstall.in.cmake curl-config.in.cmake unix-cache.cmake win32-cache.cmakedocs
cmdline-opts
.gitignore CMakeLists.txt MANPAGE.md Makefile.am Makefile.inc _AUTHORS.md _BUGS.md _DESCRIPTION.md _ENVIRONMENT.md _EXITCODES.md _FILES.md _GLOBBING.md _NAME.md _OPTIONS.md _OUTPUT.md _PROGRESS.md _PROTOCOLS.md _PROXYPREFIX.md _SEEALSO.md _SYNOPSIS.md _URL.md _VARIABLES.md _VERSION.md _WWW.md abstract-unix-socket.md alt-svc.md anyauth.md append.md aws-sigv4.md basic.md ca-native.md cacert.md capath.md cert-status.md cert-type.md cert.md ciphers.md compressed-ssh.md compressed.md config.md connect-timeout.md connect-to.md continue-at.md cookie-jar.md cookie.md create-dirs.md create-file-mode.md crlf.md crlfile.md curves.md data-ascii.md data-binary.md data-raw.md data-urlencode.md data.md delegation.md digest.md disable-eprt.md disable-epsv.md disable.md disallow-username-in-url.md dns-interface.md dns-ipv4-addr.md dns-ipv6-addr.md dns-servers.md doh-cert-status.md doh-insecure.md doh-url.md dump-ca-embed.md dump-header.md ech.md egd-file.md engine.md etag-compare.md etag-save.md expect100-timeout.md fail-early.md fail-with-body.md fail.md false-start.md follow.md form-escape.md form-string.md form.md ftp-account.md ftp-alternative-to-user.md ftp-create-dirs.md ftp-method.md ftp-pasv.md ftp-port.md ftp-pret.md ftp-skip-pasv-ip.md ftp-ssl-ccc-mode.md ftp-ssl-ccc.md ftp-ssl-control.md get.md globoff.md happy-eyeballs-timeout-ms.md haproxy-clientip.md haproxy-protocol.md head.md header.md help.md hostpubmd5.md hostpubsha256.md hsts.md http0.9.md http1.0.md http1.1.md http2-prior-knowledge.md http2.md http3-only.md http3.md ignore-content-length.md insecure.md interface.md ip-tos.md ipfs-gateway.md ipv4.md ipv6.md json.md junk-session-cookies.md keepalive-cnt.md keepalive-time.md key-type.md key.md knownhosts.md krb.md libcurl.md limit-rate.md list-only.md local-port.md location-trusted.md location.md login-options.md mail-auth.md mail-from.md mail-rcpt-allowfails.md mail-rcpt.md mainpage.idx manual.md max-filesize.md max-redirs.md max-time.md metalink.md mptcp.md negotiate.md netrc-file.md netrc-optional.md netrc.md next.md no-alpn.md no-buffer.md no-clobber.md no-keepalive.md no-npn.md no-progress-meter.md no-sessionid.md noproxy.md ntlm-wb.md ntlm.md oauth2-bearer.md out-null.md output-dir.md output.md parallel-immediate.md parallel-max-host.md parallel-max.md parallel.md pass.md path-as-is.md pinnedpubkey.md post301.md post302.md post303.md preproxy.md progress-bar.md proto-default.md proto-redir.md proto.md proxy-anyauth.md proxy-basic.md proxy-ca-native.md proxy-cacert.md proxy-capath.md proxy-cert-type.md proxy-cert.md proxy-ciphers.md proxy-crlfile.md proxy-digest.md proxy-header.md proxy-http2.md proxy-insecure.md proxy-key-type.md proxy-key.md proxy-negotiate.md proxy-ntlm.md proxy-pass.md proxy-pinnedpubkey.md proxy-service-name.md proxy-ssl-allow-beast.md proxy-ssl-auto-client-cert.md proxy-tls13-ciphers.md proxy-tlsauthtype.md proxy-tlspassword.md proxy-tlsuser.md proxy-tlsv1.md proxy-user.md proxy.md proxy1.0.md proxytunnel.md pubkey.md quote.md random-file.md range.md rate.md raw.md referer.md remote-header-name.md remote-name-all.md remote-name.md remote-time.md remove-on-error.md request-target.md request.md resolve.md retry-all-errors.md retry-connrefused.md retry-delay.md retry-max-time.md retry.md sasl-authzid.md sasl-ir.md service-name.md show-error.md show-headers.md sigalgs.md silent.md skip-existing.md socks4.md socks4a.md socks5-basic.md socks5-gssapi-nec.md socks5-gssapi-service.md socks5-gssapi.md socks5-hostname.md socks5.md speed-limit.md speed-time.md ssl-allow-beast.md ssl-auto-client-cert.md ssl-no-revoke.md ssl-reqd.md ssl-revoke-best-effort.md ssl-sessions.md ssl.md sslv2.md sslv3.md stderr.md styled-output.md suppress-connect-headers.md tcp-fastopen.md tcp-nodelay.md telnet-option.md tftp-blksize.md tftp-no-options.md time-cond.md tls-earlydata.md tls-max.md tls13-ciphers.md tlsauthtype.md tlspassword.md tlsuser.md tlsv1.0.md tlsv1.1.md tlsv1.2.md tlsv1.3.md tlsv1.md tr-encoding.md trace-ascii.md trace-config.md trace-ids.md trace-time.md trace.md unix-socket.md upload-file.md upload-flags.md url-query.md url.md use-ascii.md user-agent.md user.md variable.md verbose.md version.md vlan-priority.md write-out.md xattr.mdexamples
.checksrc .gitignore 10-at-a-time.c CMakeLists.txt Makefile.am Makefile.example Makefile.inc README.md adddocsref.pl address-scope.c altsvc.c anyauthput.c block_ip.c cacertinmem.c certinfo.c chkspeed.c connect-to.c cookie_interface.c crawler.c debug.c default-scheme.c ephiperfifo.c evhiperfifo.c externalsocket.c fileupload.c ftp-delete.c ftp-wildcard.c ftpget.c ftpgetinfo.c ftpgetresp.c ftpsget.c ftpupload.c ftpuploadfrommem.c ftpuploadresume.c getinfo.c getinmemory.c getredirect.c getreferrer.c ghiper.c headerapi.c hiperfifo.c hsts-preload.c htmltidy.c htmltitle.cpp http-options.c http-post.c http2-download.c http2-pushinmemory.c http2-serverpush.c http2-upload.c http3-present.c http3.c httpcustomheader.c httpput-postfields.c httpput.c https.c imap-append.c imap-authzid.c imap-copy.c imap-create.c imap-delete.c imap-examine.c imap-fetch.c imap-list.c imap-lsub.c imap-multi.c imap-noop.c imap-search.c imap-ssl.c imap-store.c imap-tls.c interface.c ipv6.c keepalive.c localport.c log_failed_transfers.c maxconnects.c multi-app.c multi-debugcallback.c multi-double.c multi-event.c multi-formadd.c multi-legacy.c multi-post.c multi-single.c multi-uv.c netrc.c parseurl.c persistent.c pop3-authzid.c pop3-dele.c pop3-list.c pop3-multi.c pop3-noop.c pop3-retr.c pop3-ssl.c pop3-stat.c pop3-tls.c pop3-top.c pop3-uidl.c post-callback.c postinmemory.c postit2-formadd.c postit2.c progressfunc.c protofeats.c range.c resolve.c rtsp-options.c sendrecv.c sepheaders.c sessioninfo.c sftpget.c sftpuploadresume.c shared-connection-cache.c simple.c simplepost.c simplessl.c smooth-gtk-thread.c smtp-authzid.c smtp-expn.c smtp-mail.c smtp-mime.c smtp-multi.c smtp-ssl.c smtp-tls.c smtp-vrfy.c sslbackend.c synctime.c threaded.c unixsocket.c url2file.c urlapi.c usercertinmem.c version-check.pl websocket-cb.c websocket-updown.c websocket.c xmlstream.cinternals
BUFQ.md BUFREF.md CHECKSRC.md CLIENT-READERS.md CLIENT-WRITERS.md CODE_STYLE.md CONNECTION-FILTERS.md CREDENTIALS.md CURLX.md DYNBUF.md HASH.md LLIST.md MID.md MQTT.md MULTI-EV.md NEW-PROTOCOL.md PEERS.md PORTING.md RATELIMITS.md README.md SCORECARD.md SPLAY.md STRPARSE.md THRDPOOL-AND-QUEUE.md TIME-KEEPING.md TLS-SESSIONS.md UINT_SETS.md WEBSOCKET.mdlibcurl
opts
CMakeLists.txt CURLINFO_ACTIVESOCKET.md CURLINFO_APPCONNECT_TIME.md CURLINFO_APPCONNECT_TIME_T.md CURLINFO_CAINFO.md CURLINFO_CAPATH.md CURLINFO_CERTINFO.md CURLINFO_CONDITION_UNMET.md CURLINFO_CONNECT_TIME.md CURLINFO_CONNECT_TIME_T.md CURLINFO_CONN_ID.md CURLINFO_CONTENT_LENGTH_DOWNLOAD.md CURLINFO_CONTENT_LENGTH_DOWNLOAD_T.md CURLINFO_CONTENT_LENGTH_UPLOAD.md CURLINFO_CONTENT_LENGTH_UPLOAD_T.md CURLINFO_CONTENT_TYPE.md CURLINFO_COOKIELIST.md CURLINFO_EARLYDATA_SENT_T.md CURLINFO_EFFECTIVE_METHOD.md CURLINFO_EFFECTIVE_URL.md CURLINFO_FILETIME.md CURLINFO_FILETIME_T.md CURLINFO_FTP_ENTRY_PATH.md CURLINFO_HEADER_SIZE.md CURLINFO_HTTPAUTH_AVAIL.md CURLINFO_HTTPAUTH_USED.md CURLINFO_HTTP_CONNECTCODE.md CURLINFO_HTTP_VERSION.md CURLINFO_LASTSOCKET.md CURLINFO_LOCAL_IP.md CURLINFO_LOCAL_PORT.md CURLINFO_NAMELOOKUP_TIME.md CURLINFO_NAMELOOKUP_TIME_T.md CURLINFO_NUM_CONNECTS.md CURLINFO_OS_ERRNO.md CURLINFO_POSTTRANSFER_TIME_T.md CURLINFO_PRETRANSFER_TIME.md CURLINFO_PRETRANSFER_TIME_T.md CURLINFO_PRIMARY_IP.md CURLINFO_PRIMARY_PORT.md CURLINFO_PRIVATE.md CURLINFO_PROTOCOL.md CURLINFO_PROXYAUTH_AVAIL.md CURLINFO_PROXYAUTH_USED.md CURLINFO_PROXY_ERROR.md CURLINFO_PROXY_SSL_VERIFYRESULT.md CURLINFO_QUEUE_TIME_T.md CURLINFO_REDIRECT_COUNT.md CURLINFO_REDIRECT_TIME.md CURLINFO_REDIRECT_TIME_T.md CURLINFO_REDIRECT_URL.md CURLINFO_REFERER.md CURLINFO_REQUEST_SIZE.md CURLINFO_RESPONSE_CODE.md CURLINFO_RETRY_AFTER.md CURLINFO_RTSP_CLIENT_CSEQ.md CURLINFO_RTSP_CSEQ_RECV.md CURLINFO_RTSP_SERVER_CSEQ.md CURLINFO_RTSP_SESSION_ID.md CURLINFO_SCHEME.md CURLINFO_SIZE_DELIVERED.md CURLINFO_SIZE_DOWNLOAD.md CURLINFO_SIZE_DOWNLOAD_T.md CURLINFO_SIZE_UPLOAD.md CURLINFO_SIZE_UPLOAD_T.md CURLINFO_SPEED_DOWNLOAD.md CURLINFO_SPEED_DOWNLOAD_T.md CURLINFO_SPEED_UPLOAD.md CURLINFO_SPEED_UPLOAD_T.md CURLINFO_SSL_ENGINES.md CURLINFO_SSL_VERIFYRESULT.md CURLINFO_STARTTRANSFER_TIME.md CURLINFO_STARTTRANSFER_TIME_T.md CURLINFO_TLS_SESSION.md CURLINFO_TLS_SSL_PTR.md CURLINFO_TOTAL_TIME.md CURLINFO_TOTAL_TIME_T.md CURLINFO_USED_PROXY.md CURLINFO_XFER_ID.md CURLMINFO_XFERS_ADDED.md CURLMINFO_XFERS_CURRENT.md CURLMINFO_XFERS_DONE.md CURLMINFO_XFERS_PENDING.md CURLMINFO_XFERS_RUNNING.md CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE.md CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE.md CURLMOPT_MAXCONNECTS.md CURLMOPT_MAX_CONCURRENT_STREAMS.md CURLMOPT_MAX_HOST_CONNECTIONS.md CURLMOPT_MAX_PIPELINE_LENGTH.md CURLMOPT_MAX_TOTAL_CONNECTIONS.md CURLMOPT_NETWORK_CHANGED.md CURLMOPT_NOTIFYDATA.md CURLMOPT_NOTIFYFUNCTION.md CURLMOPT_PIPELINING.md CURLMOPT_PIPELINING_SERVER_BL.md CURLMOPT_PIPELINING_SITE_BL.md CURLMOPT_PUSHDATA.md CURLMOPT_PUSHFUNCTION.md CURLMOPT_QUICK_EXIT.md CURLMOPT_RESOLVE_THREADS_MAX.md CURLMOPT_SOCKETDATA.md CURLMOPT_SOCKETFUNCTION.md CURLMOPT_TIMERDATA.md CURLMOPT_TIMERFUNCTION.md CURLOPT_ABSTRACT_UNIX_SOCKET.md CURLOPT_ACCEPTTIMEOUT_MS.md CURLOPT_ACCEPT_ENCODING.md CURLOPT_ADDRESS_SCOPE.md CURLOPT_ALTSVC.md CURLOPT_ALTSVC_CTRL.md CURLOPT_APPEND.md CURLOPT_AUTOREFERER.md CURLOPT_AWS_SIGV4.md CURLOPT_BUFFERSIZE.md CURLOPT_CAINFO.md CURLOPT_CAINFO_BLOB.md CURLOPT_CAPATH.md CURLOPT_CA_CACHE_TIMEOUT.md CURLOPT_CERTINFO.md CURLOPT_CHUNK_BGN_FUNCTION.md CURLOPT_CHUNK_DATA.md CURLOPT_CHUNK_END_FUNCTION.md CURLOPT_CLOSESOCKETDATA.md CURLOPT_CLOSESOCKETFUNCTION.md CURLOPT_CONNECTTIMEOUT.md CURLOPT_CONNECTTIMEOUT_MS.md CURLOPT_CONNECT_ONLY.md CURLOPT_CONNECT_TO.md CURLOPT_CONV_FROM_NETWORK_FUNCTION.md CURLOPT_CONV_FROM_UTF8_FUNCTION.md CURLOPT_CONV_TO_NETWORK_FUNCTION.md CURLOPT_COOKIE.md CURLOPT_COOKIEFILE.md CURLOPT_COOKIEJAR.md CURLOPT_COOKIELIST.md CURLOPT_COOKIESESSION.md CURLOPT_COPYPOSTFIELDS.md CURLOPT_CRLF.md CURLOPT_CRLFILE.md CURLOPT_CURLU.md CURLOPT_CUSTOMREQUEST.md CURLOPT_DEBUGDATA.md CURLOPT_DEBUGFUNCTION.md CURLOPT_DEFAULT_PROTOCOL.md CURLOPT_DIRLISTONLY.md CURLOPT_DISALLOW_USERNAME_IN_URL.md CURLOPT_DNS_CACHE_TIMEOUT.md CURLOPT_DNS_INTERFACE.md CURLOPT_DNS_LOCAL_IP4.md CURLOPT_DNS_LOCAL_IP6.md CURLOPT_DNS_SERVERS.md CURLOPT_DNS_SHUFFLE_ADDRESSES.md CURLOPT_DNS_USE_GLOBAL_CACHE.md CURLOPT_DOH_SSL_VERIFYHOST.md CURLOPT_DOH_SSL_VERIFYPEER.md CURLOPT_DOH_SSL_VERIFYSTATUS.md CURLOPT_DOH_URL.md CURLOPT_ECH.md CURLOPT_EGDSOCKET.md CURLOPT_ERRORBUFFER.md CURLOPT_EXPECT_100_TIMEOUT_MS.md CURLOPT_FAILONERROR.md CURLOPT_FILETIME.md CURLOPT_FNMATCH_DATA.md CURLOPT_FNMATCH_FUNCTION.md CURLOPT_FOLLOWLOCATION.md CURLOPT_FORBID_REUSE.md CURLOPT_FRESH_CONNECT.md CURLOPT_FTPPORT.md CURLOPT_FTPSSLAUTH.md CURLOPT_FTP_ACCOUNT.md CURLOPT_FTP_ALTERNATIVE_TO_USER.md CURLOPT_FTP_CREATE_MISSING_DIRS.md CURLOPT_FTP_FILEMETHOD.md CURLOPT_FTP_SKIP_PASV_IP.md CURLOPT_FTP_SSL_CCC.md CURLOPT_FTP_USE_EPRT.md CURLOPT_FTP_USE_EPSV.md CURLOPT_FTP_USE_PRET.md CURLOPT_GSSAPI_DELEGATION.md CURLOPT_HAPPY_EYEBALLS_TIMEOUT_MS.md CURLOPT_HAPROXYPROTOCOL.md CURLOPT_HAPROXY_CLIENT_IP.md CURLOPT_HEADER.md CURLOPT_HEADERDATA.md CURLOPT_HEADERFUNCTION.md CURLOPT_HEADEROPT.md CURLOPT_HSTS.md CURLOPT_HSTSREADDATA.md CURLOPT_HSTSREADFUNCTION.md CURLOPT_HSTSWRITEDATA.md CURLOPT_HSTSWRITEFUNCTION.md CURLOPT_HSTS_CTRL.md CURLOPT_HTTP09_ALLOWED.md CURLOPT_HTTP200ALIASES.md CURLOPT_HTTPAUTH.md CURLOPT_HTTPGET.md CURLOPT_HTTPHEADER.md CURLOPT_HTTPPOST.md CURLOPT_HTTPPROXYTUNNEL.md CURLOPT_HTTP_CONTENT_DECODING.md CURLOPT_HTTP_TRANSFER_DECODING.md CURLOPT_HTTP_VERSION.md CURLOPT_IGNORE_CONTENT_LENGTH.md CURLOPT_INFILESIZE.md CURLOPT_INFILESIZE_LARGE.md CURLOPT_INTERFACE.md CURLOPT_INTERLEAVEDATA.md CURLOPT_INTERLEAVEFUNCTION.md CURLOPT_IOCTLDATA.md CURLOPT_IOCTLFUNCTION.md CURLOPT_IPRESOLVE.md CURLOPT_ISSUERCERT.md CURLOPT_ISSUERCERT_BLOB.md CURLOPT_KEEP_SENDING_ON_ERROR.md CURLOPT_KEYPASSWD.md CURLOPT_KRBLEVEL.md CURLOPT_LOCALPORT.md CURLOPT_LOCALPORTRANGE.md CURLOPT_LOGIN_OPTIONS.md CURLOPT_LOW_SPEED_LIMIT.md CURLOPT_LOW_SPEED_TIME.md CURLOPT_MAIL_AUTH.md CURLOPT_MAIL_FROM.md CURLOPT_MAIL_RCPT.md CURLOPT_MAIL_RCPT_ALLOWFAILS.md CURLOPT_MAXAGE_CONN.md CURLOPT_MAXCONNECTS.md CURLOPT_MAXFILESIZE.md CURLOPT_MAXFILESIZE_LARGE.md CURLOPT_MAXLIFETIME_CONN.md CURLOPT_MAXREDIRS.md CURLOPT_MAX_RECV_SPEED_LARGE.md CURLOPT_MAX_SEND_SPEED_LARGE.md CURLOPT_MIMEPOST.md CURLOPT_MIME_OPTIONS.md CURLOPT_NETRC.md CURLOPT_NETRC_FILE.md CURLOPT_NEW_DIRECTORY_PERMS.md CURLOPT_NEW_FILE_PERMS.md CURLOPT_NOBODY.md CURLOPT_NOPROGRESS.md CURLOPT_NOPROXY.md CURLOPT_NOSIGNAL.md CURLOPT_OPENSOCKETDATA.md CURLOPT_OPENSOCKETFUNCTION.md CURLOPT_PASSWORD.md CURLOPT_PATH_AS_IS.md CURLOPT_PINNEDPUBLICKEY.md CURLOPT_PIPEWAIT.md CURLOPT_PORT.md CURLOPT_POST.md CURLOPT_POSTFIELDS.md CURLOPT_POSTFIELDSIZE.md CURLOPT_POSTFIELDSIZE_LARGE.md CURLOPT_POSTQUOTE.md CURLOPT_POSTREDIR.md CURLOPT_PREQUOTE.md CURLOPT_PREREQDATA.md CURLOPT_PREREQFUNCTION.md CURLOPT_PRE_PROXY.md CURLOPT_PRIVATE.md CURLOPT_PROGRESSDATA.md CURLOPT_PROGRESSFUNCTION.md CURLOPT_PROTOCOLS.md CURLOPT_PROTOCOLS_STR.md CURLOPT_PROXY.md CURLOPT_PROXYAUTH.md CURLOPT_PROXYHEADER.md CURLOPT_PROXYPASSWORD.md CURLOPT_PROXYPORT.md CURLOPT_PROXYTYPE.md CURLOPT_PROXYUSERNAME.md CURLOPT_PROXYUSERPWD.md CURLOPT_PROXY_CAINFO.md CURLOPT_PROXY_CAINFO_BLOB.md CURLOPT_PROXY_CAPATH.md CURLOPT_PROXY_CRLFILE.md CURLOPT_PROXY_ISSUERCERT.md CURLOPT_PROXY_ISSUERCERT_BLOB.md CURLOPT_PROXY_KEYPASSWD.md CURLOPT_PROXY_PINNEDPUBLICKEY.md CURLOPT_PROXY_SERVICE_NAME.md CURLOPT_PROXY_SSLCERT.md CURLOPT_PROXY_SSLCERTTYPE.md CURLOPT_PROXY_SSLCERT_BLOB.md CURLOPT_PROXY_SSLKEY.md CURLOPT_PROXY_SSLKEYTYPE.md CURLOPT_PROXY_SSLKEY_BLOB.md CURLOPT_PROXY_SSLVERSION.md CURLOPT_PROXY_SSL_CIPHER_LIST.md CURLOPT_PROXY_SSL_OPTIONS.md CURLOPT_PROXY_SSL_VERIFYHOST.md CURLOPT_PROXY_SSL_VERIFYPEER.md CURLOPT_PROXY_TLS13_CIPHERS.md CURLOPT_PROXY_TLSAUTH_PASSWORD.md CURLOPT_PROXY_TLSAUTH_TYPE.md CURLOPT_PROXY_TLSAUTH_USERNAME.md CURLOPT_PROXY_TRANSFER_MODE.md CURLOPT_PUT.md CURLOPT_QUICK_EXIT.md CURLOPT_QUOTE.md CURLOPT_RANDOM_FILE.md CURLOPT_RANGE.md CURLOPT_READDATA.md CURLOPT_READFUNCTION.md CURLOPT_REDIR_PROTOCOLS.md CURLOPT_REDIR_PROTOCOLS_STR.md CURLOPT_REFERER.md CURLOPT_REQUEST_TARGET.md CURLOPT_RESOLVE.md CURLOPT_RESOLVER_START_DATA.md CURLOPT_RESOLVER_START_FUNCTION.md CURLOPT_RESUME_FROM.md CURLOPT_RESUME_FROM_LARGE.md CURLOPT_RTSP_CLIENT_CSEQ.md CURLOPT_RTSP_REQUEST.md CURLOPT_RTSP_SERVER_CSEQ.md CURLOPT_RTSP_SESSION_ID.md CURLOPT_RTSP_STREAM_URI.md CURLOPT_RTSP_TRANSPORT.md CURLOPT_SASL_AUTHZID.md CURLOPT_SASL_IR.md CURLOPT_SEEKDATA.md CURLOPT_SEEKFUNCTION.md CURLOPT_SERVER_RESPONSE_TIMEOUT.md CURLOPT_SERVER_RESPONSE_TIMEOUT_MS.md CURLOPT_SERVICE_NAME.md CURLOPT_SHARE.md CURLOPT_SOCKOPTDATA.md CURLOPT_SOCKOPTFUNCTION.md CURLOPT_SOCKS5_AUTH.md CURLOPT_SOCKS5_GSSAPI_NEC.md CURLOPT_SOCKS5_GSSAPI_SERVICE.md CURLOPT_SSH_AUTH_TYPES.md CURLOPT_SSH_COMPRESSION.md CURLOPT_SSH_HOSTKEYDATA.md CURLOPT_SSH_HOSTKEYFUNCTION.md CURLOPT_SSH_HOST_PUBLIC_KEY_MD5.md CURLOPT_SSH_HOST_PUBLIC_KEY_SHA256.md CURLOPT_SSH_KEYDATA.md CURLOPT_SSH_KEYFUNCTION.md CURLOPT_SSH_KNOWNHOSTS.md CURLOPT_SSH_PRIVATE_KEYFILE.md CURLOPT_SSH_PUBLIC_KEYFILE.md CURLOPT_SSLCERT.md CURLOPT_SSLCERTTYPE.md CURLOPT_SSLCERT_BLOB.md CURLOPT_SSLENGINE.md CURLOPT_SSLENGINE_DEFAULT.md CURLOPT_SSLKEY.md CURLOPT_SSLKEYTYPE.md CURLOPT_SSLKEY_BLOB.md CURLOPT_SSLVERSION.md CURLOPT_SSL_CIPHER_LIST.md CURLOPT_SSL_CTX_DATA.md CURLOPT_SSL_CTX_FUNCTION.md CURLOPT_SSL_EC_CURVES.md CURLOPT_SSL_ENABLE_ALPN.md CURLOPT_SSL_ENABLE_NPN.md CURLOPT_SSL_FALSESTART.md CURLOPT_SSL_OPTIONS.md CURLOPT_SSL_SESSIONID_CACHE.md CURLOPT_SSL_SIGNATURE_ALGORITHMS.md CURLOPT_SSL_VERIFYHOST.md CURLOPT_SSL_VERIFYPEER.md CURLOPT_SSL_VERIFYSTATUS.md CURLOPT_STDERR.md CURLOPT_STREAM_DEPENDS.md CURLOPT_STREAM_DEPENDS_E.md CURLOPT_STREAM_WEIGHT.md CURLOPT_SUPPRESS_CONNECT_HEADERS.md CURLOPT_TCP_FASTOPEN.md CURLOPT_TCP_KEEPALIVE.md CURLOPT_TCP_KEEPCNT.md CURLOPT_TCP_KEEPIDLE.md CURLOPT_TCP_KEEPINTVL.md CURLOPT_TCP_NODELAY.md CURLOPT_TELNETOPTIONS.md CURLOPT_TFTP_BLKSIZE.md CURLOPT_TFTP_NO_OPTIONS.md CURLOPT_TIMECONDITION.md CURLOPT_TIMEOUT.md CURLOPT_TIMEOUT_MS.md CURLOPT_TIMEVALUE.md CURLOPT_TIMEVALUE_LARGE.md CURLOPT_TLS13_CIPHERS.md CURLOPT_TLSAUTH_PASSWORD.md CURLOPT_TLSAUTH_TYPE.md CURLOPT_TLSAUTH_USERNAME.md CURLOPT_TRAILERDATA.md CURLOPT_TRAILERFUNCTION.md CURLOPT_TRANSFERTEXT.md CURLOPT_TRANSFER_ENCODING.md CURLOPT_UNIX_SOCKET_PATH.md CURLOPT_UNRESTRICTED_AUTH.md CURLOPT_UPKEEP_INTERVAL_MS.md CURLOPT_UPLOAD.md CURLOPT_UPLOAD_BUFFERSIZE.md CURLOPT_UPLOAD_FLAGS.md CURLOPT_URL.md CURLOPT_USERAGENT.md CURLOPT_USERNAME.md CURLOPT_USERPWD.md CURLOPT_USE_SSL.md CURLOPT_VERBOSE.md CURLOPT_WILDCARDMATCH.md CURLOPT_WRITEDATA.md CURLOPT_WRITEFUNCTION.md CURLOPT_WS_OPTIONS.md CURLOPT_XFERINFODATA.md CURLOPT_XFERINFOFUNCTION.md CURLOPT_XOAUTH2_BEARER.md CURLSHOPT_LOCKFUNC.md CURLSHOPT_SHARE.md CURLSHOPT_UNLOCKFUNC.md CURLSHOPT_UNSHARE.md CURLSHOPT_USERDATA.md Makefile.am Makefile.incinclude
curl
Makefile.am curl.h curlver.h easy.h header.h mprintf.h multi.h options.h stdcheaders.h system.h typecheck-gcc.h urlapi.h websockets.hlib
curlx
base64.c base64.h basename.c basename.h dynbuf.c dynbuf.h fopen.c fopen.h inet_ntop.c inet_ntop.h inet_pton.c inet_pton.h multibyte.c multibyte.h nonblock.c nonblock.h snprintf.c snprintf.h strcopy.c strcopy.h strdup.c strdup.h strerr.c strerr.h strparse.c strparse.h timediff.c timediff.h timeval.c timeval.h version_win32.c version_win32.h wait.c wait.h warnless.c warnless.h winapi.c winapi.hvauth
cleartext.c cram.c digest.c digest.h digest_sspi.c gsasl.c krb5_gssapi.c krb5_sspi.c ntlm.c ntlm_sspi.c oauth2.c spnego_gssapi.c spnego_sspi.c vauth.c vauth.hvquic
curl_ngtcp2.c curl_ngtcp2.h curl_quiche.c curl_quiche.h vquic-tls.c vquic-tls.h vquic.c vquic.h vquic_int.hvtls
apple.c apple.h cipher_suite.c cipher_suite.h gtls.c gtls.h hostcheck.c hostcheck.h keylog.c keylog.h mbedtls.c mbedtls.h openssl.c openssl.h rustls.c rustls.h schannel.c schannel.h schannel_int.h schannel_verify.c vtls.c vtls.h vtls_int.h vtls_scache.c vtls_scache.h vtls_spack.c vtls_spack.h wolfssl.c wolfssl.h x509asn1.c x509asn1.hm4
.gitignore curl-amissl.m4 curl-apple-sectrust.m4 curl-compilers.m4 curl-confopts.m4 curl-functions.m4 curl-gnutls.m4 curl-mbedtls.m4 curl-openssl.m4 curl-override.m4 curl-reentrant.m4 curl-rustls.m4 curl-schannel.m4 curl-sysconfig.m4 curl-wolfssl.m4 xc-am-iface.m4 xc-cc-check.m4 xc-lt-iface.m4 xc-val-flgs.m4 zz40-xc-ovr.m4 zz50-xc-ovr.m4projects
OS400
.checksrc README.OS400 ccsidcurl.c ccsidcurl.h config400.default curl.cmd curl.inc.in curlcl.c curlmain.c initscript.sh make-docs.sh make-include.sh make-lib.sh make-src.sh make-tests.sh makefile.sh os400sys.c os400sys.hWindows
tmpl
.gitattributes README.txt curl-all.sln curl.sln curl.vcxproj curl.vcxproj.filters libcurl.sln libcurl.vcxproj libcurl.vcxproj.filtersvms
Makefile.am backup_gnv_curl_src.com build_curl-config_script.com build_gnv_curl.com build_gnv_curl_pcsi_desc.com build_gnv_curl_pcsi_text.com build_gnv_curl_release_notes.com build_libcurl_pc.com build_vms.com clean_gnv_curl.com compare_curl_source.com config_h.com curl_crtl_init.c curl_gnv_build_steps.txt curl_release_note_start.txt curl_startup.com curlmsg.h curlmsg.msg curlmsg.sdl curlmsg_vms.h generate_config_vms_h_curl.com generate_vax_transfer.com gnv_conftest.c_first gnv_curl_configure.sh gnv_libcurl_symbols.opt gnv_link_curl.com macro32_exactcase.patch make_gnv_curl_install.sh make_pcsi_curl_kit_name.com pcsi_gnv_curl_file_list.txt pcsi_product_gnv_curl.com readme report_openssl_version.c setup_gnv_curl_build.com stage_curl_install.com vms_eco_level.hscripts
.checksrc CMakeLists.txt Makefile.am badwords badwords-all badwords.txt cd2cd cd2nroff cdall checksrc-all.pl checksrc.pl cmakelint.sh completion.pl contributors.sh contrithanks.sh coverage.sh delta dmaketgz extract-unit-protos firefox-db2pem.sh installcheck.sh maketgz managen mdlinkcheck mk-ca-bundle.pl mk-unity.pl nroff2cd perlcheck.sh pythonlint.sh randdisable release-notes.pl release-tools.sh schemetable.c singleuse.pl spacecheck.pl top-complexity top-length verify-release wcurlsrc
.checksrc .gitignore CMakeLists.txt Makefile.am Makefile.inc config2setopts.c config2setopts.h curl.rc curlinfo.c mk-file-embed.pl mkhelp.pl slist_wc.c slist_wc.h terminal.c terminal.h tool_cb_dbg.c tool_cb_dbg.h tool_cb_hdr.c tool_cb_hdr.h tool_cb_prg.c tool_cb_prg.h tool_cb_rea.c tool_cb_rea.h tool_cb_see.c tool_cb_see.h tool_cb_soc.c tool_cb_soc.h tool_cb_wrt.c tool_cb_wrt.h tool_cfgable.c tool_cfgable.h tool_dirhie.c tool_dirhie.h tool_doswin.c tool_doswin.h tool_easysrc.c tool_easysrc.h tool_filetime.c tool_filetime.h tool_findfile.c tool_findfile.h tool_formparse.c tool_formparse.h tool_getparam.c tool_getparam.h tool_getpass.c tool_getpass.h tool_help.c tool_help.h tool_helpers.c tool_helpers.h tool_hugehelp.h tool_ipfs.c tool_ipfs.h tool_libinfo.c tool_libinfo.h tool_listhelp.c tool_main.c tool_main.h tool_msgs.c tool_msgs.h tool_operate.c tool_operate.h tool_operhlp.c tool_operhlp.h tool_paramhlp.c tool_paramhlp.h tool_parsecfg.c tool_parsecfg.h tool_progress.c tool_progress.h tool_sdecls.h tool_setopt.c tool_setopt.h tool_setup.h tool_ssls.c tool_ssls.h tool_stderr.c tool_stderr.h tool_urlglob.c tool_urlglob.h tool_util.c tool_util.h tool_version.h tool_vms.c tool_vms.h tool_writeout.c tool_writeout.h tool_writeout_json.c tool_writeout_json.h tool_xattr.c tool_xattr.h var.c var.htests
certs
.gitignore CMakeLists.txt Makefile.am Makefile.inc genserv.pl srp-verifier-conf srp-verifier-db test-ca.cnf test-ca.prm test-client-cert.prm test-client-eku-only.prm test-localhost-san-first.prm test-localhost-san-last.prm test-localhost.nn.prm test-localhost.prm test-localhost0h.prmdata
.gitignore DISABLED Makefile.am data-xml1 data1400.c data1401.c data1402.c data1403.c data1404.c data1405.c data1406.c data1407.c data1420.c data1461.txt data1463.txt data1465.c data1481.c data1705-1.md data1705-2.md data1705-3.md data1705-4.md data1705-stdout.1 data1706-1.md data1706-2.md data1706-3.md data1706-4.md data1706-stdout.txt data320.html test1 test10 test100 test1000 test1001 test1002 test1003 test1004 test1005 test1006 test1007 test1008 test1009 test101 test1010 test1011 test1012 test1013 test1014 test1015 test1016 test1017 test1018 test1019 test102 test1020 test1021 test1022 test1023 test1024 test1025 test1026 test1027 test1028 test1029 test103 test1030 test1031 test1032 test1033 test1034 test1035 test1036 test1037 test1038 test1039 test104 test1040 test1041 test1042 test1043 test1044 test1045 test1046 test1047 test1048 test1049 test105 test1050 test1051 test1052 test1053 test1054 test1055 test1056 test1057 test1058 test1059 test106 test1060 test1061 test1062 test1063 test1064 test1065 test1066 test1067 test1068 test1069 test107 test1070 test1071 test1072 test1073 test1074 test1075 test1076 test1077 test1078 test1079 test108 test1080 test1081 test1082 test1083 test1084 test1085 test1086 test1087 test1088 test1089 test109 test1090 test1091 test1092 test1093 test1094 test1095 test1096 test1097 test1098 test1099 test11 test110 test1100 test1101 test1102 test1103 test1104 test1105 test1106 test1107 test1108 test1109 test111 test1110 test1111 test1112 test1113 test1114 test1115 test1116 test1117 test1118 test1119 test112 test1120 test1121 test1122 test1123 test1124 test1125 test1126 test1127 test1128 test1129 test113 test1130 test1131 test1132 test1133 test1134 test1135 test1136 test1137 test1138 test1139 test114 test1140 test1141 test1142 test1143 test1144 test1145 test1146 test1147 test1148 test1149 test115 test1150 test1151 test1152 test1153 test1154 test1155 test1156 test1157 test1158 test1159 test116 test1160 test1161 test1162 test1163 test1164 test1165 test1166 test1167 test1168 test1169 test117 test1170 test1171 test1172 test1173 test1174 test1175 test1176 test1177 test1178 test1179 test118 test1180 test1181 test1182 test1183 test1184 test1185 test1186 test1187 test1188 test1189 test119 test1190 test1191 test1192 test1193 test1194 test1195 test1196 test1197 test1198 test1199 test12 test120 test1200 test1201 test1202 test1203 test1204 test1205 test1206 test1207 test1208 test1209 test121 test1210 test1211 test1212 test1213 test1214 test1215 test1216 test1217 test1218 test1219 test122 test1220 test1221 test1222 test1223 test1224 test1225 test1226 test1227 test1228 test1229 test123 test1230 test1231 test1232 test1233 test1234 test1235 test1236 test1237 test1238 test1239 test124 test1240 test1241 test1242 test1243 test1244 test1245 test1246 test1247 test1248 test1249 test125 test1250 test1251 test1252 test1253 test1254 test1255 test1256 test1257 test1258 test1259 test126 test1260 test1261 test1262 test1263 test1264 test1265 test1266 test1267 test1268 test1269 test127 test1270 test1271 test1272 test1273 test1274 test1275 test1276 test1277 test1278 test1279 test128 test1280 test1281 test1282 test1283 test1284 test1285 test1286 test1287 test1288 test1289 test129 test1290 test1291 test1292 test1293 test1294 test1295 test1296 test1297 test1298 test1299 test13 test130 test1300 test1301 test1302 test1303 test1304 test1305 test1306 test1307 test1308 test1309 test131 test1310 test1311 test1312 test1313 test1314 test1315 test1316 test1317 test1318 test1319 test132 test1320 test1321 test1322 test1323 test1324 test1325 test1326 test1327 test1328 test1329 test133 test1330 test1331 test1332 test1333 test1334 test1335 test1336 test1337 test1338 test1339 test134 test1340 test1341 test1342 test1343 test1344 test1345 test1346 test1347 test1348 test1349 test135 test1350 test1351 test1352 test1353 test1354 test1355 test1356 test1357 test1358 test1359 test136 test1360 test1361 test1362 test1363 test1364 test1365 test1366 test1367 test1368 test1369 test137 test1370 test1371 test1372 test1373 test1374 test1375 test1376 test1377 test1378 test1379 test138 test1380 test1381 test1382 test1383 test1384 test1385 test1386 test1387 test1388 test1389 test139 test1390 test1391 test1392 test1393 test1394 test1395 test1396 test1397 test1398 test1399 test14 test140 test1400 test1401 test1402 test1403 test1404 test1405 test1406 test1407 test1408 test1409 test141 test1410 test1411 test1412 test1413 test1414 test1415 test1416 test1417 test1418 test1419 test142 test1420 test1421 test1422 test1423 test1424 test1425 test1426 test1427 test1428 test1429 test143 test1430 test1431 test1432 test1433 test1434 test1435 test1436 test1437 test1438 test1439 test144 test1440 test1441 test1442 test1443 test1444 test1445 test1446 test1447 test1448 test1449 test145 test1450 test1451 test1452 test1453 test1454 test1455 test1456 test1457 test1458 test1459 test146 test1460 test1461 test1462 test1463 test1464 test1465 test1466 test1467 test1468 test1469 test147 test1470 test1471 test1472 test1473 test1474 test1475 test1476 test1477 test1478 test1479 test148 test1480 test1481 test1482 test1483 test1484 test1485 test1486 test1487 test1488 test1489 test149 test1490 test1491 test1492 test1493 test1494 test1495 test1496 test1497 test1498 test1499 test15 test150 test1500 test1501 test1502 test1503 test1504 test1505 test1506 test1507 test1508 test1509 test151 test1510 test1511 test1512 test1513 test1514 test1515 test1516 test1517 test1518 test1519 test152 test1520 test1521 test1522 test1523 test1524 test1525 test1526 test1527 test1528 test1529 test153 test1530 test1531 test1532 test1533 test1534 test1535 test1536 test1537 test1538 test1539 test154 test1540 test1541 test1542 test1543 test1544 test1545 test1546 test1547 test1548 test1549 test155 test1550 test1551 test1552 test1553 test1554 test1555 test1556 test1557 test1558 test1559 test156 test1560 test1561 test1562 test1563 test1564 test1565 test1566 test1567 test1568 test1569 test157 test1570 test1571 test1572 test1573 test1574 test1575 test1576 test1577 test1578 test1579 test158 test1580 test1581 test1582 test1583 test1584 test1585 test1586 test1587 test1588 test1589 test159 test1590 test1591 test1592 test1593 test1594 test1595 test1596 test1597 test1598 test1599 test16 test160 test1600 test1601 test1602 test1603 test1604 test1605 test1606 test1607 test1608 test1609 test161 test1610 test1611 test1612 test1613 test1614 test1615 test1616 test1617 test1618 test1619 test162 test1620 test1621 test1622 test1623 test1624 test1625 test1626 test1627 test1628 test1629 test163 test1630 test1631 test1632 test1633 test1634 test1635 test1636 test1637 test1638 test1639 test164 test1640 test1641 test1642 test1643 test1644 test1645 test165 test1650 test1651 test1652 test1653 test1654 test1655 test1656 test1657 test1658 test1659 test166 test1660 test1661 test1662 test1663 test1664 test1665 test1666 test1667 test1668 test1669 test167 test1670 test1671 test1672 test1673 test1674 test1675 test1676 test168 test1680 test1681 test1682 test1683 test1684 test1685 test169 test17 test170 test1700 test1701 test1702 test1703 test1704 test1705 test1706 test1707 test1708 test1709 test171 test1710 test1711 test1712 test1713 test1714 test1715 test172 test1720 test1721 test173 test174 test175 test176 test177 test178 test179 test18 test180 test1800 test1801 test1802 test181 test182 test183 test184 test1847 test1848 test1849 test185 test1850 test1851 test186 test187 test188 test189 test19 test190 test1900 test1901 test1902 test1903 test1904 test1905 test1906 test1907 test1908 test1909 test191 test1910 test1911 test1912 test1913 test1914 test1915 test1916 test1917 test1918 test1919 test192 test1920 test1921 test193 test1933 test1934 test1935 test1936 test1937 test1938 test1939 test194 test1940 test1941 test1942 test1943 test1944 test1945 test1946 test1947 test1948 test195 test1955 test1956 test1957 test1958 test1959 test196 test1960 test1964 test1965 test1966 test197 test1970 test1971 test1972 test1973 test1974 test1975 test1976 test1977 test1978 test1979 test198 test1980 test1981 test1982 test1983 test1984 test199 test2 test20 test200 test2000 test2001 test2002 test2003 test2004 test2005 test2006 test2007 test2008 test2009 test201 test2010 test2011 test2012 test2013 test2014 test202 test2023 test2024 test2025 test2026 test2027 test2028 test2029 test203 test2030 test2031 test2032 test2033 test2034 test2035 test2037 test2038 test2039 test204 test2040 test2041 test2042 test2043 test2044 test2045 test2046 test2047 test2048 test2049 test205 test2050 test2051 test2052 test2053 test2054 test2055 test2056 test2057 test2058 test2059 test206 test2060 test2061 test2062 test2063 test2064 test2065 test2066 test2067 test2068 test2069 test207 test2070 test2071 test2072 test2073 test2074 test2075 test2076 test2077 test2078 test2079 test208 test2080 test2081 test2082 test2083 test2084 test2085 test2086 test2087 test2088 test2089 test209 test2090 test2091 test2092 test21 test210 test2100 test2101 test2102 test2103 test2104 test211 test212 test213 test214 test215 test216 test217 test218 test219 test22 test220 test2200 test2201 test2202 test2203 test2204 test2205 test2206 test2207 test221 test222 test223 test224 test225 test226 test227 test228 test229 test23 test230 test2300 test2301 test2302 test2303 test2304 test2306 test2307 test2308 test2309 test231 test232 test233 test234 test235 test236 test237 test238 test239 test24 test240 test2400 test2401 test2402 test2403 test2404 test2405 test2406 test2407 test2408 test2409 test241 test2410 test2411 test242 test243 test244 test245 test246 test247 test248 test249 test25 test250 test2500 test2501 test2502 test2503 test2504 test2505 test2506 test251 test252 test253 test254 test255 test256 test257 test258 test259 test26 test260 test2600 test2601 test2602 test2603 test2604 test2605 test261 test262 test263 test264 test265 test266 test267 test268 test269 test27 test270 test2700 test2701 test2702 test2703 test2704 test2705 test2706 test2707 test2708 test2709 test271 test2710 test2711 test2712 test2713 test2714 test2715 test2716 test2717 test2718 test2719 test272 test2720 test2721 test2722 test2723 test273 test274 test275 test276 test277 test278 test279 test28 test280 test281 test282 test283 test284 test285 test286 test287 test288 test289 test29 test290 test291 test292 test293 test294 test295 test296 test297 test298 test299 test3 test30 test300 test3000 test3001 test3002 test3003 test3004 test3005 test3006 test3007 test3008 test3009 test301 test3010 test3011 test3012 test3013 test3014 test3015 test3016 test3017 test3018 test3019 test302 test3020 test3021 test3022 test3023 test3024 test3025 test3026 test3027 test3028 test3029 test303 test3030 test3031 test3032 test3033 test3034 test3035 test3036 test304 test305 test306 test307 test308 test309 test31 test310 test3100 test3101 test3102 test3103 test3104 test3105 test3106 test311 test312 test313 test314 test315 test316 test317 test318 test319 test32 test320 test3200 test3201 test3202 test3203 test3204 test3205 test3206 test3207 test3208 test3209 test321 test3210 test3211 test3212 test3213 test3214 test3215 test3216 test3217 test3218 test3219 test322 test3220 test323 test324 test325 test326 test327 test328 test329 test33 test330 test3300 test3301 test3302 test331 test332 test333 test334 test335 test336 test337 test338 test339 test34 test340 test341 test342 test343 test344 test345 test346 test347 test348 test349 test35 test350 test351 test352 test353 test354 test355 test356 test357 test358 test359 test36 test360 test361 test362 test363 test364 test365 test366 test367 test368 test369 test37 test370 test371 test372 test373 test374 test375 test376 test378 test379 test38 test380 test381 test383 test384 test385 test386 test387 test388 test389 test39 test390 test391 test392 test393 test394 test395 test396 test397 test398 test399 test4 test40 test400 test4000 test4001 test401 test402 test403 test404 test405 test406 test407 test408 test409 test41 test410 test411 test412 test413 test414 test415 test416 test417 test418 test419 test42 test420 test421 test422 test423 test424 test425 test426 test427 test428 test429 test43 test430 test431 test432 test433 test434 test435 test436 test437 test438 test439 test44 test440 test441 test442 test443 test444 test445 test446 test447 test448 test449 test45 test450 test451 test452 test453 test454 test455 test456 test457 test458 test459 test46 test460 test461 test462 test463 test467 test468 test469 test47 test470 test471 test472 test473 test474 test475 test476 test477 test478 test479 test48 test480 test481 test482 test483 test484 test485 test486 test487 test488 test489 test49 test490 test491 test492 test493 test494 test495 test496 test497 test498 test499 test5 test50 test500 test501 test502 test503 test504 test505 test506 test507 test508 test509 test51 test510 test511 test512 test513 test514 test515 test516 test517 test518 test519 test52 test520 test521 test522 test523 test524 test525 test526 test527 test528 test529 test53 test530 test531 test532 test533 test534 test535 test536 test537 test538 test539 test54 test540 test541 test542 test543 test544 test545 test546 test547 test548 test549 test55 test550 test551 test552 test553 test554 test555 test556 test557 test558 test559 test56 test560 test561 test562 test563 test564 test565 test566 test567 test568 test569 test57 test570 test571 test572 test573 test574 test575 test576 test577 test578 test579 test58 test580 test581 test582 test583 test584 test585 test586 test587 test588 test589 test59 test590 test591 test592 test593 test594 test595 test596 test597 test598 test599 test6 test60 test600 test601 test602 test603 test604 test605 test606 test607 test608 test609 test61 test610 test611 test612 test613 test614 test615 test616 test617 test618 test619 test62 test620 test621 test622 test623 test624 test625 test626 test627 test628 test629 test63 test630 test631 test632 test633 test634 test635 test636 test637 test638 test639 test64 test640 test641 test642 test643 test644 test645 test646 test647 test648 test649 test65 test650 test651 test652 test653 test654 test655 test656 test658 test659 test66 test660 test661 test662 test663 test664 test665 test666 test667 test668 test669 test67 test670 test671 test672 test673 test674 test675 test676 test677 test678 test679 test68 test680 test681 test682 test683 test684 test685 test686 test687 test688 test689 test69 test690 test691 test692 test693 test694 test695 test696 test697 test698 test699 test7 test70 test700 test701 test702 test703 test704 test705 test706 test707 test708 test709 test71 test710 test711 test712 test713 test714 test715 test716 test717 test718 test719 test72 test720 test721 test722 test723 test724 test725 test726 test727 test728 test729 test73 test730 test731 test732 test733 test734 test735 test736 test737 test738 test739 test74 test740 test741 test742 test743 test744 test745 test746 test747 test748 test749 test75 test750 test751 test752 test753 test754 test755 test756 test757 test758 test759 test76 test760 test761 test762 test763 test764 test765 test766 test767 test768 test769 test77 test770 test771 test772 test773 test774 test775 test776 test777 test778 test779 test78 test780 test781 test782 test783 test784 test785 test786 test787 test788 test789 test79 test790 test791 test792 test793 test794 test795 test796 test797 test798 test799 test8 test80 test800 test801 test802 test803 test804 test805 test806 test807 test808 test809 test81 test810 test811 test812 test813 test814 test815 test816 test817 test818 test819 test82 test820 test821 test822 test823 test824 test825 test826 test827 test828 test829 test83 test830 test831 test832 test833 test834 test835 test836 test837 test838 test839 test84 test840 test841 test842 test843 test844 test845 test846 test847 test848 test849 test85 test850 test851 test852 test853 test854 test855 test856 test857 test858 test859 test86 test860 test861 test862 test863 test864 test865 test866 test867 test868 test869 test87 test870 test871 test872 test873 test874 test875 test876 test877 test878 test879 test88 test880 test881 test882 test883 test884 test885 test886 test887 test888 test889 test89 test890 test891 test892 test893 test894 test895 test896 test897 test898 test899 test9 test90 test900 test901 test902 test903 test904 test905 test906 test907 test908 test909 test91 test910 test911 test912 test913 test914 test915 test916 test917 test918 test919 test92 test920 test921 test922 test923 test924 test925 test926 test927 test928 test929 test93 test930 test931 test932 test933 test934 test935 test936 test937 test938 test939 test94 test940 test941 test942 test943 test944 test945 test946 test947 test948 test949 test95 test950 test951 test952 test953 test954 test955 test956 test957 test958 test959 test96 test960 test961 test962 test963 test964 test965 test966 test967 test968 test969 test97 test970 test971 test972 test973 test974 test975 test976 test977 test978 test979 test98 test980 test981 test982 test983 test984 test985 test986 test987 test988 test989 test99 test990 test991 test992 test993 test994 test995 test996 test997 test998 test999http
testenv
__init__.py caddy.py certs.py client.py curl.py dante.py dnsd.py env.py httpd.py nghttpx.py ports.py sshd.py vsftpd.py ws_echo_server.pylibtest
.gitignore CMakeLists.txt Makefile.am Makefile.inc cli_ftp_upload.c cli_h2_pausing.c cli_h2_serverpush.c cli_h2_upgrade_extreme.c cli_hx_download.c cli_hx_upload.c cli_tls_session_reuse.c cli_upload_pausing.c cli_ws_data.c cli_ws_pingpong.c first.c first.h lib1156.c lib1301.c lib1308.c lib1485.c lib1500.c lib1501.c lib1502.c lib1506.c lib1507.c lib1508.c lib1509.c lib1510.c lib1511.c lib1512.c lib1513.c lib1514.c lib1515.c lib1517.c lib1518.c lib1520.c lib1522.c lib1523.c lib1525.c lib1526.c lib1527.c lib1528.c lib1529.c lib1530.c lib1531.c lib1532.c lib1533.c lib1534.c lib1535.c lib1536.c lib1537.c lib1538.c lib1540.c lib1541.c lib1542.c lib1545.c lib1549.c lib1550.c lib1551.c lib1552.c lib1553.c lib1554.c lib1555.c lib1556.c lib1557.c lib1558.c lib1559.c lib1560.c lib1564.c lib1565.c lib1567.c lib1568.c lib1569.c lib1571.c lib1576.c lib1582.c lib1587.c lib1588.c lib1589.c lib1591.c lib1592.c lib1593.c lib1594.c lib1597.c lib1598.c lib1599.c lib1662.c lib1900.c lib1901.c lib1902.c lib1903.c lib1905.c lib1906.c lib1907.c lib1908.c lib1910.c lib1911.c lib1912.c lib1913.c lib1915.c lib1916.c lib1918.c lib1919.c lib1920.c lib1921.c lib1933.c lib1934.c lib1935.c lib1936.c lib1937.c lib1938.c lib1939.c lib1940.c lib1945.c lib1947.c lib1948.c lib1955.c lib1956.c lib1957.c lib1958.c lib1959.c lib1960.c lib1964.c lib1965.c lib1970.c lib1971.c lib1972.c lib1973.c lib1974.c lib1975.c lib1977.c lib1978.c lib2023.c lib2032.c lib2082.c lib2301.c lib2302.c lib2304.c lib2306.c lib2308.c lib2309.c lib2402.c lib2404.c lib2405.c lib2502.c lib2504.c lib2505.c lib2506.c lib2700.c lib3010.c lib3025.c lib3026.c lib3027.c lib3033.c lib3034.c lib3100.c lib3101.c lib3102.c lib3103.c lib3104.c lib3105.c lib3207.c lib3208.c lib500.c lib501.c lib502.c lib503.c lib504.c lib505.c lib506.c lib507.c lib508.c lib509.c lib510.c lib511.c lib512.c lib513.c lib514.c lib515.c lib516.c lib517.c lib518.c lib519.c lib520.c lib521.c lib523.c lib524.c lib525.c lib526.c lib530.c lib533.c lib536.c lib537.c lib539.c lib540.c lib541.c lib542.c lib543.c lib544.c lib547.c lib549.c lib552.c lib553.c lib554.c lib555.c lib556.c lib557.c lib558.c lib559.c lib560.c lib562.c lib564.c lib566.c lib567.c lib568.c lib569.c lib570.c lib571.c lib572.c lib573.c lib574.c lib575.c lib576.c lib578.c lib579.c lib582.c lib583.c lib586.c lib589.c lib590.c lib591.c lib597.c lib598.c lib599.c lib643.c lib650.c lib651.c lib652.c lib653.c lib654.c lib655.c lib658.c lib659.c lib661.c lib666.c lib667.c lib668.c lib670.c lib674.c lib676.c lib677.c lib678.c lib694.c lib695.c lib751.c lib753.c lib757.c lib758.c lib766.c memptr.c mk-lib1521.pl test1013.pl test1022.pl test307.pl test610.pl test613.pl testtrace.c testtrace.h testutil.c testutil.h unitcheck.hserver
.checksrc .gitignore CMakeLists.txt Makefile.am Makefile.inc dnsd.c first.c first.h getpart.c mqttd.c resolve.c rtspd.c sockfilt.c socksd.c sws.c tftpd.c util.ctunit
.gitignore CMakeLists.txt Makefile.am Makefile.inc README.md tool1394.c tool1604.c tool1621.c tool1622.c tool1623.c tool1720.cunit
.gitignore CMakeLists.txt Makefile.am Makefile.inc README.md unit1300.c unit1302.c unit1303.c unit1304.c unit1305.c unit1307.c unit1309.c unit1323.c unit1330.c unit1395.c unit1396.c unit1397.c unit1398.c unit1399.c unit1600.c unit1601.c unit1602.c unit1603.c unit1605.c unit1606.c unit1607.c unit1608.c unit1609.c unit1610.c unit1611.c unit1612.c unit1614.c unit1615.c unit1616.c unit1620.c unit1625.c unit1626.c unit1627.c unit1636.c unit1650.c unit1651.c unit1652.c unit1653.c unit1654.c unit1655.c unit1656.c unit1657.c unit1658.c unit1660.c unit1661.c unit1663.c unit1664.c unit1666.c unit1667.c unit1668.c unit1669.c unit1674.c unit1675.c unit1676.c unit1979.c unit1980.c unit2600.c unit2601.c unit2602.c unit2603.c unit2604.c unit2605.c unit3200.c unit3205.c unit3211.c unit3212.c unit3213.c unit3214.c unit3216.c unit3219.c unit3300.c unit3301.c unit3302.cexamples
.env config.ini crypto_test.lua env_test.lua fs_example.lua http_server.lua https_test.lua ini_example.lua json.lua log.lua path_fs_example.lua process_example.lua request_download.lua request_test.lua run_all.lua sqlite_example.lua sqlite_http_template.lua stash_test.lua template_test.lua timer.lua websocket.luainiparser
example
iniexample.c iniwrite.c parse.c twisted-errors.ini twisted-genhuge.py twisted-ofkey.ini twisted-ofval.ini twisted.initest
CMakeLists.txt test_dictionary.c test_iniparser.c unity-config.yml unity_config.hjinjac
libjinjac
src
CMakeLists.txt ast.c ast.h block_statement.c block_statement.h buffer.c buffer.h buildin.c buildin.h common.h convert.c convert.h flex_decl.h jfunction.c jfunction.h jinja_expression.l jinja_expression.y jinjac_parse.c jinjac_parse.h jinjac_stream.c jinjac_stream.h jlist.c jlist.h jobject.c jobject.h parameter.c parameter.h str_obj.c str_obj.h trace.c trace.htest
.gitignore CMakeLists.txt autotest.rb test_01.expected test_01.jinja test_01b.expected test_01b.jinja test_01c.expected test_01c.jinja test_01d.expected test_01d.jinja test_02.expected test_02.jinja test_03.expected test_03.jinja test_04.expected test_04.jinja test_05.expected test_05.jinja test_06.expected test_06.jinja test_07.expected test_07.jinja test_08.expected test_08.jinja test_08b.expected test_08b.jinja test_09.expected test_09.jinja test_10.expected test_10.jinja test_11.expected test_11.jinja test_12.expected test_12.jinja test_13.expected test_13.jinja test_14.expected test_14.jinja test_15.expected test_15.jinja test_16.expected test_16.jinja test_17.expected test_17.jinja test_18.expected test_18.jinja test_18b.expected test_18b.jinja test_18c.expected test_18c.jinja test_19.expected test_19.jinja test_19b.expected test_19b.jinja test_19c.expected test_19c.jinja test_19d.expected test_19d.jinja test_19e.expected test_19e.jinja test_19f.expected test_19f.jinja test_20.expected test_20.jinja test_21.expected test_21.jinja test_22.expected test_22.jinja test_22a.expected test_22a.jinja test_22b.expected test_22b.jinja test_23.expected test_23.jinja test_24.expected test_24.jinjalibev
Changes LICENSE Makefile Makefile.am Makefile.in README Symbols.ev Symbols.event aclocal.m4 autogen.sh compile config.guess config.h config.h.in config.status config.sub configure configure.ac depcomp ev++.h ev.3 ev.c ev.h ev.pod ev_epoll.c ev_kqueue.c ev_poll.c ev_port.c ev_select.c ev_vars.h ev_win32.c ev_wrap.h event.c event.h install-sh libev.m4 libtool ltmain.sh missing mkinstalldirs stamp-h1luajit
doc
bluequad-print.css bluequad.css contact.html ext_buffer.html ext_c_api.html ext_ffi.html ext_ffi_api.html ext_ffi_semantics.html ext_ffi_tutorial.html ext_jit.html ext_profiler.html extensions.html install.html luajit.html running.htmldynasm
dasm_arm.h dasm_arm.lua dasm_arm64.h dasm_arm64.lua dasm_mips.h dasm_mips.lua dasm_mips64.lua dasm_ppc.h dasm_ppc.lua dasm_proto.h dasm_x64.lua dasm_x86.h dasm_x86.lua dynasm.luasrc
host
.gitignore README buildvm.c buildvm.h buildvm_asm.c buildvm_fold.c buildvm_lib.c buildvm_libbc.h buildvm_peobj.c genlibbc.lua genminilua.lua genversion.lua minilua.cjit
.gitignore bc.lua bcsave.lua dis_arm.lua dis_arm64.lua dis_arm64be.lua dis_mips.lua dis_mips64.lua dis_mips64el.lua dis_mips64r6.lua dis_mips64r6el.lua dis_mipsel.lua dis_ppc.lua dis_x64.lua dis_x86.lua dump.lua p.lua v.lua zone.luawolfssl
.github
workflows
ada.yml arduino.yml async-examples.yml async.yml atecc608-sim.yml bind.yml cmake-autoconf.yml cmake.yml codespell.yml coverity-scan-fixes.yml cryptocb-only.yml curl.yml cyrus-sasl.yml disable-pk-algs.yml docker-Espressif.yml docker-OpenWrt.yml emnet-nonblock.yml fil-c.yml freertos-mem-track.yml gencertbuf.yml grpc.yml haproxy.yml hostap-vm.yml intelasm-c-fallback.yml ipmitool.yml jwt-cpp.yml krb5.yml libspdm.yml libssh2.yml libvncserver.yml linuxkm.yml macos-apple-native-cert-validation.yml mbedtls.sh mbedtls.yml membrowse-comment.yml membrowse-onboard.yml membrowse-report.yml memcached.sh memcached.yml mono.yml mosquitto.yml msmtp.yml msys2.yml multi-arch.yml multi-compiler.yml net-snmp.yml nginx.yml no-malloc.yml no-tls.yml nss.sh nss.yml ntp.yml ocsp.yml openldap.yml openssh.yml openssl-ech.yml opensslcoexist.yml openvpn.yml os-check.yml packaging.yml pam-ipmi.yml pq-all.yml pr-commit-check.yml psk.yml puf.yml python.yml rng-tools.yml rust-wrapper.yml se050-sim.yml smallStackSize.yml socat.yml softhsm.yml sssd.yml stm32-sim.yml stsafe-a120-sim.yml stunnel.yml symbol-prefixes.yml threadx.yml tls-anvil.yml trackmemory.yml watcomc.yml win-csharp-test.yml wolfCrypt-Wconversion.yml wolfboot-integration.yml wolfsm.yml xcode.yml zephyr-4.x.yml zephyr.ymlIDE
ARDUINO
Arduino_README_prepend.md README.md include.am keywords.txt library.properties.template wolfssl-arduino.cpp wolfssl-arduino.sh wolfssl.hECLIPSE
Espressif
ESP-IDF
examples
template
CMakeLists.txt Makefile README.md partitions_singleapp_large.csv sdkconfig.defaults sdkconfig.defaults.esp8266wolfssl_benchmark
VisualGDB
wolfssl_benchmark_IDF_v4.4_ESP32.sln wolfssl_benchmark_IDF_v4.4_ESP32.vgdbproj wolfssl_benchmark_IDF_v5_ESP32.sln wolfssl_benchmark_IDF_v5_ESP32.vgdbproj wolfssl_benchmark_IDF_v5_ESP32C3.sln wolfssl_benchmark_IDF_v5_ESP32C3.vgdbproj wolfssl_benchmark_IDF_v5_ESP32S3.sln wolfssl_benchmark_IDF_v5_ESP32S3.vgdbprojwolfssl_client
CMakeLists.txt Makefile README.md README_server_sm.md partitions_singleapp_large.csv sdkconfig.defaults sdkconfig.defaults.esp32c2 sdkconfig.defaults.esp8266 wolfssl_client_ESP8266.vgdbprojwolfssl_server
CMakeLists.txt Makefile README.md README_server_sm.md partitions_singleapp_large.csv sdkconfig.defaults sdkconfig.defaults.esp32c2 sdkconfig.defaults.esp8266 wolfssl_server_ESP8266.vgdbprojwolfssl_test
VisualGDB
wolfssl_test-IDF_v5_ESP32.sln wolfssl_test-IDF_v5_ESP32.vgdbproj wolfssl_test-IDF_v5_ESP32C3.sln wolfssl_test-IDF_v5_ESP32C3.vgdbproj wolfssl_test-IDF_v5_ESP32C6.sln wolfssl_test-IDF_v5_ESP32C6.vgdbproj wolfssl_test_IDF_v5_ESP32S3.sln wolfssl_test_IDF_v5_ESP32S3.vgdbprojGCC-ARM
Makefile Makefile.bench Makefile.client Makefile.common Makefile.server Makefile.static Makefile.test README.md include.am linker.ld linker_fips.ldIAR-EWARM
embOS
SAMV71_XULT
embOS_SAMV71_XULT_user_settings
user_settings.h user_settings_simple_example.h user_settings_verbose_example.hembOS_wolfcrypt_benchmark_SAMV71_XULT
README_wolfcrypt_benchmark wolfcrypt_benchmark.ewd wolfcrypt_benchmark.ewpINTIME-RTOS
Makefile README.md include.am libwolfssl.c libwolfssl.vcxproj user_settings.h wolfExamples.c wolfExamples.h wolfExamples.sln wolfExamples.vcxproj wolfssl-lib.sln wolfssl-lib.vcxprojMQX
Makefile README-jp.md README.md client-tls.c include.am server-tls.c user_config.h user_settings.hMSVS-2019-AZSPHERE
wolfssl_new_azsphere
.gitignore CMakeLists.txt CMakeSettings.json app_manifest.json applibs_versions.h launch.vs.json main.cNETOS
Makefile.wolfcrypt.inc README.md include.am user_settings.h user_settings.h-cert2425 user_settings.h-cert3389 wolfssl_netos_custom.cPlatformIO
examples
wolfssl_benchmark
CMakeLists.txt README.md platformio.ini sdkconfig.defaults wolfssl_benchmark.code-workspaceROWLEY-CROSSWORKS-ARM
Kinetis_FlashPlacement.xml README.md arm_startup.c benchmark_main.c hw.h include.am kinetis_hw.c retarget.c test_main.c user_settings.h wolfssl.hzp wolfssl_ltc.hzpRenesas
e2studio
RA6M3
README.md README_APRA6M_en.md README_APRA6M_jp.md include.amRX72N
EnvisionKit
Simple
README_EN.md README_JP.mdwolfssl_demo
key_data.c key_data.h user_settings.h wolfssl_demo.c wolfssl_demo.h wolfssl_tsip_unit_test.cSTM32Cube
README.md STM32_Benchmarks.md default_conf.ftl include.am main.c wolfssl_example.c wolfssl_example.hWIN
README.txt include.am test.vcxproj user_settings.h user_settings_dtls.h wolfssl-fips.sln wolfssl-fips.vcxprojWIN-SRTP-KDF-140-3
README.txt include.am resource.h test.vcxproj user_settings.h wolfssl-fips.rc wolfssl-fips.sln wolfssl-fips.vcxprojWIN10
README.txt include.am resource.h test.vcxproj user_settings.h wolfssl-fips.rc wolfssl-fips.sln wolfssl-fips.vcxprojXCODE
Benchmark
include.amXilinxSDK
README.md bench.sh combine.sh eclipse_formatter_profile.xml graph.sh include.am user_settings.h wolfssl_example.capple-universal
wolfssl-multiplatform
iotsafe
Makefile README.md ca-cert.c devices.c devices.h include.am main.c memory-tls.c startup.c target.ld user_settings.hmynewt
README.md apps.wolfcrypttest.pkg.yml crypto.wolfssl.pkg.yml crypto.wolfssl.syscfg.yml include.am setup.shcerts
1024
ca-cert.der ca-cert.pem ca-key.der ca-key.pem client-cert.der client-cert.pem client-key.der client-key.pem client-keyPub.der dh1024.der dh1024.pem dsa-pub-1024.pem dsa1024.der dsa1024.pem include.am rsa1024.der server-cert.der server-cert.pem server-key.der server-key.pemcrl
extra-crls
ca-int-cert-revoked.pem claim-root.pem crl_critical_entry.pem crlnum_57oct.pem crlnum_64oct.pem general-server-crl.pem large_crlnum.pem large_crlnum2.pemdilithium
bench_dilithium_level2_key.der bench_dilithium_level3_key.der bench_dilithium_level5_key.der include.amecc
bp256r1-key.der bp256r1-key.pem ca-secp256k1-cert.pem ca-secp256k1-key.pem client-bp256r1-cert.der client-bp256r1-cert.pem client-secp256k1-cert.der client-secp256k1-cert.pem genecc.sh include.am secp256k1-key.der secp256k1-key.pem secp256k1-param.pem secp256k1-privkey.der secp256k1-privkey.pem server-bp256r1-cert.der server-bp256r1-cert.pem server-secp256k1-cert.der server-secp256k1-cert.pem server2-secp256k1-cert.der server2-secp256k1-cert.pem wolfssl.cnf wolfssl_384.cnfed25519
ca-ed25519-key.der ca-ed25519-key.pem ca-ed25519-priv.der ca-ed25519-priv.pem ca-ed25519.der ca-ed25519.pem client-ed25519-key.der client-ed25519-key.pem client-ed25519-priv.der client-ed25519-priv.pem client-ed25519.der client-ed25519.pem eddsa-ed25519.der eddsa-ed25519.pem gen-ed25519-certs.sh gen-ed25519-keys.sh gen-ed25519.sh include.am root-ed25519-key.der root-ed25519-key.pem root-ed25519-priv.der root-ed25519-priv.pem root-ed25519.der root-ed25519.pem server-ed25519-cert.pem server-ed25519-key.der server-ed25519-key.pem server-ed25519-priv.der server-ed25519-priv.pem server-ed25519.der server-ed25519.pemed448
ca-ed448-key.der ca-ed448-key.pem ca-ed448-priv.der ca-ed448-priv.pem ca-ed448.der ca-ed448.pem client-ed448-key.der client-ed448-key.pem client-ed448-priv.der client-ed448-priv.pem client-ed448.der client-ed448.pem gen-ed448-certs.sh gen-ed448-keys.sh include.am root-ed448-key.der root-ed448-key.pem root-ed448-priv.der root-ed448-priv.pem root-ed448.der root-ed448.pem server-ed448-cert.pem server-ed448-key.der server-ed448-key.pem server-ed448-priv.der server-ed448-priv.pem server-ed448.der server-ed448.pemexternal
DigiCertGlobalRootCA.pem README.txt ca-digicert-ev.pem ca-globalsign-root.pem ca-google-root.pem ca_collection.pem include.amintermediate
ca_false_intermediate
gentestcert.sh int_ca.key server.key test_ca.key test_ca.pem test_int_not_cacert.pem test_sign_bynoca_srv.pem wolfssl_base.conf wolfssl_srv.conflms
bc_hss_L2_H5_W8_root.der bc_hss_L3_H5_W4_root.der bc_lms_chain_ca.der bc_lms_chain_leaf.der bc_lms_native_bc_root.der bc_lms_sha256_h10_w8_root.der bc_lms_sha256_h5_w4_root.der include.ammldsa
README.txt include.am mldsa44-cert.der mldsa44-cert.pem mldsa44-key.pem mldsa44_bare-priv.der mldsa44_bare-seed.der mldsa44_oqskeypair.der mldsa44_priv-only.der mldsa44_pub-spki.der mldsa44_seed-only.der mldsa44_seed-priv.der mldsa65-cert.der mldsa65-cert.pem mldsa65-key.pem mldsa65_bare-priv.der mldsa65_bare-seed.der mldsa65_oqskeypair.der mldsa65_priv-only.der mldsa65_pub-spki.der mldsa65_seed-only.der mldsa65_seed-priv.der mldsa87-cert.der mldsa87-cert.pem mldsa87-key.pem mldsa87_bare-priv.der mldsa87_bare-seed.der mldsa87_oqskeypair.der mldsa87_priv-only.der mldsa87_pub-spki.der mldsa87_seed-only.der mldsa87_seed-priv.derocsp
imposter-root-ca-cert.der imposter-root-ca-cert.pem imposter-root-ca-key.der imposter-root-ca-key.pem include.am index-ca-and-intermediate-cas.txt index-ca-and-intermediate-cas.txt.attr index-intermediate1-ca-issued-certs.txt index-intermediate1-ca-issued-certs.txt.attr index-intermediate2-ca-issued-certs.txt index-intermediate2-ca-issued-certs.txt.attr index-intermediate3-ca-issued-certs.txt index-intermediate3-ca-issued-certs.txt.attr intermediate1-ca-cert.der intermediate1-ca-cert.pem intermediate1-ca-key.der intermediate1-ca-key.pem intermediate2-ca-cert.der intermediate2-ca-cert.pem intermediate2-ca-key.der intermediate2-ca-key.pem intermediate3-ca-cert.der intermediate3-ca-cert.pem intermediate3-ca-key.der intermediate3-ca-key.pem ocsp-responder-cert.der ocsp-responder-cert.pem ocsp-responder-key.der ocsp-responder-key.pem openssl.cnf renewcerts-for-test.sh renewcerts.sh root-ca-cert.der root-ca-cert.pem root-ca-crl.pem root-ca-key.der root-ca-key.pem server1-cert.der server1-cert.pem server1-chain-noroot.pem server1-key.der server1-key.pem server2-cert.der server2-cert.pem server2-key.der server2-key.pem server3-cert.der server3-cert.pem server3-key.der server3-key.pem server4-cert.der server4-cert.pem server4-key.der server4-key.pem server5-cert.der server5-cert.pem server5-key.der server5-key.pem test-leaf-response.der test-multi-response.der test-response-nointern.der test-response-rsapss.der test-response.derp521
ca-p521-key.der ca-p521-key.pem ca-p521-priv.der ca-p521-priv.pem ca-p521.der ca-p521.pem client-p521-key.der client-p521-key.pem client-p521-priv.der client-p521-priv.pem client-p521.der client-p521.pem gen-p521-certs.sh gen-p521-keys.sh include.am root-p521-key.der root-p521-key.pem root-p521-priv.der root-p521-priv.pem root-p521.der root-p521.pem server-p521-cert.pem server-p521-key.der server-p521-key.pem server-p521-priv.der server-p521-priv.pem server-p521.der server-p521.pemrpk
client-cert-rpk.der client-ecc-cert-rpk.der include.am server-cert-rpk.der server-ecc-cert-rpk.derrsapss
ca-3072-rsapss-key.der ca-3072-rsapss-key.pem ca-3072-rsapss-priv.der ca-3072-rsapss-priv.pem ca-3072-rsapss.der ca-3072-rsapss.pem ca-rsapss-key.der ca-rsapss-key.pem ca-rsapss-priv.der ca-rsapss-priv.pem ca-rsapss.der ca-rsapss.pem client-3072-rsapss-key.der client-3072-rsapss-key.pem client-3072-rsapss-priv.der client-3072-rsapss-priv.pem client-3072-rsapss.der client-3072-rsapss.pem client-rsapss-key.der client-rsapss-key.pem client-rsapss-priv.der client-rsapss-priv.pem client-rsapss.der client-rsapss.pem gen-rsapss-keys.sh include.am renew-rsapss-certs.sh root-3072-rsapss-key.der root-3072-rsapss-key.pem root-3072-rsapss-priv.der root-3072-rsapss-priv.pem root-3072-rsapss.der root-3072-rsapss.pem root-rsapss-key.der root-rsapss-key.pem root-rsapss-priv.der root-rsapss-priv.pem root-rsapss.der root-rsapss.pem server-3072-rsapss-cert.pem server-3072-rsapss-key.der server-3072-rsapss-key.pem server-3072-rsapss-priv.der server-3072-rsapss-priv.pem server-3072-rsapss.der server-3072-rsapss.pem server-mix-rsapss-cert.pem server-rsapss-cert.pem server-rsapss-key.der server-rsapss-key.pem server-rsapss-priv.der server-rsapss-priv.pem server-rsapss.der server-rsapss.pemslhdsa
bench_slhdsa_sha2_128f_key.der bench_slhdsa_sha2_128s_key.der bench_slhdsa_sha2_192f_key.der bench_slhdsa_sha2_192s_key.der bench_slhdsa_sha2_256f_key.der bench_slhdsa_sha2_256s_key.der bench_slhdsa_shake128f_key.der bench_slhdsa_shake128s_key.der bench_slhdsa_shake192f_key.der bench_slhdsa_shake192s_key.der bench_slhdsa_shake256f_key.der bench_slhdsa_shake256s_key.der client-mldsa44-priv.pem client-mldsa44-sha2.der client-mldsa44-sha2.pem client-mldsa44-shake.der client-mldsa44-shake.pem gen-slhdsa-mldsa-certs.sh include.am root-slhdsa-sha2-128s-priv.der root-slhdsa-sha2-128s-priv.pem root-slhdsa-sha2-128s.der root-slhdsa-sha2-128s.pem root-slhdsa-shake-128s-priv.der root-slhdsa-shake-128s-priv.pem root-slhdsa-shake-128s.der root-slhdsa-shake-128s.pem server-mldsa44-priv.pem server-mldsa44-sha2.der server-mldsa44-sha2.pem server-mldsa44-shake.der server-mldsa44-shake.pemsm2
ca-sm2-key.der ca-sm2-key.pem ca-sm2-priv.der ca-sm2-priv.pem ca-sm2.der ca-sm2.pem client-sm2-key.der client-sm2-key.pem client-sm2-priv.der client-sm2-priv.pem client-sm2.der client-sm2.pem fix_sm2_spki.py gen-sm2-certs.sh gen-sm2-keys.sh include.am root-sm2-key.der root-sm2-key.pem root-sm2-priv.der root-sm2-priv.pem root-sm2.der root-sm2.pem self-sm2-cert.pem self-sm2-key.pem self-sm2-priv.pem server-sm2-cert.der server-sm2-cert.pem server-sm2-key.der server-sm2-key.pem server-sm2-priv.der server-sm2-priv.pem server-sm2.der server-sm2.pemstatickeys
dh-ffdhe2048-params.pem dh-ffdhe2048-pub.der dh-ffdhe2048-pub.pem dh-ffdhe2048.der dh-ffdhe2048.pem ecc-secp256r1.der ecc-secp256r1.pem gen-static.sh include.am x25519-pub.der x25519-pub.pem x25519.der x25519.pemtest
catalog.txt cert-bad-neg-int.der cert-bad-oid.der cert-bad-utf8.der cert-ext-ia.cfg cert-ext-ia.der cert-ext-ia.pem cert-ext-joi.cfg cert-ext-joi.der cert-ext-joi.pem cert-ext-mnc.der cert-ext-multiple.cfg cert-ext-multiple.der cert-ext-multiple.pem cert-ext-nc-combined.der cert-ext-nc-combined.pem cert-ext-nc.cfg cert-ext-nc.der cert-ext-nc.pem cert-ext-ncdns.der cert-ext-ncdns.pem cert-ext-ncip.der cert-ext-ncip.pem cert-ext-ncmixed.der cert-ext-ncmulti.der cert-ext-ncmulti.pem cert-ext-ncrid.der cert-ext-ncrid.pem cert-ext-nct.cfg cert-ext-nct.der cert-ext-nct.pem cert-ext-ndir-exc.cfg cert-ext-ndir-exc.der cert-ext-ndir-exc.pem cert-ext-ndir.cfg cert-ext-ndir.der cert-ext-ndir.pem cert-ext-ns.der cert-over-max-altnames.cfg cert-over-max-altnames.der cert-over-max-altnames.pem cert-over-max-nc.cfg cert-over-max-nc.der cert-over-max-nc.pem client-ecc-cert-ski.hex cn-ip-literal.der cn-ip-wildcard.der crit-cert.pem crit-key.pem dh1024.der dh1024.pem dh512.der dh512.pem digsigku.pem encrypteddata.msg gen-badsig.sh gen-ext-certs.sh gen-testcerts.sh include.am kari-keyid-cms.msg ktri-keyid-cms.msg ossl-trusted-cert.pem server-badaltname.der server-badaltname.pem server-badaltnull.der server-badaltnull.pem server-badcn.der server-badcn.pem server-badcnnull.der server-badcnnull.pem server-cert-ecc-badsig.der server-cert-ecc-badsig.pem server-cert-rsa-badsig.der server-cert-rsa-badsig.pem server-duplicate-policy.pem server-garbage.der server-garbage.pem server-goodalt.der server-goodalt.pem server-goodaltwild.der server-goodaltwild.pem server-goodcn.der server-goodcn.pem server-goodcnwild.der server-goodcnwild.pem server-localhost.der server-localhost.pem smime-test-canon.p7s smime-test-multipart-badsig.p7s smime-test-multipart.p7s smime-test.p7stest-pathlen
assemble-chains.sh chainA-ICA1-key.pem chainA-ICA1-pathlen0.pem chainA-assembled.pem chainA-entity-key.pem chainA-entity.pem chainB-ICA1-key.pem chainB-ICA1-pathlen0.pem chainB-ICA2-key.pem chainB-ICA2-pathlen1.pem chainB-assembled.pem chainB-entity-key.pem chainB-entity.pem chainC-ICA1-key.pem chainC-ICA1-pathlen1.pem chainC-assembled.pem chainC-entity-key.pem chainC-entity.pem chainD-ICA1-key.pem chainD-ICA1-pathlen127.pem chainD-assembled.pem chainD-entity-key.pem chainD-entity.pem chainE-ICA1-key.pem chainE-ICA1-pathlen128.pem chainE-assembled.pem chainE-entity-key.pem chainE-entity.pem chainF-ICA1-key.pem chainF-ICA1-pathlen1.pem chainF-ICA2-key.pem chainF-ICA2-pathlen0.pem chainF-assembled.pem chainF-entity-key.pem chainF-entity.pem chainG-ICA1-key.pem chainG-ICA1-pathlen0.pem chainG-ICA2-key.pem chainG-ICA2-pathlen1.pem chainG-ICA3-key.pem chainG-ICA3-pathlen99.pem chainG-ICA4-key.pem chainG-ICA4-pathlen5.pem chainG-ICA5-key.pem chainG-ICA5-pathlen20.pem chainG-ICA6-key.pem chainG-ICA6-pathlen10.pem chainG-ICA7-key.pem chainG-ICA7-pathlen100.pem chainG-assembled.pem chainG-entity-key.pem chainG-entity.pem chainH-ICA1-key.pem chainH-ICA1-pathlen0.pem chainH-ICA2-key.pem chainH-ICA2-pathlen2.pem chainH-ICA3-key.pem chainH-ICA3-pathlen2.pem chainH-ICA4-key.pem chainH-ICA4-pathlen2.pem chainH-assembled.pem chainH-entity-key.pem chainH-entity.pem chainI-ICA1-key.pem chainI-ICA1-no_pathlen.pem chainI-ICA2-key.pem chainI-ICA2-no_pathlen.pem chainI-ICA3-key.pem chainI-ICA3-pathlen2.pem chainI-assembled.pem chainI-entity-key.pem chainI-entity.pem chainJ-ICA1-key.pem chainJ-ICA1-no_pathlen.pem chainJ-ICA2-key.pem chainJ-ICA2-no_pathlen.pem chainJ-ICA3-key.pem chainJ-ICA3-no_pathlen.pem chainJ-ICA4-key.pem chainJ-ICA4-pathlen2.pem chainJ-assembled.pem chainJ-entity-key.pem chainJ-entity.pem include.am refreshkeys.shtest-serial0
ee_normal.pem ee_serial0.pem generate_certs.sh include.am intermediate_serial0.pem root_serial0.pem root_serial0_key.pem selfsigned_nonca_serial0.pemxmss
bc_xmss_chain_ca.der bc_xmss_chain_leaf.der bc_xmss_sha2_10_256_root.der bc_xmss_sha2_16_256_root.der bc_xmssmt_sha2_20_2_256_root.der bc_xmssmt_sha2_20_4_256_root.der bc_xmssmt_sha2_40_8_256_root.der include.amcmake
Config.cmake.in README.md config.in functions.cmake include.am options.h.in wolfssl-config-version.cmake.in wolfssl-targets.cmake.indebian
changelog.in control.in copyright include.am libwolfssl-dev.install libwolfssl.install rules.indoc
dox_comments
header_files
aes.h arc4.h ascon.h asn.h asn_public.h blake2.h bn.h camellia.h chacha.h chacha20_poly1305.h cmac.h coding.h compress.h cryptocb.h curve25519.h curve448.h des3.h dh.h doxygen_groups.h doxygen_pages.h dsa.h ecc.h eccsi.h ed25519.h ed448.h error-crypt.h evp.h hash.h hmac.h iotsafe.h kdf.h logging.h md2.h md4.h md5.h memory.h ocsp.h pem.h pkcs11.h pkcs7.h poly1305.h psa.h puf.h pwdbased.h quic.h random.h ripemd.h rsa.h sakke.h sha.h sha256.h sha3.h sha512.h signature.h siphash.h srp.h ssl.h tfm.h types.h wc_encrypt.h wc_port.h wc_she.h wc_slhdsa.h wolfio.hheader_files-ja
aes.h arc4.h ascon.h asn.h asn_public.h blake2.h bn.h camellia.h chacha.h chacha20_poly1305.h cmac.h coding.h compress.h cryptocb.h curve25519.h curve448.h des3.h dh.h doxygen_groups.h doxygen_pages.h dsa.h ecc.h eccsi.h ed25519.h ed448.h error-crypt.h evp.h hash.h hmac.h iotsafe.h kdf.h logging.h md2.h md4.h md5.h memory.h ocsp.h pem.h pkcs11.h pkcs7.h poly1305.h psa.h pwdbased.h quic.h random.h ripemd.h rsa.h sakke.h sha.h sha256.h sha3.h sha512.h signature.h siphash.h srp.h ssl.h tfm.h types.h wc_encrypt.h wc_port.h wolfio.hexamples
async
Makefile README.md async_client.c async_server.c async_tls.c async_tls.h include.am user_settings.hconfigs
README.md include.am user_settings_EBSnet.h user_settings_all.h user_settings_arduino.h user_settings_baremetal.h user_settings_ca.h user_settings_curve25519nonblock.h user_settings_dtls13.h user_settings_eccnonblock.h user_settings_espressif.h user_settings_fipsv2.h user_settings_fipsv5.h user_settings_min_ecc.h user_settings_openssl_compat.h user_settings_pkcs7.h user_settings_platformio.h user_settings_pq.h user_settings_rsa_only.h user_settings_stm32.h user_settings_template.h user_settings_tls12.h user_settings_tls13.h user_settings_wolfboot_keytools.h user_settings_wolfssh.h user_settings_wolftpm.hechoclient
echoclient.c echoclient.h echoclient.sln echoclient.vcproj echoclient.vcxproj include.am quitlinuxkm
Kbuild Makefile README.md get_thread_size.c include.am linuxkm-fips-hash-wrapper.sh linuxkm-fips-hash.c linuxkm_memory.c linuxkm_memory.h linuxkm_wc_port.h lkcapi_aes_glue.c lkcapi_dh_glue.c lkcapi_ecdh_glue.c lkcapi_ecdsa_glue.c lkcapi_glue.c lkcapi_rsa_glue.c lkcapi_sha_glue.c module_exports.c.template module_hooks.c pie_redirect_table.c wolfcrypt.lds x86_vector_register_glue.cm4
ax_add_am_macro.m4 ax_am_jobserver.m4 ax_am_macros.m4 ax_append_compile_flags.m4 ax_append_flag.m4 ax_append_link_flags.m4 ax_append_to_file.m4 ax_atomic.m4 ax_bsdkm.m4 ax_check_compile_flag.m4 ax_check_link_flag.m4 ax_compiler_version.m4 ax_count_cpus.m4 ax_create_generic_config.m4 ax_debug.m4 ax_file_escapes.m4 ax_harden_compiler_flags.m4 ax_linuxkm.m4 ax_print_to_file.m4 ax_pthread.m4 ax_require_defined.m4 ax_tls.m4 ax_vcs_checkout.m4 hexversion.m4 lib_socket_nsl.m4 visibility.m4mqx
wolfcrypt_benchmark
ReferencedRSESystems.xml wolfcrypt_benchmark_twrk70f120m_Int_Flash_DDRData_Debug_PnE_U-MultiLink.launch wolfcrypt_benchmark_twrk70f120m_Int_Flash_DDRData_Release_PnE_U-MultiLink.launch wolfcrypt_benchmark_twrk70f120m_Int_Flash_SramData_Debug_JTrace.jlink wolfcrypt_benchmark_twrk70f120m_Int_Flash_SramData_Debug_JTrace.launch wolfcrypt_benchmark_twrk70f120m_Int_Flash_SramData_Debug_PnE_U-MultiLink.launch wolfcrypt_benchmark_twrk70f120m_Int_Flash_SramData_Release_PnE_U-MultiLink.launchwolfcrypt_test
ReferencedRSESystems.xml wolfcrypt_test_twrk70f120m_Int_Flash_DDRData_Debug_PnE_U-MultiLink.launch wolfcrypt_test_twrk70f120m_Int_Flash_DDRData_Release_PnE_U-MultiLink.launch wolfcrypt_test_twrk70f120m_Int_Flash_SramData_Debug_JTrace.jlink wolfcrypt_test_twrk70f120m_Int_Flash_SramData_Debug_JTrace.launch wolfcrypt_test_twrk70f120m_Int_Flash_SramData_Debug_PnE_U-MultiLink.launch wolfcrypt_test_twrk70f120m_Int_Flash_SramData_Release_PnE_U-MultiLink.launchwolfssl_client
ReferencedRSESystems.xml wolfssl_client_twrk70f120m_Int_Flash_DDRData_Debug_PnE_U-MultiLink.launch wolfssl_client_twrk70f120m_Int_Flash_DDRData_Release_PnE_U-MultiLink.launch wolfssl_client_twrk70f120m_Int_Flash_SramData_Debug_JTrace.jlink wolfssl_client_twrk70f120m_Int_Flash_SramData_Debug_JTrace.launch wolfssl_client_twrk70f120m_Int_Flash_SramData_Debug_PnE_U-MultiLink.launch wolfssl_client_twrk70f120m_Int_Flash_SramData_Release_PnE_U-MultiLink.launchscripts
aria-cmake-build-test.sh asn1_oid_sum.pl benchmark.test benchmark_compare.sh cleanup_testfiles.sh crl-gen-openssl.test crl-revoked.test dertoc.pl dtls.test dtlscid.test external.test google.test include.am makedistsmall.sh memtest.sh ocsp-responder-openssl-interop.test ocsp-stapling-with-ca-as-responder.test ocsp-stapling-with-wolfssl-responder.test ocsp-stapling.test ocsp-stapling2.test ocsp-stapling_tls13multi.test ocsp.test openssl.test openssl_srtp.test pem.test ping.test pkcallbacks.test psk.test resume.test rsapss.test sniffer-gen.sh sniffer-ipv6.pcap sniffer-static-rsa.pcap sniffer-testsuite.test sniffer-tls12-keylog.out sniffer-tls12-keylog.pcap sniffer-tls12-keylog.sslkeylog sniffer-tls13-dh-resume.pcap sniffer-tls13-dh.pcap sniffer-tls13-ecc-resume.pcap sniffer-tls13-ecc.pcap sniffer-tls13-hrr.pcap sniffer-tls13-keylog.out sniffer-tls13-keylog.pcap sniffer-tls13-keylog.sslkeylog sniffer-tls13-x25519-resume.pcap sniffer-tls13-x25519.pcap stm32l4-v4_0_1_build.sh tls13.test trusted_peer.test unit.test.in user_settings_asm.shsrc
bio.c conf.c crl.c dtls.c dtls13.c include.am internal.c keys.c ocsp.c pk.c pk_ec.c pk_rsa.c quic.c sniffer.c ssl.c ssl_api_cert.c ssl_api_crl_ocsp.c ssl_api_pk.c ssl_asn1.c ssl_bn.c ssl_certman.c ssl_crypto.c ssl_ech.c ssl_load.c ssl_misc.c ssl_p7p12.c ssl_sess.c ssl_sk.c tls.c tls13.c wolfio.c x509.c x509_str.ctests
api
api.h api_decl.h create_ocsp_test_blobs.py include.am test_aes.c test_aes.h test_arc4.c test_arc4.h test_ascon.c test_ascon.h test_ascon_kats.h test_asn.c test_asn.h test_blake2.c test_blake2.h test_camellia.c test_camellia.h test_certman.c test_certman.h test_chacha.c test_chacha.h test_chacha20_poly1305.c test_chacha20_poly1305.h test_cmac.c test_cmac.h test_curve25519.c test_curve25519.h test_curve448.c test_curve448.h test_des3.c test_des3.h test_dh.c test_dh.h test_digest.h test_dsa.c test_dsa.h test_dtls.c test_dtls.h test_ecc.c test_ecc.h test_ed25519.c test_ed25519.h test_ed448.c test_ed448.h test_evp.c test_evp.h test_evp_cipher.c test_evp_cipher.h test_evp_digest.c test_evp_digest.h test_evp_pkey.c test_evp_pkey.h test_hash.c test_hash.h test_hmac.c test_hmac.h test_md2.c test_md2.h test_md4.c test_md4.h test_md5.c test_md5.h test_mldsa.c test_mldsa.h test_mlkem.c test_mlkem.h test_ocsp.c test_ocsp.h test_ocsp_test_blobs.h test_ossl_asn1.c test_ossl_asn1.h test_ossl_bio.c test_ossl_bio.h test_ossl_bn.c test_ossl_bn.h test_ossl_cipher.c test_ossl_cipher.h test_ossl_dgst.c test_ossl_dgst.h test_ossl_dh.c test_ossl_dh.h test_ossl_dsa.c test_ossl_dsa.h test_ossl_ec.c test_ossl_ec.h test_ossl_ecx.c test_ossl_ecx.h test_ossl_mac.c test_ossl_mac.h test_ossl_obj.c test_ossl_obj.h test_ossl_p7p12.c test_ossl_p7p12.h test_ossl_pem.c test_ossl_pem.h test_ossl_rand.c test_ossl_rand.h test_ossl_rsa.c test_ossl_rsa.h test_ossl_sk.c test_ossl_sk.h test_ossl_x509.c test_ossl_x509.h test_ossl_x509_acert.c test_ossl_x509_acert.h test_ossl_x509_crypto.c test_ossl_x509_crypto.h test_ossl_x509_ext.c test_ossl_x509_ext.h test_ossl_x509_info.c test_ossl_x509_info.h test_ossl_x509_io.c test_ossl_x509_io.h test_ossl_x509_lu.c test_ossl_x509_lu.h test_ossl_x509_name.c test_ossl_x509_name.h test_ossl_x509_pk.c test_ossl_x509_pk.h test_ossl_x509_str.c test_ossl_x509_str.h test_ossl_x509_vp.c test_ossl_x509_vp.h test_pkcs12.c test_pkcs12.h test_pkcs7.c test_pkcs7.h test_poly1305.c test_poly1305.h test_random.c test_random.h test_rc2.c test_rc2.h test_ripemd.c test_ripemd.h test_rsa.c test_rsa.h test_sha.c test_sha.h test_sha256.c test_sha256.h test_sha3.c test_sha3.h test_sha512.c test_sha512.h test_she.c test_she.h test_signature.c test_signature.h test_slhdsa.c test_slhdsa.h test_sm2.c test_sm2.h test_sm3.c test_sm3.h test_sm4.c test_sm4.h test_tls.c test_tls.h test_tls13.c test_tls13.h test_tls_ext.c test_tls_ext.h test_wc_encrypt.c test_wc_encrypt.h test_wolfmath.c test_wolfmath.h test_x509.c test_x509.hwolfcrypt
benchmark
README.md benchmark-VS2022.sln benchmark-VS2022.vcxproj benchmark-VS2022.vcxproj.user benchmark.c benchmark.h benchmark.sln benchmark.vcproj benchmark.vcxproj include.amsrc
port
Espressif
esp_crt_bundle
README.md cacrt_all.pem cacrt_deprecated.pem cacrt_local.pem esp_crt_bundle.c gen_crt_bundle.py pio_install_cryptography.pyRenesas
README.md renesas_common.c renesas_fspsm_aes.c renesas_fspsm_rsa.c renesas_fspsm_sha.c renesas_fspsm_util.c renesas_rx64_hw_sha.c renesas_rx64_hw_util.c renesas_tsip_aes.c renesas_tsip_rsa.c renesas_tsip_sha.c renesas_tsip_util.carm
armv8-32-aes-asm.S armv8-32-aes-asm_c.c armv8-32-chacha-asm.S armv8-32-chacha-asm_c.c armv8-32-curve25519.S armv8-32-curve25519_c.c armv8-32-mlkem-asm.S armv8-32-mlkem-asm_c.c armv8-32-poly1305-asm.S armv8-32-poly1305-asm_c.c armv8-32-sha256-asm.S armv8-32-sha256-asm_c.c armv8-32-sha3-asm.S armv8-32-sha3-asm_c.c armv8-32-sha512-asm.S armv8-32-sha512-asm_c.c armv8-aes-asm.S armv8-aes-asm_c.c armv8-aes.c armv8-chacha-asm.S armv8-chacha-asm_c.c armv8-curve25519.S armv8-curve25519_c.c armv8-mlkem-asm.S armv8-mlkem-asm_c.c armv8-poly1305-asm.S armv8-poly1305-asm_c.c armv8-sha256-asm.S armv8-sha256-asm_c.c armv8-sha256.c armv8-sha3-asm.S armv8-sha3-asm_c.c armv8-sha512-asm.S armv8-sha512-asm_c.c armv8-sha512.c cryptoCell.c cryptoCellHash.c thumb2-aes-asm.S thumb2-aes-asm_c.c thumb2-chacha-asm.S thumb2-chacha-asm_c.c thumb2-curve25519.S thumb2-curve25519_c.c thumb2-mlkem-asm.S thumb2-mlkem-asm_c.c thumb2-poly1305-asm.S thumb2-poly1305-asm_c.c thumb2-sha256-asm.S thumb2-sha256-asm_c.c thumb2-sha3-asm.S thumb2-sha3-asm_c.c thumb2-sha512-asm.S thumb2-sha512-asm_c.ccaam
README.md caam_aes.c caam_doc.pdf caam_driver.c caam_error.c caam_integrity.c caam_qnx.c caam_sha.c wolfcaam_aes.c wolfcaam_cmac.c wolfcaam_ecdsa.c wolfcaam_fsl_nxp.c wolfcaam_hash.c wolfcaam_hmac.c wolfcaam_init.c wolfcaam_qnx.c wolfcaam_rsa.c wolfcaam_seco.c wolfcaam_x25519.cdevcrypto
README.md devcrypto_aes.c devcrypto_ecdsa.c devcrypto_hash.c devcrypto_hmac.c devcrypto_rsa.c devcrypto_x25519.c wc_devcrypto.criscv
riscv-64-aes.c riscv-64-chacha.c riscv-64-poly1305.c riscv-64-sha256.c riscv-64-sha3.c riscv-64-sha512.cwolfssl
openssl
aes.h asn1.h asn1t.h bio.h bn.h buffer.h camellia.h cmac.h cms.h compat_types.h conf.h crypto.h des.h dh.h dsa.h ec.h ec25519.h ec448.h ecdh.h ecdsa.h ed25519.h ed448.h engine.h err.h evp.h fips_rand.h hmac.h include.am kdf.h lhash.h md4.h md5.h modes.h obj_mac.h objects.h ocsp.h opensslconf.h opensslv.h ossl_typ.h pem.h pkcs12.h pkcs7.h rand.h rc4.h ripemd.h rsa.h safestack.h sha.h sha3.h srp.h ssl.h ssl23.h stack.h tls1.h txt_db.h ui.h x509.h x509_vfy.h x509v3.hwolfcrypt
port
Renesas
renesas-fspsm-crypt.h renesas-fspsm-types.h renesas-rx64-hw-crypt.h renesas-tsip-crypt.h renesas_cmn.h renesas_fspsm_internal.h renesas_sync.h renesas_tsip_internal.h renesas_tsip_types.hcaam
caam_driver.h caam_error.h caam_qnx.h wolfcaam.h wolfcaam_aes.h wolfcaam_cmac.h wolfcaam_ecdsa.h wolfcaam_fsl_nxp.h wolfcaam_hash.h wolfcaam_qnx.h wolfcaam_rsa.h wolfcaam_seco.h wolfcaam_sha.h wolfcaam_x25519.hwrapper
Ada
examples
src
aes_verify_main.adb rsa_verify_main.adb sha256_main.adb spark_sockets.adb spark_sockets.ads spark_terminal.adb spark_terminal.ads tls_client.adb tls_client.ads tls_client_main.adb tls_server.adb tls_server.ads tls_server_main.adbtests
src
aes_bindings_tests.adb aes_bindings_tests.ads rsa_verify_bindings_tests.adb rsa_verify_bindings_tests.ads sha256_bindings_tests.adb sha256_bindings_tests.ads tests.adbCSharp
wolfSSL-Example-IOCallbacks
App.config wolfSSL-Example-IOCallbacks.cs wolfSSL-Example-IOCallbacks.csprojwolfSSL-TLS-ServerThreaded
App.config wolfSSL-TLS-ServerThreaded.cs wolfSSL-TLS-ServerThreaded.csprojrust
wolfssl-wolfcrypt
src
aes.rs blake2.rs chacha20_poly1305.rs cmac.rs cmac_mac.rs curve25519.rs dh.rs dilithium.rs ecc.rs ecdsa.rs ed25519.rs ed448.rs fips.rs hkdf.rs hmac.rs hmac_mac.rs kdf.rs lib.rs lms.rs mlkem.rs mlkem_kem.rs pbkdf2_password_hash.rs prf.rs random.rs rsa.rs rsa_pkcs1v15.rs sha.rs sha_digest.rs sys.rstests
test_aes.rs test_blake2.rs test_chacha20_poly1305.rs test_cmac.rs test_cmac_mac.rs test_curve25519.rs test_dh.rs test_dilithium.rs test_ecc.rs test_ecdsa.rs test_ed25519.rs test_ed448.rs test_hkdf.rs test_hmac.rs test_hmac_mac.rs test_kdf.rs test_lms.rs test_mlkem.rs test_mlkem_kem.rs test_pbkdf2_password_hash.rs test_prf.rs test_random.rs test_rsa.rs test_rsa_pkcs1v15.rs test_sha.rs test_sha_digest.rs test_wolfcrypt.rszephyr
samples
wolfssl_benchmark
CMakeLists.txt README install_test.sh prj.conf sample.yaml zephyr_legacy.conf zephyr_v4.1.confwolfssl_test
CMakeLists.txt README install_test.sh prj-no-malloc.conf prj.conf sample.yaml zephyr_legacy.conf zephyr_v4.1.conf
sqlite/sqlite3.h
raw
1/*
2** 2001-09-15
3**
4** The author disclaims copyright to this source code. In place of
5** a legal notice, here is a blessing:
6**
7** May you do good and not evil.
8** May you find forgiveness for yourself and forgive others.
9** May you share freely, never taking more than you give.
10**
11*************************************************************************
12** This header file defines the interface that the SQLite library
13** presents to client programs. If a C-function, structure, datatype,
14** or constant definition does not appear in this file, then it is
15** not a published API of SQLite, is subject to change without
16** notice, and should not be referenced by programs that use SQLite.
17**
18** Some of the definitions that are in this file are marked as
19** "experimental". Experimental interfaces are normally new
20** features recently added to SQLite. We do not anticipate changes
21** to experimental interfaces but reserve the right to make minor changes
22** if experience from use "in the wild" suggest such changes are prudent.
23**
24** The official C-language API documentation for SQLite is derived
25** from comments in this file. This file is the authoritative source
26** on how SQLite interfaces are supposed to operate.
27**
28** The name of this file under configuration management is "sqlite.h.in".
29** The makefile makes some minor changes to this file (such as inserting
30** the version number) and changes its name to "sqlite3.h" as
31** part of the build process.
32*/
33#ifndef SQLITE3_H
34#define SQLITE3_H
35#include <stdarg.h> /* Needed for the definition of va_list */
36
37/*
38** Make sure we can call this stuff from C++.
39*/
40#ifdef __cplusplus
41extern "C" {
42#endif
43
44
45/*
46** Facilitate override of interface linkage and calling conventions.
47** Be aware that these macros may not be used within this particular
48** translation of the amalgamation and its associated header file.
49**
50** The SQLITE_EXTERN and SQLITE_API macros are used to instruct the
51** compiler that the target identifier should have external linkage.
52**
53** The SQLITE_CDECL macro is used to set the calling convention for
54** public functions that accept a variable number of arguments.
55**
56** The SQLITE_APICALL macro is used to set the calling convention for
57** public functions that accept a fixed number of arguments.
58**
59** The SQLITE_STDCALL macro is no longer used and is now deprecated.
60**
61** The SQLITE_CALLBACK macro is used to set the calling convention for
62** function pointers.
63**
64** The SQLITE_SYSAPI macro is used to set the calling convention for
65** functions provided by the operating system.
66**
67** Currently, the SQLITE_CDECL, SQLITE_APICALL, SQLITE_CALLBACK, and
68** SQLITE_SYSAPI macros are used only when building for environments
69** that require non-default calling conventions.
70*/
71#ifndef SQLITE_EXTERN
72# define SQLITE_EXTERN extern
73#endif
74#ifndef SQLITE_API
75# define SQLITE_API
76#endif
77#ifndef SQLITE_CDECL
78# define SQLITE_CDECL
79#endif
80#ifndef SQLITE_APICALL
81# define SQLITE_APICALL
82#endif
83#ifndef SQLITE_STDCALL
84# define SQLITE_STDCALL SQLITE_APICALL
85#endif
86#ifndef SQLITE_CALLBACK
87# define SQLITE_CALLBACK
88#endif
89#ifndef SQLITE_SYSAPI
90# define SQLITE_SYSAPI
91#endif
92
93/*
94** These no-op macros are used in front of interfaces to mark those
95** interfaces as either deprecated or experimental. New applications
96** should not use deprecated interfaces - they are supported for backwards
97** compatibility only. Application writers should be aware that
98** experimental interfaces are subject to change in point releases.
99**
100** These macros used to resolve to various kinds of compiler magic that
101** would generate warning messages when they were used. But that
102** compiler magic ended up generating such a flurry of bug reports
103** that we have taken it all out and gone back to using simple
104** noop macros.
105*/
106#define SQLITE_DEPRECATED
107#define SQLITE_EXPERIMENTAL
108
109/*
110** Ensure these symbols were not defined by some previous header file.
111*/
112#ifdef SQLITE_VERSION
113# undef SQLITE_VERSION
114#endif
115#ifdef SQLITE_VERSION_NUMBER
116# undef SQLITE_VERSION_NUMBER
117#endif
118
119/*
120** CAPI3REF: Compile-Time Library Version Numbers
121**
122** ^(The [SQLITE_VERSION] C preprocessor macro in the sqlite3.h header
123** evaluates to a string literal that is the SQLite version in the
124** format "X.Y.Z" where X is the major version number (always 3 for
125** SQLite3) and Y is the minor version number and Z is the release number.)^
126** ^(The [SQLITE_VERSION_NUMBER] C preprocessor macro resolves to an integer
127** with the value (X*1000000 + Y*1000 + Z) where X, Y, and Z are the same
128** numbers used in [SQLITE_VERSION].)^
129** The SQLITE_VERSION_NUMBER for any given release of SQLite will also
130** be larger than the release from which it is derived. Either Y will
131** be held constant and Z will be incremented or else Y will be incremented
132** and Z will be reset to zero.
133**
134** Since [version 3.6.18] ([dateof:3.6.18]),
135** SQLite source code has been stored in the
136** <a href="http://fossil-scm.org/">Fossil configuration management
137** system</a>. ^The SQLITE_SOURCE_ID macro evaluates to
138** a string which identifies a particular check-in of SQLite
139** within its configuration management system. ^The SQLITE_SOURCE_ID
140** string contains the date and time of the check-in (UTC) and a SHA1
141** or SHA3-256 hash of the entire source tree. If the source code has
142** been edited in any way since it was last checked in, then the last
143** four hexadecimal digits of the hash may be modified.
144**
145** See also: [sqlite3_libversion()],
146** [sqlite3_libversion_number()], [sqlite3_sourceid()],
147** [sqlite_version()] and [sqlite_source_id()].
148*/
149#define SQLITE_VERSION "3.53.1"
150#define SQLITE_VERSION_NUMBER 3053001
151#define SQLITE_SOURCE_ID "2026-05-05 10:34:17 c88b22011a54b4f6fbd149e9f8e4de77658ce58143a1af0e3785e4e6475127e9"
152#define SQLITE_SCM_BRANCH "branch-3.53"
153#define SQLITE_SCM_TAGS "release version-3.53.1"
154#define SQLITE_SCM_DATETIME "2026-05-05T10:34:17.344Z"
155
156/*
157** CAPI3REF: Run-Time Library Version Numbers
158** KEYWORDS: sqlite3_version sqlite3_sourceid
159**
160** These interfaces provide the same information as the [SQLITE_VERSION],
161** [SQLITE_VERSION_NUMBER], and [SQLITE_SOURCE_ID] C preprocessor macros
162** but are associated with the library instead of the header file. ^(Cautious
163** programmers might include assert() statements in their application to
164** verify that values returned by these interfaces match the macros in
165** the header, and thus ensure that the application is
166** compiled with matching library and header files.
167**
168** <blockquote><pre>
169** assert( sqlite3_libversion_number()==SQLITE_VERSION_NUMBER );
170** assert( strncmp(sqlite3_sourceid(),SQLITE_SOURCE_ID,80)==0 );
171** assert( strcmp(sqlite3_libversion(),SQLITE_VERSION)==0 );
172** </pre></blockquote>)^
173**
174** ^The sqlite3_version[] string constant contains the text of the
175** [SQLITE_VERSION] macro. ^The sqlite3_libversion() function returns a
176** pointer to the sqlite3_version[] string constant. The sqlite3_libversion()
177** function is provided for use in DLLs since DLL users usually do not have
178** direct access to string constants within the DLL. ^The
179** sqlite3_libversion_number() function returns an integer equal to
180** [SQLITE_VERSION_NUMBER]. ^(The sqlite3_sourceid() function returns
181** a pointer to a string constant whose value is the same as the
182** [SQLITE_SOURCE_ID] C preprocessor macro. Except if SQLite is built
183** using an edited copy of [the amalgamation], then the last four characters
184** of the hash might be different from [SQLITE_SOURCE_ID].)^
185**
186** See also: [sqlite_version()] and [sqlite_source_id()].
187*/
188SQLITE_API SQLITE_EXTERN const char sqlite3_version[];
189SQLITE_API const char *sqlite3_libversion(void);
190SQLITE_API const char *sqlite3_sourceid(void);
191SQLITE_API int sqlite3_libversion_number(void);
192
193/*
194** CAPI3REF: Run-Time Library Compilation Options Diagnostics
195**
196** ^The sqlite3_compileoption_used() function returns 0 or 1
197** indicating whether the specified option was defined at
198** compile time. ^The SQLITE_ prefix may be omitted from the
199** option name passed to sqlite3_compileoption_used().
200**
201** ^The sqlite3_compileoption_get() function allows iterating
202** over the list of options that were defined at compile time by
203** returning the N-th compile time option string. ^If N is out of range,
204** sqlite3_compileoption_get() returns a NULL pointer. ^The SQLITE_
205** prefix is omitted from any strings returned by
206** sqlite3_compileoption_get().
207**
208** ^Support for the diagnostic functions sqlite3_compileoption_used()
209** and sqlite3_compileoption_get() may be omitted by specifying the
210** [SQLITE_OMIT_COMPILEOPTION_DIAGS] option at compile time.
211**
212** See also: SQL functions [sqlite_compileoption_used()] and
213** [sqlite_compileoption_get()] and the [compile_options pragma].
214*/
215#ifndef SQLITE_OMIT_COMPILEOPTION_DIAGS
216SQLITE_API int sqlite3_compileoption_used(const char *zOptName);
217SQLITE_API const char *sqlite3_compileoption_get(int N);
218#else
219# define sqlite3_compileoption_used(X) 0
220# define sqlite3_compileoption_get(X) ((void*)0)
221#endif
222
223/*
224** CAPI3REF: Test To See If The Library Is Threadsafe
225**
226** ^The sqlite3_threadsafe() function returns zero if and only if
227** SQLite was compiled with mutexing code omitted due to the
228** [SQLITE_THREADSAFE] compile-time option being set to 0.
229**
230** SQLite can be compiled with or without mutexes. When
231** the [SQLITE_THREADSAFE] C preprocessor macro is 1 or 2, mutexes
232** are enabled and SQLite is threadsafe. When the
233** [SQLITE_THREADSAFE] macro is 0,
234** the mutexes are omitted. Without the mutexes, it is not safe
235** to use SQLite concurrently from more than one thread.
236**
237** Enabling mutexes incurs a measurable performance penalty.
238** So if speed is of utmost importance, it makes sense to disable
239** the mutexes. But for maximum safety, mutexes should be enabled.
240** ^The default behavior is for mutexes to be enabled.
241**
242** This interface can be used by an application to make sure that the
243** version of SQLite that it is linking against was compiled with
244** the desired setting of the [SQLITE_THREADSAFE] macro.
245**
246** This interface only reports on the compile-time mutex setting
247** of the [SQLITE_THREADSAFE] flag. If SQLite is compiled with
248** SQLITE_THREADSAFE=1 or =2 then mutexes are enabled by default but
249** can be fully or partially disabled using a call to [sqlite3_config()]
250** with the verbs [SQLITE_CONFIG_SINGLETHREAD], [SQLITE_CONFIG_MULTITHREAD],
251** or [SQLITE_CONFIG_SERIALIZED]. ^(The return value of the
252** sqlite3_threadsafe() function shows only the compile-time setting of
253** thread safety, not any run-time changes to that setting made by
254** sqlite3_config(). In other words, the return value from sqlite3_threadsafe()
255** is unchanged by calls to sqlite3_config().)^
256**
257** See the [threading mode] documentation for additional information.
258*/
259SQLITE_API int sqlite3_threadsafe(void);
260
261/*
262** CAPI3REF: Database Connection Handle
263** KEYWORDS: {database connection} {database connections}
264**
265** Each open SQLite database is represented by a pointer to an instance of
266** the opaque structure named "sqlite3". It is useful to think of an sqlite3
267** pointer as an object. The [sqlite3_open()], [sqlite3_open16()], and
268** [sqlite3_open_v2()] interfaces are its constructors, and [sqlite3_close()]
269** and [sqlite3_close_v2()] are its destructors. There are many other
270** interfaces (such as
271** [sqlite3_prepare_v2()], [sqlite3_create_function()], and
272** [sqlite3_busy_timeout()] to name but three) that are methods on an
273** sqlite3 object.
274*/
275typedef struct sqlite3 sqlite3;
276
277/*
278** CAPI3REF: 64-Bit Integer Types
279** KEYWORDS: sqlite_int64 sqlite_uint64
280**
281** Because there is no cross-platform way to specify 64-bit integer types
282** SQLite includes typedefs for 64-bit signed and unsigned integers.
283**
284** The sqlite3_int64 and sqlite3_uint64 are the preferred type definitions.
285** The sqlite_int64 and sqlite_uint64 types are supported for backwards
286** compatibility only.
287**
288** ^The sqlite3_int64 and sqlite_int64 types can store integer values
289** between -9223372036854775808 and +9223372036854775807 inclusive. ^The
290** sqlite3_uint64 and sqlite_uint64 types can store integer values
291** between 0 and +18446744073709551615 inclusive.
292*/
293#ifdef SQLITE_INT64_TYPE
294 typedef SQLITE_INT64_TYPE sqlite_int64;
295# ifdef SQLITE_UINT64_TYPE
296 typedef SQLITE_UINT64_TYPE sqlite_uint64;
297# else
298 typedef unsigned SQLITE_INT64_TYPE sqlite_uint64;
299# endif
300#elif defined(_MSC_VER) || defined(__BORLANDC__)
301 typedef __int64 sqlite_int64;
302 typedef unsigned __int64 sqlite_uint64;
303#else
304 typedef long long int sqlite_int64;
305 typedef unsigned long long int sqlite_uint64;
306#endif
307typedef sqlite_int64 sqlite3_int64;
308typedef sqlite_uint64 sqlite3_uint64;
309
310/*
311** If compiling for a processor that lacks floating point support,
312** substitute integer for floating-point.
313*/
314#ifdef SQLITE_OMIT_FLOATING_POINT
315# define double sqlite3_int64
316#endif
317
318/*
319** CAPI3REF: Closing A Database Connection
320** DESTRUCTOR: sqlite3
321**
322** ^The sqlite3_close() and sqlite3_close_v2() routines are destructors
323** for the [sqlite3] object.
324** ^Calls to sqlite3_close() and sqlite3_close_v2() return [SQLITE_OK] if
325** the [sqlite3] object is successfully destroyed and all associated
326** resources are deallocated.
327**
328** Ideally, applications should [sqlite3_finalize | finalize] all
329** [prepared statements], [sqlite3_blob_close | close] all [BLOB handles], and
330** [sqlite3_backup_finish | finish] all [sqlite3_backup] objects associated
331** with the [sqlite3] object prior to attempting to close the object.
332** ^If the database connection is associated with unfinalized prepared
333** statements, BLOB handlers, and/or unfinished sqlite3_backup objects then
334** sqlite3_close() will leave the database connection open and return
335** [SQLITE_BUSY]. ^If sqlite3_close_v2() is called with unfinalized prepared
336** statements, unclosed BLOB handlers, and/or unfinished sqlite3_backups,
337** it returns [SQLITE_OK] regardless, but instead of deallocating the database
338** connection immediately, it marks the database connection as an unusable
339** "zombie" and makes arrangements to automatically deallocate the database
340** connection after all prepared statements are finalized, all BLOB handles
341** are closed, and all backups have finished. The sqlite3_close_v2() interface
342** is intended for use with host languages that are garbage collected, and
343** where the order in which destructors are called is arbitrary.
344**
345** ^If an [sqlite3] object is destroyed while a transaction is open,
346** the transaction is automatically rolled back.
347**
348** The C parameter to [sqlite3_close(C)] and [sqlite3_close_v2(C)]
349** must be either a NULL
350** pointer or an [sqlite3] object pointer obtained
351** from [sqlite3_open()], [sqlite3_open16()], or
352** [sqlite3_open_v2()], and not previously closed.
353** ^Calling sqlite3_close() or sqlite3_close_v2() with a NULL pointer
354** argument is a harmless no-op.
355*/
356SQLITE_API int sqlite3_close(sqlite3*);
357SQLITE_API int sqlite3_close_v2(sqlite3*);
358
359/*
360** The type for a callback function.
361** This is legacy and deprecated. It is included for historical
362** compatibility and is not documented.
363*/
364typedef int (*sqlite3_callback)(void*,int,char**, char**);
365
366/*
367** CAPI3REF: One-Step Query Execution Interface
368** METHOD: sqlite3
369**
370** The sqlite3_exec() interface is a convenience wrapper around
371** [sqlite3_prepare_v2()], [sqlite3_step()], and [sqlite3_finalize()],
372** that allows an application to run multiple statements of SQL
373** without having to use a lot of C code.
374**
375** ^The sqlite3_exec() interface runs zero or more UTF-8 encoded,
376** semicolon-separated SQL statements passed into its 2nd argument,
377** in the context of the [database connection] passed in as its 1st
378** argument. ^If the callback function of the 3rd argument to
379** sqlite3_exec() is not NULL, then it is invoked for each result row
380** coming out of the evaluated SQL statements. ^The 4th argument to
381** sqlite3_exec() is relayed through to the 1st argument of each
382** callback invocation. ^If the callback pointer to sqlite3_exec()
383** is NULL, then no callback is ever invoked and result rows are
384** ignored.
385**
386** ^If an error occurs while evaluating the SQL statements passed into
387** sqlite3_exec(), then execution of the current statement stops and
388** subsequent statements are skipped. ^If the 5th parameter to sqlite3_exec()
389** is not NULL then any error message is written into memory obtained
390** from [sqlite3_malloc()] and passed back through the 5th parameter.
391** To avoid memory leaks, the application should invoke [sqlite3_free()]
392** on error message strings returned through the 5th parameter of
393** sqlite3_exec() after the error message string is no longer needed.
394** ^If the 5th parameter to sqlite3_exec() is not NULL and no errors
395** occur, then sqlite3_exec() sets the pointer in its 5th parameter to
396** NULL before returning.
397**
398** ^If an sqlite3_exec() callback returns non-zero, the sqlite3_exec()
399** routine returns SQLITE_ABORT without invoking the callback again and
400** without running any subsequent SQL statements.
401**
402** ^The 2nd argument to the sqlite3_exec() callback function is the
403** number of columns in the result. ^The 3rd argument to the sqlite3_exec()
404** callback is an array of pointers to strings obtained as if from
405** [sqlite3_column_text()], one for each column. ^If an element of a
406** result row is NULL then the corresponding string pointer for the
407** sqlite3_exec() callback is a NULL pointer. ^The 4th argument to the
408** sqlite3_exec() callback is an array of pointers to strings where each
409** entry represents the name of a corresponding result column as obtained
410** from [sqlite3_column_name()].
411**
412** ^If the 2nd parameter to sqlite3_exec() is a NULL pointer, a pointer
413** to an empty string, or a pointer that contains only whitespace and/or
414** SQL comments, then no SQL statements are evaluated and the database
415** is not changed.
416**
417** Restrictions:
418**
419** <ul>
420** <li> The application must ensure that the 1st parameter to sqlite3_exec()
421** is a valid and open [database connection].
422** <li> The application must not close the [database connection] specified by
423** the 1st parameter to sqlite3_exec() while sqlite3_exec() is running.
424** <li> The application must not modify the SQL statement text passed into
425** the 2nd parameter of sqlite3_exec() while sqlite3_exec() is running.
426** <li> The application must not dereference the arrays or string pointers
427** passed as the 3rd and 4th callback parameters after it returns.
428** </ul>
429*/
430SQLITE_API int sqlite3_exec(
431 sqlite3*, /* An open database */
432 const char *sql, /* SQL to be evaluated */
433 int (*callback)(void*,int,char**,char**), /* Callback function */
434 void *, /* 1st argument to callback */
435 char **errmsg /* Error msg written here */
436);
437
438/*
439** CAPI3REF: Result Codes
440** KEYWORDS: {result code definitions}
441**
442** Many SQLite functions return an integer result code from the set shown
443** here in order to indicate success or failure.
444**
445** New error codes may be added in future versions of SQLite.
446**
447** See also: [extended result code definitions]
448*/
449#define SQLITE_OK 0 /* Successful result */
450/* beginning-of-error-codes */
451#define SQLITE_ERROR 1 /* Generic error */
452#define SQLITE_INTERNAL 2 /* Internal logic error in SQLite */
453#define SQLITE_PERM 3 /* Access permission denied */
454#define SQLITE_ABORT 4 /* Callback routine requested an abort */
455#define SQLITE_BUSY 5 /* The database file is locked */
456#define SQLITE_LOCKED 6 /* A table in the database is locked */
457#define SQLITE_NOMEM 7 /* A malloc() failed */
458#define SQLITE_READONLY 8 /* Attempt to write a readonly database */
459#define SQLITE_INTERRUPT 9 /* Operation terminated by sqlite3_interrupt()*/
460#define SQLITE_IOERR 10 /* Some kind of disk I/O error occurred */
461#define SQLITE_CORRUPT 11 /* The database disk image is malformed */
462#define SQLITE_NOTFOUND 12 /* Unknown opcode in sqlite3_file_control() */
463#define SQLITE_FULL 13 /* Insertion failed because database is full */
464#define SQLITE_CANTOPEN 14 /* Unable to open the database file */
465#define SQLITE_PROTOCOL 15 /* Database lock protocol error */
466#define SQLITE_EMPTY 16 /* Internal use only */
467#define SQLITE_SCHEMA 17 /* The database schema changed */
468#define SQLITE_TOOBIG 18 /* String or BLOB exceeds size limit */
469#define SQLITE_CONSTRAINT 19 /* Abort due to constraint violation */
470#define SQLITE_MISMATCH 20 /* Data type mismatch */
471#define SQLITE_MISUSE 21 /* Library used incorrectly */
472#define SQLITE_NOLFS 22 /* Uses OS features not supported on host */
473#define SQLITE_AUTH 23 /* Authorization denied */
474#define SQLITE_FORMAT 24 /* Not used */
475#define SQLITE_RANGE 25 /* 2nd parameter to sqlite3_bind out of range */
476#define SQLITE_NOTADB 26 /* File opened that is not a database file */
477#define SQLITE_NOTICE 27 /* Notifications from sqlite3_log() */
478#define SQLITE_WARNING 28 /* Warnings from sqlite3_log() */
479#define SQLITE_ROW 100 /* sqlite3_step() has another row ready */
480#define SQLITE_DONE 101 /* sqlite3_step() has finished executing */
481/* end-of-error-codes */
482
483/*
484** CAPI3REF: Extended Result Codes
485** KEYWORDS: {extended result code definitions}
486**
487** In its default configuration, SQLite API routines return one of 30 integer
488** [result codes]. However, experience has shown that many of
489** these result codes are too coarse-grained. They do not provide as
490** much information about problems as programmers might like. In an effort to
491** address this, newer versions of SQLite (version 3.3.8 [dateof:3.3.8]
492** and later) include
493** support for additional result codes that provide more detailed information
494** about errors. These [extended result codes] are enabled or disabled
495** on a per database connection basis using the
496** [sqlite3_extended_result_codes()] API. Or, the extended code for
497** the most recent error can be obtained using
498** [sqlite3_extended_errcode()].
499*/
500#define SQLITE_ERROR_MISSING_COLLSEQ (SQLITE_ERROR | (1<<8))
501#define SQLITE_ERROR_RETRY (SQLITE_ERROR | (2<<8))
502#define SQLITE_ERROR_SNAPSHOT (SQLITE_ERROR | (3<<8))
503#define SQLITE_ERROR_RESERVESIZE (SQLITE_ERROR | (4<<8))
504#define SQLITE_ERROR_KEY (SQLITE_ERROR | (5<<8))
505#define SQLITE_ERROR_UNABLE (SQLITE_ERROR | (6<<8))
506#define SQLITE_IOERR_READ (SQLITE_IOERR | (1<<8))
507#define SQLITE_IOERR_SHORT_READ (SQLITE_IOERR | (2<<8))
508#define SQLITE_IOERR_WRITE (SQLITE_IOERR | (3<<8))
509#define SQLITE_IOERR_FSYNC (SQLITE_IOERR | (4<<8))
510#define SQLITE_IOERR_DIR_FSYNC (SQLITE_IOERR | (5<<8))
511#define SQLITE_IOERR_TRUNCATE (SQLITE_IOERR | (6<<8))
512#define SQLITE_IOERR_FSTAT (SQLITE_IOERR | (7<<8))
513#define SQLITE_IOERR_UNLOCK (SQLITE_IOERR | (8<<8))
514#define SQLITE_IOERR_RDLOCK (SQLITE_IOERR | (9<<8))
515#define SQLITE_IOERR_DELETE (SQLITE_IOERR | (10<<8))
516#define SQLITE_IOERR_BLOCKED (SQLITE_IOERR | (11<<8))
517#define SQLITE_IOERR_NOMEM (SQLITE_IOERR | (12<<8))
518#define SQLITE_IOERR_ACCESS (SQLITE_IOERR | (13<<8))
519#define SQLITE_IOERR_CHECKRESERVEDLOCK (SQLITE_IOERR | (14<<8))
520#define SQLITE_IOERR_LOCK (SQLITE_IOERR | (15<<8))
521#define SQLITE_IOERR_CLOSE (SQLITE_IOERR | (16<<8))
522#define SQLITE_IOERR_DIR_CLOSE (SQLITE_IOERR | (17<<8))
523#define SQLITE_IOERR_SHMOPEN (SQLITE_IOERR | (18<<8))
524#define SQLITE_IOERR_SHMSIZE (SQLITE_IOERR | (19<<8))
525#define SQLITE_IOERR_SHMLOCK (SQLITE_IOERR | (20<<8))
526#define SQLITE_IOERR_SHMMAP (SQLITE_IOERR | (21<<8))
527#define SQLITE_IOERR_SEEK (SQLITE_IOERR | (22<<8))
528#define SQLITE_IOERR_DELETE_NOENT (SQLITE_IOERR | (23<<8))
529#define SQLITE_IOERR_MMAP (SQLITE_IOERR | (24<<8))
530#define SQLITE_IOERR_GETTEMPPATH (SQLITE_IOERR | (25<<8))
531#define SQLITE_IOERR_CONVPATH (SQLITE_IOERR | (26<<8))
532#define SQLITE_IOERR_VNODE (SQLITE_IOERR | (27<<8))
533#define SQLITE_IOERR_AUTH (SQLITE_IOERR | (28<<8))
534#define SQLITE_IOERR_BEGIN_ATOMIC (SQLITE_IOERR | (29<<8))
535#define SQLITE_IOERR_COMMIT_ATOMIC (SQLITE_IOERR | (30<<8))
536#define SQLITE_IOERR_ROLLBACK_ATOMIC (SQLITE_IOERR | (31<<8))
537#define SQLITE_IOERR_DATA (SQLITE_IOERR | (32<<8))
538#define SQLITE_IOERR_CORRUPTFS (SQLITE_IOERR | (33<<8))
539#define SQLITE_IOERR_IN_PAGE (SQLITE_IOERR | (34<<8))
540#define SQLITE_IOERR_BADKEY (SQLITE_IOERR | (35<<8))
541#define SQLITE_IOERR_CODEC (SQLITE_IOERR | (36<<8))
542#define SQLITE_LOCKED_SHAREDCACHE (SQLITE_LOCKED | (1<<8))
543#define SQLITE_LOCKED_VTAB (SQLITE_LOCKED | (2<<8))
544#define SQLITE_BUSY_RECOVERY (SQLITE_BUSY | (1<<8))
545#define SQLITE_BUSY_SNAPSHOT (SQLITE_BUSY | (2<<8))
546#define SQLITE_BUSY_TIMEOUT (SQLITE_BUSY | (3<<8))
547#define SQLITE_CANTOPEN_NOTEMPDIR (SQLITE_CANTOPEN | (1<<8))
548#define SQLITE_CANTOPEN_ISDIR (SQLITE_CANTOPEN | (2<<8))
549#define SQLITE_CANTOPEN_FULLPATH (SQLITE_CANTOPEN | (3<<8))
550#define SQLITE_CANTOPEN_CONVPATH (SQLITE_CANTOPEN | (4<<8))
551#define SQLITE_CANTOPEN_DIRTYWAL (SQLITE_CANTOPEN | (5<<8)) /* Not Used */
552#define SQLITE_CANTOPEN_SYMLINK (SQLITE_CANTOPEN | (6<<8))
553#define SQLITE_CORRUPT_VTAB (SQLITE_CORRUPT | (1<<8))
554#define SQLITE_CORRUPT_SEQUENCE (SQLITE_CORRUPT | (2<<8))
555#define SQLITE_CORRUPT_INDEX (SQLITE_CORRUPT | (3<<8))
556#define SQLITE_READONLY_RECOVERY (SQLITE_READONLY | (1<<8))
557#define SQLITE_READONLY_CANTLOCK (SQLITE_READONLY | (2<<8))
558#define SQLITE_READONLY_ROLLBACK (SQLITE_READONLY | (3<<8))
559#define SQLITE_READONLY_DBMOVED (SQLITE_READONLY | (4<<8))
560#define SQLITE_READONLY_CANTINIT (SQLITE_READONLY | (5<<8))
561#define SQLITE_READONLY_DIRECTORY (SQLITE_READONLY | (6<<8))
562#define SQLITE_ABORT_ROLLBACK (SQLITE_ABORT | (2<<8))
563#define SQLITE_CONSTRAINT_CHECK (SQLITE_CONSTRAINT | (1<<8))
564#define SQLITE_CONSTRAINT_COMMITHOOK (SQLITE_CONSTRAINT | (2<<8))
565#define SQLITE_CONSTRAINT_FOREIGNKEY (SQLITE_CONSTRAINT | (3<<8))
566#define SQLITE_CONSTRAINT_FUNCTION (SQLITE_CONSTRAINT | (4<<8))
567#define SQLITE_CONSTRAINT_NOTNULL (SQLITE_CONSTRAINT | (5<<8))
568#define SQLITE_CONSTRAINT_PRIMARYKEY (SQLITE_CONSTRAINT | (6<<8))
569#define SQLITE_CONSTRAINT_TRIGGER (SQLITE_CONSTRAINT | (7<<8))
570#define SQLITE_CONSTRAINT_UNIQUE (SQLITE_CONSTRAINT | (8<<8))
571#define SQLITE_CONSTRAINT_VTAB (SQLITE_CONSTRAINT | (9<<8))
572#define SQLITE_CONSTRAINT_ROWID (SQLITE_CONSTRAINT |(10<<8))
573#define SQLITE_CONSTRAINT_PINNED (SQLITE_CONSTRAINT |(11<<8))
574#define SQLITE_CONSTRAINT_DATATYPE (SQLITE_CONSTRAINT |(12<<8))
575#define SQLITE_NOTICE_RECOVER_WAL (SQLITE_NOTICE | (1<<8))
576#define SQLITE_NOTICE_RECOVER_ROLLBACK (SQLITE_NOTICE | (2<<8))
577#define SQLITE_NOTICE_RBU (SQLITE_NOTICE | (3<<8))
578#define SQLITE_WARNING_AUTOINDEX (SQLITE_WARNING | (1<<8))
579#define SQLITE_AUTH_USER (SQLITE_AUTH | (1<<8))
580#define SQLITE_OK_LOAD_PERMANENTLY (SQLITE_OK | (1<<8))
581#define SQLITE_OK_SYMLINK (SQLITE_OK | (2<<8)) /* internal only */
582
583/*
584** CAPI3REF: Flags For File Open Operations
585**
586** These bit values are intended for use in the
587** 3rd parameter to the [sqlite3_open_v2()] interface and
588** in the 4th parameter to the [sqlite3_vfs.xOpen] method.
589**
590** Only those flags marked as "Ok for sqlite3_open_v2()" may be
591** used as the third argument to the [sqlite3_open_v2()] interface.
592** The other flags have historically been ignored by sqlite3_open_v2(),
593** though future versions of SQLite might change so that an error is
594** raised if any of the disallowed bits are passed into sqlite3_open_v2().
595** Applications should not depend on the historical behavior.
596**
597** Note in particular that passing the SQLITE_OPEN_EXCLUSIVE flag into
598** [sqlite3_open_v2()] does *not* cause the underlying database file
599** to be opened using O_EXCL. Passing SQLITE_OPEN_EXCLUSIVE into
600** [sqlite3_open_v2()] has historically been a no-op and might become an
601** error in future versions of SQLite.
602*/
603#define SQLITE_OPEN_READONLY 0x00000001 /* Ok for sqlite3_open_v2() */
604#define SQLITE_OPEN_READWRITE 0x00000002 /* Ok for sqlite3_open_v2() */
605#define SQLITE_OPEN_CREATE 0x00000004 /* Ok for sqlite3_open_v2() */
606#define SQLITE_OPEN_DELETEONCLOSE 0x00000008 /* VFS only */
607#define SQLITE_OPEN_EXCLUSIVE 0x00000010 /* VFS only */
608#define SQLITE_OPEN_AUTOPROXY 0x00000020 /* VFS only */
609#define SQLITE_OPEN_URI 0x00000040 /* Ok for sqlite3_open_v2() */
610#define SQLITE_OPEN_MEMORY 0x00000080 /* Ok for sqlite3_open_v2() */
611#define SQLITE_OPEN_MAIN_DB 0x00000100 /* VFS only */
612#define SQLITE_OPEN_TEMP_DB 0x00000200 /* VFS only */
613#define SQLITE_OPEN_TRANSIENT_DB 0x00000400 /* VFS only */
614#define SQLITE_OPEN_MAIN_JOURNAL 0x00000800 /* VFS only */
615#define SQLITE_OPEN_TEMP_JOURNAL 0x00001000 /* VFS only */
616#define SQLITE_OPEN_SUBJOURNAL 0x00002000 /* VFS only */
617#define SQLITE_OPEN_SUPER_JOURNAL 0x00004000 /* VFS only */
618#define SQLITE_OPEN_NOMUTEX 0x00008000 /* Ok for sqlite3_open_v2() */
619#define SQLITE_OPEN_FULLMUTEX 0x00010000 /* Ok for sqlite3_open_v2() */
620#define SQLITE_OPEN_SHAREDCACHE 0x00020000 /* Ok for sqlite3_open_v2() */
621#define SQLITE_OPEN_PRIVATECACHE 0x00040000 /* Ok for sqlite3_open_v2() */
622#define SQLITE_OPEN_WAL 0x00080000 /* VFS only */
623#define SQLITE_OPEN_NOFOLLOW 0x01000000 /* Ok for sqlite3_open_v2() */
624#define SQLITE_OPEN_EXRESCODE 0x02000000 /* Extended result codes */
625
626/* Reserved: 0x00F00000 */
627/* Legacy compatibility: */
628#define SQLITE_OPEN_MASTER_JOURNAL 0x00004000 /* VFS only */
629
630
631/*
632** CAPI3REF: Device Characteristics
633**
634** The xDeviceCharacteristics method of the [sqlite3_io_methods]
635** object returns an integer which is a vector of these
636** bit values expressing I/O characteristics of the mass storage
637** device that holds the file that the [sqlite3_io_methods]
638** refers to.
639**
640** The SQLITE_IOCAP_ATOMIC property means that all writes of
641** any size are atomic. The SQLITE_IOCAP_ATOMICnnn values
642** mean that writes of blocks that are nnn bytes in size and
643** are aligned to an address which is an integer multiple of
644** nnn are atomic. The SQLITE_IOCAP_SAFE_APPEND value means
645** that when data is appended to a file, the data is appended
646** first then the size of the file is extended, never the other
647** way around. The SQLITE_IOCAP_SEQUENTIAL property means that
648** information is written to disk in the same order as calls
649** to xWrite(). The SQLITE_IOCAP_POWERSAFE_OVERWRITE property means that
650** after reboot following a crash or power loss, the only bytes in a
651** file that were written at the application level might have changed
652** and that adjacent bytes, even bytes within the same sector are
653** guaranteed to be unchanged. The SQLITE_IOCAP_UNDELETABLE_WHEN_OPEN
654** flag indicates that a file cannot be deleted when open. The
655** SQLITE_IOCAP_IMMUTABLE flag indicates that the file is on
656** read-only media and cannot be changed even by processes with
657** elevated privileges.
658**
659** The SQLITE_IOCAP_BATCH_ATOMIC property means that the underlying
660** filesystem supports doing multiple write operations atomically when those
661** write operations are bracketed by [SQLITE_FCNTL_BEGIN_ATOMIC_WRITE] and
662** [SQLITE_FCNTL_COMMIT_ATOMIC_WRITE].
663**
664** The SQLITE_IOCAP_SUBPAGE_READ property means that it is ok to read
665** from the database file in amounts that are not a multiple of the
666** page size and that do not begin at a page boundary. Without this
667** property, SQLite is careful to only do full-page reads and write
668** on aligned pages, with the one exception that it will do a sub-page
669** read of the first page to access the database header.
670*/
671#define SQLITE_IOCAP_ATOMIC 0x00000001
672#define SQLITE_IOCAP_ATOMIC512 0x00000002
673#define SQLITE_IOCAP_ATOMIC1K 0x00000004
674#define SQLITE_IOCAP_ATOMIC2K 0x00000008
675#define SQLITE_IOCAP_ATOMIC4K 0x00000010
676#define SQLITE_IOCAP_ATOMIC8K 0x00000020
677#define SQLITE_IOCAP_ATOMIC16K 0x00000040
678#define SQLITE_IOCAP_ATOMIC32K 0x00000080
679#define SQLITE_IOCAP_ATOMIC64K 0x00000100
680#define SQLITE_IOCAP_SAFE_APPEND 0x00000200
681#define SQLITE_IOCAP_SEQUENTIAL 0x00000400
682#define SQLITE_IOCAP_UNDELETABLE_WHEN_OPEN 0x00000800
683#define SQLITE_IOCAP_POWERSAFE_OVERWRITE 0x00001000
684#define SQLITE_IOCAP_IMMUTABLE 0x00002000
685#define SQLITE_IOCAP_BATCH_ATOMIC 0x00004000
686#define SQLITE_IOCAP_SUBPAGE_READ 0x00008000
687
688/*
689** CAPI3REF: File Locking Levels
690**
691** SQLite uses one of these integer values as the second
692** argument to calls it makes to the xLock() and xUnlock() methods
693** of an [sqlite3_io_methods] object. These values are ordered from
694** least restrictive to most restrictive.
695**
696** The argument to xLock() is always SHARED or higher. The argument to
697** xUnlock is either SHARED or NONE.
698*/
699#define SQLITE_LOCK_NONE 0 /* xUnlock() only */
700#define SQLITE_LOCK_SHARED 1 /* xLock() or xUnlock() */
701#define SQLITE_LOCK_RESERVED 2 /* xLock() only */
702#define SQLITE_LOCK_PENDING 3 /* xLock() only */
703#define SQLITE_LOCK_EXCLUSIVE 4 /* xLock() only */
704
705/*
706** CAPI3REF: Synchronization Type Flags
707**
708** When SQLite invokes the xSync() method of an
709** [sqlite3_io_methods] object it uses a combination of
710** these integer values as the second argument.
711**
712** When the SQLITE_SYNC_DATAONLY flag is used, it means that the
713** sync operation only needs to flush data to mass storage. Inode
714** information need not be flushed. If the lower four bits of the flag
715** equal SQLITE_SYNC_NORMAL, that means to use normal fsync() semantics.
716** If the lower four bits equal SQLITE_SYNC_FULL, that means
717** to use Mac OS X style fullsync instead of fsync().
718**
719** Do not confuse the SQLITE_SYNC_NORMAL and SQLITE_SYNC_FULL flags
720** with the [PRAGMA synchronous]=NORMAL and [PRAGMA synchronous]=FULL
721** settings. The [synchronous pragma] determines when calls to the
722** xSync VFS method occur and applies uniformly across all platforms.
723** The SQLITE_SYNC_NORMAL and SQLITE_SYNC_FULL flags determine how
724** energetic or rigorous or forceful the sync operations are and
725** only make a difference on Mac OSX for the default SQLite code.
726** (Third-party VFS implementations might also make the distinction
727** between SQLITE_SYNC_NORMAL and SQLITE_SYNC_FULL, but among the
728** operating systems natively supported by SQLite, only Mac OSX
729** cares about the difference.)
730*/
731#define SQLITE_SYNC_NORMAL 0x00002
732#define SQLITE_SYNC_FULL 0x00003
733#define SQLITE_SYNC_DATAONLY 0x00010
734
735/*
736** CAPI3REF: OS Interface Open File Handle
737**
738** An [sqlite3_file] object represents an open file in the
739** [sqlite3_vfs | OS interface layer]. Individual OS interface
740** implementations will
741** want to subclass this object by appending additional fields
742** for their own use. The pMethods entry is a pointer to an
743** [sqlite3_io_methods] object that defines methods for performing
744** I/O operations on the open file.
745*/
746typedef struct sqlite3_file sqlite3_file;
747struct sqlite3_file {
748 const struct sqlite3_io_methods *pMethods; /* Methods for an open file */
749};
750
751/*
752** CAPI3REF: OS Interface File Virtual Methods Object
753**
754** Every file opened by the [sqlite3_vfs.xOpen] method populates an
755** [sqlite3_file] object (or, more commonly, a subclass of the
756** [sqlite3_file] object) with a pointer to an instance of this object.
757** This object defines the methods used to perform various operations
758** against the open file represented by the [sqlite3_file] object.
759**
760** If the [sqlite3_vfs.xOpen] method sets the sqlite3_file.pMethods element
761** to a non-NULL pointer, then the sqlite3_io_methods.xClose method
762** may be invoked even if the [sqlite3_vfs.xOpen] reported that it failed. The
763** only way to prevent a call to xClose following a failed [sqlite3_vfs.xOpen]
764** is for the [sqlite3_vfs.xOpen] to set the sqlite3_file.pMethods element
765** to NULL.
766**
767** The flags argument to xSync may be one of [SQLITE_SYNC_NORMAL] or
768** [SQLITE_SYNC_FULL]. The first choice is the normal fsync().
769** The second choice is a Mac OS X style fullsync. The [SQLITE_SYNC_DATAONLY]
770** flag may be ORed in to indicate that only the data of the file
771** and not its inode needs to be synced.
772**
773** The integer values to xLock() and xUnlock() are one of
774** <ul>
775** <li> [SQLITE_LOCK_NONE],
776** <li> [SQLITE_LOCK_SHARED],
777** <li> [SQLITE_LOCK_RESERVED],
778** <li> [SQLITE_LOCK_PENDING], or
779** <li> [SQLITE_LOCK_EXCLUSIVE].
780** </ul>
781** xLock() upgrades the database file lock. In other words, xLock() moves the
782** database file lock in the direction NONE toward EXCLUSIVE. The argument to
783** xLock() is always one of SHARED, RESERVED, PENDING, or EXCLUSIVE, never
784** SQLITE_LOCK_NONE. If the database file lock is already at or above the
785** requested lock, then the call to xLock() is a no-op.
786** xUnlock() downgrades the database file lock to either SHARED or NONE.
787** If the lock is already at or below the requested lock state, then the call
788** to xUnlock() is a no-op.
789** The xCheckReservedLock() method checks whether any database connection,
790** either in this process or in some other process, is holding a RESERVED,
791** PENDING, or EXCLUSIVE lock on the file. It returns, via its output
792** pointer parameter, true if such a lock exists and false otherwise.
793**
794** The xFileControl() method is a generic interface that allows custom
795** VFS implementations to directly control an open file using the
796** [sqlite3_file_control()] interface. The second "op" argument is an
797** integer opcode. The third argument is a generic pointer intended to
798** point to a structure that may contain arguments or space in which to
799** write return values. Potential uses for xFileControl() might be
800** functions to enable blocking locks with timeouts, to change the
801** locking strategy (for example to use dot-file locks), to inquire
802** about the status of a lock, or to break stale locks. The SQLite
803** core reserves all opcodes less than 100 for its own use.
804** A [file control opcodes | list of opcodes] less than 100 is available.
805** Applications that define a custom xFileControl method should use opcodes
806** greater than 100 to avoid conflicts. VFS implementations should
807** return [SQLITE_NOTFOUND] for file control opcodes that they do not
808** recognize.
809**
810** The xSectorSize() method returns the sector size of the
811** device that underlies the file. The sector size is the
812** minimum write that can be performed without disturbing
813** other bytes in the file. The xDeviceCharacteristics()
814** method returns a bit vector describing behaviors of the
815** underlying device:
816**
817** <ul>
818** <li> [SQLITE_IOCAP_ATOMIC]
819** <li> [SQLITE_IOCAP_ATOMIC512]
820** <li> [SQLITE_IOCAP_ATOMIC1K]
821** <li> [SQLITE_IOCAP_ATOMIC2K]
822** <li> [SQLITE_IOCAP_ATOMIC4K]
823** <li> [SQLITE_IOCAP_ATOMIC8K]
824** <li> [SQLITE_IOCAP_ATOMIC16K]
825** <li> [SQLITE_IOCAP_ATOMIC32K]
826** <li> [SQLITE_IOCAP_ATOMIC64K]
827** <li> [SQLITE_IOCAP_SAFE_APPEND]
828** <li> [SQLITE_IOCAP_SEQUENTIAL]
829** <li> [SQLITE_IOCAP_UNDELETABLE_WHEN_OPEN]
830** <li> [SQLITE_IOCAP_POWERSAFE_OVERWRITE]
831** <li> [SQLITE_IOCAP_IMMUTABLE]
832** <li> [SQLITE_IOCAP_BATCH_ATOMIC]
833** <li> [SQLITE_IOCAP_SUBPAGE_READ]
834** </ul>
835**
836** The SQLITE_IOCAP_ATOMIC property means that all writes of
837** any size are atomic. The SQLITE_IOCAP_ATOMICnnn values
838** mean that writes of blocks that are nnn bytes in size and
839** are aligned to an address which is an integer multiple of
840** nnn are atomic. The SQLITE_IOCAP_SAFE_APPEND value means
841** that when data is appended to a file, the data is appended
842** first then the size of the file is extended, never the other
843** way around. The SQLITE_IOCAP_SEQUENTIAL property means that
844** information is written to disk in the same order as calls
845** to xWrite().
846**
847** If xRead() returns SQLITE_IOERR_SHORT_READ it must also fill
848** in the unread portions of the buffer with zeros. A VFS that
849** fails to zero-fill short reads might seem to work. However,
850** failure to zero-fill short reads will eventually lead to
851** database corruption.
852*/
853typedef struct sqlite3_io_methods sqlite3_io_methods;
854struct sqlite3_io_methods {
855 int iVersion;
856 int (*xClose)(sqlite3_file*);
857 int (*xRead)(sqlite3_file*, void*, int iAmt, sqlite3_int64 iOfst);
858 int (*xWrite)(sqlite3_file*, const void*, int iAmt, sqlite3_int64 iOfst);
859 int (*xTruncate)(sqlite3_file*, sqlite3_int64 size);
860 int (*xSync)(sqlite3_file*, int flags);
861 int (*xFileSize)(sqlite3_file*, sqlite3_int64 *pSize);
862 int (*xLock)(sqlite3_file*, int);
863 int (*xUnlock)(sqlite3_file*, int);
864 int (*xCheckReservedLock)(sqlite3_file*, int *pResOut);
865 int (*xFileControl)(sqlite3_file*, int op, void *pArg);
866 int (*xSectorSize)(sqlite3_file*);
867 int (*xDeviceCharacteristics)(sqlite3_file*);
868 /* Methods above are valid for version 1 */
869 int (*xShmMap)(sqlite3_file*, int iPg, int pgsz, int, void volatile**);
870 int (*xShmLock)(sqlite3_file*, int offset, int n, int flags);
871 void (*xShmBarrier)(sqlite3_file*);
872 int (*xShmUnmap)(sqlite3_file*, int deleteFlag);
873 /* Methods above are valid for version 2 */
874 int (*xFetch)(sqlite3_file*, sqlite3_int64 iOfst, int iAmt, void **pp);
875 int (*xUnfetch)(sqlite3_file*, sqlite3_int64 iOfst, void *p);
876 /* Methods above are valid for version 3 */
877 /* Additional methods may be added in future releases */
878};
879
880/*
881** CAPI3REF: Standard File Control Opcodes
882** KEYWORDS: {file control opcodes} {file control opcode}
883**
884** These integer constants are opcodes for the xFileControl method
885** of the [sqlite3_io_methods] object and for the [sqlite3_file_control()]
886** interface.
887**
888** <ul>
889** <li>[[SQLITE_FCNTL_LOCKSTATE]]
890** The [SQLITE_FCNTL_LOCKSTATE] opcode is used for debugging. This
891** opcode causes the xFileControl method to write the current state of
892** the lock (one of [SQLITE_LOCK_NONE], [SQLITE_LOCK_SHARED],
893** [SQLITE_LOCK_RESERVED], [SQLITE_LOCK_PENDING], or [SQLITE_LOCK_EXCLUSIVE])
894** into an integer that the pArg argument points to.
895** This capability is only available if SQLite is compiled with [SQLITE_DEBUG].
896**
897** <li>[[SQLITE_FCNTL_SIZE_HINT]]
898** The [SQLITE_FCNTL_SIZE_HINT] opcode is used by SQLite to give the VFS
899** layer a hint of how large the database file will grow to be during the
900** current transaction. This hint is not guaranteed to be accurate but it
901** is often close. The underlying VFS might choose to preallocate database
902** file space based on this hint in order to help writes to the database
903** file run faster.
904**
905** <li>[[SQLITE_FCNTL_SIZE_LIMIT]]
906** The [SQLITE_FCNTL_SIZE_LIMIT] opcode is used by in-memory VFS that
907** implements [sqlite3_deserialize()] to set an upper bound on the size
908** of the in-memory database. The argument is a pointer to a [sqlite3_int64].
909** If the integer pointed to is negative, then it is filled in with the
910** current limit. Otherwise the limit is set to the larger of the value
911** of the integer pointed to and the current database size. The integer
912** pointed to is set to the new limit.
913**
914** <li>[[SQLITE_FCNTL_CHUNK_SIZE]]
915** The [SQLITE_FCNTL_CHUNK_SIZE] opcode is used to request that the VFS
916** extends and truncates the database file in chunks of a size specified
917** by the user. The fourth argument to [sqlite3_file_control()] should
918** point to an integer (type int) containing the new chunk-size to use
919** for the nominated database. Allocating database file space in large
920** chunks (say 1MB at a time), may reduce file-system fragmentation and
921** improve performance on some systems.
922**
923** <li>[[SQLITE_FCNTL_FILE_POINTER]]
924** The [SQLITE_FCNTL_FILE_POINTER] opcode is used to obtain a pointer
925** to the [sqlite3_file] object associated with a particular database
926** connection. See also [SQLITE_FCNTL_JOURNAL_POINTER].
927**
928** <li>[[SQLITE_FCNTL_JOURNAL_POINTER]]
929** The [SQLITE_FCNTL_JOURNAL_POINTER] opcode is used to obtain a pointer
930** to the [sqlite3_file] object associated with the journal file (either
931** the [rollback journal] or the [write-ahead log]) for a particular database
932** connection. See also [SQLITE_FCNTL_FILE_POINTER].
933**
934** <li>[[SQLITE_FCNTL_SYNC_OMITTED]]
935** The SQLITE_FCNTL_SYNC_OMITTED file-control is no longer used.
936**
937** <li>[[SQLITE_FCNTL_SYNC]]
938** The [SQLITE_FCNTL_SYNC] opcode is generated internally by SQLite and
939** sent to the VFS immediately before the xSync method is invoked on a
940** database file descriptor. Or, if the xSync method is not invoked
941** because the user has configured SQLite with
942** [PRAGMA synchronous | PRAGMA synchronous=OFF] it is invoked in place
943** of the xSync method. In most cases, the pointer argument passed with
944** this file-control is NULL. However, if the database file is being synced
945** as part of a multi-database commit, the argument points to a nul-terminated
946** string containing the transactions super-journal file name. VFSes that
947** do not need this signal should silently ignore this opcode. Applications
948** should not call [sqlite3_file_control()] with this opcode as doing so may
949** disrupt the operation of the specialized VFSes that do require it.
950**
951** <li>[[SQLITE_FCNTL_COMMIT_PHASETWO]]
952** The [SQLITE_FCNTL_COMMIT_PHASETWO] opcode is generated internally by SQLite
953** and sent to the VFS after a transaction has been committed immediately
954** but before the database is unlocked. VFSes that do not need this signal
955** should silently ignore this opcode. Applications should not call
956** [sqlite3_file_control()] with this opcode as doing so may disrupt the
957** operation of the specialized VFSes that do require it.
958**
959** <li>[[SQLITE_FCNTL_WIN32_AV_RETRY]]
960** ^The [SQLITE_FCNTL_WIN32_AV_RETRY] opcode is used to configure automatic
961** retry counts and intervals for certain disk I/O operations for the
962** windows [VFS] in order to provide robustness in the presence of
963** anti-virus programs. By default, the windows VFS will retry file read,
964** file write, and file delete operations up to 10 times, with a delay
965** of 25 milliseconds before the first retry and with the delay increasing
966** by an additional 25 milliseconds with each subsequent retry. This
967** opcode allows these two values (10 retries and 25 milliseconds of delay)
968** to be adjusted. The values are changed for all database connections
969** within the same process. The argument is a pointer to an array of two
970** integers where the first integer is the new retry count and the second
971** integer is the delay. If either integer is negative, then the setting
972** is not changed but instead the prior value of that setting is written
973** into the array entry, allowing the current retry settings to be
974** interrogated. The zDbName parameter is ignored.
975**
976** <li>[[SQLITE_FCNTL_PERSIST_WAL]]
977** ^The [SQLITE_FCNTL_PERSIST_WAL] opcode is used to set or query the
978** persistent [WAL | Write Ahead Log] setting. By default, the auxiliary
979** write ahead log ([WAL file]) and shared memory
980** files used for transaction control
981** are automatically deleted when the latest connection to the database
982** closes. Setting persistent WAL mode causes those files to persist after
983** close. Persisting the files is useful when other processes that do not
984** have write permission on the directory containing the database file want
985** to read the database file, as the WAL and shared memory files must exist
986** in order for the database to be readable. The fourth parameter to
987** [sqlite3_file_control()] for this opcode should be a pointer to an integer.
988** That integer is 0 to disable persistent WAL mode or 1 to enable persistent
989** WAL mode. If the integer is -1, then it is overwritten with the current
990** WAL persistence setting.
991**
992** <li>[[SQLITE_FCNTL_POWERSAFE_OVERWRITE]]
993** ^The [SQLITE_FCNTL_POWERSAFE_OVERWRITE] opcode is used to set or query the
994** persistent "powersafe-overwrite" or "PSOW" setting. The PSOW setting
995** determines the [SQLITE_IOCAP_POWERSAFE_OVERWRITE] bit of the
996** xDeviceCharacteristics methods. The fourth parameter to
997** [sqlite3_file_control()] for this opcode should be a pointer to an integer.
998** That integer is 0 to disable zero-damage mode or 1 to enable zero-damage
999** mode. If the integer is -1, then it is overwritten with the current
1000** zero-damage mode setting.
1001**
1002** <li>[[SQLITE_FCNTL_OVERWRITE]]
1003** ^The [SQLITE_FCNTL_OVERWRITE] opcode is invoked by SQLite after opening
1004** a write transaction to indicate that, unless it is rolled back for some
1005** reason, the entire database file will be overwritten by the current
1006** transaction. This is used by VACUUM operations.
1007**
1008** <li>[[SQLITE_FCNTL_VFSNAME]]
1009** ^The [SQLITE_FCNTL_VFSNAME] opcode can be used to obtain the names of
1010** all [VFSes] in the VFS stack. The names of all VFS shims and the
1011** final bottom-level VFS are written into memory obtained from
1012** [sqlite3_malloc()] and the result is stored in the char* variable
1013** that the fourth parameter of [sqlite3_file_control()] points to.
1014** The caller is responsible for freeing the memory when done. As with
1015** all file-control actions, there is no guarantee that this will actually
1016** do anything. Callers should initialize the char* variable to a NULL
1017** pointer in case this file-control is not implemented. This file-control
1018** is intended for diagnostic use only.
1019**
1020** <li>[[SQLITE_FCNTL_VFS_POINTER]]
1021** ^The [SQLITE_FCNTL_VFS_POINTER] opcode finds a pointer to the top-level
1022** [VFSes] currently in use. ^(The argument X in
1023** sqlite3_file_control(db,SQLITE_FCNTL_VFS_POINTER,X) must be
1024** of type "[sqlite3_vfs] **". This opcode will set *X
1025** to a pointer to the top-level VFS.)^
1026** ^When there are multiple VFS shims in the stack, this opcode finds the
1027** upper-most shim only.
1028**
1029** <li>[[SQLITE_FCNTL_PRAGMA]]
1030** ^Whenever a [PRAGMA] statement is parsed, an [SQLITE_FCNTL_PRAGMA]
1031** file control is sent to the open [sqlite3_file] object corresponding
1032** to the database file to which the pragma statement refers. ^The argument
1033** to the [SQLITE_FCNTL_PRAGMA] file control is an array of
1034** pointers to strings (char**) in which the second element of the array
1035** is the name of the pragma and the third element is the argument to the
1036** pragma or NULL if the pragma has no argument. ^The handler for an
1037** [SQLITE_FCNTL_PRAGMA] file control can optionally make the first element
1038** of the char** argument point to a string obtained from [sqlite3_mprintf()]
1039** or the equivalent and that string will become the result of the pragma or
1040** the error message if the pragma fails. ^If the
1041** [SQLITE_FCNTL_PRAGMA] file control returns [SQLITE_NOTFOUND], then normal
1042** [PRAGMA] processing continues. ^If the [SQLITE_FCNTL_PRAGMA]
1043** file control returns [SQLITE_OK], then the parser assumes that the
1044** VFS has handled the PRAGMA itself and the parser generates a no-op
1045** prepared statement if result string is NULL, or that returns a copy
1046** of the result string if the string is non-NULL.
1047** ^If the [SQLITE_FCNTL_PRAGMA] file control returns
1048** any result code other than [SQLITE_OK] or [SQLITE_NOTFOUND], that means
1049** that the VFS encountered an error while handling the [PRAGMA] and the
1050** compilation of the PRAGMA fails with an error. ^The [SQLITE_FCNTL_PRAGMA]
1051** file control occurs at the beginning of pragma statement analysis and so
1052** it is able to override built-in [PRAGMA] statements.
1053**
1054** <li>[[SQLITE_FCNTL_BUSYHANDLER]]
1055** ^The [SQLITE_FCNTL_BUSYHANDLER]
1056** file-control may be invoked by SQLite on the database file handle
1057** shortly after it is opened in order to provide a custom VFS with access
1058** to the connection's busy-handler callback. The argument is of type (void**)
1059** - an array of two (void *) values. The first (void *) actually points
1060** to a function of type (int (*)(void *)). In order to invoke the connection's
1061** busy-handler, this function should be invoked with the second (void *) in
1062** the array as the only argument. If it returns non-zero, then the operation
1063** should be retried. If it returns zero, the custom VFS should abandon the
1064** current operation.
1065**
1066** <li>[[SQLITE_FCNTL_TEMPFILENAME]]
1067** ^Applications can invoke the [SQLITE_FCNTL_TEMPFILENAME] file-control
1068** to have SQLite generate a
1069** temporary filename using the same algorithm that is followed to generate
1070** temporary filenames for TEMP tables and other internal uses. The
1071** argument should be a char** which will be filled with the filename
1072** written into memory obtained from [sqlite3_malloc()]. The caller should
1073** invoke [sqlite3_free()] on the result to avoid a memory leak.
1074**
1075** <li>[[SQLITE_FCNTL_MMAP_SIZE]]
1076** The [SQLITE_FCNTL_MMAP_SIZE] file control is used to query or set the
1077** maximum number of bytes that will be used for memory-mapped I/O.
1078** The argument is a pointer to a value of type sqlite3_int64 that
1079** is an advisory maximum number of bytes in the file to memory map. The
1080** pointer is overwritten with the old value. The limit is not changed if
1081** the value originally pointed to is negative, and so the current limit
1082** can be queried by passing in a pointer to a negative number. This
1083** file-control is used internally to implement [PRAGMA mmap_size].
1084**
1085** <li>[[SQLITE_FCNTL_TRACE]]
1086** The [SQLITE_FCNTL_TRACE] file control provides advisory information
1087** to the VFS about what the higher layers of the SQLite stack are doing.
1088** This file control is used by some VFS activity tracing [shims].
1089** The argument is a zero-terminated string. Higher layers in the
1090** SQLite stack may generate instances of this file control if
1091** the [SQLITE_USE_FCNTL_TRACE] compile-time option is enabled.
1092**
1093** <li>[[SQLITE_FCNTL_HAS_MOVED]]
1094** The [SQLITE_FCNTL_HAS_MOVED] file control interprets its argument as a
1095** pointer to an integer and it writes a boolean into that integer depending
1096** on whether or not the file has been renamed, moved, or deleted since it
1097** was first opened.
1098**
1099** <li>[[SQLITE_FCNTL_WIN32_GET_HANDLE]]
1100** The [SQLITE_FCNTL_WIN32_GET_HANDLE] opcode can be used to obtain the
1101** underlying native file handle associated with a file handle. This file
1102** control interprets its argument as a pointer to a native file handle and
1103** writes the resulting value there.
1104**
1105** <li>[[SQLITE_FCNTL_WIN32_SET_HANDLE]]
1106** The [SQLITE_FCNTL_WIN32_SET_HANDLE] opcode is used for debugging. This
1107** opcode causes the xFileControl method to swap the file handle with the one
1108** pointed to by the pArg argument. This capability is used during testing
1109** and only needs to be supported when SQLITE_TEST is defined.
1110**
1111** <li>[[SQLITE_FCNTL_NULL_IO]]
1112** The [SQLITE_FCNTL_NULL_IO] opcode sets the low-level file descriptor
1113** or file handle for the [sqlite3_file] object such that it will no longer
1114** read or write to the database file.
1115**
1116** <li>[[SQLITE_FCNTL_WAL_BLOCK]]
1117** The [SQLITE_FCNTL_WAL_BLOCK] is a signal to the VFS layer that it might
1118** be advantageous to block on the next WAL lock if the lock is not immediately
1119** available. The WAL subsystem issues this signal during rare
1120** circumstances in order to fix a problem with priority inversion.
1121** Applications should <em>not</em> use this file-control.
1122**
1123** <li>[[SQLITE_FCNTL_ZIPVFS]]
1124** The [SQLITE_FCNTL_ZIPVFS] opcode is implemented by zipvfs only. All other
1125** VFS should return SQLITE_NOTFOUND for this opcode.
1126**
1127** <li>[[SQLITE_FCNTL_RBU]]
1128** The [SQLITE_FCNTL_RBU] opcode is implemented by the special VFS used by
1129** the RBU extension only. All other VFS should return SQLITE_NOTFOUND for
1130** this opcode.
1131**
1132** <li>[[SQLITE_FCNTL_BEGIN_ATOMIC_WRITE]]
1133** If the [SQLITE_FCNTL_BEGIN_ATOMIC_WRITE] opcode returns SQLITE_OK, then
1134** the file descriptor is placed in "batch write mode", which
1135** means all subsequent write operations will be deferred and done
1136** atomically at the next [SQLITE_FCNTL_COMMIT_ATOMIC_WRITE]. Systems
1137** that do not support batch atomic writes will return SQLITE_NOTFOUND.
1138** ^Following a successful SQLITE_FCNTL_BEGIN_ATOMIC_WRITE and prior to
1139** the closing [SQLITE_FCNTL_COMMIT_ATOMIC_WRITE] or
1140** [SQLITE_FCNTL_ROLLBACK_ATOMIC_WRITE], SQLite will make
1141** no VFS interface calls on the same [sqlite3_file] file descriptor
1142** except for calls to the xWrite method and the xFileControl method
1143** with [SQLITE_FCNTL_SIZE_HINT].
1144**
1145** <li>[[SQLITE_FCNTL_COMMIT_ATOMIC_WRITE]]
1146** The [SQLITE_FCNTL_COMMIT_ATOMIC_WRITE] opcode causes all write
1147** operations since the previous successful call to
1148** [SQLITE_FCNTL_BEGIN_ATOMIC_WRITE] to be performed atomically.
1149** This file control returns [SQLITE_OK] if and only if the writes were
1150** all performed successfully and have been committed to persistent storage.
1151** ^Regardless of whether or not it is successful, this file control takes
1152** the file descriptor out of batch write mode so that all subsequent
1153** write operations are independent.
1154** ^SQLite will never invoke SQLITE_FCNTL_COMMIT_ATOMIC_WRITE without
1155** a prior successful call to [SQLITE_FCNTL_BEGIN_ATOMIC_WRITE].
1156**
1157** <li>[[SQLITE_FCNTL_ROLLBACK_ATOMIC_WRITE]]
1158** The [SQLITE_FCNTL_ROLLBACK_ATOMIC_WRITE] opcode causes all write
1159** operations since the previous successful call to
1160** [SQLITE_FCNTL_BEGIN_ATOMIC_WRITE] to be rolled back.
1161** ^This file control takes the file descriptor out of batch write mode
1162** so that all subsequent write operations are independent.
1163** ^SQLite will never invoke SQLITE_FCNTL_ROLLBACK_ATOMIC_WRITE without
1164** a prior successful call to [SQLITE_FCNTL_BEGIN_ATOMIC_WRITE].
1165**
1166** <li>[[SQLITE_FCNTL_LOCK_TIMEOUT]]
1167** The [SQLITE_FCNTL_LOCK_TIMEOUT] opcode is used to configure a VFS
1168** to block for up to M milliseconds before failing when attempting to
1169** obtain a file lock using the xLock or xShmLock methods of the VFS.
1170** The parameter is a pointer to a 32-bit signed integer that contains
1171** the value that M is to be set to. Before returning, the 32-bit signed
1172** integer is overwritten with the previous value of M.
1173**
1174** <li>[[SQLITE_FCNTL_BLOCK_ON_CONNECT]]
1175** The [SQLITE_FCNTL_BLOCK_ON_CONNECT] opcode is used to configure the
1176** VFS to block when taking a SHARED lock to connect to a wal mode database.
1177** This is used to implement the functionality associated with
1178** SQLITE_SETLK_BLOCK_ON_CONNECT.
1179**
1180** <li>[[SQLITE_FCNTL_DATA_VERSION]]
1181** The [SQLITE_FCNTL_DATA_VERSION] opcode is used to detect changes to
1182** a database file. The argument is a pointer to a 32-bit unsigned integer.
1183** The "data version" for the pager is written into the pointer. The
1184** "data version" changes whenever any change occurs to the corresponding
1185** database file, either through SQL statements on the same database
1186** connection or through transactions committed by separate database
1187** connections possibly in other processes. The [sqlite3_total_changes()]
1188** interface can be used to find if any database on the connection has changed,
1189** but that interface responds to changes on TEMP as well as MAIN and does
1190** not provide a mechanism to detect changes to MAIN only. Also, the
1191** [sqlite3_total_changes()] interface responds to internal changes only and
1192** omits changes made by other database connections. The
1193** [PRAGMA data_version] command provides a mechanism to detect changes to
1194** a single attached database that occur due to other database connections,
1195** but omits changes implemented by the database connection on which it is
1196** called. This file control is the only mechanism to detect changes that
1197** happen either internally or externally and that are associated with
1198** a particular attached database.
1199**
1200** <li>[[SQLITE_FCNTL_CKPT_START]]
1201** The [SQLITE_FCNTL_CKPT_START] opcode is invoked from within a checkpoint
1202** in wal mode before the client starts to copy pages from the wal
1203** file to the database file.
1204**
1205** <li>[[SQLITE_FCNTL_CKPT_DONE]]
1206** The [SQLITE_FCNTL_CKPT_DONE] opcode is invoked from within a checkpoint
1207** in wal mode after the client has finished copying pages from the wal
1208** file to the database file, but before the *-shm file is updated to
1209** record the fact that the pages have been checkpointed.
1210**
1211** <li>[[SQLITE_FCNTL_EXTERNAL_READER]]
1212** The EXPERIMENTAL [SQLITE_FCNTL_EXTERNAL_READER] opcode is used to detect
1213** whether or not there is a database client in another process with a wal-mode
1214** transaction open on the database or not. It is only available on unix. The
1215** (void*) argument passed with this file-control should be a pointer to a
1216** value of type (int). The integer value is set to 1 if the database is a wal
1217** mode database and there exists at least one client in another process that
1218** currently has an SQL transaction open on the database. It is set to 0 if
1219** the database is not a wal-mode db, or if there is no such connection in any
1220** other process. This opcode cannot be used to detect transactions opened
1221** by clients within the current process, only within other processes.
1222**
1223** <li>[[SQLITE_FCNTL_CKSM_FILE]]
1224** The [SQLITE_FCNTL_CKSM_FILE] opcode is for use internally by the
1225** [checksum VFS shim] only.
1226**
1227** <li>[[SQLITE_FCNTL_RESET_CACHE]]
1228** If there is currently no transaction open on the database, and the
1229** database is not a temp db, then the [SQLITE_FCNTL_RESET_CACHE] file-control
1230** purges the contents of the in-memory page cache. If there is an open
1231** transaction, or if the db is a temp-db, this opcode is a no-op, not an error.
1232**
1233** <li>[[SQLITE_FCNTL_FILESTAT]]
1234** The [SQLITE_FCNTL_FILESTAT] opcode returns low-level diagnostic information
1235** about the [sqlite3_file] objects used access the database and journal files
1236** for the given schema. The fourth parameter to [sqlite3_file_control()]
1237** should be an initialized [sqlite3_str] pointer. JSON text describing
1238** various aspects of the sqlite3_file object is appended to the sqlite3_str.
1239** The SQLITE_FCNTL_FILESTAT opcode is usually a no-op, unless compile-time
1240** options are used to enable it.
1241** </ul>
1242*/
1243#define SQLITE_FCNTL_LOCKSTATE 1
1244#define SQLITE_FCNTL_GET_LOCKPROXYFILE 2
1245#define SQLITE_FCNTL_SET_LOCKPROXYFILE 3
1246#define SQLITE_FCNTL_LAST_ERRNO 4
1247#define SQLITE_FCNTL_SIZE_HINT 5
1248#define SQLITE_FCNTL_CHUNK_SIZE 6
1249#define SQLITE_FCNTL_FILE_POINTER 7
1250#define SQLITE_FCNTL_SYNC_OMITTED 8
1251#define SQLITE_FCNTL_WIN32_AV_RETRY 9
1252#define SQLITE_FCNTL_PERSIST_WAL 10
1253#define SQLITE_FCNTL_OVERWRITE 11
1254#define SQLITE_FCNTL_VFSNAME 12
1255#define SQLITE_FCNTL_POWERSAFE_OVERWRITE 13
1256#define SQLITE_FCNTL_PRAGMA 14
1257#define SQLITE_FCNTL_BUSYHANDLER 15
1258#define SQLITE_FCNTL_TEMPFILENAME 16
1259#define SQLITE_FCNTL_MMAP_SIZE 18
1260#define SQLITE_FCNTL_TRACE 19
1261#define SQLITE_FCNTL_HAS_MOVED 20
1262#define SQLITE_FCNTL_SYNC 21
1263#define SQLITE_FCNTL_COMMIT_PHASETWO 22
1264#define SQLITE_FCNTL_WIN32_SET_HANDLE 23
1265#define SQLITE_FCNTL_WAL_BLOCK 24
1266#define SQLITE_FCNTL_ZIPVFS 25
1267#define SQLITE_FCNTL_RBU 26
1268#define SQLITE_FCNTL_VFS_POINTER 27
1269#define SQLITE_FCNTL_JOURNAL_POINTER 28
1270#define SQLITE_FCNTL_WIN32_GET_HANDLE 29
1271#define SQLITE_FCNTL_PDB 30
1272#define SQLITE_FCNTL_BEGIN_ATOMIC_WRITE 31
1273#define SQLITE_FCNTL_COMMIT_ATOMIC_WRITE 32
1274#define SQLITE_FCNTL_ROLLBACK_ATOMIC_WRITE 33
1275#define SQLITE_FCNTL_LOCK_TIMEOUT 34
1276#define SQLITE_FCNTL_DATA_VERSION 35
1277#define SQLITE_FCNTL_SIZE_LIMIT 36
1278#define SQLITE_FCNTL_CKPT_DONE 37
1279#define SQLITE_FCNTL_RESERVE_BYTES 38
1280#define SQLITE_FCNTL_CKPT_START 39
1281#define SQLITE_FCNTL_EXTERNAL_READER 40
1282#define SQLITE_FCNTL_CKSM_FILE 41
1283#define SQLITE_FCNTL_RESET_CACHE 42
1284#define SQLITE_FCNTL_NULL_IO 43
1285#define SQLITE_FCNTL_BLOCK_ON_CONNECT 44
1286#define SQLITE_FCNTL_FILESTAT 45
1287
1288/* deprecated names */
1289#define SQLITE_GET_LOCKPROXYFILE SQLITE_FCNTL_GET_LOCKPROXYFILE
1290#define SQLITE_SET_LOCKPROXYFILE SQLITE_FCNTL_SET_LOCKPROXYFILE
1291#define SQLITE_LAST_ERRNO SQLITE_FCNTL_LAST_ERRNO
1292
1293/* reserved file-control numbers:
1294** 101
1295** 102
1296** 103
1297*/
1298
1299
1300/*
1301** CAPI3REF: Mutex Handle
1302**
1303** The mutex module within SQLite defines [sqlite3_mutex] to be an
1304** abstract type for a mutex object. The SQLite core never looks
1305** at the internal representation of an [sqlite3_mutex]. It only
1306** deals with pointers to the [sqlite3_mutex] object.
1307**
1308** Mutexes are created using [sqlite3_mutex_alloc()].
1309*/
1310typedef struct sqlite3_mutex sqlite3_mutex;
1311
1312/*
1313** CAPI3REF: Loadable Extension Thunk
1314**
1315** A pointer to the opaque sqlite3_api_routines structure is passed as
1316** the third parameter to entry points of [loadable extensions]. This
1317** structure must be typedefed in order to work around compiler warnings
1318** on some platforms.
1319*/
1320typedef struct sqlite3_api_routines sqlite3_api_routines;
1321
1322/*
1323** CAPI3REF: File Name
1324**
1325** Type [sqlite3_filename] is used by SQLite to pass filenames to the
1326** xOpen method of a [VFS]. It may be cast to (const char*) and treated
1327** as a normal, nul-terminated, UTF-8 buffer containing the filename, but
1328** may also be passed to special APIs such as:
1329**
1330** <ul>
1331** <li> sqlite3_filename_database()
1332** <li> sqlite3_filename_journal()
1333** <li> sqlite3_filename_wal()
1334** <li> sqlite3_uri_parameter()
1335** <li> sqlite3_uri_boolean()
1336** <li> sqlite3_uri_int64()
1337** <li> sqlite3_uri_key()
1338** </ul>
1339*/
1340typedef const char *sqlite3_filename;
1341
1342/*
1343** CAPI3REF: OS Interface Object
1344**
1345** An instance of the sqlite3_vfs object defines the interface between
1346** the SQLite core and the underlying operating system. The "vfs"
1347** in the name of the object stands for "virtual file system". See
1348** the [VFS | VFS documentation] for further information.
1349**
1350** The VFS interface is sometimes extended by adding new methods onto
1351** the end. Each time such an extension occurs, the iVersion field
1352** is incremented. The iVersion value started out as 1 in
1353** SQLite [version 3.5.0] on [dateof:3.5.0], then increased to 2
1354** with SQLite [version 3.7.0] on [dateof:3.7.0], and then increased
1355** to 3 with SQLite [version 3.7.6] on [dateof:3.7.6]. Additional fields
1356** may be appended to the sqlite3_vfs object and the iVersion value
1357** may increase again in future versions of SQLite.
1358** Note that due to an oversight, the structure
1359** of the sqlite3_vfs object changed in the transition from
1360** SQLite [version 3.5.9] to [version 3.6.0] on [dateof:3.6.0]
1361** and yet the iVersion field was not increased.
1362**
1363** The szOsFile field is the size of the subclassed [sqlite3_file]
1364** structure used by this VFS. mxPathname is the maximum length of
1365** a pathname in this VFS.
1366**
1367** Registered sqlite3_vfs objects are kept on a linked list formed by
1368** the pNext pointer. The [sqlite3_vfs_register()]
1369** and [sqlite3_vfs_unregister()] interfaces manage this list
1370** in a thread-safe way. The [sqlite3_vfs_find()] interface
1371** searches the list. Neither the application code nor the VFS
1372** implementation should use the pNext pointer.
1373**
1374** The pNext field is the only field in the sqlite3_vfs
1375** structure that SQLite will ever modify. SQLite will only access
1376** or modify this field while holding a particular static mutex.
1377** The application should never modify anything within the sqlite3_vfs
1378** object once the object has been registered.
1379**
1380** The zName field holds the name of the VFS module. The name must
1381** be unique across all VFS modules.
1382**
1383** [[sqlite3_vfs.xOpen]]
1384** ^SQLite guarantees that the zFilename parameter to xOpen
1385** is either a NULL pointer or string obtained
1386** from xFullPathname() with an optional suffix added.
1387** ^If a suffix is added to the zFilename parameter, it will
1388** consist of a single "-" character followed by no more than
1389** 11 alphanumeric and/or "-" characters.
1390** ^SQLite further guarantees that
1391** the string will be valid and unchanged until xClose() is
1392** called. Because of the previous sentence,
1393** the [sqlite3_file] can safely store a pointer to the
1394** filename if it needs to remember the filename for some reason.
1395** If the zFilename parameter to xOpen is a NULL pointer then xOpen
1396** must invent its own temporary name for the file. ^Whenever the
1397** xFilename parameter is NULL it will also be the case that the
1398** flags parameter will include [SQLITE_OPEN_DELETEONCLOSE].
1399**
1400** The flags argument to xOpen() includes all bits set in
1401** the flags argument to [sqlite3_open_v2()]. Or if [sqlite3_open()]
1402** or [sqlite3_open16()] is used, then flags includes at least
1403** [SQLITE_OPEN_READWRITE] | [SQLITE_OPEN_CREATE].
1404** If xOpen() opens a file read-only then it sets *pOutFlags to
1405** include [SQLITE_OPEN_READONLY]. Other bits in *pOutFlags may be set.
1406**
1407** ^(SQLite will also add one of the following flags to the xOpen()
1408** call, depending on the object being opened:
1409**
1410** <ul>
1411** <li> [SQLITE_OPEN_MAIN_DB]
1412** <li> [SQLITE_OPEN_MAIN_JOURNAL]
1413** <li> [SQLITE_OPEN_TEMP_DB]
1414** <li> [SQLITE_OPEN_TEMP_JOURNAL]
1415** <li> [SQLITE_OPEN_TRANSIENT_DB]
1416** <li> [SQLITE_OPEN_SUBJOURNAL]
1417** <li> [SQLITE_OPEN_SUPER_JOURNAL]
1418** <li> [SQLITE_OPEN_WAL]
1419** </ul>)^
1420**
1421** The file I/O implementation can use the object type flags to
1422** change the way it deals with files. For example, an application
1423** that does not care about crash recovery or rollback might make
1424** the open of a journal file a no-op. Writes to this journal would
1425** also be no-ops, and any attempt to read the journal would return
1426** SQLITE_IOERR. Or the implementation might recognize that a database
1427** file will be doing page-aligned sector reads and writes in a random
1428** order and set up its I/O subsystem accordingly.
1429**
1430** SQLite might also add one of the following flags to the xOpen method:
1431**
1432** <ul>
1433** <li> [SQLITE_OPEN_DELETEONCLOSE]
1434** <li> [SQLITE_OPEN_EXCLUSIVE]
1435** </ul>
1436**
1437** The [SQLITE_OPEN_DELETEONCLOSE] flag means the file should be
1438** deleted when it is closed. ^The [SQLITE_OPEN_DELETEONCLOSE]
1439** will be set for TEMP databases and their journals, transient
1440** databases, and subjournals.
1441**
1442** ^The [SQLITE_OPEN_EXCLUSIVE] flag is always used in conjunction
1443** with the [SQLITE_OPEN_CREATE] flag, which are both directly
1444** analogous to the O_EXCL and O_CREAT flags of the POSIX open()
1445** API. The SQLITE_OPEN_EXCLUSIVE flag, when paired with the
1446** SQLITE_OPEN_CREATE, is used to indicate that file should always
1447** be created, and that it is an error if it already exists.
1448** It is <i>not</i> used to indicate the file should be opened
1449** for exclusive access.
1450**
1451** ^At least szOsFile bytes of memory are allocated by SQLite
1452** to hold the [sqlite3_file] structure passed as the third
1453** argument to xOpen. The xOpen method does not have to
1454** allocate the structure; it should just fill it in. Note that
1455** the xOpen method must set the sqlite3_file.pMethods to either
1456** a valid [sqlite3_io_methods] object or to NULL. xOpen must do
1457** this even if the open fails. SQLite expects that the sqlite3_file.pMethods
1458** element will be valid after xOpen returns regardless of the success
1459** or failure of the xOpen call.
1460**
1461** [[sqlite3_vfs.xAccess]]
1462** ^The flags argument to xAccess() may be [SQLITE_ACCESS_EXISTS]
1463** to test for the existence of a file, or [SQLITE_ACCESS_READWRITE] to
1464** test whether a file is readable and writable, or [SQLITE_ACCESS_READ]
1465** to test whether a file is at least readable. The SQLITE_ACCESS_READ
1466** flag is never actually used and is not implemented in the built-in
1467** VFSes of SQLite. The file is named by the second argument and can be a
1468** directory. The xAccess method returns [SQLITE_OK] on success or some
1469** non-zero error code if there is an I/O error or if the name of
1470** the file given in the second argument is illegal. If SQLITE_OK
1471** is returned, then non-zero or zero is written into *pResOut to indicate
1472** whether or not the file is accessible.
1473**
1474** ^SQLite will always allocate at least mxPathname+1 bytes for the
1475** output buffer xFullPathname. The exact size of the output buffer
1476** is also passed as a parameter to both methods. If the output buffer
1477** is not large enough, [SQLITE_CANTOPEN] should be returned. Since this is
1478** handled as a fatal error by SQLite, vfs implementations should endeavor
1479** to prevent this by setting mxPathname to a sufficiently large value.
1480**
1481** The xRandomness(), xSleep(), xCurrentTime(), and xCurrentTimeInt64()
1482** interfaces are not strictly a part of the filesystem, but they are
1483** included in the VFS structure for completeness.
1484** The xRandomness() function attempts to return nBytes bytes
1485** of good-quality randomness into zOut. The return value is
1486** the actual number of bytes of randomness obtained.
1487** The xSleep() method causes the calling thread to sleep for at
1488** least the number of microseconds given. ^The xCurrentTime()
1489** method returns a Julian Day Number for the current date and time as
1490** a floating point value.
1491** ^The xCurrentTimeInt64() method returns, as an integer, the Julian
1492** Day Number multiplied by 86400000 (the number of milliseconds in
1493** a 24-hour day).
1494** ^SQLite will use the xCurrentTimeInt64() method to get the current
1495** date and time if that method is available (if iVersion is 2 or
1496** greater and the function pointer is not NULL) and will fall back
1497** to xCurrentTime() if xCurrentTimeInt64() is unavailable.
1498**
1499** ^The xSetSystemCall(), xGetSystemCall(), and xNextSystemCall() interfaces
1500** are not used by the SQLite core. These optional interfaces are provided
1501** by some VFSes to facilitate testing of the VFS code. By overriding
1502** system calls with functions under its control, a test program can
1503** simulate faults and error conditions that would otherwise be difficult
1504** or impossible to induce. The set of system calls that can be overridden
1505** varies from one VFS to another, and from one version of the same VFS to the
1506** next. Applications that use these interfaces must be prepared for any
1507** or all of these interfaces to be NULL or for their behavior to change
1508** from one release to the next. Applications must not attempt to access
1509** any of these methods if the iVersion of the VFS is less than 3.
1510*/
1511typedef struct sqlite3_vfs sqlite3_vfs;
1512typedef void (*sqlite3_syscall_ptr)(void);
1513struct sqlite3_vfs {
1514 int iVersion; /* Structure version number (currently 3) */
1515 int szOsFile; /* Size of subclassed sqlite3_file */
1516 int mxPathname; /* Maximum file pathname length */
1517 sqlite3_vfs *pNext; /* Next registered VFS */
1518 const char *zName; /* Name of this virtual file system */
1519 void *pAppData; /* Pointer to application-specific data */
1520 int (*xOpen)(sqlite3_vfs*, sqlite3_filename zName, sqlite3_file*,
1521 int flags, int *pOutFlags);
1522 int (*xDelete)(sqlite3_vfs*, const char *zName, int syncDir);
1523 int (*xAccess)(sqlite3_vfs*, const char *zName, int flags, int *pResOut);
1524 int (*xFullPathname)(sqlite3_vfs*, const char *zName, int nOut, char *zOut);
1525 void *(*xDlOpen)(sqlite3_vfs*, const char *zFilename);
1526 void (*xDlError)(sqlite3_vfs*, int nByte, char *zErrMsg);
1527 void (*(*xDlSym)(sqlite3_vfs*,void*, const char *zSymbol))(void);
1528 void (*xDlClose)(sqlite3_vfs*, void*);
1529 int (*xRandomness)(sqlite3_vfs*, int nByte, char *zOut);
1530 int (*xSleep)(sqlite3_vfs*, int microseconds);
1531 int (*xCurrentTime)(sqlite3_vfs*, double*);
1532 int (*xGetLastError)(sqlite3_vfs*, int, char *);
1533 /*
1534 ** The methods above are in version 1 of the sqlite_vfs object
1535 ** definition. Those that follow are added in version 2 or later
1536 */
1537 int (*xCurrentTimeInt64)(sqlite3_vfs*, sqlite3_int64*);
1538 /*
1539 ** The methods above are in versions 1 and 2 of the sqlite_vfs object.
1540 ** Those below are for version 3 and greater.
1541 */
1542 int (*xSetSystemCall)(sqlite3_vfs*, const char *zName, sqlite3_syscall_ptr);
1543 sqlite3_syscall_ptr (*xGetSystemCall)(sqlite3_vfs*, const char *zName);
1544 const char *(*xNextSystemCall)(sqlite3_vfs*, const char *zName);
1545 /*
1546 ** The methods above are in versions 1 through 3 of the sqlite_vfs object.
1547 ** New fields may be appended in future versions. The iVersion
1548 ** value will increment whenever this happens.
1549 */
1550};
1551
1552/*
1553** CAPI3REF: Flags for the xAccess VFS method
1554**
1555** These integer constants can be used as the third parameter to
1556** the xAccess method of an [sqlite3_vfs] object. They determine
1557** what kind of permissions the xAccess method is looking for.
1558** With SQLITE_ACCESS_EXISTS, the xAccess method
1559** simply checks whether the file exists.
1560** With SQLITE_ACCESS_READWRITE, the xAccess method
1561** checks whether the named directory is both readable and writable
1562** (in other words, if files can be added, removed, and renamed within
1563** the directory).
1564** The SQLITE_ACCESS_READWRITE constant is currently used only by the
1565** [temp_store_directory pragma], though this could change in a future
1566** release of SQLite.
1567** With SQLITE_ACCESS_READ, the xAccess method
1568** checks whether the file is readable. The SQLITE_ACCESS_READ constant is
1569** currently unused, though it might be used in a future release of
1570** SQLite.
1571*/
1572#define SQLITE_ACCESS_EXISTS 0
1573#define SQLITE_ACCESS_READWRITE 1 /* Used by PRAGMA temp_store_directory */
1574#define SQLITE_ACCESS_READ 2 /* Unused */
1575
1576/*
1577** CAPI3REF: Flags for the xShmLock VFS method
1578**
1579** These integer constants define the various locking operations
1580** allowed by the xShmLock method of [sqlite3_io_methods]. The
1581** following are the only legal combinations of flags to the
1582** xShmLock method:
1583**
1584** <ul>
1585** <li> SQLITE_SHM_LOCK | SQLITE_SHM_SHARED
1586** <li> SQLITE_SHM_LOCK | SQLITE_SHM_EXCLUSIVE
1587** <li> SQLITE_SHM_UNLOCK | SQLITE_SHM_SHARED
1588** <li> SQLITE_SHM_UNLOCK | SQLITE_SHM_EXCLUSIVE
1589** </ul>
1590**
1591** When unlocking, the same SHARED or EXCLUSIVE flag must be supplied as
1592** was given on the corresponding lock.
1593**
1594** The xShmLock method can transition between unlocked and SHARED or
1595** between unlocked and EXCLUSIVE. It cannot transition between SHARED
1596** and EXCLUSIVE.
1597*/
1598#define SQLITE_SHM_UNLOCK 1
1599#define SQLITE_SHM_LOCK 2
1600#define SQLITE_SHM_SHARED 4
1601#define SQLITE_SHM_EXCLUSIVE 8
1602
1603/*
1604** CAPI3REF: Maximum xShmLock index
1605**
1606** The xShmLock method on [sqlite3_io_methods] may use values
1607** between 0 and this upper bound as its "offset" argument.
1608** The SQLite core will never attempt to acquire or release a
1609** lock outside of this range
1610*/
1611#define SQLITE_SHM_NLOCK 8
1612
1613
1614/*
1615** CAPI3REF: Initialize The SQLite Library
1616**
1617** ^The sqlite3_initialize() routine initializes the
1618** SQLite library. ^The sqlite3_shutdown() routine
1619** deallocates any resources that were allocated by sqlite3_initialize().
1620** These routines are designed to aid in process initialization and
1621** shutdown on embedded systems. Workstation applications using
1622** SQLite normally do not need to invoke either of these routines.
1623**
1624** A call to sqlite3_initialize() is an "effective" call if it is
1625** the first time sqlite3_initialize() is invoked during the lifetime of
1626** the process, or if it is the first time sqlite3_initialize() is invoked
1627** following a call to sqlite3_shutdown(). ^(Only an effective call
1628** of sqlite3_initialize() does any initialization. All other calls
1629** are harmless no-ops.)^
1630**
1631** A call to sqlite3_shutdown() is an "effective" call if it is the first
1632** call to sqlite3_shutdown() since the last sqlite3_initialize(). ^(Only
1633** an effective call to sqlite3_shutdown() does any deinitialization.
1634** All other valid calls to sqlite3_shutdown() are harmless no-ops.)^
1635**
1636** The sqlite3_initialize() interface is threadsafe, but sqlite3_shutdown()
1637** is not. The sqlite3_shutdown() interface must only be called from a
1638** single thread. All open [database connections] must be closed and all
1639** other SQLite resources must be deallocated prior to invoking
1640** sqlite3_shutdown().
1641**
1642** Among other things, ^sqlite3_initialize() will invoke
1643** sqlite3_os_init(). Similarly, ^sqlite3_shutdown()
1644** will invoke sqlite3_os_end().
1645**
1646** ^The sqlite3_initialize() routine returns [SQLITE_OK] on success.
1647** ^If for some reason, sqlite3_initialize() is unable to initialize
1648** the library (perhaps it is unable to allocate a needed resource such
1649** as a mutex) it returns an [error code] other than [SQLITE_OK].
1650**
1651** ^The sqlite3_initialize() routine is called internally by many other
1652** SQLite interfaces so that an application usually does not need to
1653** invoke sqlite3_initialize() directly. For example, [sqlite3_open()]
1654** calls sqlite3_initialize() so the SQLite library will be automatically
1655** initialized when [sqlite3_open()] is called if it has not been initialized
1656** already. ^However, if SQLite is compiled with the [SQLITE_OMIT_AUTOINIT]
1657** compile-time option, then the automatic calls to sqlite3_initialize()
1658** are omitted and the application must call sqlite3_initialize() directly
1659** prior to using any other SQLite interface. For maximum portability,
1660** it is recommended that applications always invoke sqlite3_initialize()
1661** directly prior to using any other SQLite interface. Future releases
1662** of SQLite may require this. In other words, the behavior exhibited
1663** when SQLite is compiled with [SQLITE_OMIT_AUTOINIT] might become the
1664** default behavior in some future release of SQLite.
1665**
1666** The sqlite3_os_init() routine does operating-system specific
1667** initialization of the SQLite library. The sqlite3_os_end()
1668** routine undoes the effect of sqlite3_os_init(). Typical tasks
1669** performed by these routines include allocation or deallocation
1670** of static resources, initialization of global variables,
1671** setting up a default [sqlite3_vfs] module, or setting up
1672** a default configuration using [sqlite3_config()].
1673**
1674** The application should never invoke either sqlite3_os_init()
1675** or sqlite3_os_end() directly. The application should only invoke
1676** sqlite3_initialize() and sqlite3_shutdown(). The sqlite3_os_init()
1677** interface is called automatically by sqlite3_initialize() and
1678** sqlite3_os_end() is called by sqlite3_shutdown(). Appropriate
1679** implementations for sqlite3_os_init() and sqlite3_os_end()
1680** are built into SQLite when it is compiled for Unix, Windows, or OS/2.
1681** When [custom builds | built for other platforms]
1682** (using the [SQLITE_OS_OTHER=1] compile-time
1683** option) the application must supply a suitable implementation for
1684** sqlite3_os_init() and sqlite3_os_end(). An application-supplied
1685** implementation of sqlite3_os_init() or sqlite3_os_end()
1686** must return [SQLITE_OK] on success and some other [error code] upon
1687** failure.
1688*/
1689SQLITE_API int sqlite3_initialize(void);
1690SQLITE_API int sqlite3_shutdown(void);
1691SQLITE_API int sqlite3_os_init(void);
1692SQLITE_API int sqlite3_os_end(void);
1693
1694/*
1695** CAPI3REF: Configuring The SQLite Library
1696**
1697** The sqlite3_config() interface is used to make global configuration
1698** changes to SQLite in order to tune SQLite to the specific needs of
1699** the application. The default configuration is recommended for most
1700** applications and so this routine is usually not necessary. It is
1701** provided to support rare applications with unusual needs.
1702**
1703** <b>The sqlite3_config() interface is not threadsafe. The application
1704** must ensure that no other SQLite interfaces are invoked by other
1705** threads while sqlite3_config() is running.</b>
1706**
1707** The first argument to sqlite3_config() is an integer
1708** [configuration option] that determines
1709** what property of SQLite is to be configured. Subsequent arguments
1710** vary depending on the [configuration option]
1711** in the first argument.
1712**
1713** For most configuration options, the sqlite3_config() interface
1714** may only be invoked prior to library initialization using
1715** [sqlite3_initialize()] or after shutdown by [sqlite3_shutdown()].
1716** The exceptional configuration options that may be invoked at any time
1717** are called "anytime configuration options".
1718** ^If sqlite3_config() is called after [sqlite3_initialize()] and before
1719** [sqlite3_shutdown()] with a first argument that is not an anytime
1720** configuration option, then the sqlite3_config() call will
1721** return SQLITE_MISUSE.
1722** Note, however, that ^sqlite3_config() can be called as part of the
1723** implementation of an application-defined [sqlite3_os_init()].
1724**
1725** ^When a configuration option is set, sqlite3_config() returns [SQLITE_OK].
1726** ^If the option is unknown or SQLite is unable to set the option
1727** then this routine returns a non-zero [error code].
1728*/
1729SQLITE_API int sqlite3_config(int, ...);
1730
1731/*
1732** CAPI3REF: Configure database connections
1733** METHOD: sqlite3
1734**
1735** The sqlite3_db_config() interface is used to make configuration
1736** changes to a [database connection]. The interface is similar to
1737** [sqlite3_config()] except that the changes apply to a single
1738** [database connection] (specified in the first argument).
1739**
1740** The second argument to sqlite3_db_config(D,V,...) is the
1741** [SQLITE_DBCONFIG_LOOKASIDE | configuration verb] - an integer code
1742** that indicates what aspect of the [database connection] is being configured.
1743** Subsequent arguments vary depending on the configuration verb.
1744**
1745** ^Calls to sqlite3_db_config() return SQLITE_OK if and only if
1746** the call is considered successful.
1747*/
1748SQLITE_API int sqlite3_db_config(sqlite3*, int op, ...);
1749
1750/*
1751** CAPI3REF: Memory Allocation Routines
1752**
1753** An instance of this object defines the interface between SQLite
1754** and low-level memory allocation routines.
1755**
1756** This object is used in only one place in the SQLite interface.
1757** A pointer to an instance of this object is the argument to
1758** [sqlite3_config()] when the configuration option is
1759** [SQLITE_CONFIG_MALLOC] or [SQLITE_CONFIG_GETMALLOC].
1760** By creating an instance of this object
1761** and passing it to [sqlite3_config]([SQLITE_CONFIG_MALLOC])
1762** during configuration, an application can specify an alternative
1763** memory allocation subsystem for SQLite to use for all of its
1764** dynamic memory needs.
1765**
1766** Note that SQLite comes with several [built-in memory allocators]
1767** that are perfectly adequate for the overwhelming majority of applications
1768** and that this object is only useful to a tiny minority of applications
1769** with specialized memory allocation requirements. This object is
1770** also used during testing of SQLite in order to specify an alternative
1771** memory allocator that simulates memory out-of-memory conditions in
1772** order to verify that SQLite recovers gracefully from such
1773** conditions.
1774**
1775** The xMalloc, xRealloc, and xFree methods must work like the
1776** malloc(), realloc() and free() functions from the standard C library.
1777** ^SQLite guarantees that the second argument to
1778** xRealloc is always a value returned by a prior call to xRoundup.
1779**
1780** xSize should return the allocated size of a memory allocation
1781** previously obtained from xMalloc or xRealloc. The allocated size
1782** is always at least as big as the requested size but may be larger.
1783**
1784** The xRoundup method returns what would be the allocated size of
1785** a memory allocation given a particular requested size. Most memory
1786** allocators round up memory allocations at least to the next multiple
1787** of 8. Some allocators round up to a larger multiple or to a power of 2.
1788** Every memory allocation request coming in through [sqlite3_malloc()]
1789** or [sqlite3_realloc()] first calls xRoundup. If xRoundup returns 0,
1790** that causes the corresponding memory allocation to fail.
1791**
1792** The xInit method initializes the memory allocator. For example,
1793** it might allocate any required mutexes or initialize internal data
1794** structures. The xShutdown method is invoked (indirectly) by
1795** [sqlite3_shutdown()] and should deallocate any resources acquired
1796** by xInit. The pAppData pointer is used as the only parameter to
1797** xInit and xShutdown.
1798**
1799** SQLite holds the [SQLITE_MUTEX_STATIC_MAIN] mutex when it invokes
1800** the xInit method, so the xInit method need not be threadsafe. The
1801** xShutdown method is only called from [sqlite3_shutdown()] so it does
1802** not need to be threadsafe either. For all other methods, SQLite
1803** holds the [SQLITE_MUTEX_STATIC_MEM] mutex as long as the
1804** [SQLITE_CONFIG_MEMSTATUS] configuration option is turned on (which
1805** it is by default) and so the methods are automatically serialized.
1806** However, if [SQLITE_CONFIG_MEMSTATUS] is disabled, then the other
1807** methods must be threadsafe or else make their own arrangements for
1808** serialization.
1809**
1810** SQLite will never invoke xInit() more than once without an intervening
1811** call to xShutdown().
1812*/
1813typedef struct sqlite3_mem_methods sqlite3_mem_methods;
1814struct sqlite3_mem_methods {
1815 void *(*xMalloc)(int); /* Memory allocation function */
1816 void (*xFree)(void*); /* Free a prior allocation */
1817 void *(*xRealloc)(void*,int); /* Resize an allocation */
1818 int (*xSize)(void*); /* Return the size of an allocation */
1819 int (*xRoundup)(int); /* Round up request size to allocation size */
1820 int (*xInit)(void*); /* Initialize the memory allocator */
1821 void (*xShutdown)(void*); /* Deinitialize the memory allocator */
1822 void *pAppData; /* Argument to xInit() and xShutdown() */
1823};
1824
1825/*
1826** CAPI3REF: Configuration Options
1827** KEYWORDS: {configuration option}
1828**
1829** These constants are the available integer configuration options that
1830** can be passed as the first argument to the [sqlite3_config()] interface.
1831**
1832** Most of the configuration options for sqlite3_config()
1833** will only work if invoked prior to [sqlite3_initialize()] or after
1834** [sqlite3_shutdown()]. The few exceptions to this rule are called
1835** "anytime configuration options".
1836** ^Calling [sqlite3_config()] with a first argument that is not an
1837** anytime configuration option in between calls to [sqlite3_initialize()] and
1838** [sqlite3_shutdown()] is a no-op that returns SQLITE_MISUSE.
1839**
1840** The set of anytime configuration options can change (by insertions
1841** and/or deletions) from one release of SQLite to the next.
1842** As of SQLite version 3.42.0, the complete set of anytime configuration
1843** options is:
1844** <ul>
1845** <li> SQLITE_CONFIG_LOG
1846** <li> SQLITE_CONFIG_PCACHE_HDRSZ
1847** </ul>
1848**
1849** New configuration options may be added in future releases of SQLite.
1850** Existing configuration options might be discontinued. Applications
1851** should check the return code from [sqlite3_config()] to make sure that
1852** the call worked. The [sqlite3_config()] interface will return a
1853** non-zero [error code] if a discontinued or unsupported configuration option
1854** is invoked.
1855**
1856** <dl>
1857** [[SQLITE_CONFIG_SINGLETHREAD]] <dt>SQLITE_CONFIG_SINGLETHREAD</dt>
1858** <dd>There are no arguments to this option. ^This option sets the
1859** [threading mode] to Single-thread. In other words, it disables
1860** all mutexing and puts SQLite into a mode where it can only be used
1861** by a single thread. ^If SQLite is compiled with
1862** the [SQLITE_THREADSAFE | SQLITE_THREADSAFE=0] compile-time option then
1863** it is not possible to change the [threading mode] from its default
1864** value of Single-thread and so [sqlite3_config()] will return
1865** [SQLITE_ERROR] if called with the SQLITE_CONFIG_SINGLETHREAD
1866** configuration option.</dd>
1867**
1868** [[SQLITE_CONFIG_MULTITHREAD]] <dt>SQLITE_CONFIG_MULTITHREAD</dt>
1869** <dd>There are no arguments to this option. ^This option sets the
1870** [threading mode] to Multi-thread. In other words, it disables
1871** mutexing on [database connection] and [prepared statement] objects.
1872** The application is responsible for serializing access to
1873** [database connections] and [prepared statements]. But other mutexes
1874** are enabled so that SQLite will be safe to use in a multi-threaded
1875** environment as long as no two threads attempt to use the same
1876** [database connection] at the same time. ^If SQLite is compiled with
1877** the [SQLITE_THREADSAFE | SQLITE_THREADSAFE=0] compile-time option then
1878** it is not possible to set the Multi-thread [threading mode] and
1879** [sqlite3_config()] will return [SQLITE_ERROR] if called with the
1880** SQLITE_CONFIG_MULTITHREAD configuration option.</dd>
1881**
1882** [[SQLITE_CONFIG_SERIALIZED]] <dt>SQLITE_CONFIG_SERIALIZED</dt>
1883** <dd>There are no arguments to this option. ^This option sets the
1884** [threading mode] to Serialized. In other words, this option enables
1885** all mutexes including the recursive
1886** mutexes on [database connection] and [prepared statement] objects.
1887** In this mode (which is the default when SQLite is compiled with
1888** [SQLITE_THREADSAFE=1]) the SQLite library will itself serialize access
1889** to [database connections] and [prepared statements] so that the
1890** application is free to use the same [database connection] or the
1891** same [prepared statement] in different threads at the same time.
1892** ^If SQLite is compiled with
1893** the [SQLITE_THREADSAFE | SQLITE_THREADSAFE=0] compile-time option then
1894** it is not possible to set the Serialized [threading mode] and
1895** [sqlite3_config()] will return [SQLITE_ERROR] if called with the
1896** SQLITE_CONFIG_SERIALIZED configuration option.</dd>
1897**
1898** [[SQLITE_CONFIG_MALLOC]] <dt>SQLITE_CONFIG_MALLOC</dt>
1899** <dd> ^(The SQLITE_CONFIG_MALLOC option takes a single argument which is
1900** a pointer to an instance of the [sqlite3_mem_methods] structure.
1901** The argument specifies
1902** alternative low-level memory allocation routines to be used in place of
1903** the memory allocation routines built into SQLite.)^ ^SQLite makes
1904** its own private copy of the content of the [sqlite3_mem_methods] structure
1905** before the [sqlite3_config()] call returns.</dd>
1906**
1907** [[SQLITE_CONFIG_GETMALLOC]] <dt>SQLITE_CONFIG_GETMALLOC</dt>
1908** <dd> ^(The SQLITE_CONFIG_GETMALLOC option takes a single argument which
1909** is a pointer to an instance of the [sqlite3_mem_methods] structure.
1910** The [sqlite3_mem_methods]
1911** structure is filled with the currently defined memory allocation routines.)^
1912** This option can be used to overload the default memory allocation
1913** routines with a wrapper that simulates memory allocation failure or
1914** tracks memory usage, for example. </dd>
1915**
1916** [[SQLITE_CONFIG_SMALL_MALLOC]] <dt>SQLITE_CONFIG_SMALL_MALLOC</dt>
1917** <dd> ^The SQLITE_CONFIG_SMALL_MALLOC option takes a single argument of
1918** type int, interpreted as a boolean, which if true provides a hint to
1919** SQLite that it should avoid large memory allocations if possible.
1920** SQLite will run faster if it is free to make large memory allocations,
1921** but some applications might prefer to run slower in exchange for
1922** guarantees about memory fragmentation that are possible if large
1923** allocations are avoided. This hint is normally off.
1924** </dd>
1925**
1926** [[SQLITE_CONFIG_MEMSTATUS]] <dt>SQLITE_CONFIG_MEMSTATUS</dt>
1927** <dd> ^The SQLITE_CONFIG_MEMSTATUS option takes a single argument of type int,
1928** interpreted as a boolean, which enables or disables the collection of
1929** memory allocation statistics. ^(When memory allocation statistics are
1930** disabled, the following SQLite interfaces become non-operational:
1931** <ul>
1932** <li> [sqlite3_hard_heap_limit64()]
1933** <li> [sqlite3_memory_used()]
1934** <li> [sqlite3_memory_highwater()]
1935** <li> [sqlite3_soft_heap_limit64()]
1936** <li> [sqlite3_status64()]
1937** </ul>)^
1938** ^Memory allocation statistics are enabled by default unless SQLite is
1939** compiled with [SQLITE_DEFAULT_MEMSTATUS]=0 in which case memory
1940** allocation statistics are disabled by default.
1941** </dd>
1942**
1943** [[SQLITE_CONFIG_SCRATCH]] <dt>SQLITE_CONFIG_SCRATCH</dt>
1944** <dd> The SQLITE_CONFIG_SCRATCH option is no longer used.
1945** </dd>
1946**
1947** [[SQLITE_CONFIG_PAGECACHE]] <dt>SQLITE_CONFIG_PAGECACHE</dt>
1948** <dd> ^The SQLITE_CONFIG_PAGECACHE option specifies a memory pool
1949** that SQLite can use for the database page cache with the default page
1950** cache implementation.
1951** This configuration option is a no-op if an application-defined page
1952** cache implementation is loaded using the [SQLITE_CONFIG_PCACHE2].
1953** ^There are three arguments to SQLITE_CONFIG_PAGECACHE: A pointer to
1954** 8-byte aligned memory (pMem), the size of each page cache line (sz),
1955** and the number of cache lines (N).
1956** The sz argument should be the size of the largest database page
1957** (a power of two between 512 and 65536) plus some extra bytes for each
1958** page header. ^The number of extra bytes needed by the page header
1959** can be determined using [SQLITE_CONFIG_PCACHE_HDRSZ].
1960** ^It is harmless, apart from the wasted memory,
1961** for the sz parameter to be larger than necessary. The pMem
1962** argument must be either a NULL pointer or a pointer to an 8-byte
1963** aligned block of memory of at least sz*N bytes, otherwise
1964** subsequent behavior is undefined.
1965** ^When pMem is not NULL, SQLite will strive to use the memory provided
1966** to satisfy page cache needs, falling back to [sqlite3_malloc()] if
1967** a page cache line is larger than sz bytes or if all of the pMem buffer
1968** is exhausted.
1969** ^If pMem is NULL and N is non-zero, then each database connection
1970** does an initial bulk allocation for page cache memory
1971** from [sqlite3_malloc()] sufficient for N cache lines if N is positive or
1972** of -1024*N bytes if N is negative. ^If additional
1973** page cache memory is needed beyond what is provided by the initial
1974** allocation, then SQLite goes to [sqlite3_malloc()] separately for each
1975** additional cache line. </dd>
1976**
1977** [[SQLITE_CONFIG_HEAP]] <dt>SQLITE_CONFIG_HEAP</dt>
1978** <dd> ^The SQLITE_CONFIG_HEAP option specifies a static memory buffer
1979** that SQLite will use for all of its dynamic memory allocation needs
1980** beyond those provided for by [SQLITE_CONFIG_PAGECACHE].
1981** ^The SQLITE_CONFIG_HEAP option is only available if SQLite is compiled
1982** with either [SQLITE_ENABLE_MEMSYS3] or [SQLITE_ENABLE_MEMSYS5] and returns
1983** [SQLITE_ERROR] if invoked otherwise.
1984** ^There are three arguments to SQLITE_CONFIG_HEAP:
1985** An 8-byte aligned pointer to the memory,
1986** the number of bytes in the memory buffer, and the minimum allocation size.
1987** ^If the first pointer (the memory pointer) is NULL, then SQLite reverts
1988** to using its default memory allocator (the system malloc() implementation),
1989** undoing any prior invocation of [SQLITE_CONFIG_MALLOC]. ^If the
1990** memory pointer is not NULL then the alternative memory
1991** allocator is engaged to handle all of SQLites memory allocation needs.
1992** The first pointer (the memory pointer) must be aligned to an 8-byte
1993** boundary or subsequent behavior of SQLite will be undefined.
1994** The minimum allocation size is capped at 2**12. Reasonable values
1995** for the minimum allocation size are 2**5 through 2**8.</dd>
1996**
1997** [[SQLITE_CONFIG_MUTEX]] <dt>SQLITE_CONFIG_MUTEX</dt>
1998** <dd> ^(The SQLITE_CONFIG_MUTEX option takes a single argument which is a
1999** pointer to an instance of the [sqlite3_mutex_methods] structure.
2000** The argument specifies alternative low-level mutex routines to be used
2001** in place of the mutex routines built into SQLite.)^ ^SQLite makes a copy of
2002** the content of the [sqlite3_mutex_methods] structure before the call to
2003** [sqlite3_config()] returns. ^If SQLite is compiled with
2004** the [SQLITE_THREADSAFE | SQLITE_THREADSAFE=0] compile-time option then
2005** the entire mutexing subsystem is omitted from the build and hence calls to
2006** [sqlite3_config()] with the SQLITE_CONFIG_MUTEX configuration option will
2007** return [SQLITE_ERROR].</dd>
2008**
2009** [[SQLITE_CONFIG_GETMUTEX]] <dt>SQLITE_CONFIG_GETMUTEX</dt>
2010** <dd> ^(The SQLITE_CONFIG_GETMUTEX option takes a single argument which
2011** is a pointer to an instance of the [sqlite3_mutex_methods] structure. The
2012** [sqlite3_mutex_methods]
2013** structure is filled with the currently defined mutex routines.)^
2014** This option can be used to overload the default mutex allocation
2015** routines with a wrapper used to track mutex usage for performance
2016** profiling or testing, for example. ^If SQLite is compiled with
2017** the [SQLITE_THREADSAFE | SQLITE_THREADSAFE=0] compile-time option then
2018** the entire mutexing subsystem is omitted from the build and hence calls to
2019** [sqlite3_config()] with the SQLITE_CONFIG_GETMUTEX configuration option will
2020** return [SQLITE_ERROR].</dd>
2021**
2022** [[SQLITE_CONFIG_LOOKASIDE]] <dt>SQLITE_CONFIG_LOOKASIDE</dt>
2023** <dd> ^(The SQLITE_CONFIG_LOOKASIDE option takes two arguments that determine
2024** the default size of [lookaside memory] on each [database connection].
2025** The first argument is the
2026** size of each lookaside buffer slot ("sz") and the second is the number of
2027** slots allocated to each database connection ("cnt").)^
2028** ^(SQLITE_CONFIG_LOOKASIDE sets the <i>default</i> lookaside size.
2029** The [SQLITE_DBCONFIG_LOOKASIDE] option to [sqlite3_db_config()] can
2030** be used to change the lookaside configuration on individual connections.)^
2031** The [-DSQLITE_DEFAULT_LOOKASIDE] option can be used to change the
2032** default lookaside configuration at compile-time.
2033** </dd>
2034**
2035** [[SQLITE_CONFIG_PCACHE2]] <dt>SQLITE_CONFIG_PCACHE2</dt>
2036** <dd> ^(The SQLITE_CONFIG_PCACHE2 option takes a single argument which is
2037** a pointer to an [sqlite3_pcache_methods2] object. This object specifies
2038** the interface to a custom page cache implementation.)^
2039** ^SQLite makes a copy of the [sqlite3_pcache_methods2] object.</dd>
2040**
2041** [[SQLITE_CONFIG_GETPCACHE2]] <dt>SQLITE_CONFIG_GETPCACHE2</dt>
2042** <dd> ^(The SQLITE_CONFIG_GETPCACHE2 option takes a single argument which
2043** is a pointer to an [sqlite3_pcache_methods2] object. SQLite copies off
2044** the current page cache implementation into that object.)^ </dd>
2045**
2046** [[SQLITE_CONFIG_LOG]] <dt>SQLITE_CONFIG_LOG</dt>
2047** <dd> The SQLITE_CONFIG_LOG option is used to configure the SQLite
2048** global [error log].
2049** (^The SQLITE_CONFIG_LOG option takes two arguments: a pointer to a
2050** function with a call signature of void(*)(void*,int,const char*),
2051** and a pointer to void. ^If the function pointer is not NULL, it is
2052** invoked by [sqlite3_log()] to process each logging event. ^If the
2053** function pointer is NULL, the [sqlite3_log()] interface becomes a no-op.
2054** ^The void pointer that is the second argument to SQLITE_CONFIG_LOG is
2055** passed through as the first parameter to the application-defined logger
2056** function whenever that function is invoked. ^The second parameter to
2057** the logger function is a copy of the first parameter to the corresponding
2058** [sqlite3_log()] call and is intended to be a [result code] or an
2059** [extended result code]. ^The third parameter passed to the logger is
2060** a log message after formatting via [sqlite3_snprintf()].
2061** The SQLite logging interface is not reentrant; the logger function
2062** supplied by the application must not invoke any SQLite interface.
2063** In a multi-threaded application, the application-defined logger
2064** function must be threadsafe. </dd>
2065**
2066** [[SQLITE_CONFIG_URI]] <dt>SQLITE_CONFIG_URI
2067** <dd>^(The SQLITE_CONFIG_URI option takes a single argument of type int.
2068** If non-zero, then URI handling is globally enabled. If the parameter is zero,
2069** then URI handling is globally disabled.)^ ^If URI handling is globally
2070** enabled, all filenames passed to [sqlite3_open()], [sqlite3_open_v2()],
2071** [sqlite3_open16()] or
2072** specified as part of [ATTACH] commands are interpreted as URIs, regardless
2073** of whether or not the [SQLITE_OPEN_URI] flag is set when the database
2074** connection is opened. ^If it is globally disabled, filenames are
2075** only interpreted as URIs if the SQLITE_OPEN_URI flag is set when the
2076** database connection is opened. ^(By default, URI handling is globally
2077** disabled. The default value may be changed by compiling with the
2078** [SQLITE_USE_URI] symbol defined.)^
2079**
2080** [[SQLITE_CONFIG_COVERING_INDEX_SCAN]] <dt>SQLITE_CONFIG_COVERING_INDEX_SCAN
2081** <dd>^The SQLITE_CONFIG_COVERING_INDEX_SCAN option takes a single integer
2082** argument which is interpreted as a boolean in order to enable or disable
2083** the use of covering indices for full table scans in the query optimizer.
2084** ^The default setting is determined
2085** by the [SQLITE_ALLOW_COVERING_INDEX_SCAN] compile-time option, or is "on"
2086** if that compile-time option is omitted.
2087** The ability to disable the use of covering indices for full table scans
2088** is because some incorrectly coded legacy applications might malfunction
2089** when the optimization is enabled. Providing the ability to
2090** disable the optimization allows the older, buggy application code to work
2091** without change even with newer versions of SQLite.
2092**
2093** [[SQLITE_CONFIG_PCACHE]] [[SQLITE_CONFIG_GETPCACHE]]
2094** <dt>SQLITE_CONFIG_PCACHE and SQLITE_CONFIG_GETPCACHE
2095** <dd> These options are obsolete and should not be used by new code.
2096** They are retained for backwards compatibility but are now no-ops.
2097** </dd>
2098**
2099** [[SQLITE_CONFIG_SQLLOG]]
2100** <dt>SQLITE_CONFIG_SQLLOG
2101** <dd>This option is only available if sqlite is compiled with the
2102** [SQLITE_ENABLE_SQLLOG] pre-processor macro defined. The first argument should
2103** be a pointer to a function of type void(*)(void*,sqlite3*,const char*, int).
2104** The second should be of type (void*). The callback is invoked by the library
2105** in three separate circumstances, identified by the value passed as the
2106** fourth parameter. If the fourth parameter is 0, then the database connection
2107** passed as the second argument has just been opened. The third argument
2108** points to a buffer containing the name of the main database file. If the
2109** fourth parameter is 1, then the SQL statement that the third parameter
2110** points to has just been executed. Or, if the fourth parameter is 2, then
2111** the connection being passed as the second parameter is being closed. The
2112** third parameter is passed NULL In this case. An example of using this
2113** configuration option can be seen in the "test_sqllog.c" source file in
2114** the canonical SQLite source tree.</dd>
2115**
2116** [[SQLITE_CONFIG_MMAP_SIZE]]
2117** <dt>SQLITE_CONFIG_MMAP_SIZE
2118** <dd>^SQLITE_CONFIG_MMAP_SIZE takes two 64-bit integer (sqlite3_int64) values
2119** that are the default mmap size limit (the default setting for
2120** [PRAGMA mmap_size]) and the maximum allowed mmap size limit.
2121** ^The default setting can be overridden by each database connection using
2122** either the [PRAGMA mmap_size] command, or by using the
2123** [SQLITE_FCNTL_MMAP_SIZE] file control. ^(The maximum allowed mmap size
2124** will be silently truncated if necessary so that it does not exceed the
2125** compile-time maximum mmap size set by the
2126** [SQLITE_MAX_MMAP_SIZE] compile-time option.)^
2127** ^If either argument to this option is negative, then that argument is
2128** changed to its compile-time default.
2129**
2130** [[SQLITE_CONFIG_WIN32_HEAPSIZE]]
2131** <dt>SQLITE_CONFIG_WIN32_HEAPSIZE
2132** <dd>^The SQLITE_CONFIG_WIN32_HEAPSIZE option is only available if SQLite is
2133** compiled for Windows with the [SQLITE_WIN32_MALLOC] pre-processor macro
2134** defined. ^SQLITE_CONFIG_WIN32_HEAPSIZE takes a 32-bit unsigned integer value
2135** that specifies the maximum size of the created heap.
2136**
2137** [[SQLITE_CONFIG_PCACHE_HDRSZ]]
2138** <dt>SQLITE_CONFIG_PCACHE_HDRSZ
2139** <dd>^The SQLITE_CONFIG_PCACHE_HDRSZ option takes a single parameter which
2140** is a pointer to an integer and writes into that integer the number of extra
2141** bytes per page required for each page in [SQLITE_CONFIG_PAGECACHE].
2142** The amount of extra space required can change depending on the compiler,
2143** target platform, and SQLite version.
2144**
2145** [[SQLITE_CONFIG_PMASZ]]
2146** <dt>SQLITE_CONFIG_PMASZ
2147** <dd>^The SQLITE_CONFIG_PMASZ option takes a single parameter which
2148** is an unsigned integer and sets the "Minimum PMA Size" for the multithreaded
2149** sorter to that integer. The default minimum PMA Size is set by the
2150** [SQLITE_SORTER_PMASZ] compile-time option. New threads are launched
2151** to help with sort operations when multithreaded sorting
2152** is enabled (using the [PRAGMA threads] command) and the amount of content
2153** to be sorted exceeds the page size times the minimum of the
2154** [PRAGMA cache_size] setting and this value.
2155**
2156** [[SQLITE_CONFIG_STMTJRNL_SPILL]]
2157** <dt>SQLITE_CONFIG_STMTJRNL_SPILL
2158** <dd>^The SQLITE_CONFIG_STMTJRNL_SPILL option takes a single parameter which
2159** becomes the [statement journal] spill-to-disk threshold.
2160** [Statement journals] are held in memory until their size (in bytes)
2161** exceeds this threshold, at which point they are written to disk.
2162** Or if the threshold is -1, statement journals are always held
2163** exclusively in memory.
2164** Since many statement journals never become large, setting the spill
2165** threshold to a value such as 64KiB can greatly reduce the amount of
2166** I/O required to support statement rollback.
2167** The default value for this setting is controlled by the
2168** [SQLITE_STMTJRNL_SPILL] compile-time option.
2169**
2170** [[SQLITE_CONFIG_SORTERREF_SIZE]]
2171** <dt>SQLITE_CONFIG_SORTERREF_SIZE
2172** <dd>The SQLITE_CONFIG_SORTERREF_SIZE option accepts a single parameter
2173** of type (int) - the new value of the sorter-reference size threshold.
2174** Usually, when SQLite uses an external sort to order records according
2175** to an ORDER BY clause, all fields required by the caller are present in the
2176** sorted records. However, if SQLite determines based on the declared type
2177** of a table column that its values are likely to be very large - larger
2178** than the configured sorter-reference size threshold - then a reference
2179** is stored in each sorted record and the required column values loaded
2180** from the database as records are returned in sorted order. The default
2181** value for this option is to never use this optimization. Specifying a
2182** negative value for this option restores the default behavior.
2183** This option is only available if SQLite is compiled with the
2184** [SQLITE_ENABLE_SORTER_REFERENCES] compile-time option.
2185**
2186** [[SQLITE_CONFIG_MEMDB_MAXSIZE]]
2187** <dt>SQLITE_CONFIG_MEMDB_MAXSIZE
2188** <dd>The SQLITE_CONFIG_MEMDB_MAXSIZE option accepts a single parameter
2189** [sqlite3_int64] parameter which is the default maximum size for an in-memory
2190** database created using [sqlite3_deserialize()]. This default maximum
2191** size can be adjusted up or down for individual databases using the
2192** [SQLITE_FCNTL_SIZE_LIMIT] [sqlite3_file_control|file-control]. If this
2193** configuration setting is never used, then the default maximum is determined
2194** by the [SQLITE_MEMDB_DEFAULT_MAXSIZE] compile-time option. If that
2195** compile-time option is not set, then the default maximum is 1073741824.
2196**
2197** [[SQLITE_CONFIG_ROWID_IN_VIEW]]
2198** <dt>SQLITE_CONFIG_ROWID_IN_VIEW
2199** <dd>The SQLITE_CONFIG_ROWID_IN_VIEW option enables or disables the ability
2200** for VIEWs to have a ROWID. The capability can only be enabled if SQLite is
2201** compiled with -DSQLITE_ALLOW_ROWID_IN_VIEW, in which case the capability
2202** defaults to on. This configuration option queries the current setting or
2203** changes the setting to off or on. The argument is a pointer to an integer.
2204** If that integer initially holds a value of 1, then the ability for VIEWs to
2205** have ROWIDs is activated. If the integer initially holds zero, then the
2206** ability is deactivated. Any other initial value for the integer leaves the
2207** setting unchanged. After changes, if any, the integer is written with
2208** a 1 or 0, if the ability for VIEWs to have ROWIDs is on or off. If SQLite
2209** is compiled without -DSQLITE_ALLOW_ROWID_IN_VIEW (which is the usual and
2210** recommended case) then the integer is always filled with zero, regardless
2211** if its initial value.
2212** </dl>
2213*/
2214#define SQLITE_CONFIG_SINGLETHREAD 1 /* nil */
2215#define SQLITE_CONFIG_MULTITHREAD 2 /* nil */
2216#define SQLITE_CONFIG_SERIALIZED 3 /* nil */
2217#define SQLITE_CONFIG_MALLOC 4 /* sqlite3_mem_methods* */
2218#define SQLITE_CONFIG_GETMALLOC 5 /* sqlite3_mem_methods* */
2219#define SQLITE_CONFIG_SCRATCH 6 /* No longer used */
2220#define SQLITE_CONFIG_PAGECACHE 7 /* void*, int sz, int N */
2221#define SQLITE_CONFIG_HEAP 8 /* void*, int nByte, int min */
2222#define SQLITE_CONFIG_MEMSTATUS 9 /* boolean */
2223#define SQLITE_CONFIG_MUTEX 10 /* sqlite3_mutex_methods* */
2224#define SQLITE_CONFIG_GETMUTEX 11 /* sqlite3_mutex_methods* */
2225/* previously SQLITE_CONFIG_CHUNKALLOC 12 which is now unused. */
2226#define SQLITE_CONFIG_LOOKASIDE 13 /* int int */
2227#define SQLITE_CONFIG_PCACHE 14 /* no-op */
2228#define SQLITE_CONFIG_GETPCACHE 15 /* no-op */
2229#define SQLITE_CONFIG_LOG 16 /* xFunc, void* */
2230#define SQLITE_CONFIG_URI 17 /* int */
2231#define SQLITE_CONFIG_PCACHE2 18 /* sqlite3_pcache_methods2* */
2232#define SQLITE_CONFIG_GETPCACHE2 19 /* sqlite3_pcache_methods2* */
2233#define SQLITE_CONFIG_COVERING_INDEX_SCAN 20 /* int */
2234#define SQLITE_CONFIG_SQLLOG 21 /* xSqllog, void* */
2235#define SQLITE_CONFIG_MMAP_SIZE 22 /* sqlite3_int64, sqlite3_int64 */
2236#define SQLITE_CONFIG_WIN32_HEAPSIZE 23 /* int nByte */
2237#define SQLITE_CONFIG_PCACHE_HDRSZ 24 /* int *psz */
2238#define SQLITE_CONFIG_PMASZ 25 /* unsigned int szPma */
2239#define SQLITE_CONFIG_STMTJRNL_SPILL 26 /* int nByte */
2240#define SQLITE_CONFIG_SMALL_MALLOC 27 /* boolean */
2241#define SQLITE_CONFIG_SORTERREF_SIZE 28 /* int nByte */
2242#define SQLITE_CONFIG_MEMDB_MAXSIZE 29 /* sqlite3_int64 */
2243#define SQLITE_CONFIG_ROWID_IN_VIEW 30 /* int* */
2244
2245/*
2246** CAPI3REF: Database Connection Configuration Options
2247**
2248** These constants are the available integer configuration options that
2249** can be passed as the second parameter to the [sqlite3_db_config()] interface.
2250**
2251** The [sqlite3_db_config()] interface is a var-args function. It takes a
2252** variable number of parameters, though always at least two. The number of
2253** parameters passed into sqlite3_db_config() depends on which of these
2254** constants is given as the second parameter. This documentation page
2255** refers to parameters beyond the second as "arguments". Thus, when this
2256** page says "the N-th argument" it means "the N-th parameter past the
2257** configuration option" or "the (N+2)-th parameter to sqlite3_db_config()".
2258**
2259** New configuration options may be added in future releases of SQLite.
2260** Existing configuration options might be discontinued. Applications
2261** should check the return code from [sqlite3_db_config()] to make sure that
2262** the call worked. ^The [sqlite3_db_config()] interface will return a
2263** non-zero [error code] if a discontinued or unsupported configuration option
2264** is invoked.
2265**
2266** <dl>
2267** [[SQLITE_DBCONFIG_LOOKASIDE]]
2268** <dt>SQLITE_DBCONFIG_LOOKASIDE</dt>
2269** <dd> The SQLITE_DBCONFIG_LOOKASIDE option is used to adjust the
2270** configuration of the [lookaside memory allocator] within a database
2271** connection.
2272** The arguments to the SQLITE_DBCONFIG_LOOKASIDE option are <i>not</i>
2273** in the [DBCONFIG arguments|usual format].
2274** The SQLITE_DBCONFIG_LOOKASIDE option takes three arguments, not two,
2275** so that a call to [sqlite3_db_config()] that uses SQLITE_DBCONFIG_LOOKASIDE
2276** should have a total of five parameters.
2277** <ol>
2278** <li><p>The first argument ("buf") is a
2279** pointer to a memory buffer to use for lookaside memory.
2280** The first argument may be NULL in which case SQLite will allocate the
2281** lookaside buffer itself using [sqlite3_malloc()].
2282** <li><P>The second argument ("sz") is the
2283** size of each lookaside buffer slot. Lookaside is disabled if "sz"
2284** is less than 8. The "sz" argument should be a multiple of 8 less than
2285** 65536. If "sz" does not meet this constraint, it is reduced in size until
2286** it does.
2287** <li><p>The third argument ("cnt") is the number of slots.
2288** Lookaside is disabled if "cnt"is less than 1.
2289* The "cnt" value will be reduced, if necessary, so
2290** that the product of "sz" and "cnt" does not exceed 2,147,418,112. The "cnt"
2291** parameter is usually chosen so that the product of "sz" and "cnt" is less
2292** than 1,000,000.
2293** </ol>
2294** <p>If the "buf" argument is not NULL, then it must
2295** point to a memory buffer with a size that is greater than
2296** or equal to the product of "sz" and "cnt".
2297** The buffer must be aligned to an 8-byte boundary.
2298** The lookaside memory
2299** configuration for a database connection can only be changed when that
2300** connection is not currently using lookaside memory, or in other words
2301** when the value returned by [SQLITE_DBSTATUS_LOOKASIDE_USED] is zero.
2302** Any attempt to change the lookaside memory configuration when lookaside
2303** memory is in use leaves the configuration unchanged and returns
2304** [SQLITE_BUSY].
2305** If the "buf" argument is NULL and an attempt
2306** to allocate memory based on "sz" and "cnt" fails, then
2307** lookaside is silently disabled.
2308** <p>
2309** The [SQLITE_CONFIG_LOOKASIDE] configuration option can be used to set the
2310** default lookaside configuration at initialization. The
2311** [-DSQLITE_DEFAULT_LOOKASIDE] option can be used to set the default lookaside
2312** configuration at compile-time. Typical values for lookaside are 1200 for
2313** "sz" and 40 to 100 for "cnt".
2314** </dd>
2315**
2316** [[SQLITE_DBCONFIG_ENABLE_FKEY]]
2317** <dt>SQLITE_DBCONFIG_ENABLE_FKEY</dt>
2318** <dd> ^This option is used to enable or disable the enforcement of
2319** [foreign key constraints]. This is the same setting that is
2320** enabled or disabled by the [PRAGMA foreign_keys] statement.
2321** The first argument is an integer which is 0 to disable FK enforcement,
2322** positive to enable FK enforcement or negative to leave FK enforcement
2323** unchanged. The second parameter is a pointer to an integer into which
2324** is written 0 or 1 to indicate whether FK enforcement is off or on
2325** following this call. The second parameter may be a NULL pointer, in
2326** which case the FK enforcement setting is not reported back. </dd>
2327**
2328** [[SQLITE_DBCONFIG_ENABLE_TRIGGER]]
2329** <dt>SQLITE_DBCONFIG_ENABLE_TRIGGER</dt>
2330** <dd> ^This option is used to enable or disable [CREATE TRIGGER | triggers].
2331** There should be two additional arguments.
2332** The first argument is an integer which is 0 to disable triggers,
2333** positive to enable triggers or negative to leave the setting unchanged.
2334** The second parameter is a pointer to an integer into which
2335** is written 0 or 1 to indicate whether triggers are disabled or enabled
2336** following this call. The second parameter may be a NULL pointer, in
2337** which case the trigger setting is not reported back.
2338**
2339** <p>Originally this option disabled all triggers. ^(However, since
2340** SQLite version 3.35.0, TEMP triggers are still allowed even if
2341** this option is off. So, in other words, this option now only disables
2342** triggers in the main database schema or in the schemas of [ATTACH]-ed
2343** databases.)^ </dd>
2344**
2345** [[SQLITE_DBCONFIG_ENABLE_VIEW]]
2346** <dt>SQLITE_DBCONFIG_ENABLE_VIEW</dt>
2347** <dd> ^This option is used to enable or disable [CREATE VIEW | views].
2348** There must be two additional arguments.
2349** The first argument is an integer which is 0 to disable views,
2350** positive to enable views or negative to leave the setting unchanged.
2351** The second parameter is a pointer to an integer into which
2352** is written 0 or 1 to indicate whether views are disabled or enabled
2353** following this call. The second parameter may be a NULL pointer, in
2354** which case the view setting is not reported back.
2355**
2356** <p>Originally this option disabled all views. ^(However, since
2357** SQLite version 3.35.0, TEMP views are still allowed even if
2358** this option is off. So, in other words, this option now only disables
2359** views in the main database schema or in the schemas of ATTACH-ed
2360** databases.)^ </dd>
2361**
2362** [[SQLITE_DBCONFIG_ENABLE_FTS3_TOKENIZER]]
2363** <dt>SQLITE_DBCONFIG_ENABLE_FTS3_TOKENIZER</dt>
2364** <dd> ^This option is used to enable or disable using the
2365** [fts3_tokenizer()] function - part of the [FTS3] full-text search engine
2366** extension - without using bound parameters as the parameters. Doing so
2367** is disabled by default. There must be two additional arguments. The first
2368** argument is an integer. If it is passed 0, then using fts3_tokenizer()
2369** without bound parameters is disabled. If it is passed a positive value,
2370** then calling fts3_tokenizer without bound parameters is enabled. If it
2371** is passed a negative value, this setting is not modified - this can be
2372** used to query for the current setting. The second parameter is a pointer
2373** to an integer into which is written 0 or 1 to indicate the current value
2374** of this setting (after it is modified, if applicable). The second
2375** parameter may be a NULL pointer, in which case the value of the setting
2376** is not reported back. Refer to [FTS3] documentation for further details.
2377** </dd>
2378**
2379** [[SQLITE_DBCONFIG_ENABLE_LOAD_EXTENSION]]
2380** <dt>SQLITE_DBCONFIG_ENABLE_LOAD_EXTENSION</dt>
2381** <dd> ^This option is used to enable or disable the [sqlite3_load_extension()]
2382** interface independently of the [load_extension()] SQL function.
2383** The [sqlite3_enable_load_extension()] API enables or disables both the
2384** C-API [sqlite3_load_extension()] and the SQL function [load_extension()].
2385** There must be two additional arguments.
2386** When the first argument to this interface is 1, then only the C-API is
2387** enabled and the SQL function remains disabled. If the first argument to
2388** this interface is 0, then both the C-API and the SQL function are disabled.
2389** If the first argument is -1, then no changes are made to the state of either
2390** the C-API or the SQL function.
2391** The second parameter is a pointer to an integer into which
2392** is written 0 or 1 to indicate whether [sqlite3_load_extension()] interface
2393** is disabled or enabled following this call. The second parameter may
2394** be a NULL pointer, in which case the new setting is not reported back.
2395** </dd>
2396**
2397** [[SQLITE_DBCONFIG_MAINDBNAME]] <dt>SQLITE_DBCONFIG_MAINDBNAME</dt>
2398** <dd> ^This option is used to change the name of the "main" database
2399** schema. This option does not follow the
2400** [DBCONFIG arguments|usual SQLITE_DBCONFIG argument format].
2401** This option takes exactly one additional argument so that the
2402** [sqlite3_db_config()] call has a total of three parameters. The
2403** extra argument must be a pointer to a constant UTF8 string which
2404** will become the new schema name in place of "main". ^SQLite does
2405** not make a copy of the new main schema name string, so the application
2406** must ensure that the argument passed into SQLITE_DBCONFIG MAINDBNAME
2407** is unchanged until after the database connection closes.
2408** </dd>
2409**
2410** [[SQLITE_DBCONFIG_NO_CKPT_ON_CLOSE]]
2411** <dt>SQLITE_DBCONFIG_NO_CKPT_ON_CLOSE</dt>
2412** <dd> Usually, when a database in [WAL mode] is closed or detached from a
2413** database handle, SQLite checks if if there are other connections to the
2414** same database, and if there are no other database connection (if the
2415** connection being closed is the last open connection to the database),
2416** then SQLite performs a [checkpoint] before closing the connection and
2417** deletes the WAL file. The SQLITE_DBCONFIG_NO_CKPT_ON_CLOSE option can
2418** be used to override that behavior. The first argument passed to this
2419** operation (the third parameter to [sqlite3_db_config()]) is an integer
2420** which is positive to disable checkpoints-on-close, or zero (the default)
2421** to enable them, and negative to leave the setting unchanged.
2422** The second argument (the fourth parameter) is a pointer to an integer
2423** into which is written 0 or 1 to indicate whether checkpoints-on-close
2424** have been disabled - 0 if they are not disabled, 1 if they are.
2425** </dd>
2426**
2427** [[SQLITE_DBCONFIG_ENABLE_QPSG]] <dt>SQLITE_DBCONFIG_ENABLE_QPSG</dt>
2428** <dd>^(The SQLITE_DBCONFIG_ENABLE_QPSG option activates or deactivates
2429** the [query planner stability guarantee] (QPSG). When the QPSG is active,
2430** a single SQL query statement will always use the same algorithm regardless
2431** of values of [bound parameters].)^ The QPSG disables some query optimizations
2432** that look at the values of bound parameters, which can make some queries
2433** slower. But the QPSG has the advantage of more predictable behavior. With
2434** the QPSG active, SQLite will always use the same query plan in the field as
2435** was used during testing in the lab.
2436** The first argument to this setting is an integer which is 0 to disable
2437** the QPSG, positive to enable QPSG, or negative to leave the setting
2438** unchanged. The second parameter is a pointer to an integer into which
2439** is written 0 or 1 to indicate whether the QPSG is disabled or enabled
2440** following this call.
2441** </dd>
2442**
2443** [[SQLITE_DBCONFIG_TRIGGER_EQP]] <dt>SQLITE_DBCONFIG_TRIGGER_EQP</dt>
2444** <dd> By default, the output of EXPLAIN QUERY PLAN commands does not
2445** include output for any operations performed by trigger programs. This
2446** option is used to set or clear (the default) a flag that governs this
2447** behavior. The first parameter passed to this operation is an integer -
2448** positive to enable output for trigger programs, or zero to disable it,
2449** or negative to leave the setting unchanged.
2450** The second parameter is a pointer to an integer into which is written
2451** 0 or 1 to indicate whether output-for-triggers has been disabled - 0 if
2452** it is not disabled, 1 if it is.
2453** </dd>
2454**
2455** [[SQLITE_DBCONFIG_RESET_DATABASE]] <dt>SQLITE_DBCONFIG_RESET_DATABASE</dt>
2456** <dd> Set the SQLITE_DBCONFIG_RESET_DATABASE flag and then run
2457** [VACUUM] in order to reset a database back to an empty database
2458** with no schema and no content. The following process works even for
2459** a badly corrupted database file:
2460** <ol>
2461** <li> If the database connection is newly opened, make sure it has read the
2462** database schema by preparing then discarding some query against the
2463** database, or calling sqlite3_table_column_metadata(), ignoring any
2464** errors. This step is only necessary if the application desires to keep
2465** the database in WAL mode after the reset if it was in WAL mode before
2466** the reset.
2467** <li> sqlite3_db_config(db, SQLITE_DBCONFIG_RESET_DATABASE, 1, 0);
2468** <li> [sqlite3_exec](db, "[VACUUM]", 0, 0, 0);
2469** <li> sqlite3_db_config(db, SQLITE_DBCONFIG_RESET_DATABASE, 0, 0);
2470** </ol>
2471** Because resetting a database is destructive and irreversible, the
2472** process requires the use of this obscure API and multiple steps to
2473** help ensure that it does not happen by accident. Because this
2474** feature must be capable of resetting corrupt databases, and
2475** shutting down virtual tables may require access to that corrupt
2476** storage, the library must abandon any installed virtual tables
2477** without calling their xDestroy() methods.
2478**
2479** [[SQLITE_DBCONFIG_DEFENSIVE]] <dt>SQLITE_DBCONFIG_DEFENSIVE</dt>
2480** <dd>The SQLITE_DBCONFIG_DEFENSIVE option activates or deactivates the
2481** "defensive" flag for a database connection. When the defensive
2482** flag is enabled, language features that allow ordinary SQL to
2483** deliberately corrupt the database file are disabled. The disabled
2484** features include but are not limited to the following:
2485** <ul>
2486** <li> The [PRAGMA writable_schema=ON] statement.
2487** <li> The [PRAGMA journal_mode=OFF] statement.
2488** <li> The [PRAGMA schema_version=N] statement.
2489** <li> Writes to the [sqlite_dbpage] virtual table.
2490** <li> Direct writes to [shadow tables].
2491** </ul>
2492** </dd>
2493**
2494** [[SQLITE_DBCONFIG_WRITABLE_SCHEMA]] <dt>SQLITE_DBCONFIG_WRITABLE_SCHEMA</dt>
2495** <dd>The SQLITE_DBCONFIG_WRITABLE_SCHEMA option activates or deactivates the
2496** "writable_schema" flag. This has the same effect and is logically equivalent
2497** to setting [PRAGMA writable_schema=ON] or [PRAGMA writable_schema=OFF].
2498** The first argument to this setting is an integer which is 0 to disable
2499** the writable_schema, positive to enable writable_schema, or negative to
2500** leave the setting unchanged. The second parameter is a pointer to an
2501** integer into which is written 0 or 1 to indicate whether the writable_schema
2502** is enabled or disabled following this call.
2503** </dd>
2504**
2505** [[SQLITE_DBCONFIG_LEGACY_ALTER_TABLE]]
2506** <dt>SQLITE_DBCONFIG_LEGACY_ALTER_TABLE</dt>
2507** <dd>The SQLITE_DBCONFIG_LEGACY_ALTER_TABLE option activates or deactivates
2508** the legacy behavior of the [ALTER TABLE RENAME] command such that it
2509** behaves as it did prior to [version 3.24.0] (2018-06-04). See the
2510** "Compatibility Notice" on the [ALTER TABLE RENAME documentation] for
2511** additional information. This feature can also be turned on and off
2512** using the [PRAGMA legacy_alter_table] statement.
2513** </dd>
2514**
2515** [[SQLITE_DBCONFIG_DQS_DML]]
2516** <dt>SQLITE_DBCONFIG_DQS_DML</dt>
2517** <dd>The SQLITE_DBCONFIG_DQS_DML option activates or deactivates
2518** the legacy [double-quoted string literal] misfeature for DML statements
2519** only, that is DELETE, INSERT, SELECT, and UPDATE statements. The
2520** default value of this setting is determined by the [-DSQLITE_DQS]
2521** compile-time option.
2522** </dd>
2523**
2524** [[SQLITE_DBCONFIG_DQS_DDL]]
2525** <dt>SQLITE_DBCONFIG_DQS_DDL</dt>
2526** <dd>The SQLITE_DBCONFIG_DQS option activates or deactivates
2527** the legacy [double-quoted string literal] misfeature for DDL statements,
2528** such as CREATE TABLE and CREATE INDEX. The
2529** default value of this setting is determined by the [-DSQLITE_DQS]
2530** compile-time option.
2531** </dd>
2532**
2533** [[SQLITE_DBCONFIG_TRUSTED_SCHEMA]]
2534** <dt>SQLITE_DBCONFIG_TRUSTED_SCHEMA</dt>
2535** <dd>The SQLITE_DBCONFIG_TRUSTED_SCHEMA option tells SQLite to
2536** assume that database schemas are untainted by malicious content.
2537** When the SQLITE_DBCONFIG_TRUSTED_SCHEMA option is disabled, SQLite
2538** takes additional defensive steps to protect the application from harm
2539** including:
2540** <ul>
2541** <li> Prohibit the use of SQL functions inside triggers, views,
2542** CHECK constraints, DEFAULT clauses, expression indexes,
2543** partial indexes, or generated columns
2544** unless those functions are tagged with [SQLITE_INNOCUOUS].
2545** <li> Prohibit the use of virtual tables inside of triggers or views
2546** unless those virtual tables are tagged with [SQLITE_VTAB_INNOCUOUS].
2547** </ul>
2548** This setting defaults to "on" for legacy compatibility, however
2549** all applications are advised to turn it off if possible. This setting
2550** can also be controlled using the [PRAGMA trusted_schema] statement.
2551** </dd>
2552**
2553** [[SQLITE_DBCONFIG_LEGACY_FILE_FORMAT]]
2554** <dt>SQLITE_DBCONFIG_LEGACY_FILE_FORMAT</dt>
2555** <dd>The SQLITE_DBCONFIG_LEGACY_FILE_FORMAT option activates or deactivates
2556** the legacy file format flag. When activated, this flag causes all newly
2557** created database files to have a schema format version number (the 4-byte
2558** integer found at offset 44 into the database header) of 1. This in turn
2559** means that the resulting database file will be readable and writable by
2560** any SQLite version back to 3.0.0 ([dateof:3.0.0]). Without this setting,
2561** newly created databases are generally not understandable by SQLite versions
2562** prior to 3.3.0 ([dateof:3.3.0]). As these words are written, there
2563** is now scarcely any need to generate database files that are compatible
2564** all the way back to version 3.0.0, and so this setting is of little
2565** practical use, but is provided so that SQLite can continue to claim the
2566** ability to generate new database files that are compatible with version
2567** 3.0.0.
2568** <p>Note that when the SQLITE_DBCONFIG_LEGACY_FILE_FORMAT setting is on,
2569** the [VACUUM] command will fail with an obscure error when attempting to
2570** process a table with generated columns and a descending index. This is
2571** not considered a bug since SQLite versions 3.3.0 and earlier do not support
2572** either generated columns or descending indexes.
2573** </dd>
2574**
2575** [[SQLITE_DBCONFIG_STMT_SCANSTATUS]]
2576** <dt>SQLITE_DBCONFIG_STMT_SCANSTATUS</dt>
2577** <dd>The SQLITE_DBCONFIG_STMT_SCANSTATUS option is only useful in
2578** [SQLITE_ENABLE_STMT_SCANSTATUS] builds. In this case, it sets or clears
2579** a flag that enables collection of run-time performance statistics
2580** used by [sqlite3_stmt_scanstatus_v2()] and the [nexec and ncycle]
2581** columns of the [bytecode virtual table].
2582** For statistics to be collected, the flag must be set on
2583** the database handle both when the SQL statement is
2584** [sqlite3_prepare|prepared] and when it is [sqlite3_step|stepped].
2585** The flag is set (collection of statistics is enabled) by default.
2586** <p>This option takes two arguments: an integer and a pointer to
2587** an integer. The first argument is 1, 0, or -1 to enable, disable, or
2588** leave unchanged the statement scanstatus option. If the second argument
2589** is not NULL, then the value of the statement scanstatus setting after
2590** processing the first argument is written into the integer that the second
2591** argument points to.
2592** </dd>
2593**
2594** [[SQLITE_DBCONFIG_REVERSE_SCANORDER]]
2595** <dt>SQLITE_DBCONFIG_REVERSE_SCANORDER</dt>
2596** <dd>The SQLITE_DBCONFIG_REVERSE_SCANORDER option changes the default order
2597** in which tables and indexes are scanned so that the scans start at the end
2598** and work toward the beginning rather than starting at the beginning and
2599** working toward the end. Setting SQLITE_DBCONFIG_REVERSE_SCANORDER is the
2600** same as setting [PRAGMA reverse_unordered_selects]. <p>This option takes
2601** two arguments which are an integer and a pointer to an integer. The first
2602** argument is 1, 0, or -1 to enable, disable, or leave unchanged the
2603** reverse scan order flag, respectively. If the second argument is not NULL,
2604** then 0 or 1 is written into the integer that the second argument points to
2605** depending on if the reverse scan order flag is set after processing the
2606** first argument.
2607** </dd>
2608**
2609** [[SQLITE_DBCONFIG_ENABLE_ATTACH_CREATE]]
2610** <dt>SQLITE_DBCONFIG_ENABLE_ATTACH_CREATE</dt>
2611** <dd>The SQLITE_DBCONFIG_ENABLE_ATTACH_CREATE option enables or disables
2612** the ability of the [ATTACH DATABASE] SQL command to create a new database
2613** file if the database filed named in the ATTACH command does not already
2614** exist. This ability of ATTACH to create a new database is enabled by
2615** default. Applications can disable or reenable the ability for ATTACH to
2616** create new database files using this DBCONFIG option.<p>
2617** This option takes two arguments which are an integer and a pointer
2618** to an integer. The first argument is 1, 0, or -1 to enable, disable, or
2619** leave unchanged the attach-create flag, respectively. If the second
2620** argument is not NULL, then 0 or 1 is written into the integer that the
2621** second argument points to depending on if the attach-create flag is set
2622** after processing the first argument.
2623** </dd>
2624**
2625** [[SQLITE_DBCONFIG_ENABLE_ATTACH_WRITE]]
2626** <dt>SQLITE_DBCONFIG_ENABLE_ATTACH_WRITE</dt>
2627** <dd>The SQLITE_DBCONFIG_ENABLE_ATTACH_WRITE option enables or disables the
2628** ability of the [ATTACH DATABASE] SQL command to open a database for writing.
2629** This capability is enabled by default. Applications can disable or
2630** reenable this capability using the current DBCONFIG option. If
2631** this capability is disabled, the [ATTACH] command will still work,
2632** but the database will be opened read-only. If this option is disabled,
2633** then the ability to create a new database using [ATTACH] is also disabled,
2634** regardless of the value of the [SQLITE_DBCONFIG_ENABLE_ATTACH_CREATE]
2635** option.<p>
2636** This option takes two arguments which are an integer and a pointer
2637** to an integer. The first argument is 1, 0, or -1 to enable, disable, or
2638** leave unchanged the ability to ATTACH another database for writing,
2639** respectively. If the second argument is not NULL, then 0 or 1 is written
2640** into the integer to which the second argument points, depending on whether
2641** the ability to ATTACH a read/write database is enabled or disabled
2642** after processing the first argument.
2643** </dd>
2644**
2645** [[SQLITE_DBCONFIG_ENABLE_COMMENTS]]
2646** <dt>SQLITE_DBCONFIG_ENABLE_COMMENTS</dt>
2647** <dd>The SQLITE_DBCONFIG_ENABLE_COMMENTS option enables or disables the
2648** ability to include comments in SQL text. Comments are enabled by default.
2649** An application can disable or reenable comments in SQL text using this
2650** DBCONFIG option.<p>
2651** This option takes two arguments which are an integer and a pointer
2652** to an integer. The first argument is 1, 0, or -1 to enable, disable, or
2653** leave unchanged the ability to use comments in SQL text,
2654** respectively. If the second argument is not NULL, then 0 or 1 is written
2655** into the integer that the second argument points to depending on if
2656** comments are allowed in SQL text after processing the first argument.
2657** </dd>
2658**
2659** [[SQLITE_DBCONFIG_FP_DIGITS]]
2660** <dt>SQLITE_DBCONFIG_FP_DIGITS</dt>
2661** <dd>The SQLITE_DBCONFIG_FP_DIGITS setting is a small integer that determines
2662** the number of significant digits that SQLite will attempt to preserve when
2663** converting floating point numbers (IEEE 754 "doubles") into text. The
2664** default value 17, as of SQLite version 3.52.0. The value was 15 in all
2665** prior versions.<p>
2666** This option takes two arguments which are an integer and a pointer
2667** to an integer. The first argument is a small integer, between 3 and 23, or
2668** zero. The FP_DIGITS setting is changed to that small integer, or left
2669** unaltered if the first argument is zero or out of range. The second argument
2670** is a pointer to an integer. If the pointer is not NULL, then the value of
2671** the FP_DIGITS setting, after possibly being modified by the first
2672** arguments, is written into the integer to which the second argument points.
2673** </dd>
2674**
2675** </dl>
2676**
2677** [[DBCONFIG arguments]] <h3>Arguments To SQLITE_DBCONFIG Options</h3>
2678**
2679** <p>Most of the SQLITE_DBCONFIG options take two arguments, so that the
2680** overall call to [sqlite3_db_config()] has a total of four parameters.
2681** The first argument (the third parameter to sqlite3_db_config()) is
2682** an integer.
2683** The second argument is a pointer to an integer. If the first argument is 1,
2684** then the option becomes enabled. If the first integer argument is 0,
2685** then the option is disabled.
2686** If the first argument is -1, then the option setting
2687** is unchanged. The second argument, the pointer to an integer, may be NULL.
2688** If the second argument is not NULL, then a value of 0 or 1 is written into
2689** the integer to which the second argument points, depending on whether the
2690** setting is disabled or enabled after applying any changes specified by
2691** the first argument.
2692**
2693** <p>While most SQLITE_DBCONFIG options use the argument format
2694** described in the previous paragraph, the [SQLITE_DBCONFIG_MAINDBNAME],
2695** [SQLITE_DBCONFIG_LOOKASIDE], and [SQLITE_DBCONFIG_FP_DIGITS] options
2696** are different. See the documentation of those exceptional options for
2697** details.
2698*/
2699#define SQLITE_DBCONFIG_MAINDBNAME 1000 /* const char* */
2700#define SQLITE_DBCONFIG_LOOKASIDE 1001 /* void* int int */
2701#define SQLITE_DBCONFIG_ENABLE_FKEY 1002 /* int int* */
2702#define SQLITE_DBCONFIG_ENABLE_TRIGGER 1003 /* int int* */
2703#define SQLITE_DBCONFIG_ENABLE_FTS3_TOKENIZER 1004 /* int int* */
2704#define SQLITE_DBCONFIG_ENABLE_LOAD_EXTENSION 1005 /* int int* */
2705#define SQLITE_DBCONFIG_NO_CKPT_ON_CLOSE 1006 /* int int* */
2706#define SQLITE_DBCONFIG_ENABLE_QPSG 1007 /* int int* */
2707#define SQLITE_DBCONFIG_TRIGGER_EQP 1008 /* int int* */
2708#define SQLITE_DBCONFIG_RESET_DATABASE 1009 /* int int* */
2709#define SQLITE_DBCONFIG_DEFENSIVE 1010 /* int int* */
2710#define SQLITE_DBCONFIG_WRITABLE_SCHEMA 1011 /* int int* */
2711#define SQLITE_DBCONFIG_LEGACY_ALTER_TABLE 1012 /* int int* */
2712#define SQLITE_DBCONFIG_DQS_DML 1013 /* int int* */
2713#define SQLITE_DBCONFIG_DQS_DDL 1014 /* int int* */
2714#define SQLITE_DBCONFIG_ENABLE_VIEW 1015 /* int int* */
2715#define SQLITE_DBCONFIG_LEGACY_FILE_FORMAT 1016 /* int int* */
2716#define SQLITE_DBCONFIG_TRUSTED_SCHEMA 1017 /* int int* */
2717#define SQLITE_DBCONFIG_STMT_SCANSTATUS 1018 /* int int* */
2718#define SQLITE_DBCONFIG_REVERSE_SCANORDER 1019 /* int int* */
2719#define SQLITE_DBCONFIG_ENABLE_ATTACH_CREATE 1020 /* int int* */
2720#define SQLITE_DBCONFIG_ENABLE_ATTACH_WRITE 1021 /* int int* */
2721#define SQLITE_DBCONFIG_ENABLE_COMMENTS 1022 /* int int* */
2722#define SQLITE_DBCONFIG_FP_DIGITS 1023 /* int int* */
2723#define SQLITE_DBCONFIG_MAX 1023 /* Largest DBCONFIG */
2724
2725/*
2726** CAPI3REF: Enable Or Disable Extended Result Codes
2727** METHOD: sqlite3
2728**
2729** ^The sqlite3_extended_result_codes() routine enables or disables the
2730** [extended result codes] feature of SQLite. ^The extended result
2731** codes are disabled by default for historical compatibility.
2732*/
2733SQLITE_API int sqlite3_extended_result_codes(sqlite3*, int onoff);
2734
2735/*
2736** CAPI3REF: Last Insert Rowid
2737** METHOD: sqlite3
2738**
2739** ^Each entry in most SQLite tables (except for [WITHOUT ROWID] tables)
2740** has a unique 64-bit signed
2741** integer key called the [ROWID | "rowid"]. ^The rowid is always available
2742** as an undeclared column named ROWID, OID, or _ROWID_ as long as those
2743** names are not also used by explicitly declared columns. ^If
2744** the table has a column of type [INTEGER PRIMARY KEY] then that column
2745** is another alias for the rowid.
2746**
2747** ^The sqlite3_last_insert_rowid(D) interface usually returns the [rowid] of
2748** the most recent successful [INSERT] into a rowid table or [virtual table]
2749** on database connection D. ^Inserts into [WITHOUT ROWID] tables are not
2750** recorded. ^If no successful [INSERT]s into rowid tables have ever occurred
2751** on the database connection D, then sqlite3_last_insert_rowid(D) returns
2752** zero.
2753**
2754** As well as being set automatically as rows are inserted into database
2755** tables, the value returned by this function may be set explicitly by
2756** [sqlite3_set_last_insert_rowid()]
2757**
2758** Some virtual table implementations may INSERT rows into rowid tables as
2759** part of committing a transaction (e.g. to flush data accumulated in memory
2760** to disk). In this case subsequent calls to this function return the rowid
2761** associated with these internal INSERT operations, which leads to
2762** unintuitive results. Virtual table implementations that do write to rowid
2763** tables in this way can avoid this problem by restoring the original
2764** rowid value using [sqlite3_set_last_insert_rowid()] before returning
2765** control to the user.
2766**
2767** ^(If an [INSERT] occurs within a trigger then this routine will
2768** return the [rowid] of the inserted row as long as the trigger is
2769** running. Once the trigger program ends, the value returned
2770** by this routine reverts to what it was before the trigger was fired.)^
2771**
2772** ^An [INSERT] that fails due to a constraint violation is not a
2773** successful [INSERT] and does not change the value returned by this
2774** routine. ^Thus INSERT OR FAIL, INSERT OR IGNORE, INSERT OR ROLLBACK,
2775** and INSERT OR ABORT make no changes to the return value of this
2776** routine when their insertion fails. ^(When INSERT OR REPLACE
2777** encounters a constraint violation, it does not fail. The
2778** INSERT continues to completion after deleting rows that caused
2779** the constraint problem so INSERT OR REPLACE will always change
2780** the return value of this interface.)^
2781**
2782** ^For the purposes of this routine, an [INSERT] is considered to
2783** be successful even if it is subsequently rolled back.
2784**
2785** This function is accessible to SQL statements via the
2786** [last_insert_rowid() SQL function].
2787**
2788** If a separate thread performs a new [INSERT] on the same
2789** database connection while the [sqlite3_last_insert_rowid()]
2790** function is running and thus changes the last insert [rowid],
2791** then the value returned by [sqlite3_last_insert_rowid()] is
2792** unpredictable and might not equal either the old or the new
2793** last insert [rowid].
2794*/
2795SQLITE_API sqlite3_int64 sqlite3_last_insert_rowid(sqlite3*);
2796
2797/*
2798** CAPI3REF: Set the Last Insert Rowid value.
2799** METHOD: sqlite3
2800**
2801** The sqlite3_set_last_insert_rowid(D, R) method allows the application to
2802** set the value returned by calling sqlite3_last_insert_rowid(D) to R
2803** without inserting a row into the database.
2804*/
2805SQLITE_API void sqlite3_set_last_insert_rowid(sqlite3*,sqlite3_int64);
2806
2807/*
2808** CAPI3REF: Count The Number Of Rows Modified
2809** METHOD: sqlite3
2810**
2811** ^These functions return the number of rows modified, inserted or
2812** deleted by the most recently completed INSERT, UPDATE or DELETE
2813** statement on the database connection specified by the only parameter.
2814** The two functions are identical except for the type of the return value
2815** and that if the number of rows modified by the most recent INSERT, UPDATE,
2816** or DELETE is greater than the maximum value supported by type "int", then
2817** the return value of sqlite3_changes() is undefined. ^Executing any other
2818** type of SQL statement does not modify the value returned by these functions.
2819** For the purposes of this interface, a CREATE TABLE AS SELECT statement
2820** does not count as an INSERT, UPDATE or DELETE statement and hence the rows
2821** added to the new table by the CREATE TABLE AS SELECT statement are not
2822** counted.
2823**
2824** ^Only changes made directly by the INSERT, UPDATE or DELETE statement are
2825** considered - auxiliary changes caused by [CREATE TRIGGER | triggers],
2826** [foreign key actions] or [REPLACE] constraint resolution are not counted.
2827**
2828** Changes to a view that are intercepted by
2829** [INSTEAD OF trigger | INSTEAD OF triggers] are not counted. ^The value
2830** returned by sqlite3_changes() immediately after an INSERT, UPDATE or
2831** DELETE statement run on a view is always zero. Only changes made to real
2832** tables are counted.
2833**
2834** Things are more complicated if the sqlite3_changes() function is
2835** executed while a trigger program is running. This may happen if the
2836** program uses the [changes() SQL function], or if some other callback
2837** function invokes sqlite3_changes() directly. Essentially:
2838**
2839** <ul>
2840** <li> ^(Before entering a trigger program the value returned by
2841** sqlite3_changes() function is saved. After the trigger program
2842** has finished, the original value is restored.)^
2843**
2844** <li> ^(Within a trigger program each INSERT, UPDATE and DELETE
2845** statement sets the value returned by sqlite3_changes()
2846** upon completion as normal. Of course, this value will not include
2847** any changes performed by sub-triggers, as the sqlite3_changes()
2848** value will be saved and restored after each sub-trigger has run.)^
2849** </ul>
2850**
2851** ^This means that if the changes() SQL function (or similar) is used
2852** by the first INSERT, UPDATE or DELETE statement within a trigger, it
2853** returns the value as set when the calling statement began executing.
2854** ^If it is used by the second or subsequent such statement within a trigger
2855** program, the value returned reflects the number of rows modified by the
2856** previous INSERT, UPDATE or DELETE statement within the same trigger.
2857**
2858** If a separate thread makes changes on the same database connection
2859** while [sqlite3_changes()] is running then the value returned
2860** is unpredictable and not meaningful.
2861**
2862** See also:
2863** <ul>
2864** <li> the [sqlite3_total_changes()] interface
2865** <li> the [count_changes pragma]
2866** <li> the [changes() SQL function]
2867** <li> the [data_version pragma]
2868** </ul>
2869*/
2870SQLITE_API int sqlite3_changes(sqlite3*);
2871SQLITE_API sqlite3_int64 sqlite3_changes64(sqlite3*);
2872
2873/*
2874** CAPI3REF: Total Number Of Rows Modified
2875** METHOD: sqlite3
2876**
2877** ^These functions return the total number of rows inserted, modified or
2878** deleted by all [INSERT], [UPDATE] or [DELETE] statements completed
2879** since the database connection was opened, including those executed as
2880** part of trigger programs. The two functions are identical except for the
2881** type of the return value and that if the number of rows modified by the
2882** connection exceeds the maximum value supported by type "int", then
2883** the return value of sqlite3_total_changes() is undefined. ^Executing
2884** any other type of SQL statement does not affect the value returned by
2885** sqlite3_total_changes().
2886**
2887** ^Changes made as part of [foreign key actions] are included in the
2888** count, but those made as part of REPLACE constraint resolution are
2889** not. ^Changes to a view that are intercepted by INSTEAD OF triggers
2890** are not counted.
2891**
2892** The [sqlite3_total_changes(D)] interface only reports the number
2893** of rows that changed due to SQL statement run against database
2894** connection D. Any changes by other database connections are ignored.
2895** To detect changes against a database file from other database
2896** connections use the [PRAGMA data_version] command or the
2897** [SQLITE_FCNTL_DATA_VERSION] [file control].
2898**
2899** If a separate thread makes changes on the same database connection
2900** while [sqlite3_total_changes()] is running then the value
2901** returned is unpredictable and not meaningful.
2902**
2903** See also:
2904** <ul>
2905** <li> the [sqlite3_changes()] interface
2906** <li> the [count_changes pragma]
2907** <li> the [changes() SQL function]
2908** <li> the [data_version pragma]
2909** <li> the [SQLITE_FCNTL_DATA_VERSION] [file control]
2910** </ul>
2911*/
2912SQLITE_API int sqlite3_total_changes(sqlite3*);
2913SQLITE_API sqlite3_int64 sqlite3_total_changes64(sqlite3*);
2914
2915/*
2916** CAPI3REF: Interrupt A Long-Running Query
2917** METHOD: sqlite3
2918**
2919** ^This function causes any pending database operation to abort and
2920** return at its earliest opportunity. This routine is typically
2921** called in response to a user action such as pressing "Cancel"
2922** or Ctrl-C where the user wants a long query operation to halt
2923** immediately.
2924**
2925** ^It is safe to call this routine from a thread different from the
2926** thread that is currently running the database operation. But it
2927** is not safe to call this routine with a [database connection] that
2928** is closed or might close before sqlite3_interrupt() returns.
2929**
2930** ^If an SQL operation is very nearly finished at the time when
2931** sqlite3_interrupt() is called, then it might not have an opportunity
2932** to be interrupted and might continue to completion.
2933**
2934** ^An SQL operation that is interrupted will return [SQLITE_INTERRUPT].
2935** ^If the interrupted SQL operation is an INSERT, UPDATE, or DELETE
2936** that is inside an explicit transaction, then the entire transaction
2937** will be rolled back automatically.
2938**
2939** ^The sqlite3_interrupt(D) call is in effect until all currently running
2940** SQL statements on [database connection] D complete. ^Any new SQL statements
2941** that are started after the sqlite3_interrupt() call and before the
2942** running statement count reaches zero are interrupted as if they had been
2943** running prior to the sqlite3_interrupt() call. ^New SQL statements
2944** that are started after the running statement count reaches zero are
2945** not effected by the sqlite3_interrupt().
2946** ^A call to sqlite3_interrupt(D) that occurs when there are no running
2947** SQL statements is a no-op and has no effect on SQL statements
2948** that are started after the sqlite3_interrupt() call returns.
2949**
2950** ^The [sqlite3_is_interrupted(D)] interface can be used to determine whether
2951** or not an interrupt is currently in effect for [database connection] D.
2952** It returns 1 if an interrupt is currently in effect, or 0 otherwise.
2953*/
2954SQLITE_API void sqlite3_interrupt(sqlite3*);
2955SQLITE_API int sqlite3_is_interrupted(sqlite3*);
2956
2957/*
2958** CAPI3REF: Determine If An SQL Statement Is Complete
2959**
2960** These routines are useful during command-line input to determine if the
2961** currently entered text seems to form a complete SQL statement or
2962** if additional input is needed before sending the text into
2963** SQLite for parsing. ^These routines return 1 if the input string
2964** appears to be a complete SQL statement. ^A statement is judged to be
2965** complete if it ends with a semicolon token and is not a prefix of a
2966** well-formed CREATE TRIGGER statement. ^Semicolons that are embedded within
2967** string literals or quoted identifier names or comments are not
2968** independent tokens (they are part of the token in which they are
2969** embedded) and thus do not count as a statement terminator. ^Whitespace
2970** and comments that follow the final semicolon are ignored.
2971**
2972** ^These routines return 0 if the statement is incomplete. ^If a
2973** memory allocation fails, then SQLITE_NOMEM is returned.
2974**
2975** ^These routines do not parse the SQL statements and thus
2976** will not detect syntactically incorrect SQL.
2977**
2978** ^(If SQLite has not been initialized using [sqlite3_initialize()] prior
2979** to invoking sqlite3_complete16() then sqlite3_initialize() is invoked
2980** automatically by sqlite3_complete16(). If that initialization fails,
2981** then the return value from sqlite3_complete16() will be non-zero
2982** regardless of whether or not the input SQL is complete.)^
2983**
2984** The input to [sqlite3_complete()] must be a zero-terminated
2985** UTF-8 string.
2986**
2987** The input to [sqlite3_complete16()] must be a zero-terminated
2988** UTF-16 string in native byte order.
2989*/
2990SQLITE_API int sqlite3_complete(const char *sql);
2991SQLITE_API int sqlite3_complete16(const void *sql);
2992
2993/*
2994** CAPI3REF: Register A Callback To Handle SQLITE_BUSY Errors
2995** KEYWORDS: {busy-handler callback} {busy handler}
2996** METHOD: sqlite3
2997**
2998** ^The sqlite3_busy_handler(D,X,P) routine sets a callback function X
2999** that might be invoked with argument P whenever
3000** an attempt is made to access a database table associated with
3001** [database connection] D when another thread
3002** or process has the table locked.
3003** The sqlite3_busy_handler() interface is used to implement
3004** [sqlite3_busy_timeout()] and [PRAGMA busy_timeout].
3005**
3006** ^If the busy callback is NULL, then [SQLITE_BUSY]
3007** is returned immediately upon encountering the lock. ^If the busy callback
3008** is not NULL, then the callback might be invoked with two arguments.
3009**
3010** ^The first argument to the busy handler is a copy of the void* pointer which
3011** is the third argument to sqlite3_busy_handler(). ^The second argument to
3012** the busy handler callback is the number of times that the busy handler has
3013** been invoked previously for the same locking event. ^If the
3014** busy callback returns 0, then no additional attempts are made to
3015** access the database and [SQLITE_BUSY] is returned
3016** to the application.
3017** ^If the callback returns non-zero, then another attempt
3018** is made to access the database and the cycle repeats.
3019**
3020** The presence of a busy handler does not guarantee that it will be invoked
3021** when there is lock contention. ^If SQLite determines that invoking the busy
3022** handler could result in a deadlock, it will go ahead and return [SQLITE_BUSY]
3023** to the application instead of invoking the
3024** busy handler.
3025** Consider a scenario where one process is holding a read lock that
3026** it is trying to promote to a reserved lock and
3027** a second process is holding a reserved lock that it is trying
3028** to promote to an exclusive lock. The first process cannot proceed
3029** because it is blocked by the second and the second process cannot
3030** proceed because it is blocked by the first. If both processes
3031** invoke the busy handlers, neither will make any progress. Therefore,
3032** SQLite returns [SQLITE_BUSY] for the first process, hoping that this
3033** will induce the first process to release its read lock and allow
3034** the second process to proceed.
3035**
3036** ^The default busy callback is NULL.
3037**
3038** ^(There can only be a single busy handler defined for each
3039** [database connection]. Setting a new busy handler clears any
3040** previously set handler.)^ ^Note that calling [sqlite3_busy_timeout()]
3041** or evaluating [PRAGMA busy_timeout=N] will change the
3042** busy handler and thus clear any previously set busy handler.
3043**
3044** The busy callback should not take any actions which modify the
3045** database connection that invoked the busy handler. In other words,
3046** the busy handler is not reentrant. Any such actions
3047** result in undefined behavior.
3048**
3049** A busy handler must not close the database connection
3050** or [prepared statement] that invoked the busy handler.
3051*/
3052SQLITE_API int sqlite3_busy_handler(sqlite3*,int(*)(void*,int),void*);
3053
3054/*
3055** CAPI3REF: Set A Busy Timeout
3056** METHOD: sqlite3
3057**
3058** ^This routine sets a [sqlite3_busy_handler | busy handler] that sleeps
3059** for a specified amount of time when a table is locked. ^The handler
3060** will sleep multiple times until at least "ms" milliseconds of sleeping
3061** have accumulated. ^After at least "ms" milliseconds of sleeping,
3062** the handler returns 0 which causes [sqlite3_step()] to return
3063** [SQLITE_BUSY].
3064**
3065** ^Calling this routine with an argument less than or equal to zero
3066** turns off all busy handlers.
3067**
3068** ^(There can only be a single busy handler for a particular
3069** [database connection] at any given moment. If another busy handler
3070** was defined (using [sqlite3_busy_handler()]) prior to calling
3071** this routine, that other busy handler is cleared.)^
3072**
3073** See also: [PRAGMA busy_timeout]
3074*/
3075SQLITE_API int sqlite3_busy_timeout(sqlite3*, int ms);
3076
3077/*
3078** CAPI3REF: Set the Setlk Timeout
3079** METHOD: sqlite3
3080**
3081** This routine is only useful in SQLITE_ENABLE_SETLK_TIMEOUT builds. If
3082** the VFS supports blocking locks, it sets the timeout in ms used by
3083** eligible locks taken on wal mode databases by the specified database
3084** handle. In non-SQLITE_ENABLE_SETLK_TIMEOUT builds, or if the VFS does
3085** not support blocking locks, this function is a no-op.
3086**
3087** Passing 0 to this function disables blocking locks altogether. Passing
3088** -1 to this function requests that the VFS blocks for a long time -
3089** indefinitely if possible. The results of passing any other negative value
3090** are undefined.
3091**
3092** Internally, each SQLite database handle stores two timeout values - the
3093** busy-timeout (used for rollback mode databases, or if the VFS does not
3094** support blocking locks) and the setlk-timeout (used for blocking locks
3095** on wal-mode databases). The sqlite3_busy_timeout() method sets both
3096** values, this function sets only the setlk-timeout value. Therefore,
3097** to configure separate busy-timeout and setlk-timeout values for a single
3098** database handle, call sqlite3_busy_timeout() followed by this function.
3099**
3100** Whenever the number of connections to a wal mode database falls from
3101** 1 to 0, the last connection takes an exclusive lock on the database,
3102** then checkpoints and deletes the wal file. While it is doing this, any
3103** new connection that tries to read from the database fails with an
3104** SQLITE_BUSY error. Or, if the SQLITE_SETLK_BLOCK_ON_CONNECT flag is
3105** passed to this API, the new connection blocks until the exclusive lock
3106** has been released.
3107*/
3108SQLITE_API int sqlite3_setlk_timeout(sqlite3*, int ms, int flags);
3109
3110/*
3111** CAPI3REF: Flags for sqlite3_setlk_timeout()
3112*/
3113#define SQLITE_SETLK_BLOCK_ON_CONNECT 0x01
3114
3115/*
3116** CAPI3REF: Convenience Routines For Running Queries
3117** METHOD: sqlite3
3118**
3119** This is a legacy interface that is preserved for backwards compatibility.
3120** Use of this interface is not recommended.
3121**
3122** Definition: A <b>result table</b> is a memory data structure created by the
3123** [sqlite3_get_table()] interface. A result table records the
3124** complete query results from one or more queries.
3125**
3126** The table conceptually has a number of rows and columns. But
3127** these numbers are not part of the result table itself. These
3128** numbers are obtained separately. Let N be the number of rows
3129** and M be the number of columns.
3130**
3131** A result table is an array of pointers to zero-terminated UTF-8 strings.
3132** There are (N+1)*M elements in the array. The first M pointers point
3133** to zero-terminated strings that contain the names of the columns.
3134** The remaining entries all point to query results. NULL values result
3135** in NULL pointers. All other values are in their UTF-8 zero-terminated
3136** string representation as returned by [sqlite3_column_text()].
3137**
3138** A result table might consist of one or more memory allocations.
3139** It is not safe to pass a result table directly to [sqlite3_free()].
3140** A result table should be deallocated using [sqlite3_free_table()].
3141**
3142** ^(As an example of the result table format, suppose a query result
3143** is as follows:
3144**
3145** <blockquote><pre>
3146** Name | Age
3147** -----------------------
3148** Alice | 43
3149** Bob | 28
3150** Cindy | 21
3151** </pre></blockquote>
3152**
3153** There are two columns (M==2) and three rows (N==3). Thus the
3154** result table has 8 entries. Suppose the result table is stored
3155** in an array named azResult. Then azResult holds this content:
3156**
3157** <blockquote><pre>
3158** azResult[0] = "Name";
3159** azResult[1] = "Age";
3160** azResult[2] = "Alice";
3161** azResult[3] = "43";
3162** azResult[4] = "Bob";
3163** azResult[5] = "28";
3164** azResult[6] = "Cindy";
3165** azResult[7] = "21";
3166** </pre></blockquote>)^
3167**
3168** ^The sqlite3_get_table() function evaluates one or more
3169** semicolon-separated SQL statements in the zero-terminated UTF-8
3170** string of its 2nd parameter and returns a result table to the
3171** pointer given in its 3rd parameter.
3172**
3173** After the application has finished with the result from sqlite3_get_table(),
3174** it must pass the result table pointer to sqlite3_free_table() in order to
3175** release the memory that was malloced. Because of the way the
3176** [sqlite3_malloc()] happens within sqlite3_get_table(), the calling
3177** function must not try to call [sqlite3_free()] directly. Only
3178** [sqlite3_free_table()] is able to release the memory properly and safely.
3179**
3180** The sqlite3_get_table() interface is implemented as a wrapper around
3181** [sqlite3_exec()]. The sqlite3_get_table() routine does not have access
3182** to any internal data structures of SQLite. It uses only the public
3183** interface defined here. As a consequence, errors that occur in the
3184** wrapper layer outside of the internal [sqlite3_exec()] call are not
3185** reflected in subsequent calls to [sqlite3_errcode()] or
3186** [sqlite3_errmsg()].
3187*/
3188SQLITE_API int sqlite3_get_table(
3189 sqlite3 *db, /* An open database */
3190 const char *zSql, /* SQL to be evaluated */
3191 char ***pazResult, /* Results of the query */
3192 int *pnRow, /* Number of result rows written here */
3193 int *pnColumn, /* Number of result columns written here */
3194 char **pzErrmsg /* Error msg written here */
3195);
3196SQLITE_API void sqlite3_free_table(char **result);
3197
3198/*
3199** CAPI3REF: Formatted String Printing Functions
3200**
3201** These routines are work-alikes of the "printf()" family of functions
3202** from the standard C library.
3203** These routines understand most of the common formatting options from
3204** the standard library printf()
3205** plus some additional non-standard formats ([%q], [%Q], [%w], and [%z]).
3206** See the [built-in printf()] documentation for details.
3207**
3208** ^The sqlite3_mprintf() and sqlite3_vmprintf() routines write their
3209** results into memory obtained from [sqlite3_malloc64()].
3210** The strings returned by these two routines should be
3211** released by [sqlite3_free()]. ^Both routines return a
3212** NULL pointer if [sqlite3_malloc64()] is unable to allocate enough
3213** memory to hold the resulting string.
3214**
3215** ^(The sqlite3_snprintf() routine is similar to "snprintf()" from
3216** the standard C library. The result is written into the
3217** buffer supplied as the second parameter whose size is given by
3218** the first parameter. Note that the order of the
3219** first two parameters is reversed from snprintf().)^ This is an
3220** historical accident that cannot be fixed without breaking
3221** backwards compatibility. ^(Note also that sqlite3_snprintf()
3222** returns a pointer to its buffer instead of the number of
3223** characters actually written into the buffer.)^ We admit that
3224** the number of characters written would be a more useful return
3225** value but we cannot change the implementation of sqlite3_snprintf()
3226** now without breaking compatibility.
3227**
3228** ^As long as the buffer size is greater than zero, sqlite3_snprintf()
3229** guarantees that the buffer is always zero-terminated. ^The first
3230** parameter "n" is the total size of the buffer, including space for
3231** the zero terminator. So the longest string that can be completely
3232** written will be n-1 characters.
3233**
3234** ^The sqlite3_vsnprintf() routine is a varargs version of sqlite3_snprintf().
3235**
3236** See also: [built-in printf()], [printf() SQL function]
3237*/
3238SQLITE_API char *sqlite3_mprintf(const char*,...);
3239SQLITE_API char *sqlite3_vmprintf(const char*, va_list);
3240SQLITE_API char *sqlite3_snprintf(int,char*,const char*, ...);
3241SQLITE_API char *sqlite3_vsnprintf(int,char*,const char*, va_list);
3242
3243/*
3244** CAPI3REF: Memory Allocation Subsystem
3245**
3246** The SQLite core uses these three routines for all of its own
3247** internal memory allocation needs. "Core" in the previous sentence
3248** does not include operating-system specific [VFS] implementation. The
3249** Windows VFS uses native malloc() and free() for some operations.
3250**
3251** ^The sqlite3_malloc() routine returns a pointer to a block
3252** of memory at least N bytes in length, where N is the parameter.
3253** ^If sqlite3_malloc() is unable to obtain sufficient free
3254** memory, it returns a NULL pointer. ^If the parameter N to
3255** sqlite3_malloc() is zero or negative then sqlite3_malloc() returns
3256** a NULL pointer.
3257**
3258** ^The sqlite3_malloc64(N) routine works just like
3259** sqlite3_malloc(N) except that N is an unsigned 64-bit integer instead
3260** of a signed 32-bit integer.
3261**
3262** ^Calling sqlite3_free() with a pointer previously returned
3263** by sqlite3_malloc() or sqlite3_realloc() releases that memory so
3264** that it might be reused. ^The sqlite3_free() routine is
3265** a no-op if it is called with a NULL pointer. Passing a NULL pointer
3266** to sqlite3_free() is harmless. After being freed, memory
3267** should neither be read nor written. Even reading previously freed
3268** memory might result in a segmentation fault or other severe error.
3269** Memory corruption, a segmentation fault, or other severe error
3270** might result if sqlite3_free() is called with a non-NULL pointer that
3271** was not obtained from sqlite3_malloc() or sqlite3_realloc().
3272**
3273** ^The sqlite3_realloc(X,N) interface attempts to resize a
3274** prior memory allocation X to be at least N bytes.
3275** ^If the X parameter to sqlite3_realloc(X,N)
3276** is a NULL pointer then its behavior is identical to calling
3277** sqlite3_malloc(N).
3278** ^If the N parameter to sqlite3_realloc(X,N) is zero or
3279** negative then the behavior is exactly the same as calling
3280** sqlite3_free(X).
3281** ^sqlite3_realloc(X,N) returns a pointer to a memory allocation
3282** of at least N bytes in size or NULL if insufficient memory is available.
3283** ^If M is the size of the prior allocation, then min(N,M) bytes of the
3284** prior allocation are copied into the beginning of the buffer returned
3285** by sqlite3_realloc(X,N) and the prior allocation is freed.
3286** ^If sqlite3_realloc(X,N) returns NULL and N is positive, then the
3287** prior allocation is not freed.
3288**
3289** ^The sqlite3_realloc64(X,N) interface works the same as
3290** sqlite3_realloc(X,N) except that N is a 64-bit unsigned integer instead
3291** of a 32-bit signed integer.
3292**
3293** ^If X is a memory allocation previously obtained from sqlite3_malloc(),
3294** sqlite3_malloc64(), sqlite3_realloc(), or sqlite3_realloc64(), then
3295** sqlite3_msize(X) returns the size of that memory allocation in bytes.
3296** ^The value returned by sqlite3_msize(X) might be larger than the number
3297** of bytes requested when X was allocated. ^If X is a NULL pointer then
3298** sqlite3_msize(X) returns zero. If X points to something that is not
3299** the beginning of memory allocation, or if it points to a formerly
3300** valid memory allocation that has now been freed, then the behavior
3301** of sqlite3_msize(X) is undefined and possibly harmful.
3302**
3303** ^The memory returned by sqlite3_malloc(), sqlite3_realloc(),
3304** sqlite3_malloc64(), and sqlite3_realloc64()
3305** is always aligned to at least an 8 byte boundary, or to a
3306** 4 byte boundary if the [SQLITE_4_BYTE_ALIGNED_MALLOC] compile-time
3307** option is used.
3308**
3309** The pointer arguments to [sqlite3_free()] and [sqlite3_realloc()]
3310** must be either NULL or else pointers obtained from a prior
3311** invocation of [sqlite3_malloc()] or [sqlite3_realloc()] that have
3312** not yet been released.
3313**
3314** The application must not read or write any part of
3315** a block of memory after it has been released using
3316** [sqlite3_free()] or [sqlite3_realloc()].
3317*/
3318SQLITE_API void *sqlite3_malloc(int);
3319SQLITE_API void *sqlite3_malloc64(sqlite3_uint64);
3320SQLITE_API void *sqlite3_realloc(void*, int);
3321SQLITE_API void *sqlite3_realloc64(void*, sqlite3_uint64);
3322SQLITE_API void sqlite3_free(void*);
3323SQLITE_API sqlite3_uint64 sqlite3_msize(void*);
3324
3325/*
3326** CAPI3REF: Memory Allocator Statistics
3327**
3328** SQLite provides these two interfaces for reporting on the status
3329** of the [sqlite3_malloc()], [sqlite3_free()], and [sqlite3_realloc()]
3330** routines, which form the built-in memory allocation subsystem.
3331**
3332** ^The [sqlite3_memory_used()] routine returns the number of bytes
3333** of memory currently outstanding (malloced but not freed).
3334** ^The [sqlite3_memory_highwater()] routine returns the maximum
3335** value of [sqlite3_memory_used()] since the high-water mark
3336** was last reset. ^The values returned by [sqlite3_memory_used()] and
3337** [sqlite3_memory_highwater()] include any overhead
3338** added by SQLite in its implementation of [sqlite3_malloc()],
3339** but not overhead added by any underlying system library
3340** routines that [sqlite3_malloc()] may call.
3341**
3342** ^The memory high-water mark is reset to the current value of
3343** [sqlite3_memory_used()] if and only if the parameter to
3344** [sqlite3_memory_highwater()] is true. ^The value returned
3345** by [sqlite3_memory_highwater(1)] is the high-water mark
3346** prior to the reset.
3347*/
3348SQLITE_API sqlite3_int64 sqlite3_memory_used(void);
3349SQLITE_API sqlite3_int64 sqlite3_memory_highwater(int resetFlag);
3350
3351/*
3352** CAPI3REF: Pseudo-Random Number Generator
3353**
3354** SQLite contains a high-quality pseudo-random number generator (PRNG) used to
3355** select random [ROWID | ROWIDs] when inserting new records into a table that
3356** already uses the largest possible [ROWID]. The PRNG is also used for
3357** the built-in random() and randomblob() SQL functions. This interface allows
3358** applications to access the same PRNG for other purposes.
3359**
3360** ^A call to this routine stores N bytes of randomness into buffer P.
3361** ^The P parameter can be a NULL pointer.
3362**
3363** ^If this routine has not been previously called or if the previous
3364** call had N less than one or a NULL pointer for P, then the PRNG is
3365** seeded using randomness obtained from the xRandomness method of
3366** the default [sqlite3_vfs] object.
3367** ^If the previous call to this routine had an N of 1 or more and a
3368** non-NULL P then the pseudo-randomness is generated
3369** internally and without recourse to the [sqlite3_vfs] xRandomness
3370** method.
3371*/
3372SQLITE_API void sqlite3_randomness(int N, void *P);
3373
3374/*
3375** CAPI3REF: Compile-Time Authorization Callbacks
3376** METHOD: sqlite3
3377** KEYWORDS: {authorizer callback}
3378**
3379** ^This routine registers an authorizer callback with a particular
3380** [database connection], supplied in the first argument.
3381** ^The authorizer callback is invoked as SQL statements are being compiled
3382** by [sqlite3_prepare()] or its variants [sqlite3_prepare_v2()],
3383** [sqlite3_prepare_v3()], [sqlite3_prepare16()], [sqlite3_prepare16_v2()],
3384** and [sqlite3_prepare16_v3()]. ^At various
3385** points during the compilation process, as logic is being created
3386** to perform various actions, the authorizer callback is invoked to
3387** see if those actions are allowed. ^The authorizer callback should
3388** return [SQLITE_OK] to allow the action, [SQLITE_IGNORE] to disallow the
3389** specific action but allow the SQL statement to continue to be
3390** compiled, or [SQLITE_DENY] to cause the entire SQL statement to be
3391** rejected with an error. ^If the authorizer callback returns
3392** any value other than [SQLITE_IGNORE], [SQLITE_OK], or [SQLITE_DENY]
3393** then the [sqlite3_prepare_v2()] or equivalent call that triggered
3394** the authorizer will fail with an error message.
3395**
3396** When the callback returns [SQLITE_OK], that means the operation
3397** requested is ok. ^When the callback returns [SQLITE_DENY], the
3398** [sqlite3_prepare_v2()] or equivalent call that triggered the
3399** authorizer will fail with an error message explaining that
3400** access is denied.
3401**
3402** ^The first parameter to the authorizer callback is a copy of the third
3403** parameter to the sqlite3_set_authorizer() interface. ^The second parameter
3404** to the callback is an integer [SQLITE_COPY | action code] that specifies
3405** the particular action to be authorized. ^The third through sixth parameters
3406** to the callback are either NULL pointers or zero-terminated strings
3407** that contain additional details about the action to be authorized.
3408** Applications must always be prepared to encounter a NULL pointer in any
3409** of the third through the sixth parameters of the authorization callback.
3410**
3411** ^If the action code is [SQLITE_READ]
3412** and the callback returns [SQLITE_IGNORE] then the
3413** [prepared statement] statement is constructed to substitute
3414** a NULL value in place of the table column that would have
3415** been read if [SQLITE_OK] had been returned. The [SQLITE_IGNORE]
3416** return can be used to deny an untrusted user access to individual
3417** columns of a table.
3418** ^When a table is referenced by a [SELECT] but no column values are
3419** extracted from that table (for example in a query like
3420** "SELECT count(*) FROM tab") then the [SQLITE_READ] authorizer callback
3421** is invoked once for that table with a column name that is an empty string.
3422** ^If the action code is [SQLITE_DELETE] and the callback returns
3423** [SQLITE_IGNORE] then the [DELETE] operation proceeds but the
3424** [truncate optimization] is disabled and all rows are deleted individually.
3425**
3426** An authorizer is used when [sqlite3_prepare | preparing]
3427** SQL statements from an untrusted source, to ensure that the SQL statements
3428** do not try to access data they are not allowed to see, or that they do not
3429** try to execute malicious statements that damage the database. For
3430** example, an application may allow a user to enter arbitrary
3431** SQL queries for evaluation by a database. But the application does
3432** not want the user to be able to make arbitrary changes to the
3433** database. An authorizer could then be put in place while the
3434** user-entered SQL is being [sqlite3_prepare | prepared] that
3435** disallows everything except [SELECT] statements.
3436**
3437** Applications that need to process SQL from untrusted sources
3438** might also consider lowering resource limits using [sqlite3_limit()]
3439** and limiting database size using the [max_page_count] [PRAGMA]
3440** in addition to using an authorizer.
3441**
3442** ^(Only a single authorizer can be in place on a database connection
3443** at a time. Each call to sqlite3_set_authorizer overrides the
3444** previous call.)^ ^Disable the authorizer by installing a NULL callback.
3445** The authorizer is disabled by default.
3446**
3447** The authorizer callback must not do anything that will modify
3448** the database connection that invoked the authorizer callback.
3449** Note that [sqlite3_prepare_v2()] and [sqlite3_step()] both modify their
3450** database connections for the meaning of "modify" in this paragraph.
3451**
3452** ^When [sqlite3_prepare_v2()] is used to prepare a statement, the
3453** statement might be re-prepared during [sqlite3_step()] due to a
3454** schema change. Hence, the application should ensure that the
3455** correct authorizer callback remains in place during the [sqlite3_step()].
3456**
3457** ^Note that the authorizer callback is invoked only during
3458** [sqlite3_prepare()] or its variants. Authorization is not
3459** performed during statement evaluation in [sqlite3_step()], unless
3460** as stated in the previous paragraph, sqlite3_step() invokes
3461** sqlite3_prepare_v2() to reprepare a statement after a schema change.
3462*/
3463SQLITE_API int sqlite3_set_authorizer(
3464 sqlite3*,
3465 int (*xAuth)(void*,int,const char*,const char*,const char*,const char*),
3466 void *pUserData
3467);
3468
3469/*
3470** CAPI3REF: Authorizer Return Codes
3471**
3472** The [sqlite3_set_authorizer | authorizer callback function] must
3473** return either [SQLITE_OK] or one of these two constants in order
3474** to signal SQLite whether or not the action is permitted. See the
3475** [sqlite3_set_authorizer | authorizer documentation] for additional
3476** information.
3477**
3478** Note that SQLITE_IGNORE is also used as a [conflict resolution mode]
3479** returned from the [sqlite3_vtab_on_conflict()] interface.
3480*/
3481#define SQLITE_DENY 1 /* Abort the SQL statement with an error */
3482#define SQLITE_IGNORE 2 /* Don't allow access, but don't generate an error */
3483
3484/*
3485** CAPI3REF: Authorizer Action Codes
3486**
3487** The [sqlite3_set_authorizer()] interface registers a callback function
3488** that is invoked to authorize certain SQL statement actions. The
3489** second parameter to the callback is an integer code that specifies
3490** what action is being authorized. These are the integer action codes that
3491** the authorizer callback may be passed.
3492**
3493** These action code values signify what kind of operation is to be
3494** authorized. The 3rd and 4th parameters to the authorization
3495** callback function will be parameters or NULL depending on which of these
3496** codes is used as the second parameter. ^(The 5th parameter to the
3497** authorizer callback is the name of the database ("main", "temp",
3498** etc.) if applicable.)^ ^The 6th parameter to the authorizer callback
3499** is the name of the inner-most trigger or view that is responsible for
3500** the access attempt or NULL if this access attempt is directly from
3501** top-level SQL code.
3502*/
3503/******************************************* 3rd ************ 4th ***********/
3504#define SQLITE_CREATE_INDEX 1 /* Index Name Table Name */
3505#define SQLITE_CREATE_TABLE 2 /* Table Name NULL */
3506#define SQLITE_CREATE_TEMP_INDEX 3 /* Index Name Table Name */
3507#define SQLITE_CREATE_TEMP_TABLE 4 /* Table Name NULL */
3508#define SQLITE_CREATE_TEMP_TRIGGER 5 /* Trigger Name Table Name */
3509#define SQLITE_CREATE_TEMP_VIEW 6 /* View Name NULL */
3510#define SQLITE_CREATE_TRIGGER 7 /* Trigger Name Table Name */
3511#define SQLITE_CREATE_VIEW 8 /* View Name NULL */
3512#define SQLITE_DELETE 9 /* Table Name NULL */
3513#define SQLITE_DROP_INDEX 10 /* Index Name Table Name */
3514#define SQLITE_DROP_TABLE 11 /* Table Name NULL */
3515#define SQLITE_DROP_TEMP_INDEX 12 /* Index Name Table Name */
3516#define SQLITE_DROP_TEMP_TABLE 13 /* Table Name NULL */
3517#define SQLITE_DROP_TEMP_TRIGGER 14 /* Trigger Name Table Name */
3518#define SQLITE_DROP_TEMP_VIEW 15 /* View Name NULL */
3519#define SQLITE_DROP_TRIGGER 16 /* Trigger Name Table Name */
3520#define SQLITE_DROP_VIEW 17 /* View Name NULL */
3521#define SQLITE_INSERT 18 /* Table Name NULL */
3522#define SQLITE_PRAGMA 19 /* Pragma Name 1st arg or NULL */
3523#define SQLITE_READ 20 /* Table Name Column Name */
3524#define SQLITE_SELECT 21 /* NULL NULL */
3525#define SQLITE_TRANSACTION 22 /* Operation NULL */
3526#define SQLITE_UPDATE 23 /* Table Name Column Name */
3527#define SQLITE_ATTACH 24 /* Filename NULL */
3528#define SQLITE_DETACH 25 /* Database Name NULL */
3529#define SQLITE_ALTER_TABLE 26 /* Database Name Table Name */
3530#define SQLITE_REINDEX 27 /* Index Name NULL */
3531#define SQLITE_ANALYZE 28 /* Table Name NULL */
3532#define SQLITE_CREATE_VTABLE 29 /* Table Name Module Name */
3533#define SQLITE_DROP_VTABLE 30 /* Table Name Module Name */
3534#define SQLITE_FUNCTION 31 /* NULL Function Name */
3535#define SQLITE_SAVEPOINT 32 /* Operation Savepoint Name */
3536#define SQLITE_COPY 0 /* No longer used */
3537#define SQLITE_RECURSIVE 33 /* NULL NULL */
3538
3539/*
3540** CAPI3REF: Deprecated Tracing And Profiling Functions
3541** DEPRECATED
3542**
3543** These routines are deprecated. Use the [sqlite3_trace_v2()] interface
3544** instead of the routines described here.
3545**
3546** These routines register callback functions that can be used for
3547** tracing and profiling the execution of SQL statements.
3548**
3549** ^The callback function registered by sqlite3_trace() is invoked at
3550** various times when an SQL statement is being run by [sqlite3_step()].
3551** ^The sqlite3_trace() callback is invoked with a UTF-8 rendering of the
3552** SQL statement text as the statement first begins executing.
3553** ^(Additional sqlite3_trace() callbacks might occur
3554** as each triggered subprogram is entered. The callbacks for triggers
3555** contain a UTF-8 SQL comment that identifies the trigger.)^
3556**
3557** The [SQLITE_TRACE_SIZE_LIMIT] compile-time option can be used to limit
3558** the length of [bound parameter] expansion in the output of sqlite3_trace().
3559**
3560** ^The callback function registered by sqlite3_profile() is invoked
3561** as each SQL statement finishes. ^The profile callback contains
3562** the original statement text and an estimate of wall-clock time
3563** of how long that statement took to run. ^The profile callback
3564** time is in units of nanoseconds, however the current implementation
3565** is only capable of millisecond resolution so the six least significant
3566** digits in the time are meaningless. Future versions of SQLite
3567** might provide greater resolution on the profiler callback. Invoking
3568** either [sqlite3_trace()] or [sqlite3_trace_v2()] will cancel the
3569** profile callback.
3570*/
3571SQLITE_API SQLITE_DEPRECATED void *sqlite3_trace(sqlite3*,
3572 void(*xTrace)(void*,const char*), void*);
3573SQLITE_API SQLITE_DEPRECATED void *sqlite3_profile(sqlite3*,
3574 void(*xProfile)(void*,const char*,sqlite3_uint64), void*);
3575
3576/*
3577** CAPI3REF: SQL Trace Event Codes
3578** KEYWORDS: SQLITE_TRACE
3579**
3580** These constants identify classes of events that can be monitored
3581** using the [sqlite3_trace_v2()] tracing logic. The M argument
3582** to [sqlite3_trace_v2(D,M,X,P)] is an OR-ed combination of one or more of
3583** the following constants. ^The first argument to the trace callback
3584** is one of the following constants.
3585**
3586** New tracing constants may be added in future releases.
3587**
3588** ^A trace callback has four arguments: xCallback(T,C,P,X).
3589** ^The T argument is one of the integer type codes above.
3590** ^The C argument is a copy of the context pointer passed in as the
3591** fourth argument to [sqlite3_trace_v2()].
3592** The P and X arguments are pointers whose meanings depend on T.
3593**
3594** <dl>
3595** [[SQLITE_TRACE_STMT]] <dt>SQLITE_TRACE_STMT</dt>
3596** <dd>^An SQLITE_TRACE_STMT callback is invoked when a prepared statement
3597** first begins running and possibly at other times during the
3598** execution of the prepared statement, such as at the start of each
3599** trigger subprogram. ^The P argument is a pointer to the
3600** [prepared statement]. ^The X argument is a pointer to a string which
3601** is the unexpanded SQL text of the prepared statement or an SQL comment
3602** that indicates the invocation of a trigger. ^The callback can compute
3603** the same text that would have been returned by the legacy [sqlite3_trace()]
3604** interface by using the X argument when X begins with "--" and invoking
3605** [sqlite3_expanded_sql(P)] otherwise.
3606**
3607** [[SQLITE_TRACE_PROFILE]] <dt>SQLITE_TRACE_PROFILE</dt>
3608** <dd>^An SQLITE_TRACE_PROFILE callback provides approximately the same
3609** information as is provided by the [sqlite3_profile()] callback.
3610** ^The P argument is a pointer to the [prepared statement] and the
3611** X argument points to a 64-bit integer which is approximately
3612** the number of nanoseconds that the prepared statement took to run.
3613** ^The SQLITE_TRACE_PROFILE callback is invoked when the statement finishes.
3614**
3615** [[SQLITE_TRACE_ROW]] <dt>SQLITE_TRACE_ROW</dt>
3616** <dd>^An SQLITE_TRACE_ROW callback is invoked whenever a prepared
3617** statement generates a single row of result.
3618** ^The P argument is a pointer to the [prepared statement] and the
3619** X argument is unused.
3620**
3621** [[SQLITE_TRACE_CLOSE]] <dt>SQLITE_TRACE_CLOSE</dt>
3622** <dd>^An SQLITE_TRACE_CLOSE callback is invoked when a database
3623** connection closes.
3624** ^The P argument is a pointer to the [database connection] object
3625** and the X argument is unused.
3626** </dl>
3627*/
3628#define SQLITE_TRACE_STMT 0x01
3629#define SQLITE_TRACE_PROFILE 0x02
3630#define SQLITE_TRACE_ROW 0x04
3631#define SQLITE_TRACE_CLOSE 0x08
3632
3633/*
3634** CAPI3REF: SQL Trace Hook
3635** METHOD: sqlite3
3636**
3637** ^The sqlite3_trace_v2(D,M,X,P) interface registers a trace callback
3638** function X against [database connection] D, using property mask M
3639** and context pointer P. ^If the X callback is
3640** NULL or if the M mask is zero, then tracing is disabled. The
3641** M argument should be the bitwise OR-ed combination of
3642** zero or more [SQLITE_TRACE] constants.
3643**
3644** ^Each call to either sqlite3_trace(D,X,P) or sqlite3_trace_v2(D,M,X,P)
3645** overrides (cancels) all prior calls to sqlite3_trace(D,X,P) or
3646** sqlite3_trace_v2(D,M,X,P) for the [database connection] D. Each
3647** database connection may have at most one trace callback.
3648**
3649** ^The X callback is invoked whenever any of the events identified by
3650** mask M occur. ^The integer return value from the callback is currently
3651** ignored, though this may change in future releases. Callback
3652** implementations should return zero to ensure future compatibility.
3653**
3654** ^A trace callback is invoked with four arguments: callback(T,C,P,X).
3655** ^The T argument is one of the [SQLITE_TRACE]
3656** constants to indicate why the callback was invoked.
3657** ^The C argument is a copy of the context pointer.
3658** The P and X arguments are pointers whose meanings depend on T.
3659**
3660** The sqlite3_trace_v2() interface is intended to replace the legacy
3661** interfaces [sqlite3_trace()] and [sqlite3_profile()], both of which
3662** are deprecated.
3663*/
3664SQLITE_API int sqlite3_trace_v2(
3665 sqlite3*,
3666 unsigned uMask,
3667 int(*xCallback)(unsigned,void*,void*,void*),
3668 void *pCtx
3669);
3670
3671/*
3672** CAPI3REF: Query Progress Callbacks
3673** METHOD: sqlite3
3674**
3675** ^The sqlite3_progress_handler(D,N,X,P) interface causes the callback
3676** function X to be invoked periodically during long running calls to
3677** [sqlite3_step()] and [sqlite3_prepare()] and similar for
3678** database connection D. An example use for this
3679** interface is to keep a GUI updated during a large query.
3680**
3681** ^The parameter P is passed through as the only parameter to the
3682** callback function X. ^The parameter N is the approximate number of
3683** [virtual machine instructions] that are evaluated between successive
3684** invocations of the callback X. ^If N is less than one then the progress
3685** handler is disabled.
3686**
3687** ^Only a single progress handler may be defined at one time per
3688** [database connection]; setting a new progress handler cancels the
3689** old one. ^Setting parameter X to NULL disables the progress handler.
3690** ^The progress handler is also disabled by setting N to a value less
3691** than 1.
3692**
3693** ^If the progress callback returns non-zero, the operation is
3694** interrupted. This feature can be used to implement a
3695** "Cancel" button on a GUI progress dialog box.
3696**
3697** The progress handler callback must not do anything that will modify
3698** the database connection that invoked the progress handler.
3699** Note that [sqlite3_prepare_v2()] and [sqlite3_step()] both modify their
3700** database connections for the meaning of "modify" in this paragraph.
3701**
3702** The progress handler callback would originally only be invoked from the
3703** bytecode engine. It still might be invoked during [sqlite3_prepare()]
3704** and similar because those routines might force a reparse of the schema
3705** which involves running the bytecode engine. However, beginning with
3706** SQLite version 3.41.0, the progress handler callback might also be
3707** invoked directly from [sqlite3_prepare()] while analyzing and generating
3708** code for complex queries.
3709*/
3710SQLITE_API void sqlite3_progress_handler(sqlite3*, int, int(*)(void*), void*);
3711
3712/*
3713** CAPI3REF: Opening A New Database Connection
3714** CONSTRUCTOR: sqlite3
3715**
3716** ^These routines open an SQLite database file as specified by the
3717** filename argument. ^The filename argument is interpreted as UTF-8 for
3718** sqlite3_open() and sqlite3_open_v2() and as UTF-16 in the native byte
3719** order for sqlite3_open16(). ^(A [database connection] handle is usually
3720** returned in *ppDb, even if an error occurs. The only exception is that
3721** if SQLite is unable to allocate memory to hold the [sqlite3] object,
3722** a NULL will be written into *ppDb instead of a pointer to the [sqlite3]
3723** object.)^ ^(If the database is opened (and/or created) successfully, then
3724** [SQLITE_OK] is returned. Otherwise an [error code] is returned.)^ ^The
3725** [sqlite3_errmsg()] or [sqlite3_errmsg16()] routines can be used to obtain
3726** an English language description of the error following a failure of any
3727** of the sqlite3_open() routines.
3728**
3729** ^The default encoding will be UTF-8 for databases created using
3730** sqlite3_open() or sqlite3_open_v2(). ^The default encoding for databases
3731** created using sqlite3_open16() will be UTF-16 in the native byte order.
3732**
3733** Whether or not an error occurs when it is opened, resources
3734** associated with the [database connection] handle should be released by
3735** passing it to [sqlite3_close()] when it is no longer required.
3736**
3737** The sqlite3_open_v2() interface works like sqlite3_open()
3738** except that it accepts two additional parameters for additional control
3739** over the new database connection. ^(The flags parameter to
3740** sqlite3_open_v2() must include, at a minimum, one of the following
3741** three flag combinations:)^
3742**
3743** <dl>
3744** ^(<dt>[SQLITE_OPEN_READONLY]</dt>
3745** <dd>The database is opened in read-only mode. If the database does
3746** not already exist, an error is returned.</dd>)^
3747**
3748** ^(<dt>[SQLITE_OPEN_READWRITE]</dt>
3749** <dd>The database is opened for reading and writing if possible, or
3750** reading only if the file is write protected by the operating
3751** system. In either case the database must already exist, otherwise
3752** an error is returned. For historical reasons, if opening in
3753** read-write mode fails due to OS-level permissions, an attempt is
3754** made to open it in read-only mode. [sqlite3_db_readonly()] can be
3755** used to determine whether the database is actually
3756** read-write.</dd>)^
3757**
3758** ^(<dt>[SQLITE_OPEN_READWRITE] | [SQLITE_OPEN_CREATE]</dt>
3759** <dd>The database is opened for reading and writing, and is created if
3760** it does not already exist. This is the behavior that is always used for
3761** sqlite3_open() and sqlite3_open16().</dd>)^
3762** </dl>
3763**
3764** In addition to the required flags, the following optional flags are
3765** also supported:
3766**
3767** <dl>
3768** ^(<dt>[SQLITE_OPEN_URI]</dt>
3769** <dd>The filename can be interpreted as a URI if this flag is set.</dd>)^
3770**
3771** ^(<dt>[SQLITE_OPEN_MEMORY]</dt>
3772** <dd>The database will be opened as an in-memory database. The database
3773** is named by the "filename" argument for the purposes of cache-sharing,
3774** if shared cache mode is enabled, but the "filename" is otherwise ignored.
3775** </dd>)^
3776**
3777** ^(<dt>[SQLITE_OPEN_NOMUTEX]</dt>
3778** <dd>The new database connection will use the "multi-thread"
3779** [threading mode].)^ This means that separate threads are allowed
3780** to use SQLite at the same time, as long as each thread is using
3781** a different [database connection].
3782**
3783** ^(<dt>[SQLITE_OPEN_FULLMUTEX]</dt>
3784** <dd>The new database connection will use the "serialized"
3785** [threading mode].)^ This means the multiple threads can safely
3786** attempt to use the same database connection at the same time.
3787** (Mutexes will block any actual concurrency, but in this mode
3788** there is no harm in trying.)
3789**
3790** ^(<dt>[SQLITE_OPEN_SHAREDCACHE]</dt>
3791** <dd>The database is opened with [shared cache] enabled, overriding
3792** the default shared cache setting provided by
3793** [sqlite3_enable_shared_cache()].)^
3794** The [use of shared cache mode is discouraged] and hence shared cache
3795** capabilities may be omitted from many builds of SQLite. In such cases,
3796** this option is a no-op.
3797**
3798** ^(<dt>[SQLITE_OPEN_PRIVATECACHE]</dt>
3799** <dd>The database is opened with [shared cache] disabled, overriding
3800** the default shared cache setting provided by
3801** [sqlite3_enable_shared_cache()].)^
3802**
3803** [[OPEN_EXRESCODE]] ^(<dt>[SQLITE_OPEN_EXRESCODE]</dt>
3804** <dd>The database connection comes up in "extended result code mode".
3805** In other words, the database behaves as if
3806** [sqlite3_extended_result_codes(db,1)] were called on the database
3807** connection as soon as the connection is created. In addition to setting
3808** the extended result code mode, this flag also causes [sqlite3_open_v2()]
3809** to return an extended result code.</dd>
3810**
3811** [[OPEN_NOFOLLOW]] ^(<dt>[SQLITE_OPEN_NOFOLLOW]</dt>
3812** <dd>The database filename is not allowed to contain a symbolic link</dd>
3813** </dl>)^
3814**
3815** If the 3rd parameter to sqlite3_open_v2() is not one of the
3816** required combinations shown above optionally combined with other
3817** [SQLITE_OPEN_READONLY | SQLITE_OPEN_* bits]
3818** then the behavior is undefined. Historic versions of SQLite
3819** have silently ignored surplus bits in the flags parameter to
3820** sqlite3_open_v2(), however that behavior might not be carried through
3821** into future versions of SQLite and so applications should not rely
3822** upon it. Note in particular that the SQLITE_OPEN_EXCLUSIVE flag is a no-op
3823** for sqlite3_open_v2(). The SQLITE_OPEN_EXCLUSIVE does *not* cause
3824** the open to fail if the database already exists. The SQLITE_OPEN_EXCLUSIVE
3825** flag is intended for use by the [sqlite3_vfs|VFS interface] only, and not
3826** by sqlite3_open_v2().
3827**
3828** ^The fourth parameter to sqlite3_open_v2() is the name of the
3829** [sqlite3_vfs] object that defines the operating system interface that
3830** the new database connection should use. ^If the fourth parameter is
3831** a NULL pointer then the default [sqlite3_vfs] object is used.
3832**
3833** ^If the filename is ":memory:", then a private, temporary in-memory database
3834** is created for the connection. ^This in-memory database will vanish when
3835** the database connection is closed. Future versions of SQLite might
3836** make use of additional special filenames that begin with the ":" character.
3837** It is recommended that when a database filename actually does begin with
3838** a ":" character you should prefix the filename with a pathname such as
3839** "./" to avoid ambiguity.
3840**
3841** ^If the filename is an empty string, then a private, temporary
3842** on-disk database will be created. ^This private database will be
3843** automatically deleted as soon as the database connection is closed.
3844**
3845** [[URI filenames in sqlite3_open()]] <h3>URI Filenames</h3>
3846**
3847** ^If [URI filename] interpretation is enabled, and the filename argument
3848** begins with "file:", then the filename is interpreted as a URI. ^URI
3849** filename interpretation is enabled if the [SQLITE_OPEN_URI] flag is
3850** set in the third argument to sqlite3_open_v2(), or if it has
3851** been enabled globally using the [SQLITE_CONFIG_URI] option with the
3852** [sqlite3_config()] method or by the [SQLITE_USE_URI] compile-time option.
3853** URI filename interpretation is turned off
3854** by default, but future releases of SQLite might enable URI filename
3855** interpretation by default. See "[URI filenames]" for additional
3856** information.
3857**
3858** URI filenames are parsed according to RFC 3986. ^If the URI contains an
3859** authority, then it must be either an empty string or the string
3860** "localhost". ^If the authority is not an empty string or "localhost", an
3861** error is returned to the caller. ^The fragment component of a URI, if
3862** present, is ignored.
3863**
3864** ^SQLite uses the path component of the URI as the name of the disk file
3865** which contains the database. ^If the path begins with a '/' character,
3866** then it is interpreted as an absolute path. ^If the path does not begin
3867** with a '/' (meaning that the authority section is omitted from the URI)
3868** then the path is interpreted as a relative path.
3869** ^(On windows, the first component of an absolute path
3870** is a drive specification (e.g. "C:").)^
3871**
3872** [[core URI query parameters]]
3873** The query component of a URI may contain parameters that are interpreted
3874** either by SQLite itself, or by a [VFS | custom VFS implementation].
3875** SQLite and its built-in [VFSes] interpret the
3876** following query parameters:
3877**
3878** <ul>
3879** <li> <b>vfs</b>: ^The "vfs" parameter may be used to specify the name of
3880** a VFS object that provides the operating system interface that should
3881** be used to access the database file on disk. ^If this option is set to
3882** an empty string the default VFS object is used. ^Specifying an unknown
3883** VFS is an error. ^If sqlite3_open_v2() is used and the vfs option is
3884** present, then the VFS specified by the option takes precedence over
3885** the value passed as the fourth parameter to sqlite3_open_v2().
3886**
3887** <li> <b>mode</b>: ^(The mode parameter may be set to either "ro", "rw",
3888** "rwc", or "memory". Attempting to set it to any other value is
3889** an error)^.
3890** ^If "ro" is specified, then the database is opened for read-only
3891** access, just as if the [SQLITE_OPEN_READONLY] flag had been set in the
3892** third argument to sqlite3_open_v2(). ^If the mode option is set to
3893** "rw", then the database is opened for read-write (but not create)
3894** access, as if SQLITE_OPEN_READWRITE (but not SQLITE_OPEN_CREATE) had
3895** been set. ^Value "rwc" is equivalent to setting both
3896** SQLITE_OPEN_READWRITE and SQLITE_OPEN_CREATE. ^If the mode option is
3897** set to "memory" then a pure [in-memory database] that never reads
3898** or writes from disk is used. ^It is an error to specify a value for
3899** the mode parameter that is less restrictive than that specified by
3900** the flags passed in the third parameter to sqlite3_open_v2().
3901**
3902** <li> <b>cache</b>: ^The cache parameter may be set to either "shared" or
3903** "private". ^Setting it to "shared" is equivalent to setting the
3904** SQLITE_OPEN_SHAREDCACHE bit in the flags argument passed to
3905** sqlite3_open_v2(). ^Setting the cache parameter to "private" is
3906** equivalent to setting the SQLITE_OPEN_PRIVATECACHE bit.
3907** ^If sqlite3_open_v2() is used and the "cache" parameter is present in
3908** a URI filename, its value overrides any behavior requested by setting
3909** SQLITE_OPEN_PRIVATECACHE or SQLITE_OPEN_SHAREDCACHE flag.
3910**
3911** <li> <b>psow</b>: ^The psow parameter indicates whether or not the
3912** [powersafe overwrite] property does or does not apply to the
3913** storage media on which the database file resides.
3914**
3915** <li> <b>nolock</b>: ^The nolock parameter is a boolean query parameter
3916** which if set disables file locking in rollback journal modes. This
3917** is useful for accessing a database on a filesystem that does not
3918** support locking. Caution: Database corruption might result if two
3919** or more processes write to the same database and any one of those
3920** processes uses nolock=1.
3921**
3922** <li> <b>immutable</b>: ^The immutable parameter is a boolean query
3923** parameter that indicates that the database file is stored on
3924** read-only media. ^When immutable is set, SQLite assumes that the
3925** database file cannot be changed, even by a process with higher
3926** privilege, and so the database is opened read-only and all locking
3927** and change detection is disabled. Caution: Setting the immutable
3928** property on a database file that does in fact change can result
3929** in incorrect query results and/or [SQLITE_CORRUPT] errors.
3930** See also: [SQLITE_IOCAP_IMMUTABLE].
3931**
3932** </ul>
3933**
3934** ^Specifying an unknown parameter in the query component of a URI is not an
3935** error. Future versions of SQLite might understand additional query
3936** parameters. See "[query parameters with special meaning to SQLite]" for
3937** additional information.
3938**
3939** [[URI filename examples]] <h3>URI filename examples</h3>
3940**
3941** <table border="1" align=center cellpadding=5>
3942** <tr><th> URI filenames <th> Results
3943** <tr><td> file:data.db <td>
3944** Open the file "data.db" in the current directory.
3945** <tr><td> file:/home/fred/data.db<br>
3946** file:///home/fred/data.db <br>
3947** file://localhost/home/fred/data.db <br> <td>
3948** Open the database file "/home/fred/data.db".
3949** <tr><td> file://darkstar/home/fred/data.db <td>
3950** An error. "darkstar" is not a recognized authority.
3951** <tr><td style="white-space:nowrap">
3952** file:///C:/Documents%20and%20Settings/fred/Desktop/data.db
3953** <td> Windows only: Open the file "data.db" on fred's desktop on drive
3954** C:. Note that the %20 escaping in this example is not strictly
3955** necessary - space characters can be used literally
3956** in URI filenames.
3957** <tr><td> file:data.db?mode=ro&cache=private <td>
3958** Open file "data.db" in the current directory for read-only access.
3959** Regardless of whether or not shared-cache mode is enabled by
3960** default, use a private cache.
3961** <tr><td> file:/home/fred/data.db?vfs=unix-dotfile <td>
3962** Open file "/home/fred/data.db". Use the special VFS "unix-dotfile"
3963** that uses dot-files in place of posix advisory locking.
3964** <tr><td> file:data.db?mode=readonly <td>
3965** An error. "readonly" is not a valid option for the "mode" parameter.
3966** Use "ro" instead: "file:data.db?mode=ro".
3967** </table>
3968**
3969** ^URI hexadecimal escape sequences (%HH) are supported within the path and
3970** query components of a URI. A hexadecimal escape sequence consists of a
3971** percent sign - "%" - followed by exactly two hexadecimal digits
3972** specifying an octet value. ^Before the path or query components of a
3973** URI filename are interpreted, they are encoded using UTF-8 and all
3974** hexadecimal escape sequences replaced by a single byte containing the
3975** corresponding octet. If this process generates an invalid UTF-8 encoding,
3976** the results are undefined.
3977**
3978** <b>Note to Windows users:</b> The encoding used for the filename argument
3979** of sqlite3_open() and sqlite3_open_v2() must be UTF-8, not whatever
3980** codepage is currently defined. Filenames containing international
3981** characters must be converted to UTF-8 prior to passing them into
3982** sqlite3_open() or sqlite3_open_v2().
3983**
3984** <b>Note to Windows Runtime users:</b> The temporary directory must be set
3985** prior to calling sqlite3_open() or sqlite3_open_v2(). Otherwise, various
3986** features that require the use of temporary files may fail.
3987**
3988** See also: [sqlite3_temp_directory]
3989*/
3990SQLITE_API int sqlite3_open(
3991 const char *filename, /* Database filename (UTF-8) */
3992 sqlite3 **ppDb /* OUT: SQLite db handle */
3993);
3994SQLITE_API int sqlite3_open16(
3995 const void *filename, /* Database filename (UTF-16) */
3996 sqlite3 **ppDb /* OUT: SQLite db handle */
3997);
3998SQLITE_API int sqlite3_open_v2(
3999 const char *filename, /* Database filename (UTF-8) */
4000 sqlite3 **ppDb, /* OUT: SQLite db handle */
4001 int flags, /* Flags */
4002 const char *zVfs /* Name of VFS module to use */
4003);
4004
4005/*
4006** CAPI3REF: Obtain Values For URI Parameters
4007**
4008** These are utility routines, useful to [VFS|custom VFS implementations],
4009** that check if a database file was a URI that contained a specific query
4010** parameter, and if so obtains the value of that query parameter.
4011**
4012** The first parameter to these interfaces (hereafter referred to
4013** as F) must be one of:
4014** <ul>
4015** <li> A database filename pointer created by the SQLite core and
4016** passed into the xOpen() method of a VFS implementation, or
4017** <li> A filename obtained from [sqlite3_db_filename()], or
4018** <li> A new filename constructed using [sqlite3_create_filename()].
4019** </ul>
4020** If the F parameter is not one of the above, then the behavior is
4021** undefined and probably undesirable. Older versions of SQLite were
4022** more tolerant of invalid F parameters than newer versions.
4023**
4024** If F is a suitable filename (as described in the previous paragraph)
4025** and if P is the name of the query parameter, then
4026** sqlite3_uri_parameter(F,P) returns the value of the P
4027** parameter if it exists or a NULL pointer if P does not appear as a
4028** query parameter on F. If P is a query parameter of F and it
4029** has no explicit value, then sqlite3_uri_parameter(F,P) returns
4030** a pointer to an empty string.
4031**
4032** The sqlite3_uri_boolean(F,P,B) routine assumes that P is a boolean
4033** parameter and returns true (1) or false (0) according to the value
4034** of P. The sqlite3_uri_boolean(F,P,B) routine returns true (1) if the
4035** value of query parameter P is one of "yes", "true", or "on" in any
4036** case or if the value begins with a non-zero number. The
4037** sqlite3_uri_boolean(F,P,B) routines returns false (0) if the value of
4038** query parameter P is one of "no", "false", or "off" in any case or
4039** if the value begins with a numeric zero. If P is not a query
4040** parameter on F or if the value of P does not match any of the
4041** above, then sqlite3_uri_boolean(F,P,B) returns (B!=0).
4042**
4043** The sqlite3_uri_int64(F,P,D) routine converts the value of P into a
4044** 64-bit signed integer and returns that integer, or D if P does not
4045** exist. If the value of P is something other than an integer, then
4046** zero is returned.
4047**
4048** The sqlite3_uri_key(F,N) returns a pointer to the name (not
4049** the value) of the N-th query parameter for filename F, or a NULL
4050** pointer if N is less than zero or greater than the number of query
4051** parameters minus 1. The N value is zero-based so N should be 0 to obtain
4052** the name of the first query parameter, 1 for the second parameter, and
4053** so forth.
4054**
4055** If F is a NULL pointer, then sqlite3_uri_parameter(F,P) returns NULL and
4056** sqlite3_uri_boolean(F,P,B) returns B. If F is not a NULL pointer and
4057** is not a database file pathname pointer that the SQLite core passed
4058** into the xOpen VFS method, then the behavior of this routine is undefined
4059** and probably undesirable.
4060**
4061** Beginning with SQLite [version 3.31.0] ([dateof:3.31.0]) the input F
4062** parameter can also be the name of a rollback journal file or WAL file
4063** in addition to the main database file. Prior to version 3.31.0, these
4064** routines would only work if F was the name of the main database file.
4065** When the F parameter is the name of the rollback journal or WAL file,
4066** it has access to all the same query parameters as were found on the
4067** main database file.
4068**
4069** See the [URI filename] documentation for additional information.
4070*/
4071SQLITE_API const char *sqlite3_uri_parameter(sqlite3_filename z, const char *zParam);
4072SQLITE_API int sqlite3_uri_boolean(sqlite3_filename z, const char *zParam, int bDefault);
4073SQLITE_API sqlite3_int64 sqlite3_uri_int64(sqlite3_filename, const char*, sqlite3_int64);
4074SQLITE_API const char *sqlite3_uri_key(sqlite3_filename z, int N);
4075
4076/*
4077** CAPI3REF: Translate filenames
4078**
4079** These routines are available to [VFS|custom VFS implementations] for
4080** translating filenames between the main database file, the journal file,
4081** and the WAL file.
4082**
4083** If F is the name of an sqlite database file, journal file, or WAL file
4084** passed by the SQLite core into the VFS, then sqlite3_filename_database(F)
4085** returns the name of the corresponding database file.
4086**
4087** If F is the name of an sqlite database file, journal file, or WAL file
4088** passed by the SQLite core into the VFS, or if F is a database filename
4089** obtained from [sqlite3_db_filename()], then sqlite3_filename_journal(F)
4090** returns the name of the corresponding rollback journal file.
4091**
4092** If F is the name of an sqlite database file, journal file, or WAL file
4093** that was passed by the SQLite core into the VFS, or if F is a database
4094** filename obtained from [sqlite3_db_filename()], then
4095** sqlite3_filename_wal(F) returns the name of the corresponding
4096** WAL file.
4097**
4098** In all of the above, if F is not the name of a database, journal or WAL
4099** filename passed into the VFS from the SQLite core and F is not the
4100** return value from [sqlite3_db_filename()], then the result is
4101** undefined and is likely a memory access violation.
4102*/
4103SQLITE_API const char *sqlite3_filename_database(sqlite3_filename);
4104SQLITE_API const char *sqlite3_filename_journal(sqlite3_filename);
4105SQLITE_API const char *sqlite3_filename_wal(sqlite3_filename);
4106
4107/*
4108** CAPI3REF: Database File Corresponding To A Journal
4109**
4110** ^If X is the name of a rollback or WAL-mode journal file that is
4111** passed into the xOpen method of [sqlite3_vfs], then
4112** sqlite3_database_file_object(X) returns a pointer to the [sqlite3_file]
4113** object that represents the main database file.
4114**
4115** This routine is intended for use in custom [VFS] implementations
4116** only. It is not a general-purpose interface.
4117** The argument sqlite3_file_object(X) must be a filename pointer that
4118** has been passed into [sqlite3_vfs].xOpen method where the
4119** flags parameter to xOpen contains one of the bits
4120** [SQLITE_OPEN_MAIN_JOURNAL] or [SQLITE_OPEN_WAL]. Any other use
4121** of this routine results in undefined and probably undesirable
4122** behavior.
4123*/
4124SQLITE_API sqlite3_file *sqlite3_database_file_object(const char*);
4125
4126/*
4127** CAPI3REF: Create and Destroy VFS Filenames
4128**
4129** These interfaces are provided for use by [VFS shim] implementations and
4130** are not useful outside of that context.
4131**
4132** The sqlite3_create_filename(D,J,W,N,P) allocates memory to hold a version of
4133** database filename D with corresponding journal file J and WAL file W and
4134** an array P of N URI Key/Value pairs. The result from
4135** sqlite3_create_filename(D,J,W,N,P) is a pointer to a database filename that
4136** is safe to pass to routines like:
4137** <ul>
4138** <li> [sqlite3_uri_parameter()],
4139** <li> [sqlite3_uri_boolean()],
4140** <li> [sqlite3_uri_int64()],
4141** <li> [sqlite3_uri_key()],
4142** <li> [sqlite3_filename_database()],
4143** <li> [sqlite3_filename_journal()], or
4144** <li> [sqlite3_filename_wal()].
4145** </ul>
4146** If a memory allocation error occurs, sqlite3_create_filename() might
4147** return a NULL pointer. The memory obtained from sqlite3_create_filename(X)
4148** must be released by a corresponding call to sqlite3_free_filename(Y).
4149**
4150** The P parameter in sqlite3_create_filename(D,J,W,N,P) should be an array
4151** of 2*N pointers to strings. Each pair of pointers in this array corresponds
4152** to a key and value for a query parameter. The P parameter may be a NULL
4153** pointer if N is zero. None of the 2*N pointers in the P array may be
4154** NULL pointers and key pointers should not be empty strings.
4155** None of the D, J, or W parameters to sqlite3_create_filename(D,J,W,N,P) may
4156** be NULL pointers, though they can be empty strings.
4157**
4158** The sqlite3_free_filename(Y) routine releases a memory allocation
4159** previously obtained from sqlite3_create_filename(). Invoking
4160** sqlite3_free_filename(Y) where Y is a NULL pointer is a harmless no-op.
4161**
4162** If the Y parameter to sqlite3_free_filename(Y) is anything other
4163** than a NULL pointer or a pointer previously acquired from
4164** sqlite3_create_filename(), then bad things such as heap
4165** corruption or segfaults may occur. The value Y should not be
4166** used again after sqlite3_free_filename(Y) has been called. This means
4167** that if the [sqlite3_vfs.xOpen()] method of a VFS has been called using Y,
4168** then the corresponding [sqlite3_module.xClose() method should also be
4169** invoked prior to calling sqlite3_free_filename(Y).
4170*/
4171SQLITE_API sqlite3_filename sqlite3_create_filename(
4172 const char *zDatabase,
4173 const char *zJournal,
4174 const char *zWal,
4175 int nParam,
4176 const char **azParam
4177);
4178SQLITE_API void sqlite3_free_filename(sqlite3_filename);
4179
4180/*
4181** CAPI3REF: Error Codes And Messages
4182** METHOD: sqlite3
4183**
4184** ^If the most recent sqlite3_* API call associated with
4185** [database connection] D failed, then the sqlite3_errcode(D) interface
4186** returns the numeric [result code] or [extended result code] for that
4187** API call.
4188** ^The sqlite3_extended_errcode()
4189** interface is the same except that it always returns the
4190** [extended result code] even when extended result codes are
4191** disabled.
4192**
4193** The values returned by sqlite3_errcode() and/or
4194** sqlite3_extended_errcode() might change with each API call.
4195** Except, there are some interfaces that are guaranteed to never
4196** change the value of the error code. The error-code preserving
4197** interfaces include the following:
4198**
4199** <ul>
4200** <li> sqlite3_errcode()
4201** <li> sqlite3_extended_errcode()
4202** <li> sqlite3_errmsg()
4203** <li> sqlite3_errmsg16()
4204** <li> sqlite3_error_offset()
4205** <li> sqlite3_db_handle()
4206** </ul>
4207**
4208** ^The sqlite3_errmsg() and sqlite3_errmsg16() return English-language
4209** text that describes the error, as either UTF-8 or UTF-16 respectively,
4210** or NULL if no error message is available.
4211** (See how SQLite handles [invalid UTF] for exceptions to this rule.)
4212** ^(Memory to hold the error message string is managed internally.
4213** The application does not need to worry about freeing the result.
4214** However, the error string might be overwritten or deallocated by
4215** subsequent calls to other SQLite interface functions.)^
4216**
4217** ^The sqlite3_errstr(E) interface returns the English-language text
4218** that describes the [result code] E, as UTF-8, or NULL if E is not a
4219** result code for which a text error message is available.
4220** ^(Memory to hold the error message string is managed internally
4221** and must not be freed by the application)^.
4222**
4223** ^If the most recent error references a specific token in the input
4224** SQL, the sqlite3_error_offset() interface returns the byte offset
4225** of the start of that token. ^The byte offset returned by
4226** sqlite3_error_offset() assumes that the input SQL is UTF-8.
4227** ^If the most recent error does not reference a specific token in the input
4228** SQL, then the sqlite3_error_offset() function returns -1.
4229**
4230** When the serialized [threading mode] is in use, it might be the
4231** case that a second error occurs on a separate thread in between
4232** the time of the first error and the call to these interfaces.
4233** When that happens, the second error will be reported since these
4234** interfaces always report the most recent result. To avoid
4235** this, each thread can obtain exclusive use of the [database connection] D
4236** by invoking [sqlite3_mutex_enter]([sqlite3_db_mutex](D)) before beginning
4237** to use D and invoking [sqlite3_mutex_leave]([sqlite3_db_mutex](D)) after
4238** all calls to the interfaces listed here are completed.
4239**
4240** If an interface fails with SQLITE_MISUSE, that means the interface
4241** was invoked incorrectly by the application. In that case, the
4242** error code and message may or may not be set.
4243*/
4244SQLITE_API int sqlite3_errcode(sqlite3 *db);
4245SQLITE_API int sqlite3_extended_errcode(sqlite3 *db);
4246SQLITE_API const char *sqlite3_errmsg(sqlite3*);
4247SQLITE_API const void *sqlite3_errmsg16(sqlite3*);
4248SQLITE_API const char *sqlite3_errstr(int);
4249SQLITE_API int sqlite3_error_offset(sqlite3 *db);
4250
4251/*
4252** CAPI3REF: Set Error Code And Message
4253** METHOD: sqlite3
4254**
4255** Set the error code of the database handle passed as the first argument
4256** to errcode, and the error message to a copy of nul-terminated string
4257** zErrMsg. If zErrMsg is passed NULL, then the error message is set to
4258** the default message associated with the supplied error code. Subsequent
4259** calls to [sqlite3_errcode()] and [sqlite3_errmsg()] and similar will
4260** return the values set by this routine in place of what was previously
4261** set by SQLite itself.
4262**
4263** This function returns SQLITE_OK if the error code and error message are
4264** successfully set, SQLITE_NOMEM if an OOM occurs, and SQLITE_MISUSE if
4265** the database handle is NULL or invalid.
4266**
4267** The error code and message set by this routine remains in effect until
4268** they are changed, either by another call to this routine or until they are
4269** changed to by SQLite itself to reflect the result of some subsquent
4270** API call.
4271**
4272** This function is intended for use by SQLite extensions or wrappers. The
4273** idea is that an extension or wrapper can use this routine to set error
4274** messages and error codes and thus behave more like a core SQLite
4275** feature from the point of view of an application.
4276*/
4277SQLITE_API int sqlite3_set_errmsg(sqlite3 *db, int errcode, const char *zErrMsg);
4278
4279/*
4280** CAPI3REF: Prepared Statement Object
4281** KEYWORDS: {prepared statement} {prepared statements}
4282**
4283** An instance of this object represents a single SQL statement that
4284** has been compiled into binary form and is ready to be evaluated.
4285**
4286** Think of each SQL statement as a separate computer program. The
4287** original SQL text is source code. A prepared statement object
4288** is the compiled object code. All SQL must be converted into a
4289** prepared statement before it can be run.
4290**
4291** The life-cycle of a prepared statement object usually goes like this:
4292**
4293** <ol>
4294** <li> Create the prepared statement object using [sqlite3_prepare_v2()].
4295** <li> Bind values to [parameters] using the sqlite3_bind_*()
4296** interfaces.
4297** <li> Run the SQL by calling [sqlite3_step()] one or more times.
4298** <li> Reset the prepared statement using [sqlite3_reset()] then go back
4299** to step 2. Do this zero or more times.
4300** <li> Destroy the object using [sqlite3_finalize()].
4301** </ol>
4302*/
4303typedef struct sqlite3_stmt sqlite3_stmt;
4304
4305/*
4306** CAPI3REF: Run-time Limits
4307** METHOD: sqlite3
4308**
4309** ^(This interface allows the size of various constructs to be limited
4310** on a connection by connection basis. The first parameter is the
4311** [database connection] whose limit is to be set or queried. The
4312** second parameter is one of the [limit categories] that define a
4313** class of constructs to be size limited. The third parameter is the
4314** new limit for that construct.)^
4315**
4316** ^If the new limit is a negative number, the limit is unchanged.
4317** ^(For each limit category SQLITE_LIMIT_<i>NAME</i> there is a
4318** [limits | hard upper bound]
4319** set at compile-time by a C preprocessor macro called
4320** [limits | SQLITE_MAX_<i>NAME</i>].
4321** (The "_LIMIT_" in the name is changed to "_MAX_".))^
4322** ^Attempts to increase a limit above its hard upper bound are
4323** silently truncated to the hard upper bound.
4324**
4325** ^Regardless of whether or not the limit was changed, the
4326** [sqlite3_limit()] interface returns the prior value of the limit.
4327** ^Hence, to find the current value of a limit without changing it,
4328** simply invoke this interface with the third parameter set to -1.
4329**
4330** Run-time limits are intended for use in applications that manage
4331** both their own internal database and also databases that are controlled
4332** by untrusted external sources. An example application might be a
4333** web browser that has its own databases for storing history and
4334** separate databases controlled by JavaScript applications downloaded
4335** off the Internet. The internal databases can be given the
4336** large, default limits. Databases managed by external sources can
4337** be given much smaller limits designed to prevent a denial of service
4338** attack. Developers might also want to use the [sqlite3_set_authorizer()]
4339** interface to further control untrusted SQL. The size of the database
4340** created by an untrusted script can be contained using the
4341** [max_page_count] [PRAGMA].
4342**
4343** New run-time limit categories may be added in future releases.
4344*/
4345SQLITE_API int sqlite3_limit(sqlite3*, int id, int newVal);
4346
4347/*
4348** CAPI3REF: Run-Time Limit Categories
4349** KEYWORDS: {limit category} {*limit categories}
4350**
4351** These constants define various performance limits
4352** that can be lowered at run-time using [sqlite3_limit()].
4353** A concise description of these limits follows, and additional information
4354** is available at [limits | Limits in SQLite].
4355**
4356** <dl>
4357** [[SQLITE_LIMIT_LENGTH]] ^(<dt>SQLITE_LIMIT_LENGTH</dt>
4358** <dd>The maximum size of any string or BLOB or table row, in bytes.<dd>)^
4359**
4360** [[SQLITE_LIMIT_SQL_LENGTH]] ^(<dt>SQLITE_LIMIT_SQL_LENGTH</dt>
4361** <dd>The maximum length of an SQL statement, in bytes.</dd>)^
4362**
4363** [[SQLITE_LIMIT_COLUMN]] ^(<dt>SQLITE_LIMIT_COLUMN</dt>
4364** <dd>The maximum number of columns in a table definition or in the
4365** result set of a [SELECT] or the maximum number of columns in an index
4366** or in an ORDER BY or GROUP BY clause.</dd>)^
4367**
4368** [[SQLITE_LIMIT_EXPR_DEPTH]] ^(<dt>SQLITE_LIMIT_EXPR_DEPTH</dt>
4369** <dd>The maximum depth of the parse tree on any expression.</dd>)^
4370**
4371** [[SQLITE_LIMIT_PARSER_DEPTH]] ^(<dt>SQLITE_LIMIT_PARSER_DEPTH</dt>
4372** <dd>The maximum depth of the LALR(1) parser stack used to analyze
4373** input SQL statements.</dd>)^
4374**
4375** [[SQLITE_LIMIT_COMPOUND_SELECT]] ^(<dt>SQLITE_LIMIT_COMPOUND_SELECT</dt>
4376** <dd>The maximum number of terms in a compound SELECT statement.</dd>)^
4377**
4378** [[SQLITE_LIMIT_VDBE_OP]] ^(<dt>SQLITE_LIMIT_VDBE_OP</dt>
4379** <dd>The maximum number of instructions in a virtual machine program
4380** used to implement an SQL statement. If [sqlite3_prepare_v2()] or
4381** the equivalent tries to allocate space for more than this many opcodes
4382** in a single prepared statement, an SQLITE_NOMEM error is returned.</dd>)^
4383**
4384** [[SQLITE_LIMIT_FUNCTION_ARG]] ^(<dt>SQLITE_LIMIT_FUNCTION_ARG</dt>
4385** <dd>The maximum number of arguments on a function.</dd>)^
4386**
4387** [[SQLITE_LIMIT_ATTACHED]] ^(<dt>SQLITE_LIMIT_ATTACHED</dt>
4388** <dd>The maximum number of [ATTACH | attached databases].)^</dd>
4389**
4390** [[SQLITE_LIMIT_LIKE_PATTERN_LENGTH]]
4391** ^(<dt>SQLITE_LIMIT_LIKE_PATTERN_LENGTH</dt>
4392** <dd>The maximum length of the pattern argument to the [LIKE] or
4393** [GLOB] operators.</dd>)^
4394**
4395** [[SQLITE_LIMIT_VARIABLE_NUMBER]]
4396** ^(<dt>SQLITE_LIMIT_VARIABLE_NUMBER</dt>
4397** <dd>The maximum index number of any [parameter] in an SQL statement.)^
4398**
4399** [[SQLITE_LIMIT_TRIGGER_DEPTH]] ^(<dt>SQLITE_LIMIT_TRIGGER_DEPTH</dt>
4400** <dd>The maximum depth of recursion for triggers.</dd>)^
4401**
4402** [[SQLITE_LIMIT_WORKER_THREADS]] ^(<dt>SQLITE_LIMIT_WORKER_THREADS</dt>
4403** <dd>The maximum number of auxiliary worker threads that a single
4404** [prepared statement] may start.</dd>)^
4405** </dl>
4406*/
4407#define SQLITE_LIMIT_LENGTH 0
4408#define SQLITE_LIMIT_SQL_LENGTH 1
4409#define SQLITE_LIMIT_COLUMN 2
4410#define SQLITE_LIMIT_EXPR_DEPTH 3
4411#define SQLITE_LIMIT_COMPOUND_SELECT 4
4412#define SQLITE_LIMIT_VDBE_OP 5
4413#define SQLITE_LIMIT_FUNCTION_ARG 6
4414#define SQLITE_LIMIT_ATTACHED 7
4415#define SQLITE_LIMIT_LIKE_PATTERN_LENGTH 8
4416#define SQLITE_LIMIT_VARIABLE_NUMBER 9
4417#define SQLITE_LIMIT_TRIGGER_DEPTH 10
4418#define SQLITE_LIMIT_WORKER_THREADS 11
4419#define SQLITE_LIMIT_PARSER_DEPTH 12
4420
4421/*
4422** CAPI3REF: Prepare Flags
4423**
4424** These constants define various flags that can be passed into the
4425** "prepFlags" parameter of the [sqlite3_prepare_v3()] and
4426** [sqlite3_prepare16_v3()] interfaces.
4427**
4428** New flags may be added in future releases of SQLite.
4429**
4430** <dl>
4431** [[SQLITE_PREPARE_PERSISTENT]] ^(<dt>SQLITE_PREPARE_PERSISTENT</dt>
4432** <dd>The SQLITE_PREPARE_PERSISTENT flag is a hint to the query planner
4433** that the prepared statement will be retained for a long time and
4434** probably reused many times.)^ ^Without this flag, [sqlite3_prepare_v3()]
4435** and [sqlite3_prepare16_v3()] assume that the prepared statement will
4436** be used just once or at most a few times and then destroyed using
4437** [sqlite3_finalize()] relatively soon. The current implementation acts
4438** on this hint by avoiding the use of [lookaside memory] so as not to
4439** deplete the limited store of lookaside memory. Future versions of
4440** SQLite may act on this hint differently.
4441**
4442** [[SQLITE_PREPARE_NORMALIZE]] <dt>SQLITE_PREPARE_NORMALIZE</dt>
4443** <dd>The SQLITE_PREPARE_NORMALIZE flag is a no-op. This flag used
4444** to be required for any prepared statement that wanted to use the
4445** [sqlite3_normalized_sql()] interface. However, the
4446** [sqlite3_normalized_sql()] interface is now available to all
4447** prepared statements, regardless of whether or not they use this
4448** flag.
4449**
4450** [[SQLITE_PREPARE_NO_VTAB]] <dt>SQLITE_PREPARE_NO_VTAB</dt>
4451** <dd>The SQLITE_PREPARE_NO_VTAB flag causes the SQL compiler
4452** to return an error (error code SQLITE_ERROR) if the statement uses
4453** any virtual tables.
4454**
4455** [[SQLITE_PREPARE_DONT_LOG]] <dt>SQLITE_PREPARE_DONT_LOG</dt>
4456** <dd>The SQLITE_PREPARE_DONT_LOG flag prevents SQL compiler
4457** errors from being sent to the error log defined by
4458** [SQLITE_CONFIG_LOG]. This can be used, for example, to do test
4459** compiles to see if some SQL syntax is well-formed, without generating
4460** messages on the global error log when it is not. If the test compile
4461** fails, the sqlite3_prepare_v3() call returns the same error indications
4462** with or without this flag; it just omits the call to [sqlite3_log()] that
4463** logs the error.
4464**
4465** [[SQLITE_PREPARE_FROM_DDL]] <dt>SQLITE_PREPARE_FROM_DDL</dt>
4466** <dd>The SQLITE_PREPARE_FROM_DDL flag causes the SQL compiler to enforce
4467** security constraints that would otherwise only be enforced when parsing
4468** the database schema. In other words, the SQLITE_PREPARE_FROM_DDL flag
4469** causes the SQL compiler to treat the SQL statement being prepared as if
4470** it had come from an attacker. When SQLITE_PREPARE_FROM_DDL is used and
4471** [SQLITE_DBCONFIG_TRUSTED_SCHEMA] is off, SQL functions may only be called
4472** if they are tagged with [SQLITE_INNOCUOUS] and virtual tables may only
4473** be used if they are tagged with [SQLITE_VTAB_INNOCUOUS]. Best practice
4474** is to use the SQLITE_PREPARE_FROM_DDL option when preparing any SQL that
4475** is derived from parts of the database schema. In particular, virtual
4476** table implementations that run SQL statements that are derived from
4477** arguments to their CREATE VIRTUAL TABLE statement should always use
4478** [sqlite3_prepare_v3()] and set the SQLITE_PREPARE_FROM_DDL flag to
4479** prevent bypass of the [SQLITE_DBCONFIG_TRUSTED_SCHEMA] security checks.
4480** </dl>
4481*/
4482#define SQLITE_PREPARE_PERSISTENT 0x01
4483#define SQLITE_PREPARE_NORMALIZE 0x02
4484#define SQLITE_PREPARE_NO_VTAB 0x04
4485#define SQLITE_PREPARE_DONT_LOG 0x10
4486#define SQLITE_PREPARE_FROM_DDL 0x20
4487
4488/*
4489** CAPI3REF: Compiling An SQL Statement
4490** KEYWORDS: {SQL statement compiler}
4491** METHOD: sqlite3
4492** CONSTRUCTOR: sqlite3_stmt
4493**
4494** To execute an SQL statement, it must first be compiled into a byte-code
4495** program using one of these routines. Or, in other words, these routines
4496** are constructors for the [prepared statement] object.
4497**
4498** The preferred routine to use is [sqlite3_prepare_v2()]. The
4499** [sqlite3_prepare()] interface is legacy and should be avoided.
4500** [sqlite3_prepare_v3()] has an extra
4501** [SQLITE_PREPARE_FROM_DDL|"prepFlags" option] that is sometimes
4502** needed for special purpose or to pass along security restrictions.
4503**
4504** The use of the UTF-8 interfaces is preferred, as SQLite currently
4505** does all parsing using UTF-8. The UTF-16 interfaces are provided
4506** as a convenience. The UTF-16 interfaces work by converting the
4507** input text into UTF-8, then invoking the corresponding UTF-8 interface.
4508**
4509** The first argument, "db", is a [database connection] obtained from a
4510** prior successful call to [sqlite3_open()], [sqlite3_open_v2()] or
4511** [sqlite3_open16()]. The database connection must not have been closed.
4512**
4513** The second argument, "zSql", is the statement to be compiled, encoded
4514** as either UTF-8 or UTF-16. The sqlite3_prepare(), sqlite3_prepare_v2(),
4515** and sqlite3_prepare_v3()
4516** interfaces use UTF-8, and sqlite3_prepare16(), sqlite3_prepare16_v2(),
4517** and sqlite3_prepare16_v3() use UTF-16.
4518**
4519** ^If the nByte argument is negative, then zSql is read up to the
4520** first zero terminator. ^If nByte is positive, then it is the maximum
4521** number of bytes read from zSql. When nByte is positive, zSql is read
4522** up to the first zero terminator or until the nByte bytes have been read,
4523** whichever comes first. ^If nByte is zero, then no prepared
4524** statement is generated.
4525** If the caller knows that the supplied string is nul-terminated, then
4526** there is a small performance advantage to passing an nByte parameter that
4527** is the number of bytes in the input string <i>including</i>
4528** the nul-terminator.
4529** Note that nByte measures the length of the input in bytes, not
4530** characters, even for the UTF-16 interfaces.
4531**
4532** ^If pzTail is not NULL then *pzTail is made to point to the first byte
4533** past the end of the first SQL statement in zSql. These routines only
4534** compile the first statement in zSql, so *pzTail is left pointing to
4535** what remains uncompiled.
4536**
4537** ^*ppStmt is left pointing to a compiled [prepared statement] that can be
4538** executed using [sqlite3_step()]. ^If there is an error, *ppStmt is set
4539** to NULL. ^If the input text contains no SQL (if the input is an empty
4540** string or a comment) then *ppStmt is set to NULL.
4541** The calling procedure is responsible for deleting the compiled
4542** SQL statement using [sqlite3_finalize()] after it has finished with it.
4543** ppStmt may not be NULL.
4544**
4545** ^On success, the sqlite3_prepare() family of routines return [SQLITE_OK];
4546** otherwise an [error code] is returned.
4547**
4548** The sqlite3_prepare_v2(), sqlite3_prepare_v3(), sqlite3_prepare16_v2(),
4549** and sqlite3_prepare16_v3() interfaces are recommended for all new programs.
4550** The older interfaces (sqlite3_prepare() and sqlite3_prepare16())
4551** are retained for backwards compatibility, but their use is discouraged.
4552** ^In the "vX" interfaces, the prepared statement
4553** that is returned (the [sqlite3_stmt] object) contains a copy of the
4554** original SQL text. This causes the [sqlite3_step()] interface to
4555** behave differently in three ways:
4556**
4557** <ol>
4558** <li>
4559** ^If the database schema changes, instead of returning [SQLITE_SCHEMA] as it
4560** always used to do, [sqlite3_step()] will automatically recompile the SQL
4561** statement and try to run it again. As many as [SQLITE_MAX_SCHEMA_RETRY]
4562** retries will occur before sqlite3_step() gives up and returns an error.
4563** </li>
4564**
4565** <li>
4566** ^When an error occurs, [sqlite3_step()] will return one of the detailed
4567** [error codes] or [extended error codes]. ^The legacy behavior was that
4568** [sqlite3_step()] would only return a generic [SQLITE_ERROR] result code
4569** and the application would have to make a second call to [sqlite3_reset()]
4570** in order to find the underlying cause of the problem. With the "v2" prepare
4571** interfaces, the underlying reason for the error is returned immediately.
4572** </li>
4573**
4574** <li>
4575** ^If the specific value bound to a [parameter | host parameter] in the
4576** WHERE clause might influence the choice of query plan for a statement,
4577** then the statement will be automatically recompiled, as if there had been
4578** a schema change, on the first [sqlite3_step()] call following any change
4579** to the [sqlite3_bind_text | bindings] of that [parameter].
4580** ^The specific value of a WHERE-clause [parameter] might influence the
4581** choice of query plan if the parameter is the left-hand side of a [LIKE]
4582** or [GLOB] operator or if the parameter is compared to an indexed column
4583** and the [SQLITE_ENABLE_STAT4] compile-time option is enabled.
4584** </li>
4585** </ol>
4586**
4587** <p>^sqlite3_prepare_v3() differs from sqlite3_prepare_v2() only in having
4588** the extra prepFlags parameter, which is a bit array consisting of zero or
4589** more of the [SQLITE_PREPARE_PERSISTENT|SQLITE_PREPARE_*] flags. ^The
4590** sqlite3_prepare_v2() interface works exactly the same as
4591** sqlite3_prepare_v3() with a zero prepFlags parameter.
4592*/
4593SQLITE_API int sqlite3_prepare(
4594 sqlite3 *db, /* Database handle */
4595 const char *zSql, /* SQL statement, UTF-8 encoded */
4596 int nByte, /* Maximum length of zSql in bytes. */
4597 sqlite3_stmt **ppStmt, /* OUT: Statement handle */
4598 const char **pzTail /* OUT: Pointer to unused portion of zSql */
4599);
4600SQLITE_API int sqlite3_prepare_v2(
4601 sqlite3 *db, /* Database handle */
4602 const char *zSql, /* SQL statement, UTF-8 encoded */
4603 int nByte, /* Maximum length of zSql in bytes. */
4604 sqlite3_stmt **ppStmt, /* OUT: Statement handle */
4605 const char **pzTail /* OUT: Pointer to unused portion of zSql */
4606);
4607SQLITE_API int sqlite3_prepare_v3(
4608 sqlite3 *db, /* Database handle */
4609 const char *zSql, /* SQL statement, UTF-8 encoded */
4610 int nByte, /* Maximum length of zSql in bytes. */
4611 unsigned int prepFlags, /* Zero or more SQLITE_PREPARE_ flags */
4612 sqlite3_stmt **ppStmt, /* OUT: Statement handle */
4613 const char **pzTail /* OUT: Pointer to unused portion of zSql */
4614);
4615SQLITE_API int sqlite3_prepare16(
4616 sqlite3 *db, /* Database handle */
4617 const void *zSql, /* SQL statement, UTF-16 encoded */
4618 int nByte, /* Maximum length of zSql in bytes. */
4619 sqlite3_stmt **ppStmt, /* OUT: Statement handle */
4620 const void **pzTail /* OUT: Pointer to unused portion of zSql */
4621);
4622SQLITE_API int sqlite3_prepare16_v2(
4623 sqlite3 *db, /* Database handle */
4624 const void *zSql, /* SQL statement, UTF-16 encoded */
4625 int nByte, /* Maximum length of zSql in bytes. */
4626 sqlite3_stmt **ppStmt, /* OUT: Statement handle */
4627 const void **pzTail /* OUT: Pointer to unused portion of zSql */
4628);
4629SQLITE_API int sqlite3_prepare16_v3(
4630 sqlite3 *db, /* Database handle */
4631 const void *zSql, /* SQL statement, UTF-16 encoded */
4632 int nByte, /* Maximum length of zSql in bytes. */
4633 unsigned int prepFlags, /* Zero or more SQLITE_PREPARE_ flags */
4634 sqlite3_stmt **ppStmt, /* OUT: Statement handle */
4635 const void **pzTail /* OUT: Pointer to unused portion of zSql */
4636);
4637
4638/*
4639** CAPI3REF: Retrieving Statement SQL
4640** METHOD: sqlite3_stmt
4641**
4642** ^The sqlite3_sql(P) interface returns a pointer to a copy of the UTF-8
4643** SQL text used to create [prepared statement] P if P was
4644** created by [sqlite3_prepare_v2()], [sqlite3_prepare_v3()],
4645** [sqlite3_prepare16_v2()], or [sqlite3_prepare16_v3()].
4646** ^The sqlite3_expanded_sql(P) interface returns a pointer to a UTF-8
4647** string containing the SQL text of prepared statement P with
4648** [bound parameters] expanded.
4649** ^The sqlite3_normalized_sql(P) interface returns a pointer to a UTF-8
4650** string containing the normalized SQL text of prepared statement P. The
4651** semantics used to normalize a SQL statement are unspecified and subject
4652** to change. At a minimum, literal values will be replaced with suitable
4653** placeholders.
4654**
4655** ^(For example, if a prepared statement is created using the SQL
4656** text "SELECT $abc,:xyz" and if parameter $abc is bound to integer 2345
4657** and parameter :xyz is unbound, then sqlite3_sql() will return
4658** the original string, "SELECT $abc,:xyz" but sqlite3_expanded_sql()
4659** will return "SELECT 2345,NULL".)^
4660**
4661** ^The sqlite3_expanded_sql() interface returns NULL if insufficient memory
4662** is available to hold the result, or if the result would exceed the
4663** maximum string length determined by the [SQLITE_LIMIT_LENGTH].
4664**
4665** ^The [SQLITE_TRACE_SIZE_LIMIT] compile-time option limits the size of
4666** bound parameter expansions. ^The [SQLITE_OMIT_TRACE] compile-time
4667** option causes sqlite3_expanded_sql() to always return NULL.
4668**
4669** ^The strings returned by sqlite3_sql(P) and sqlite3_normalized_sql(P)
4670** are managed by SQLite and are automatically freed when the prepared
4671** statement is finalized.
4672** ^The string returned by sqlite3_expanded_sql(P), on the other hand,
4673** is obtained from [sqlite3_malloc()] and must be freed by the application
4674** by passing it to [sqlite3_free()].
4675**
4676** ^The sqlite3_normalized_sql() interface is only available if
4677** the [SQLITE_ENABLE_NORMALIZE] compile-time option is defined.
4678*/
4679SQLITE_API const char *sqlite3_sql(sqlite3_stmt *pStmt);
4680SQLITE_API char *sqlite3_expanded_sql(sqlite3_stmt *pStmt);
4681#ifdef SQLITE_ENABLE_NORMALIZE
4682SQLITE_API const char *sqlite3_normalized_sql(sqlite3_stmt *pStmt);
4683#endif
4684
4685/*
4686** CAPI3REF: Determine If An SQL Statement Writes The Database
4687** METHOD: sqlite3_stmt
4688**
4689** ^The sqlite3_stmt_readonly(X) interface returns true (non-zero) if
4690** and only if the [prepared statement] X makes no direct changes to
4691** the content of the database file.
4692**
4693** Note that [application-defined SQL functions] or
4694** [virtual tables] might change the database indirectly as a side effect.
4695** ^(For example, if an application defines a function "eval()" that
4696** calls [sqlite3_exec()], then the following SQL statement would
4697** change the database file through side-effects:
4698**
4699** <blockquote><pre>
4700** SELECT eval('DELETE FROM t1') FROM t2;
4701** </pre></blockquote>
4702**
4703** But because the [SELECT] statement does not change the database file
4704** directly, sqlite3_stmt_readonly() would still return true.)^
4705**
4706** ^Transaction control statements such as [BEGIN], [COMMIT], [ROLLBACK],
4707** [SAVEPOINT], and [RELEASE] cause sqlite3_stmt_readonly() to return true,
4708** since the statements themselves do not actually modify the database but
4709** rather they control the timing of when other statements modify the
4710** database. ^The [ATTACH] and [DETACH] statements also cause
4711** sqlite3_stmt_readonly() to return true since, while those statements
4712** change the configuration of a database connection, they do not make
4713** changes to the content of the database files on disk.
4714** ^The sqlite3_stmt_readonly() interface returns true for [BEGIN] since
4715** [BEGIN] merely sets internal flags, but the [BEGIN|BEGIN IMMEDIATE] and
4716** [BEGIN|BEGIN EXCLUSIVE] commands do touch the database and so
4717** sqlite3_stmt_readonly() returns false for those commands.
4718**
4719** ^This routine returns false if there is any possibility that the
4720** statement might change the database file. ^A false return does
4721** not guarantee that the statement will change the database file.
4722** ^For example, an UPDATE statement might have a WHERE clause that
4723** makes it a no-op, but the sqlite3_stmt_readonly() result would still
4724** be false. ^Similarly, a CREATE TABLE IF NOT EXISTS statement is a
4725** read-only no-op if the table already exists, but
4726** sqlite3_stmt_readonly() still returns false for such a statement.
4727**
4728** ^If prepared statement X is an [EXPLAIN] or [EXPLAIN QUERY PLAN]
4729** statement, then sqlite3_stmt_readonly(X) returns the same value as
4730** if the EXPLAIN or EXPLAIN QUERY PLAN prefix were omitted.
4731*/
4732SQLITE_API int sqlite3_stmt_readonly(sqlite3_stmt *pStmt);
4733
4734/*
4735** CAPI3REF: Query The EXPLAIN Setting For A Prepared Statement
4736** METHOD: sqlite3_stmt
4737**
4738** ^The sqlite3_stmt_isexplain(S) interface returns 1 if the
4739** prepared statement S is an EXPLAIN statement, or 2 if the
4740** statement S is an EXPLAIN QUERY PLAN.
4741** ^The sqlite3_stmt_isexplain(S) interface returns 0 if S is
4742** an ordinary statement or a NULL pointer.
4743*/
4744SQLITE_API int sqlite3_stmt_isexplain(sqlite3_stmt *pStmt);
4745
4746/*
4747** CAPI3REF: Change The EXPLAIN Setting For A Prepared Statement
4748** METHOD: sqlite3_stmt
4749**
4750** The sqlite3_stmt_explain(S,E) interface changes the EXPLAIN
4751** setting for [prepared statement] S. If E is zero, then S becomes
4752** a normal prepared statement. If E is 1, then S behaves as if
4753** its SQL text began with "[EXPLAIN]". If E is 2, then S behaves as if
4754** its SQL text began with "[EXPLAIN QUERY PLAN]".
4755**
4756** Calling sqlite3_stmt_explain(S,E) might cause S to be reprepared.
4757** SQLite tries to avoid a reprepare, but a reprepare might be necessary
4758** on the first transition into EXPLAIN or EXPLAIN QUERY PLAN mode.
4759**
4760** Because of the potential need to reprepare, a call to
4761** sqlite3_stmt_explain(S,E) will fail with SQLITE_ERROR if S cannot be
4762** reprepared because it was created using [sqlite3_prepare()] instead of
4763** the newer [sqlite3_prepare_v2()] or [sqlite3_prepare_v3()] interfaces and
4764** hence has no saved SQL text with which to reprepare.
4765**
4766** Changing the explain setting for a prepared statement does not change
4767** the original SQL text for the statement. Hence, if the SQL text originally
4768** began with EXPLAIN or EXPLAIN QUERY PLAN, but sqlite3_stmt_explain(S,0)
4769** is called to convert the statement into an ordinary statement, the EXPLAIN
4770** or EXPLAIN QUERY PLAN keywords will still appear in the sqlite3_sql(S)
4771** output, even though the statement now acts like a normal SQL statement.
4772**
4773** This routine returns SQLITE_OK if the explain mode is successfully
4774** changed, or an error code if the explain mode could not be changed.
4775** The explain mode cannot be changed while a statement is active.
4776** Hence, it is good practice to call [sqlite3_reset(S)]
4777** immediately prior to calling sqlite3_stmt_explain(S,E).
4778*/
4779SQLITE_API int sqlite3_stmt_explain(sqlite3_stmt *pStmt, int eMode);
4780
4781/*
4782** CAPI3REF: Determine If A Prepared Statement Has Been Reset
4783** METHOD: sqlite3_stmt
4784**
4785** ^The sqlite3_stmt_busy(S) interface returns true (non-zero) if the
4786** [prepared statement] S has been stepped at least once using
4787** [sqlite3_step(S)] but has neither run to completion (returned
4788** [SQLITE_DONE] from [sqlite3_step(S)]) nor
4789** been reset using [sqlite3_reset(S)]. ^The sqlite3_stmt_busy(S)
4790** interface returns false if S is a NULL pointer. If S is not a
4791** NULL pointer and is not a pointer to a valid [prepared statement]
4792** object, then the behavior is undefined and probably undesirable.
4793**
4794** This interface can be used in combination [sqlite3_next_stmt()]
4795** to locate all prepared statements associated with a database
4796** connection that are in need of being reset. This can be used,
4797** for example, in diagnostic routines to search for prepared
4798** statements that are holding a transaction open.
4799*/
4800SQLITE_API int sqlite3_stmt_busy(sqlite3_stmt*);
4801
4802/*
4803** CAPI3REF: Dynamically Typed Value Object
4804** KEYWORDS: {protected sqlite3_value} {unprotected sqlite3_value}
4805**
4806** SQLite uses the sqlite3_value object to represent all values
4807** that can be stored in a database table. SQLite uses dynamic typing
4808** for the values it stores. ^Values stored in sqlite3_value objects
4809** can be integers, floating point values, strings, BLOBs, or NULL.
4810**
4811** An sqlite3_value object may be either "protected" or "unprotected".
4812** Some interfaces require a protected sqlite3_value. Other interfaces
4813** will accept either a protected or an unprotected sqlite3_value.
4814** Every interface that accepts sqlite3_value arguments specifies
4815** whether or not it requires a protected sqlite3_value. The
4816** [sqlite3_value_dup()] interface can be used to construct a new
4817** protected sqlite3_value from an unprotected sqlite3_value.
4818**
4819** The terms "protected" and "unprotected" refer to whether or not
4820** a mutex is held. An internal mutex is held for a protected
4821** sqlite3_value object but no mutex is held for an unprotected
4822** sqlite3_value object. If SQLite is compiled to be single-threaded
4823** (with [SQLITE_THREADSAFE=0] and with [sqlite3_threadsafe()] returning 0)
4824** or if SQLite is run in one of reduced mutex modes
4825** [SQLITE_CONFIG_SINGLETHREAD] or [SQLITE_CONFIG_MULTITHREAD]
4826** then there is no distinction between protected and unprotected
4827** sqlite3_value objects and they can be used interchangeably. However,
4828** for maximum code portability it is recommended that applications
4829** still make the distinction between protected and unprotected
4830** sqlite3_value objects even when not strictly required.
4831**
4832** ^The sqlite3_value objects that are passed as parameters into the
4833** implementation of [application-defined SQL functions] are protected.
4834** ^The sqlite3_value objects returned by [sqlite3_vtab_rhs_value()]
4835** are protected.
4836** ^The sqlite3_value object returned by
4837** [sqlite3_column_value()] is unprotected.
4838** Unprotected sqlite3_value objects may only be used as arguments
4839** to [sqlite3_result_value()], [sqlite3_bind_value()], and
4840** [sqlite3_value_dup()].
4841** The [sqlite3_value_blob | sqlite3_value_type()] family of
4842** interfaces require protected sqlite3_value objects.
4843*/
4844typedef struct sqlite3_value sqlite3_value;
4845
4846/*
4847** CAPI3REF: SQL Function Context Object
4848**
4849** The context in which an SQL function executes is stored in an
4850** sqlite3_context object. ^A pointer to an sqlite3_context object
4851** is always the first parameter to [application-defined SQL functions].
4852** The application-defined SQL function implementation will pass this
4853** pointer through into calls to [sqlite3_result_int | sqlite3_result()],
4854** [sqlite3_aggregate_context()], [sqlite3_user_data()],
4855** [sqlite3_context_db_handle()], [sqlite3_get_auxdata()],
4856** and/or [sqlite3_set_auxdata()].
4857*/
4858typedef struct sqlite3_context sqlite3_context;
4859
4860/*
4861** CAPI3REF: Binding Values To Prepared Statements
4862** KEYWORDS: {host parameter} {host parameters} {host parameter name}
4863** KEYWORDS: {SQL parameter} {SQL parameters} {parameter binding}
4864** METHOD: sqlite3_stmt
4865**
4866** ^(In the SQL statement text input to [sqlite3_prepare_v2()] and its variants,
4867** literals may be replaced by a [parameter] that matches one of the following
4868** templates:
4869**
4870** <ul>
4871** <li> ?
4872** <li> ?NNN
4873** <li> :VVV
4874** <li> @VVV
4875** <li> $VVV
4876** </ul>
4877**
4878** In the templates above, NNN represents an integer literal,
4879** and VVV represents an alphanumeric identifier.)^ ^The values of these
4880** parameters (also called "host parameter names" or "SQL parameters")
4881** can be set using the sqlite3_bind_*() routines defined here.
4882**
4883** ^The first argument to the sqlite3_bind_*() routines is always
4884** a pointer to the [sqlite3_stmt] object returned from
4885** [sqlite3_prepare_v2()] or its variants.
4886**
4887** ^The second argument is the index of the SQL parameter to be set.
4888** ^The leftmost SQL parameter has an index of 1. ^When the same named
4889** SQL parameter is used more than once, second and subsequent
4890** occurrences have the same index as the first occurrence.
4891** ^The index for named parameters can be looked up using the
4892** [sqlite3_bind_parameter_index()] API if desired. ^The index
4893** for "?NNN" parameters is the value of NNN.
4894** ^The NNN value must be between 1 and the [sqlite3_limit()]
4895** parameter [SQLITE_LIMIT_VARIABLE_NUMBER] (default value: 32766).
4896**
4897** ^The third argument is the value to bind to the parameter.
4898** ^If the third parameter to sqlite3_bind_text() or sqlite3_bind_text16()
4899** or sqlite3_bind_blob() is a NULL pointer then the fourth parameter
4900** is ignored and the end result is the same as sqlite3_bind_null().
4901** ^If the third parameter to sqlite3_bind_text() is not NULL, then
4902** it should be a pointer to well-formed UTF8 text.
4903** ^If the third parameter to sqlite3_bind_text16() is not NULL, then
4904** it should be a pointer to well-formed UTF16 text.
4905** ^If the third parameter to sqlite3_bind_text64() is not NULL, then
4906** it should be a pointer to a well-formed unicode string that is
4907** either UTF8 if the sixth parameter is SQLITE_UTF8 or SQLITE_UTF8_ZT,
4908** or UTF16 otherwise.
4909**
4910** [[byte-order determination rules]] ^The byte-order of
4911** UTF16 input text is determined by the byte-order mark (BOM, U+FEFF)
4912** found in the first character, which is removed, or in the absence of a BOM
4913** the byte order is the native byte order of the host
4914** machine for sqlite3_bind_text16() or the byte order specified in
4915** the 6th parameter for sqlite3_bind_text64().)^
4916** ^If UTF16 input text contains invalid unicode
4917** characters, then SQLite might change those invalid characters
4918** into the unicode replacement character: U+FFFD.
4919**
4920** ^(In those routines that have a fourth argument, its value is the
4921** number of bytes in the parameter. To be clear: the value is the
4922** number of <u>bytes</u> in the value, not the number of characters.)^
4923** ^If the fourth parameter to sqlite3_bind_text() or sqlite3_bind_text16()
4924** is negative, then the length of the string is
4925** the number of bytes up to the first zero terminator.
4926** If the fourth parameter to sqlite3_bind_blob() is negative, then
4927** the behavior is undefined.
4928** If a non-negative fourth parameter is provided to sqlite3_bind_text()
4929** or sqlite3_bind_text16() or sqlite3_bind_text64() then
4930** that parameter must be the byte offset
4931** where the NUL terminator would occur assuming the string were NUL
4932** terminated. If any NUL characters occur at byte offsets less than
4933** the value of the fourth parameter then the resulting string value will
4934** contain embedded NULs. The result of expressions involving strings
4935** with embedded NULs is undefined.
4936**
4937** ^The fifth argument to the BLOB and string binding interfaces controls
4938** or indicates the lifetime of the object referenced by the third parameter.
4939** These three options exist:
4940** ^ (1) A destructor to dispose of the BLOB or string after SQLite has finished
4941** with it may be passed. ^It is called to dispose of the BLOB or string even
4942** if the call to the bind API fails, except the destructor is not called if
4943** the third parameter is a NULL pointer or the fourth parameter is negative.
4944** ^ (2) The special constant, [SQLITE_STATIC], may be passed to indicate that
4945** the application remains responsible for disposing of the object. ^In this
4946** case, the object and the provided pointer to it must remain valid until
4947** either the prepared statement is finalized or the same SQL parameter is
4948** bound to something else, whichever occurs sooner.
4949** ^ (3) The constant, [SQLITE_TRANSIENT], may be passed to indicate that the
4950** object is to be copied prior to the return from sqlite3_bind_*(). ^The
4951** object and pointer to it must remain valid until then. ^SQLite will then
4952** manage the lifetime of its private copy.
4953**
4954** ^The sixth argument (the E argument)
4955** to sqlite3_bind_text64(S,K,Z,N,D,E) must be one of
4956** [SQLITE_UTF8], [SQLITE_UTF8_ZT], [SQLITE_UTF16], [SQLITE_UTF16BE],
4957** or [SQLITE_UTF16LE] to specify the encoding of the text in the
4958** third parameter, Z. The special value [SQLITE_UTF8_ZT] means that the
4959** string argument is both UTF-8 encoded and is zero-terminated. In other
4960** words, SQLITE_UTF8_ZT means that the Z array is allocated to hold at
4961** least N+1 bytes and that the Z[N] byte is zero. If
4962** the E argument to sqlite3_bind_text64(S,K,Z,N,D,E) is not one of the
4963** allowed values shown above, or if the text encoding is different
4964** from the encoding specified by the sixth parameter, then the behavior
4965** is undefined.
4966**
4967** ^The sqlite3_bind_zeroblob() routine binds a BLOB of length N that
4968** is filled with zeroes. ^A zeroblob uses a fixed amount of memory
4969** (just an integer to hold its size) while it is being processed.
4970** Zeroblobs are intended to serve as placeholders for BLOBs whose
4971** content is later written using
4972** [sqlite3_blob_open | incremental BLOB I/O] routines.
4973** ^A negative value for the zeroblob results in a zero-length BLOB.
4974**
4975** ^The sqlite3_bind_pointer(S,I,P,T,D) routine causes the I-th parameter in
4976** [prepared statement] S to have an SQL value of NULL, but to also be
4977** associated with the pointer P of type T. ^D is either a NULL pointer or
4978** a pointer to a destructor function for P. ^SQLite will invoke the
4979** destructor D with a single argument of P when it is finished using
4980** P, even if the call to sqlite3_bind_pointer() fails. Due to a
4981** historical design quirk, results are undefined if D is
4982** SQLITE_TRANSIENT. The T parameter should be a static string,
4983** preferably a string literal. The sqlite3_bind_pointer() routine is
4984** part of the [pointer passing interface] added for SQLite 3.20.0.
4985**
4986** ^If any of the sqlite3_bind_*() routines are called with a NULL pointer
4987** for the [prepared statement] or with a prepared statement for which
4988** [sqlite3_step()] has been called more recently than [sqlite3_reset()],
4989** then the call will return [SQLITE_MISUSE]. If any sqlite3_bind_()
4990** routine is passed a [prepared statement] that has been finalized, the
4991** result is undefined and probably harmful.
4992**
4993** ^Bindings are not cleared by the [sqlite3_reset()] routine.
4994** ^Unbound parameters are interpreted as NULL.
4995**
4996** ^The sqlite3_bind_* routines return [SQLITE_OK] on success or an
4997** [error code] if anything goes wrong.
4998** ^[SQLITE_TOOBIG] might be returned if the size of a string or BLOB
4999** exceeds limits imposed by [sqlite3_limit]([SQLITE_LIMIT_LENGTH]) or
5000** [SQLITE_MAX_LENGTH].
5001** ^[SQLITE_RANGE] is returned if the parameter
5002** index is out of range. ^[SQLITE_NOMEM] is returned if malloc() fails.
5003**
5004** See also: [sqlite3_bind_parameter_count()],
5005** [sqlite3_bind_parameter_name()], and [sqlite3_bind_parameter_index()].
5006*/
5007SQLITE_API int sqlite3_bind_blob(sqlite3_stmt*, int, const void*, int n, void(*)(void*));
5008SQLITE_API int sqlite3_bind_blob64(sqlite3_stmt*, int, const void*, sqlite3_uint64,
5009 void(*)(void*));
5010SQLITE_API int sqlite3_bind_double(sqlite3_stmt*, int, double);
5011SQLITE_API int sqlite3_bind_int(sqlite3_stmt*, int, int);
5012SQLITE_API int sqlite3_bind_int64(sqlite3_stmt*, int, sqlite3_int64);
5013SQLITE_API int sqlite3_bind_null(sqlite3_stmt*, int);
5014SQLITE_API int sqlite3_bind_text(sqlite3_stmt*,int,const char*,int,void(*)(void*));
5015SQLITE_API int sqlite3_bind_text16(sqlite3_stmt*, int, const void*, int, void(*)(void*));
5016SQLITE_API int sqlite3_bind_text64(sqlite3_stmt*, int, const char*, sqlite3_uint64,
5017 void(*)(void*), unsigned char encoding);
5018SQLITE_API int sqlite3_bind_value(sqlite3_stmt*, int, const sqlite3_value*);
5019SQLITE_API int sqlite3_bind_pointer(sqlite3_stmt*, int, void*, const char*,void(*)(void*));
5020SQLITE_API int sqlite3_bind_zeroblob(sqlite3_stmt*, int, int n);
5021SQLITE_API int sqlite3_bind_zeroblob64(sqlite3_stmt*, int, sqlite3_uint64);
5022
5023/*
5024** CAPI3REF: Number Of SQL Parameters
5025** METHOD: sqlite3_stmt
5026**
5027** ^This routine can be used to find the number of [SQL parameters]
5028** in a [prepared statement]. SQL parameters are tokens of the
5029** form "?", "?NNN", ":AAA", "$AAA", or "@AAA" that serve as
5030** placeholders for values that are [sqlite3_bind_blob | bound]
5031** to the parameters at a later time.
5032**
5033** ^(This routine actually returns the index of the largest (rightmost)
5034** parameter. For all forms except ?NNN, this will correspond to the
5035** number of unique parameters. If parameters of the ?NNN form are used,
5036** there may be gaps in the list.)^
5037**
5038** See also: [sqlite3_bind_blob|sqlite3_bind()],
5039** [sqlite3_bind_parameter_name()], and
5040** [sqlite3_bind_parameter_index()].
5041*/
5042SQLITE_API int sqlite3_bind_parameter_count(sqlite3_stmt*);
5043
5044/*
5045** CAPI3REF: Name Of A Host Parameter
5046** METHOD: sqlite3_stmt
5047**
5048** ^The sqlite3_bind_parameter_name(P,N) interface returns
5049** the name of the N-th [SQL parameter] in the [prepared statement] P.
5050** ^(SQL parameters of the form "?NNN" or ":AAA" or "@AAA" or "$AAA"
5051** have a name which is the string "?NNN" or ":AAA" or "@AAA" or "$AAA"
5052** respectively.
5053** In other words, the initial ":" or "$" or "@" or "?"
5054** is included as part of the name.)^
5055** ^Parameters of the form "?" without a following integer have no name
5056** and are referred to as "nameless" or "anonymous parameters".
5057**
5058** ^The first host parameter has an index of 1, not 0.
5059**
5060** ^If the value N is out of range or if the N-th parameter is
5061** nameless, then NULL is returned. ^The returned string is
5062** always in UTF-8 encoding even if the named parameter was
5063** originally specified as UTF-16 in [sqlite3_prepare16()],
5064** [sqlite3_prepare16_v2()], or [sqlite3_prepare16_v3()].
5065**
5066** See also: [sqlite3_bind_blob|sqlite3_bind()],
5067** [sqlite3_bind_parameter_count()], and
5068** [sqlite3_bind_parameter_index()].
5069*/
5070SQLITE_API const char *sqlite3_bind_parameter_name(sqlite3_stmt*, int);
5071
5072/*
5073** CAPI3REF: Index Of A Parameter With A Given Name
5074** METHOD: sqlite3_stmt
5075**
5076** ^Return the index of an SQL parameter given its name. ^The
5077** index value returned is suitable for use as the second
5078** parameter to [sqlite3_bind_blob|sqlite3_bind()]. ^A zero
5079** is returned if no matching parameter is found. ^The parameter
5080** name must be given in UTF-8 even if the original statement
5081** was prepared from UTF-16 text using [sqlite3_prepare16_v2()] or
5082** [sqlite3_prepare16_v3()].
5083**
5084** See also: [sqlite3_bind_blob|sqlite3_bind()],
5085** [sqlite3_bind_parameter_count()], and
5086** [sqlite3_bind_parameter_name()].
5087*/
5088SQLITE_API int sqlite3_bind_parameter_index(sqlite3_stmt*, const char *zName);
5089
5090/*
5091** CAPI3REF: Reset All Bindings On A Prepared Statement
5092** METHOD: sqlite3_stmt
5093**
5094** ^Contrary to the intuition of many, [sqlite3_reset()] does not reset
5095** the [sqlite3_bind_blob | bindings] on a [prepared statement].
5096** ^Use this routine to reset all host parameters to NULL.
5097*/
5098SQLITE_API int sqlite3_clear_bindings(sqlite3_stmt*);
5099
5100/*
5101** CAPI3REF: Number Of Columns In A Result Set
5102** METHOD: sqlite3_stmt
5103**
5104** ^Return the number of columns in the result set returned by the
5105** [prepared statement]. ^If this routine returns 0, that means the
5106** [prepared statement] returns no data (for example an [UPDATE]).
5107** ^However, just because this routine returns a positive number does not
5108** mean that one or more rows of data will be returned. ^A SELECT statement
5109** will always have a positive sqlite3_column_count() but depending on the
5110** WHERE clause constraints and the table content, it might return no rows.
5111**
5112** See also: [sqlite3_data_count()]
5113*/
5114SQLITE_API int sqlite3_column_count(sqlite3_stmt *pStmt);
5115
5116/*
5117** CAPI3REF: Column Names In A Result Set
5118** METHOD: sqlite3_stmt
5119**
5120** ^These routines return the name assigned to a particular column
5121** in the result set of a [SELECT] statement. ^The sqlite3_column_name()
5122** interface returns a pointer to a zero-terminated UTF-8 string
5123** and sqlite3_column_name16() returns a pointer to a zero-terminated
5124** UTF-16 string. ^The first parameter is the [prepared statement]
5125** that implements the [SELECT] statement. ^The second parameter is the
5126** column number. ^The leftmost column is number 0.
5127**
5128** ^The returned string pointer is valid until either the [prepared statement]
5129** is destroyed by [sqlite3_finalize()] or until the statement is automatically
5130** reprepared by the first call to [sqlite3_step()] for a particular run
5131** or until the next call to
5132** sqlite3_column_name() or sqlite3_column_name16() on the same column.
5133**
5134** ^If sqlite3_malloc() fails during the processing of either routine
5135** (for example during a conversion from UTF-8 to UTF-16) then a
5136** NULL pointer is returned.
5137**
5138** ^The name of a result column is the value of the "AS" clause for
5139** that column, if there is an AS clause. If there is no AS clause
5140** then the name of the column is unspecified and may change from
5141** one release of SQLite to the next.
5142*/
5143SQLITE_API const char *sqlite3_column_name(sqlite3_stmt*, int N);
5144SQLITE_API const void *sqlite3_column_name16(sqlite3_stmt*, int N);
5145
5146/*
5147** CAPI3REF: Source Of Data In A Query Result
5148** METHOD: sqlite3_stmt
5149**
5150** ^These routines provide a means to determine the database, table, and
5151** table column that is the origin of a particular result column in a
5152** [SELECT] statement.
5153** ^The name of the database or table or column can be returned as
5154** either a UTF-8 or UTF-16 string. ^The _database_ routines return
5155** the database name, the _table_ routines return the table name, and
5156** the origin_ routines return the column name.
5157** ^The returned string is valid until the [prepared statement] is destroyed
5158** using [sqlite3_finalize()] or until the statement is automatically
5159** reprepared by the first call to [sqlite3_step()] for a particular run
5160** or until the same information is requested
5161** again in a different encoding.
5162**
5163** ^The names returned are the original un-aliased names of the
5164** database, table, and column.
5165**
5166** ^The first argument to these interfaces is a [prepared statement].
5167** ^These functions return information about the Nth result column returned by
5168** the statement, where N is the second function argument.
5169** ^The left-most column is column 0 for these routines.
5170**
5171** ^If the Nth column returned by the statement is an expression or
5172** subquery and is not a column value, then all of these functions return
5173** NULL. ^These routines might also return NULL if a memory allocation error
5174** occurs. ^Otherwise, they return the name of the attached database, table,
5175** or column that query result column was extracted from.
5176**
5177** ^As with all other SQLite APIs, those whose names end with "16" return
5178** UTF-16 encoded strings and the other functions return UTF-8.
5179**
5180** ^These APIs are only available if the library was compiled with the
5181** [SQLITE_ENABLE_COLUMN_METADATA] C-preprocessor symbol.
5182**
5183** If two or more threads call one or more
5184** [sqlite3_column_database_name | column metadata interfaces]
5185** for the same [prepared statement] and result column
5186** at the same time then the results are undefined.
5187*/
5188SQLITE_API const char *sqlite3_column_database_name(sqlite3_stmt*,int);
5189SQLITE_API const void *sqlite3_column_database_name16(sqlite3_stmt*,int);
5190SQLITE_API const char *sqlite3_column_table_name(sqlite3_stmt*,int);
5191SQLITE_API const void *sqlite3_column_table_name16(sqlite3_stmt*,int);
5192SQLITE_API const char *sqlite3_column_origin_name(sqlite3_stmt*,int);
5193SQLITE_API const void *sqlite3_column_origin_name16(sqlite3_stmt*,int);
5194
5195/*
5196** CAPI3REF: Declared Datatype Of A Query Result
5197** METHOD: sqlite3_stmt
5198**
5199** ^(The first parameter is a [prepared statement].
5200** If this statement is a [SELECT] statement and the Nth column of the
5201** returned result set of that [SELECT] is a table column (not an
5202** expression or subquery) then the declared type of the table
5203** column is returned.)^ ^If the Nth column of the result set is an
5204** expression or subquery, then a NULL pointer is returned.
5205** ^The returned string is always UTF-8 encoded.
5206**
5207** ^(For example, given the database schema:
5208**
5209** CREATE TABLE t1(c1 VARIANT);
5210**
5211** and the following statement to be compiled:
5212**
5213** SELECT c1 + 1, c1 FROM t1;
5214**
5215** this routine would return the string "VARIANT" for the second result
5216** column (i==1), and a NULL pointer for the first result column (i==0).)^
5217**
5218** ^SQLite uses dynamic run-time typing. ^So just because a column
5219** is declared to contain a particular type does not mean that the
5220** data stored in that column is of the declared type. SQLite is
5221** strongly typed, but the typing is dynamic not static. ^Type
5222** is associated with individual values, not with the containers
5223** used to hold those values.
5224*/
5225SQLITE_API const char *sqlite3_column_decltype(sqlite3_stmt*,int);
5226SQLITE_API const void *sqlite3_column_decltype16(sqlite3_stmt*,int);
5227
5228/*
5229** CAPI3REF: Evaluate An SQL Statement
5230** METHOD: sqlite3_stmt
5231**
5232** After a [prepared statement] has been prepared using any of
5233** [sqlite3_prepare_v2()], [sqlite3_prepare_v3()], [sqlite3_prepare16_v2()],
5234** or [sqlite3_prepare16_v3()] or one of the legacy
5235** interfaces [sqlite3_prepare()] or [sqlite3_prepare16()], this function
5236** must be called one or more times to evaluate the statement.
5237**
5238** The details of the behavior of the sqlite3_step() interface depend
5239** on whether the statement was prepared using the newer "vX" interfaces
5240** [sqlite3_prepare_v3()], [sqlite3_prepare_v2()], [sqlite3_prepare16_v3()],
5241** [sqlite3_prepare16_v2()] or the older legacy
5242** interfaces [sqlite3_prepare()] and [sqlite3_prepare16()]. The use of the
5243** new "vX" interface is recommended for new applications but the legacy
5244** interface will continue to be supported.
5245**
5246** ^In the legacy interface, the return value will be either [SQLITE_BUSY],
5247** [SQLITE_DONE], [SQLITE_ROW], [SQLITE_ERROR], or [SQLITE_MISUSE].
5248** ^With the "v2" interface, any of the other [result codes] or
5249** [extended result codes] might be returned as well.
5250**
5251** ^[SQLITE_BUSY] means that the database engine was unable to acquire the
5252** database locks it needs to do its job. ^If the statement is a [COMMIT]
5253** or occurs outside of an explicit transaction, then you can retry the
5254** statement. If the statement is not a [COMMIT] and occurs within an
5255** explicit transaction then you should rollback the transaction before
5256** continuing.
5257**
5258** ^[SQLITE_DONE] means that the statement has finished executing
5259** successfully. sqlite3_step() should not be called again on this virtual
5260** machine without first calling [sqlite3_reset()] to reset the virtual
5261** machine back to its initial state.
5262**
5263** ^If the SQL statement being executed returns any data, then [SQLITE_ROW]
5264** is returned each time a new row of data is ready for processing by the
5265** caller. The values may be accessed using the [column access functions].
5266** sqlite3_step() is called again to retrieve the next row of data.
5267**
5268** ^[SQLITE_ERROR] means that a run-time error (such as a constraint
5269** violation) has occurred. sqlite3_step() should not be called again on
5270** the VM. More information may be found by calling [sqlite3_errmsg()].
5271** ^With the legacy interface, a more specific error code (for example,
5272** [SQLITE_INTERRUPT], [SQLITE_SCHEMA], [SQLITE_CORRUPT], and so forth)
5273** can be obtained by calling [sqlite3_reset()] on the
5274** [prepared statement]. ^In the "v2" interface,
5275** the more specific error code is returned directly by sqlite3_step().
5276**
5277** [SQLITE_MISUSE] means that the this routine was called inappropriately.
5278** Perhaps it was called on a [prepared statement] that has
5279** already been [sqlite3_finalize | finalized] or on one that had
5280** previously returned [SQLITE_ERROR] or [SQLITE_DONE]. Or it could
5281** be the case that the same database connection is being used by two or
5282** more threads at the same moment in time.
5283**
5284** For all versions of SQLite up to and including 3.6.23.1, a call to
5285** [sqlite3_reset()] was required after sqlite3_step() returned anything
5286** other than [SQLITE_ROW] before any subsequent invocation of
5287** sqlite3_step(). Failure to reset the prepared statement using
5288** [sqlite3_reset()] would result in an [SQLITE_MISUSE] return from
5289** sqlite3_step(). But after [version 3.6.23.1] ([dateof:3.6.23.1]),
5290** sqlite3_step() began
5291** calling [sqlite3_reset()] automatically in this circumstance rather
5292** than returning [SQLITE_MISUSE]. This is not considered a compatibility
5293** break because any application that ever receives an SQLITE_MISUSE error
5294** is broken by definition. The [SQLITE_OMIT_AUTORESET] compile-time option
5295** can be used to restore the legacy behavior.
5296**
5297** <b>Goofy Interface Alert:</b> In the legacy interface, the sqlite3_step()
5298** API always returns a generic error code, [SQLITE_ERROR], following any
5299** error other than [SQLITE_BUSY] and [SQLITE_MISUSE]. You must call
5300** [sqlite3_reset()] or [sqlite3_finalize()] in order to find one of the
5301** specific [error codes] that better describes the error.
5302** We admit that this is a goofy design. The problem has been fixed
5303** with the "v2" interface. If you prepare all of your SQL statements
5304** using [sqlite3_prepare_v3()] or [sqlite3_prepare_v2()]
5305** or [sqlite3_prepare16_v2()] or [sqlite3_prepare16_v3()] instead
5306** of the legacy [sqlite3_prepare()] and [sqlite3_prepare16()] interfaces,
5307** then the more specific [error codes] are returned directly
5308** by sqlite3_step(). The use of the "vX" interfaces is recommended.
5309*/
5310SQLITE_API int sqlite3_step(sqlite3_stmt*);
5311
5312/*
5313** CAPI3REF: Number of columns in a result set
5314** METHOD: sqlite3_stmt
5315**
5316** ^The sqlite3_data_count(P) interface returns the number of columns in the
5317** current row of the result set of [prepared statement] P.
5318** ^If prepared statement P does not have results ready to return
5319** (via calls to the [sqlite3_column_int | sqlite3_column()] family of
5320** interfaces) then sqlite3_data_count(P) returns 0.
5321** ^The sqlite3_data_count(P) routine also returns 0 if P is a NULL pointer.
5322** ^The sqlite3_data_count(P) routine returns 0 if the previous call to
5323** [sqlite3_step](P) returned [SQLITE_DONE]. ^The sqlite3_data_count(P)
5324** will return non-zero if previous call to [sqlite3_step](P) returned
5325** [SQLITE_ROW], except in the case of the [PRAGMA incremental_vacuum]
5326** where it always returns zero since each step of that multi-step
5327** pragma returns 0 columns of data.
5328**
5329** See also: [sqlite3_column_count()]
5330*/
5331SQLITE_API int sqlite3_data_count(sqlite3_stmt *pStmt);
5332
5333/*
5334** CAPI3REF: Fundamental Datatypes
5335** KEYWORDS: SQLITE_TEXT
5336**
5337** ^(Every value in SQLite has one of five fundamental datatypes:
5338**
5339** <ul>
5340** <li> 64-bit signed integer
5341** <li> 64-bit IEEE floating point number
5342** <li> string
5343** <li> BLOB
5344** <li> NULL
5345** </ul>)^
5346**
5347** These constants are codes for each of those types.
5348**
5349** Note that the SQLITE_TEXT constant was also used in SQLite version 2
5350** for a completely different meaning. Software that links against both
5351** SQLite version 2 and SQLite version 3 should use SQLITE3_TEXT, not
5352** SQLITE_TEXT.
5353*/
5354#define SQLITE_INTEGER 1
5355#define SQLITE_FLOAT 2
5356#define SQLITE_BLOB 4
5357#define SQLITE_NULL 5
5358#ifdef SQLITE_TEXT
5359# undef SQLITE_TEXT
5360#else
5361# define SQLITE_TEXT 3
5362#endif
5363#define SQLITE3_TEXT 3
5364
5365/*
5366** CAPI3REF: Result Values From A Query
5367** KEYWORDS: {column access functions}
5368** METHOD: sqlite3_stmt
5369**
5370** <b>Summary:</b>
5371** <blockquote><table border=0 cellpadding=0 cellspacing=0>
5372** <tr><td><b>sqlite3_column_blob</b><td>→<td>BLOB result
5373** <tr><td><b>sqlite3_column_double</b><td>→<td>REAL result
5374** <tr><td><b>sqlite3_column_int</b><td>→<td>32-bit INTEGER result
5375** <tr><td><b>sqlite3_column_int64</b><td>→<td>64-bit INTEGER result
5376** <tr><td><b>sqlite3_column_text</b><td>→<td>UTF-8 TEXT result
5377** <tr><td><b>sqlite3_column_text16</b><td>→<td>UTF-16 TEXT result
5378** <tr><td><b>sqlite3_column_value</b><td>→<td>The result as an
5379** [sqlite3_value|unprotected sqlite3_value] object.
5380** <tr><td> <td> <td>
5381** <tr><td><b>sqlite3_column_bytes</b><td>→<td>Size of a BLOB
5382** or a UTF-8 TEXT result in bytes
5383** <tr><td><b>sqlite3_column_bytes16 </b>
5384** <td>→ <td>Size of UTF-16
5385** TEXT in bytes
5386** <tr><td><b>sqlite3_column_type</b><td>→<td>Default
5387** datatype of the result
5388** </table></blockquote>
5389**
5390** <b>Details:</b>
5391**
5392** ^These routines return information about a single column of the current
5393** result row of a query. ^In every case the first argument is a pointer
5394** to the [prepared statement] that is being evaluated (the [sqlite3_stmt*]
5395** that was returned from [sqlite3_prepare_v2()] or one of its variants)
5396** and the second argument is the index of the column for which information
5397** should be returned. ^The leftmost column of the result set has the index 0.
5398** ^The number of columns in the result can be determined using
5399** [sqlite3_column_count()].
5400**
5401** If the SQL statement does not currently point to a valid row, or if the
5402** column index is out of range, the result is undefined.
5403** These routines may only be called when the most recent call to
5404** [sqlite3_step()] has returned [SQLITE_ROW] and neither
5405** [sqlite3_reset()] nor [sqlite3_finalize()] have been called subsequently.
5406** If any of these routines are called after [sqlite3_reset()] or
5407** [sqlite3_finalize()] or after [sqlite3_step()] has returned
5408** something other than [SQLITE_ROW], the results are undefined.
5409** If [sqlite3_step()] or [sqlite3_reset()] or [sqlite3_finalize()]
5410** are called from a different thread while any of these routines
5411** are pending, then the results are undefined.
5412**
5413** The first six interfaces (_blob, _double, _int, _int64, _text, and _text16)
5414** each return the value of a result column in a specific data format. If
5415** the result column is not initially in the requested format (for example,
5416** if the query returns an integer but the sqlite3_column_text() interface
5417** is used to extract the value) then an automatic type conversion is performed.
5418**
5419** ^The sqlite3_column_type() routine returns the
5420** [SQLITE_INTEGER | datatype code] for the initial data type
5421** of the result column. ^The returned value is one of [SQLITE_INTEGER],
5422** [SQLITE_FLOAT], [SQLITE_TEXT], [SQLITE_BLOB], or [SQLITE_NULL].
5423** The return value of sqlite3_column_type() can be used to decide which
5424** of the first six interface should be used to extract the column value.
5425** The value returned by sqlite3_column_type() is only meaningful if no
5426** automatic type conversions have occurred for the value in question.
5427** After a type conversion, the result of calling sqlite3_column_type()
5428** is undefined, though harmless. Future
5429** versions of SQLite may change the behavior of sqlite3_column_type()
5430** following a type conversion.
5431**
5432** If the result is a BLOB or a TEXT string, then the sqlite3_column_bytes()
5433** or sqlite3_column_bytes16() interfaces can be used to determine the size
5434** of that BLOB or string.
5435**
5436** ^If the result is a BLOB or UTF-8 string then the sqlite3_column_bytes()
5437** routine returns the number of bytes in that BLOB or string.
5438** ^If the result is a UTF-16 string, then sqlite3_column_bytes() converts
5439** the string to UTF-8 and then returns the number of bytes.
5440** ^If the result is a numeric value then sqlite3_column_bytes() uses
5441** [sqlite3_snprintf()] to convert that value to a UTF-8 string and returns
5442** the number of bytes in that string.
5443** ^If the result is NULL, then sqlite3_column_bytes() returns zero.
5444**
5445** ^If the result is a BLOB or UTF-16 string then the sqlite3_column_bytes16()
5446** routine returns the number of bytes in that BLOB or string.
5447** ^If the result is a UTF-8 string, then sqlite3_column_bytes16() converts
5448** the string to UTF-16 and then returns the number of bytes.
5449** ^If the result is a numeric value then sqlite3_column_bytes16() uses
5450** [sqlite3_snprintf()] to convert that value to a UTF-16 string and returns
5451** the number of bytes in that string.
5452** ^If the result is NULL, then sqlite3_column_bytes16() returns zero.
5453**
5454** ^The values returned by [sqlite3_column_bytes()] and
5455** [sqlite3_column_bytes16()] do not include the zero terminators at the end
5456** of the string. ^For clarity: the values returned by
5457** [sqlite3_column_bytes()] and [sqlite3_column_bytes16()] are the number of
5458** bytes in the string, not the number of characters.
5459**
5460** ^Strings returned by sqlite3_column_text() and sqlite3_column_text16(),
5461** even empty strings, are always zero-terminated. ^The return
5462** value from sqlite3_column_blob() for a zero-length BLOB is a NULL pointer.
5463**
5464** ^Strings returned by sqlite3_column_text16() always have the endianness
5465** which is native to the platform, regardless of the text encoding set
5466** for the database.
5467**
5468** <b>Warning:</b> ^The object returned by [sqlite3_column_value()] is an
5469** [unprotected sqlite3_value] object. In a multithreaded environment,
5470** an unprotected sqlite3_value object may only be used safely with
5471** [sqlite3_bind_value()] and [sqlite3_result_value()].
5472** If the [unprotected sqlite3_value] object returned by
5473** [sqlite3_column_value()] is used in any other way, including calls
5474** to routines like [sqlite3_value_int()], [sqlite3_value_text()],
5475** or [sqlite3_value_bytes()], the behavior is not threadsafe.
5476** Hence, the sqlite3_column_value() interface
5477** is normally only useful within the implementation of
5478** [application-defined SQL functions] or [virtual tables], not within
5479** top-level application code.
5480**
5481** These routines may attempt to convert the datatype of the result.
5482** ^For example, if the internal representation is FLOAT and a text result
5483** is requested, [sqlite3_snprintf()] is used internally to perform the
5484** conversion automatically. ^(The following table details the conversions
5485** that are applied:
5486**
5487** <blockquote>
5488** <table border="1">
5489** <tr><th> Internal<br>Type <th> Requested<br>Type <th> Conversion
5490**
5491** <tr><td> NULL <td> INTEGER <td> Result is 0
5492** <tr><td> NULL <td> FLOAT <td> Result is 0.0
5493** <tr><td> NULL <td> TEXT <td> Result is a NULL pointer
5494** <tr><td> NULL <td> BLOB <td> Result is a NULL pointer
5495** <tr><td> INTEGER <td> FLOAT <td> Convert from integer to float
5496** <tr><td> INTEGER <td> TEXT <td> ASCII rendering of the integer
5497** <tr><td> INTEGER <td> BLOB <td> Same as INTEGER->TEXT
5498** <tr><td> FLOAT <td> INTEGER <td> [CAST] to INTEGER
5499** <tr><td> FLOAT <td> TEXT <td> ASCII rendering of the float
5500** <tr><td> FLOAT <td> BLOB <td> [CAST] to BLOB
5501** <tr><td> TEXT <td> INTEGER <td> [CAST] to INTEGER
5502** <tr><td> TEXT <td> FLOAT <td> [CAST] to REAL
5503** <tr><td> TEXT <td> BLOB <td> No change
5504** <tr><td> BLOB <td> INTEGER <td> [CAST] to INTEGER
5505** <tr><td> BLOB <td> FLOAT <td> [CAST] to REAL
5506** <tr><td> BLOB <td> TEXT <td> [CAST] to TEXT, ensure zero terminator
5507** </table>
5508** </blockquote>)^
5509**
5510** Note that when type conversions occur, pointers returned by prior
5511** calls to sqlite3_column_blob(), sqlite3_column_text(), and/or
5512** sqlite3_column_text16() may be invalidated.
5513** Type conversions and pointer invalidations might occur
5514** in the following cases:
5515**
5516** <ul>
5517** <li> The initial content is a BLOB and sqlite3_column_text() or
5518** sqlite3_column_text16() is called. A zero-terminator might
5519** need to be added to the string.</li>
5520** <li> The initial content is UTF-8 text and sqlite3_column_bytes16() or
5521** sqlite3_column_text16() is called. The content must be converted
5522** to UTF-16.</li>
5523** <li> The initial content is UTF-16 text and sqlite3_column_bytes() or
5524** sqlite3_column_text() is called. The content must be converted
5525** to UTF-8.</li>
5526** </ul>
5527**
5528** ^Conversions between UTF-16be and UTF-16le are always done in place and do
5529** not invalidate a prior pointer, though of course the content of the buffer
5530** that the prior pointer references will have been modified. Other kinds
5531** of conversion are done in place when it is possible, but sometimes they
5532** are not possible and in those cases prior pointers are invalidated.
5533**
5534** The safest policy is to invoke these routines
5535** in one of the following ways:
5536**
5537** <ul>
5538** <li>sqlite3_column_text() followed by sqlite3_column_bytes()</li>
5539** <li>sqlite3_column_blob() followed by sqlite3_column_bytes()</li>
5540** <li>sqlite3_column_text16() followed by sqlite3_column_bytes16()</li>
5541** </ul>
5542**
5543** In other words, you should call sqlite3_column_text(),
5544** sqlite3_column_blob(), or sqlite3_column_text16() first to force the result
5545** into the desired format, then invoke sqlite3_column_bytes() or
5546** sqlite3_column_bytes16() to find the size of the result. Do not mix calls
5547** to sqlite3_column_text() or sqlite3_column_blob() with calls to
5548** sqlite3_column_bytes16(), and do not mix calls to sqlite3_column_text16()
5549** with calls to sqlite3_column_bytes().
5550**
5551** ^The pointers returned are valid until a type conversion occurs as
5552** described above, or until [sqlite3_step()] or [sqlite3_reset()] or
5553** [sqlite3_finalize()] is called. ^The memory space used to hold strings
5554** and BLOBs is freed automatically. Do not pass the pointers returned
5555** from [sqlite3_column_blob()], [sqlite3_column_text()], etc. into
5556** [sqlite3_free()].
5557**
5558** As long as the input parameters are correct, these routines will only
5559** fail if an out-of-memory error occurs during a format conversion.
5560** Only the following subset of interfaces are subject to out-of-memory
5561** errors:
5562**
5563** <ul>
5564** <li> sqlite3_column_blob()
5565** <li> sqlite3_column_text()
5566** <li> sqlite3_column_text16()
5567** <li> sqlite3_column_bytes()
5568** <li> sqlite3_column_bytes16()
5569** </ul>
5570**
5571** If an out-of-memory error occurs, then the return value from these
5572** routines is the same as if the column had contained an SQL NULL value.
5573** Valid SQL NULL returns can be distinguished from out-of-memory errors
5574** by invoking the [sqlite3_errcode()] immediately after the suspect
5575** return value is obtained and before any
5576** other SQLite interface is called on the same [database connection].
5577*/
5578SQLITE_API const void *sqlite3_column_blob(sqlite3_stmt*, int iCol);
5579SQLITE_API double sqlite3_column_double(sqlite3_stmt*, int iCol);
5580SQLITE_API int sqlite3_column_int(sqlite3_stmt*, int iCol);
5581SQLITE_API sqlite3_int64 sqlite3_column_int64(sqlite3_stmt*, int iCol);
5582SQLITE_API const unsigned char *sqlite3_column_text(sqlite3_stmt*, int iCol);
5583SQLITE_API const void *sqlite3_column_text16(sqlite3_stmt*, int iCol);
5584SQLITE_API sqlite3_value *sqlite3_column_value(sqlite3_stmt*, int iCol);
5585SQLITE_API int sqlite3_column_bytes(sqlite3_stmt*, int iCol);
5586SQLITE_API int sqlite3_column_bytes16(sqlite3_stmt*, int iCol);
5587SQLITE_API int sqlite3_column_type(sqlite3_stmt*, int iCol);
5588
5589/*
5590** CAPI3REF: Destroy A Prepared Statement Object
5591** DESTRUCTOR: sqlite3_stmt
5592**
5593** ^The sqlite3_finalize() function is called to delete a [prepared statement].
5594** ^If the most recent evaluation of the statement encountered no errors
5595** or if the statement has never been evaluated, then sqlite3_finalize() returns
5596** SQLITE_OK. ^If the most recent evaluation of statement S failed, then
5597** sqlite3_finalize(S) returns the appropriate [error code] or
5598** [extended error code].
5599**
5600** ^The sqlite3_finalize(S) routine can be called at any point during
5601** the life cycle of [prepared statement] S:
5602** before statement S is ever evaluated, after
5603** one or more calls to [sqlite3_reset()], or after any call
5604** to [sqlite3_step()] regardless of whether or not the statement has
5605** completed execution.
5606**
5607** ^Invoking sqlite3_finalize() on a NULL pointer is a harmless no-op.
5608**
5609** The application must finalize every [prepared statement] in order to avoid
5610** resource leaks. It is a grievous error for the application to try to use
5611** a prepared statement after it has been finalized. Any use of a prepared
5612** statement after it has been finalized can result in undefined and
5613** undesirable behavior such as segfaults and heap corruption.
5614*/
5615SQLITE_API int sqlite3_finalize(sqlite3_stmt *pStmt);
5616
5617/*
5618** CAPI3REF: Reset A Prepared Statement Object
5619** METHOD: sqlite3_stmt
5620**
5621** The sqlite3_reset() function is called to reset a [prepared statement]
5622** object back to its initial state, ready to be re-executed.
5623** ^Any SQL statement variables that had values bound to them using
5624** the [sqlite3_bind_blob | sqlite3_bind_*() API] retain their values.
5625** Use [sqlite3_clear_bindings()] to reset the bindings.
5626**
5627** ^The [sqlite3_reset(S)] interface resets the [prepared statement] S
5628** back to the beginning of its program.
5629**
5630** ^The return code from [sqlite3_reset(S)] indicates whether or not
5631** the previous evaluation of prepared statement S completed successfully.
5632** ^If [sqlite3_step(S)] has never before been called on S or if
5633** [sqlite3_step(S)] has not been called since the previous call
5634** to [sqlite3_reset(S)], then [sqlite3_reset(S)] will return
5635** [SQLITE_OK].
5636**
5637** ^If the most recent call to [sqlite3_step(S)] for the
5638** [prepared statement] S indicated an error, then
5639** [sqlite3_reset(S)] returns an appropriate [error code].
5640** ^The [sqlite3_reset(S)] interface might also return an [error code]
5641** if there were no prior errors but the process of resetting
5642** the prepared statement caused a new error. ^For example, if an
5643** [INSERT] statement with a [RETURNING] clause is only stepped one time,
5644** that one call to [sqlite3_step(S)] might return SQLITE_ROW but
5645** the overall statement might still fail and the [sqlite3_reset(S)] call
5646** might return SQLITE_BUSY if locking constraints prevent the
5647** database change from committing. Therefore, it is important that
5648** applications check the return code from [sqlite3_reset(S)] even if
5649** no prior call to [sqlite3_step(S)] indicated a problem.
5650**
5651** ^The [sqlite3_reset(S)] interface does not change the values
5652** of any [sqlite3_bind_blob|bindings] on the [prepared statement] S.
5653*/
5654SQLITE_API int sqlite3_reset(sqlite3_stmt *pStmt);
5655
5656
5657/*
5658** CAPI3REF: Create Or Redefine SQL Functions
5659** KEYWORDS: {function creation routines}
5660** METHOD: sqlite3
5661**
5662** ^These functions (collectively known as "function creation routines")
5663** are used to add SQL functions or aggregates or to redefine the behavior
5664** of existing SQL functions or aggregates. The only differences between
5665** the three "sqlite3_create_function*" routines are the text encoding
5666** expected for the second parameter (the name of the function being
5667** created) and the presence or absence of a destructor callback for
5668** the application data pointer. Function sqlite3_create_window_function()
5669** is similar, but allows the user to supply the extra callback functions
5670** needed by [aggregate window functions].
5671**
5672** ^The first parameter is the [database connection] to which the SQL
5673** function is to be added. ^If an application uses more than one database
5674** connection then application-defined SQL functions must be added
5675** to each database connection separately.
5676**
5677** ^The second parameter is the name of the SQL function to be created or
5678** redefined. ^The length of the name is limited to 255 bytes in a UTF-8
5679** representation, exclusive of the zero-terminator. ^Note that the name
5680** length limit is in UTF-8 bytes, not characters nor UTF-16 bytes.
5681** ^Any attempt to create a function with a longer name
5682** will result in [SQLITE_MISUSE] being returned.
5683**
5684** ^The third parameter (nArg)
5685** is the number of arguments that the SQL function or
5686** aggregate takes. ^If this parameter is -1, then the SQL function or
5687** aggregate may take any number of arguments between 0 and the limit
5688** set by [sqlite3_limit]([SQLITE_LIMIT_FUNCTION_ARG]). If the third
5689** parameter is less than -1 or greater than 127 then the behavior is
5690** undefined.
5691**
5692** ^The fourth parameter, eTextRep, specifies what
5693** [SQLITE_UTF8 | text encoding] this SQL function prefers for
5694** its parameters. The application should set this parameter to
5695** [SQLITE_UTF16LE] if the function implementation invokes
5696** [sqlite3_value_text16le()] on an input, or [SQLITE_UTF16BE] if the
5697** implementation invokes [sqlite3_value_text16be()] on an input, or
5698** [SQLITE_UTF16] if [sqlite3_value_text16()] is used, or [SQLITE_UTF8]
5699** otherwise. ^The same SQL function may be registered multiple times using
5700** different preferred text encodings, with different implementations for
5701** each encoding.
5702** ^When multiple implementations of the same function are available, SQLite
5703** will pick the one that involves the least amount of data conversion.
5704**
5705** ^The fourth parameter may optionally be ORed with [SQLITE_DETERMINISTIC]
5706** to signal that the function will always return the same result given
5707** the same inputs within a single SQL statement. Most SQL functions are
5708** deterministic. The built-in [random()] SQL function is an example of a
5709** function that is not deterministic. The SQLite query planner is able to
5710** perform additional optimizations on deterministic functions, so use
5711** of the [SQLITE_DETERMINISTIC] flag is recommended where possible.
5712**
5713** ^The fourth parameter may also optionally include the [SQLITE_DIRECTONLY]
5714** flag, which if present prevents the function from being invoked from
5715** within VIEWs, TRIGGERs, CHECK constraints, generated column expressions,
5716** index expressions, or the WHERE clause of partial indexes.
5717**
5718** For best security, the [SQLITE_DIRECTONLY] flag is recommended for
5719** all application-defined SQL functions that do not need to be
5720** used inside of triggers, views, CHECK constraints, or other elements of
5721** the database schema. This flag is especially recommended for SQL
5722** functions that have side effects or reveal internal application state.
5723** Without this flag, an attacker might be able to modify the schema of
5724** a database file to include invocations of the function with parameters
5725** chosen by the attacker, which the application will then execute when
5726** the database file is opened and read.
5727**
5728** ^(The fifth parameter is an arbitrary pointer. The implementation of the
5729** function can gain access to this pointer using [sqlite3_user_data()].)^
5730**
5731** ^The sixth, seventh and eighth parameters passed to the three
5732** "sqlite3_create_function*" functions, xFunc, xStep and xFinal, are
5733** pointers to C-language functions that implement the SQL function or
5734** aggregate. ^A scalar SQL function requires an implementation of the xFunc
5735** callback only; NULL pointers must be passed as the xStep and xFinal
5736** parameters. ^An aggregate SQL function requires an implementation of xStep
5737** and xFinal and NULL pointer must be passed for xFunc. ^To delete an existing
5738** SQL function or aggregate, pass NULL pointers for all three function
5739** callbacks.
5740**
5741** ^The sixth, seventh, eighth and ninth parameters (xStep, xFinal, xValue
5742** and xInverse) passed to sqlite3_create_window_function are pointers to
5743** C-language callbacks that implement the new function. xStep and xFinal
5744** must both be non-NULL. xValue and xInverse may either both be NULL, in
5745** which case a regular aggregate function is created, or must both be
5746** non-NULL, in which case the new function may be used as either an aggregate
5747** or aggregate window function. More details regarding the implementation
5748** of aggregate window functions are
5749** [user-defined window functions|available here].
5750**
5751** ^(If the final parameter to sqlite3_create_function_v2() or
5752** sqlite3_create_window_function() is not NULL, then it is the destructor for
5753** the application data pointer. The destructor is invoked when the function
5754** is deleted, either by being overloaded or when the database connection
5755** closes.)^ ^The destructor is also invoked if the call to
5756** sqlite3_create_function_v2() fails. ^When the destructor callback is
5757** invoked, it is passed a single argument which is a copy of the application
5758** data pointer which was the fifth parameter to sqlite3_create_function_v2().
5759**
5760** ^It is permitted to register multiple implementations of the same
5761** functions with the same name but with either differing numbers of
5762** arguments or differing preferred text encodings. ^SQLite will use
5763** the implementation that most closely matches the way in which the
5764** SQL function is used. ^A function implementation with a non-negative
5765** nArg parameter is a better match than a function implementation with
5766** a negative nArg. ^A function where the preferred text encoding
5767** matches the database encoding is a better
5768** match than a function where the encoding is different.
5769** ^A function where the encoding difference is between UTF16le and UTF16be
5770** is a closer match than a function where the encoding difference is
5771** between UTF8 and UTF16.
5772**
5773** ^Built-in functions may be overloaded by new application-defined functions.
5774**
5775** ^An application-defined function is permitted to call other
5776** SQLite interfaces. However, such calls must not
5777** close the database connection nor finalize or reset the prepared
5778** statement in which the function is running.
5779*/
5780SQLITE_API int sqlite3_create_function(
5781 sqlite3 *db,
5782 const char *zFunctionName,
5783 int nArg,
5784 int eTextRep,
5785 void *pApp,
5786 void (*xFunc)(sqlite3_context*,int,sqlite3_value**),
5787 void (*xStep)(sqlite3_context*,int,sqlite3_value**),
5788 void (*xFinal)(sqlite3_context*)
5789);
5790SQLITE_API int sqlite3_create_function16(
5791 sqlite3 *db,
5792 const void *zFunctionName,
5793 int nArg,
5794 int eTextRep,
5795 void *pApp,
5796 void (*xFunc)(sqlite3_context*,int,sqlite3_value**),
5797 void (*xStep)(sqlite3_context*,int,sqlite3_value**),
5798 void (*xFinal)(sqlite3_context*)
5799);
5800SQLITE_API int sqlite3_create_function_v2(
5801 sqlite3 *db,
5802 const char *zFunctionName,
5803 int nArg,
5804 int eTextRep,
5805 void *pApp,
5806 void (*xFunc)(sqlite3_context*,int,sqlite3_value**),
5807 void (*xStep)(sqlite3_context*,int,sqlite3_value**),
5808 void (*xFinal)(sqlite3_context*),
5809 void(*xDestroy)(void*)
5810);
5811SQLITE_API int sqlite3_create_window_function(
5812 sqlite3 *db,
5813 const char *zFunctionName,
5814 int nArg,
5815 int eTextRep,
5816 void *pApp,
5817 void (*xStep)(sqlite3_context*,int,sqlite3_value**),
5818 void (*xFinal)(sqlite3_context*),
5819 void (*xValue)(sqlite3_context*),
5820 void (*xInverse)(sqlite3_context*,int,sqlite3_value**),
5821 void(*xDestroy)(void*)
5822);
5823
5824/*
5825** CAPI3REF: Text Encodings
5826**
5827** These constants define integer codes that represent the various
5828** text encodings supported by SQLite.
5829**
5830** <dl>
5831** [[SQLITE_UTF8]] <dt>SQLITE_UTF8</dt><dd>Text is encoding as UTF-8</dd>
5832**
5833** [[SQLITE_UTF16LE]] <dt>SQLITE_UTF16LE</dt><dd>Text is encoding as UTF-16
5834** with each code point being expressed "little endian" - the least significant
5835** byte first. This is the usual encoding, for example on Windows.</dd>
5836**
5837** [[SQLITE_UTF16BE]] <dt>SQLITE_UTF16BE</dt><dd>Text is encoding as UTF-16
5838** with each code point being expressed "big endian" - the most significant
5839** byte first. This encoding is less common, but is still sometimes seen,
5840** specially on older systems.
5841**
5842** [[SQLITE_UTF16]] <dt>SQLITE_UTF16</dt><dd>Text is encoding as UTF-16
5843** with each code point being expressed either little endian or as big
5844** endian, according to the native endianness of the host computer.
5845**
5846** [[SQLITE_ANY]] <dt>SQLITE_ANY</dt><dd>This encoding value may only be used
5847** to declare the preferred text for [application-defined SQL functions]
5848** created using [sqlite3_create_function()] and similar. If the preferred
5849** encoding (the 4th parameter to sqlite3_create_function() - the eTextRep
5850** parameter) is SQLITE_ANY, that indicates that the function does not have
5851** a preference regarding the text encoding of its parameters and can take
5852** any text encoding that the SQLite core find convenient to supply. This
5853** option is deprecated. Please do not use it in new applications.
5854**
5855** [[SQLITE_UTF16_ALIGNED]] <dt>SQLITE_UTF16_ALIGNED</dt><dd>This encoding
5856** value may be used as the 3rd parameter (the eTextRep parameter) to
5857** [sqlite3_create_collation()] and similar. This encoding value means
5858** that the application-defined collating sequence created expects its
5859** input strings to be in UTF16 in native byte order, and that the start
5860** of the strings must be aligned to a 2-byte boundary.
5861**
5862** [[SQLITE_UTF8_ZT]] <dt>SQLITE_UTF8_ZT</dt><dd>This option can only be
5863** used to specify the text encoding to strings input to
5864** [sqlite3_result_text64()] and [sqlite3_bind_text64()].
5865** The SQLITE_UTF8_ZT encoding means that the input string (call it "z")
5866** is UTF-8 encoded and that it is zero-terminated. If the length parameter
5867** (call it "n") is non-negative, this encoding option means that the caller
5868** guarantees that z array contains at least n+1 bytes and that the z[n]
5869** byte has a value of zero.
5870** This option gives the same output as SQLITE_UTF8, but can be more efficient
5871** by avoiding the need to make a copy of the input string, in some cases.
5872** However, if z is allocated to hold fewer than n+1 bytes or if the
5873** z[n] byte is not zero, undefined behavior may result.
5874** </dl>
5875*/
5876#define SQLITE_UTF8 1 /* IMP: R-37514-35566 */
5877#define SQLITE_UTF16LE 2 /* IMP: R-03371-37637 */
5878#define SQLITE_UTF16BE 3 /* IMP: R-51971-34154 */
5879#define SQLITE_UTF16 4 /* Use native byte order */
5880#define SQLITE_ANY 5 /* Deprecated */
5881#define SQLITE_UTF16_ALIGNED 8 /* sqlite3_create_collation only */
5882#define SQLITE_UTF8_ZT 16 /* Zero-terminated UTF8 */
5883
5884/*
5885** CAPI3REF: Function Flags
5886**
5887** These constants may be ORed together with the
5888** [SQLITE_UTF8 | preferred text encoding] as the fourth argument
5889** to [sqlite3_create_function()], [sqlite3_create_function16()], or
5890** [sqlite3_create_function_v2()].
5891**
5892** <dl>
5893** [[SQLITE_DETERMINISTIC]] <dt>SQLITE_DETERMINISTIC</dt><dd>
5894** The SQLITE_DETERMINISTIC flag means that the new function always gives
5895** the same output when the input parameters are the same.
5896** The [abs|abs() function] is deterministic, for example, but
5897** [randomblob|randomblob()] is not. Functions must
5898** be deterministic in order to be used in certain contexts such as
5899** with the WHERE clause of [partial indexes] or in [generated columns].
5900** SQLite might also optimize deterministic functions by factoring them
5901** out of inner loops.
5902** </dd>
5903**
5904** [[SQLITE_DIRECTONLY]] <dt>SQLITE_DIRECTONLY</dt><dd>
5905** The SQLITE_DIRECTONLY flag means that the function may only be invoked
5906** from top-level SQL, and cannot be used in VIEWs or TRIGGERs nor in
5907** schema structures such as [CHECK constraints], [DEFAULT clauses],
5908** [expression indexes], [partial indexes], or [generated columns].
5909** <p>
5910** The SQLITE_DIRECTONLY flag is recommended for any
5911** [application-defined SQL function]
5912** that has side-effects or that could potentially leak sensitive information.
5913** This will prevent attacks in which an application is tricked
5914** into using a database file that has had its schema surreptitiously
5915** modified to invoke the application-defined function in ways that are
5916** harmful.
5917** <p>
5918** Some people say it is good practice to set SQLITE_DIRECTONLY on all
5919** [application-defined SQL functions], regardless of whether or not they
5920** are security sensitive, as doing so prevents those functions from being used
5921** inside of the database schema, and thus ensures that the database
5922** can be inspected and modified using generic tools (such as the [CLI])
5923** that do not have access to the application-defined functions.
5924** </dd>
5925**
5926** [[SQLITE_INNOCUOUS]] <dt>SQLITE_INNOCUOUS</dt><dd>
5927** The SQLITE_INNOCUOUS flag means that the function is unlikely
5928** to cause problems even if misused. An innocuous function should have
5929** no side effects and should not depend on any values other than its
5930** input parameters. The [abs|abs() function] is an example of an
5931** innocuous function.
5932** The [load_extension() SQL function] is not innocuous because of its
5933** side effects.
5934** <p> SQLITE_INNOCUOUS is similar to SQLITE_DETERMINISTIC, but is not
5935** exactly the same. The [random|random() function] is an example of a
5936** function that is innocuous but not deterministic.
5937** <p>Some heightened security settings
5938** ([SQLITE_DBCONFIG_TRUSTED_SCHEMA] and [PRAGMA trusted_schema=OFF])
5939** disable the use of SQL functions inside views and triggers and in
5940** schema structures such as [CHECK constraints], [DEFAULT clauses],
5941** [expression indexes], [partial indexes], and [generated columns] unless
5942** the function is tagged with SQLITE_INNOCUOUS. Most built-in functions
5943** are innocuous. Developers are advised to avoid using the
5944** SQLITE_INNOCUOUS flag for application-defined functions unless the
5945** function has been carefully audited and found to be free of potentially
5946** security-adverse side-effects and information-leaks.
5947** </dd>
5948**
5949** [[SQLITE_SUBTYPE]] <dt>SQLITE_SUBTYPE</dt><dd>
5950** The SQLITE_SUBTYPE flag indicates to SQLite that a function might call
5951** [sqlite3_value_subtype()] to inspect the sub-types of its arguments.
5952** This flag instructs SQLite to omit some corner-case optimizations that
5953** might disrupt the operation of the [sqlite3_value_subtype()] function,
5954** causing it to return zero rather than the correct subtype().
5955** All SQL functions that invoke [sqlite3_value_subtype()] should have this
5956** property. If the SQLITE_SUBTYPE property is omitted, then the return
5957** value from [sqlite3_value_subtype()] might sometimes be zero even though
5958** a non-zero subtype was specified by the function argument expression.
5959**
5960** [[SQLITE_RESULT_SUBTYPE]] <dt>SQLITE_RESULT_SUBTYPE</dt><dd>
5961** The SQLITE_RESULT_SUBTYPE flag indicates to SQLite that a function might call
5962** [sqlite3_result_subtype()] to cause a sub-type to be associated with its
5963** result.
5964** Every function that invokes [sqlite3_result_subtype()] should have this
5965** property. If it does not, then the call to [sqlite3_result_subtype()]
5966** might become a no-op if the function is used as a term in an
5967** [expression index]. On the other hand, SQL functions that never invoke
5968** [sqlite3_result_subtype()] should avoid setting this property, as the
5969** purpose of this property is to disable certain optimizations that are
5970** incompatible with subtypes.
5971**
5972** [[SQLITE_SELFORDER1]] <dt>SQLITE_SELFORDER1</dt><dd>
5973** The SQLITE_SELFORDER1 flag indicates that the function is an aggregate
5974** that internally orders the values provided to the first argument. The
5975** ordered-set aggregate SQL notation with a single ORDER BY term can be
5976** used to invoke this function. If the ordered-set aggregate notation is
5977** used on a function that lacks this flag, then an error is raised. Note
5978** that the ordered-set aggregate syntax is only available if SQLite is
5979** built using the -DSQLITE_ENABLE_ORDERED_SET_AGGREGATES compile-time option.
5980** </dd>
5981** </dl>
5982*/
5983#define SQLITE_DETERMINISTIC 0x000000800
5984#define SQLITE_DIRECTONLY 0x000080000
5985#define SQLITE_SUBTYPE 0x000100000
5986#define SQLITE_INNOCUOUS 0x000200000
5987#define SQLITE_RESULT_SUBTYPE 0x001000000
5988#define SQLITE_SELFORDER1 0x002000000
5989
5990/*
5991** CAPI3REF: Deprecated Functions
5992** DEPRECATED
5993**
5994** These functions are [deprecated]. In order to maintain
5995** backwards compatibility with older code, these functions continue
5996** to be supported. However, new applications should avoid
5997** the use of these functions. To encourage programmers to avoid
5998** these functions, we will not explain what they do.
5999*/
6000#ifndef SQLITE_OMIT_DEPRECATED
6001SQLITE_API SQLITE_DEPRECATED int sqlite3_aggregate_count(sqlite3_context*);
6002SQLITE_API SQLITE_DEPRECATED int sqlite3_expired(sqlite3_stmt*);
6003SQLITE_API SQLITE_DEPRECATED int sqlite3_transfer_bindings(sqlite3_stmt*, sqlite3_stmt*);
6004SQLITE_API SQLITE_DEPRECATED int sqlite3_global_recover(void);
6005SQLITE_API SQLITE_DEPRECATED void sqlite3_thread_cleanup(void);
6006SQLITE_API SQLITE_DEPRECATED int sqlite3_memory_alarm(void(*)(void*,sqlite3_int64,int),
6007 void*,sqlite3_int64);
6008#endif
6009
6010/*
6011** CAPI3REF: Obtaining SQL Values
6012** METHOD: sqlite3_value
6013**
6014** <b>Summary:</b>
6015** <blockquote><table border=0 cellpadding=0 cellspacing=0>
6016** <tr><td><b>sqlite3_value_blob</b><td>→<td>BLOB value
6017** <tr><td><b>sqlite3_value_double</b><td>→<td>REAL value
6018** <tr><td><b>sqlite3_value_int</b><td>→<td>32-bit INTEGER value
6019** <tr><td><b>sqlite3_value_int64</b><td>→<td>64-bit INTEGER value
6020** <tr><td><b>sqlite3_value_pointer</b><td>→<td>Pointer value
6021** <tr><td><b>sqlite3_value_text</b><td>→<td>UTF-8 TEXT value
6022** <tr><td><b>sqlite3_value_text16</b><td>→<td>UTF-16 TEXT value in
6023** the native byteorder
6024** <tr><td><b>sqlite3_value_text16be</b><td>→<td>UTF-16be TEXT value
6025** <tr><td><b>sqlite3_value_text16le</b><td>→<td>UTF-16le TEXT value
6026** <tr><td> <td> <td>
6027** <tr><td><b>sqlite3_value_bytes</b><td>→<td>Size of a BLOB
6028** or a UTF-8 TEXT in bytes
6029** <tr><td><b>sqlite3_value_bytes16 </b>
6030** <td>→ <td>Size of UTF-16
6031** TEXT in bytes
6032** <tr><td><b>sqlite3_value_type</b><td>→<td>Default
6033** datatype of the value
6034** <tr><td><b>sqlite3_value_numeric_type </b>
6035** <td>→ <td>Best numeric datatype of the value
6036** <tr><td><b>sqlite3_value_nochange </b>
6037** <td>→ <td>True if the column is unchanged in an UPDATE
6038** against a virtual table.
6039** <tr><td><b>sqlite3_value_frombind </b>
6040** <td>→ <td>True if value originated from a [bound parameter]
6041** </table></blockquote>
6042**
6043** <b>Details:</b>
6044**
6045** These routines extract type, size, and content information from
6046** [protected sqlite3_value] objects. Protected sqlite3_value objects
6047** are used to pass parameter information into the functions that
6048** implement [application-defined SQL functions] and [virtual tables].
6049**
6050** These routines work only with [protected sqlite3_value] objects.
6051** Any attempt to use these routines on an [unprotected sqlite3_value]
6052** is not threadsafe.
6053**
6054** ^These routines work just like the corresponding [column access functions]
6055** except that these routines take a single [protected sqlite3_value] object
6056** pointer instead of a [sqlite3_stmt*] pointer and an integer column number.
6057**
6058** ^The sqlite3_value_text16() interface extracts a UTF-16 string
6059** in the native byte-order of the host machine. ^The
6060** sqlite3_value_text16be() and sqlite3_value_text16le() interfaces
6061** extract UTF-16 strings as big-endian and little-endian respectively.
6062**
6063** ^If [sqlite3_value] object V was initialized
6064** using [sqlite3_bind_pointer(S,I,P,X,D)] or [sqlite3_result_pointer(C,P,X,D)]
6065** and if X and Y are strings that compare equal according to strcmp(X,Y),
6066** then sqlite3_value_pointer(V,Y) will return the pointer P. ^Otherwise,
6067** sqlite3_value_pointer(V,Y) returns a NULL. The sqlite3_bind_pointer()
6068** routine is part of the [pointer passing interface] added for SQLite 3.20.0.
6069**
6070** ^(The sqlite3_value_type(V) interface returns the
6071** [SQLITE_INTEGER | datatype code] for the initial datatype of the
6072** [sqlite3_value] object V. The returned value is one of [SQLITE_INTEGER],
6073** [SQLITE_FLOAT], [SQLITE_TEXT], [SQLITE_BLOB], or [SQLITE_NULL].)^
6074** Other interfaces might change the datatype for an sqlite3_value object.
6075** For example, if the datatype is initially SQLITE_INTEGER and
6076** sqlite3_value_text(V) is called to extract a text value for that
6077** integer, then subsequent calls to sqlite3_value_type(V) might return
6078** SQLITE_TEXT. Whether or not a persistent internal datatype conversion
6079** occurs is undefined and may change from one release of SQLite to the next.
6080**
6081** ^(The sqlite3_value_numeric_type() interface attempts to apply
6082** numeric affinity to the value. This means that an attempt is
6083** made to convert the value to an integer or floating point. If
6084** such a conversion is possible without loss of information (in other
6085** words, if the value is a string that looks like a number)
6086** then the conversion is performed. Otherwise no conversion occurs.
6087** The [SQLITE_INTEGER | datatype] after conversion is returned.)^
6088**
6089** ^Within the [xUpdate] method of a [virtual table], the
6090** sqlite3_value_nochange(X) interface returns true if and only if
6091** the column corresponding to X is unchanged by the UPDATE operation
6092** that the xUpdate method call was invoked to implement and if
6093** the prior [xColumn] method call that was invoked to extract
6094** the value for that column returned without setting a result (probably
6095** because it queried [sqlite3_vtab_nochange()] and found that the column
6096** was unchanging). ^Within an [xUpdate] method, any value for which
6097** sqlite3_value_nochange(X) is true will in all other respects appear
6098** to be a NULL value. If sqlite3_value_nochange(X) is invoked anywhere other
6099** than within an [xUpdate] method call for an UPDATE statement, then
6100** the return value is arbitrary and meaningless.
6101**
6102** ^The sqlite3_value_frombind(X) interface returns non-zero if the
6103** value X originated from one of the [sqlite3_bind_int|sqlite3_bind()]
6104** interfaces. ^If X comes from an SQL literal value, or a table column,
6105** or an expression, then sqlite3_value_frombind(X) returns zero.
6106**
6107** Please pay particular attention to the fact that the pointer returned
6108** from [sqlite3_value_blob()], [sqlite3_value_text()], or
6109** [sqlite3_value_text16()] can be invalidated by a subsequent call to
6110** [sqlite3_value_bytes()], [sqlite3_value_bytes16()], [sqlite3_value_text()],
6111** or [sqlite3_value_text16()].
6112**
6113** These routines must be called from the same thread as
6114** the SQL function that supplied the [sqlite3_value*] parameters.
6115**
6116** As long as the input parameter is correct, these routines can only
6117** fail if an out-of-memory error occurs while trying to do a
6118** UTF8→UTF16 or UTF16→UTF8 conversion.
6119** If an out-of-memory error occurs, then the return value from these
6120** routines is the same as if the column had contained an SQL NULL value.
6121** If the input sqlite3_value was not obtained from [sqlite3_value_dup()],
6122** then valid SQL NULL returns can also be distinguished from
6123** out-of-memory errors after extracting the value
6124** by invoking the [sqlite3_errcode()] immediately after the suspicious
6125** return value is obtained and before any
6126** other SQLite interface is called on the same [database connection].
6127** If the input sqlite3_value was obtained from sqlite3_value_dup() then
6128** it is disconnected from the database connection and so sqlite3_errcode()
6129** will not work.
6130** In that case, the only way to distinguish an out-of-memory
6131** condition from a true SQL NULL is to invoke sqlite3_value_type() on the
6132** input to see if it is NULL prior to trying to extract the value.
6133*/
6134SQLITE_API const void *sqlite3_value_blob(sqlite3_value*);
6135SQLITE_API double sqlite3_value_double(sqlite3_value*);
6136SQLITE_API int sqlite3_value_int(sqlite3_value*);
6137SQLITE_API sqlite3_int64 sqlite3_value_int64(sqlite3_value*);
6138SQLITE_API void *sqlite3_value_pointer(sqlite3_value*, const char*);
6139SQLITE_API const unsigned char *sqlite3_value_text(sqlite3_value*);
6140SQLITE_API const void *sqlite3_value_text16(sqlite3_value*);
6141SQLITE_API const void *sqlite3_value_text16le(sqlite3_value*);
6142SQLITE_API const void *sqlite3_value_text16be(sqlite3_value*);
6143SQLITE_API int sqlite3_value_bytes(sqlite3_value*);
6144SQLITE_API int sqlite3_value_bytes16(sqlite3_value*);
6145SQLITE_API int sqlite3_value_type(sqlite3_value*);
6146SQLITE_API int sqlite3_value_numeric_type(sqlite3_value*);
6147SQLITE_API int sqlite3_value_nochange(sqlite3_value*);
6148SQLITE_API int sqlite3_value_frombind(sqlite3_value*);
6149
6150/*
6151** CAPI3REF: Report the internal text encoding state of an sqlite3_value object
6152** METHOD: sqlite3_value
6153**
6154** ^(The sqlite3_value_encoding(X) interface returns one of [SQLITE_UTF8],
6155** [SQLITE_UTF16BE], or [SQLITE_UTF16LE] according to the current text encoding
6156** of the value X, assuming that X has type TEXT.)^ If sqlite3_value_type(X)
6157** returns something other than SQLITE_TEXT, then the return value from
6158** sqlite3_value_encoding(X) is meaningless. ^Calls to
6159** [sqlite3_value_text(X)], [sqlite3_value_text16(X)],
6160** [sqlite3_value_text16be(X)],
6161** [sqlite3_value_text16le(X)], [sqlite3_value_bytes(X)], or
6162** [sqlite3_value_bytes16(X)] might change the encoding of the value X and
6163** thus change the return from subsequent calls to sqlite3_value_encoding(X).
6164**
6165** This routine is intended for used by applications that test and validate
6166** the SQLite implementation. This routine is inquiring about the opaque
6167** internal state of an [sqlite3_value] object. Ordinary applications should
6168** not need to know what the internal state of an sqlite3_value object is and
6169** hence should not need to use this interface.
6170*/
6171SQLITE_API int sqlite3_value_encoding(sqlite3_value*);
6172
6173/*
6174** CAPI3REF: Finding The Subtype Of SQL Values
6175** METHOD: sqlite3_value
6176**
6177** The sqlite3_value_subtype(V) function returns the subtype for
6178** an [application-defined SQL function] argument V. The subtype
6179** information can be used to pass a limited amount of context from
6180** one SQL function to another. Use the [sqlite3_result_subtype()]
6181** routine to set the subtype for the return value of an SQL function.
6182**
6183** Every [application-defined SQL function] that invokes this interface
6184** should include the [SQLITE_SUBTYPE] property in the text
6185** encoding argument when the function is [sqlite3_create_function|registered].
6186** If the [SQLITE_SUBTYPE] property is omitted, then sqlite3_value_subtype()
6187** might return zero instead of the upstream subtype in some corner cases.
6188*/
6189SQLITE_API unsigned int sqlite3_value_subtype(sqlite3_value*);
6190
6191/*
6192** CAPI3REF: Copy And Free SQL Values
6193** METHOD: sqlite3_value
6194**
6195** ^The sqlite3_value_dup(V) interface makes a copy of the [sqlite3_value]
6196** object V and returns a pointer to that copy. ^The [sqlite3_value] returned
6197** is a [protected sqlite3_value] object even if the input is not.
6198** ^The sqlite3_value_dup(V) interface returns NULL if V is NULL or if a
6199** memory allocation fails. ^If V is a [pointer value], then the result
6200** of sqlite3_value_dup(V) is a NULL value.
6201**
6202** ^The sqlite3_value_free(V) interface frees an [sqlite3_value] object
6203** previously obtained from [sqlite3_value_dup()]. ^If V is a NULL pointer
6204** then sqlite3_value_free(V) is a harmless no-op.
6205*/
6206SQLITE_API sqlite3_value *sqlite3_value_dup(const sqlite3_value*);
6207SQLITE_API void sqlite3_value_free(sqlite3_value*);
6208
6209/*
6210** CAPI3REF: Obtain Aggregate Function Context
6211** METHOD: sqlite3_context
6212**
6213** Implementations of aggregate SQL functions use this
6214** routine to allocate memory for storing their state.
6215**
6216** ^The first time the sqlite3_aggregate_context(C,N) routine is called
6217** for a particular aggregate function, SQLite allocates
6218** N bytes of memory, zeroes out that memory, and returns a pointer
6219** to the new memory. ^On second and subsequent calls to
6220** sqlite3_aggregate_context() for the same aggregate function instance,
6221** the same buffer is returned. Sqlite3_aggregate_context() is normally
6222** called once for each invocation of the xStep callback and then one
6223** last time when the xFinal callback is invoked. ^(When no rows match
6224** an aggregate query, the xStep() callback of the aggregate function
6225** implementation is never called and xFinal() is called exactly once.
6226** In those cases, sqlite3_aggregate_context() might be called for the
6227** first time from within xFinal().)^
6228**
6229** ^The sqlite3_aggregate_context(C,N) routine returns a NULL pointer
6230** when first called if N is less than or equal to zero or if a memory
6231** allocation error occurs.
6232**
6233** ^(The amount of space allocated by sqlite3_aggregate_context(C,N) is
6234** determined by the N parameter on the first successful call. Changing the
6235** value of N in any subsequent call to sqlite3_aggregate_context() within
6236** the same aggregate function instance will not resize the memory
6237** allocation.)^ Within the xFinal callback, it is customary to set
6238** N=0 in calls to sqlite3_aggregate_context(C,N) so that no
6239** pointless memory allocations occur.
6240**
6241** ^SQLite automatically frees the memory allocated by
6242** sqlite3_aggregate_context() when the aggregate query concludes.
6243**
6244** The first parameter must be a copy of the
6245** [sqlite3_context | SQL function context] that is the first parameter
6246** to the xStep or xFinal callback routine that implements the aggregate
6247** function.
6248**
6249** This routine must be called from the same thread in which
6250** the aggregate SQL function is running.
6251*/
6252SQLITE_API void *sqlite3_aggregate_context(sqlite3_context*, int nBytes);
6253
6254/*
6255** CAPI3REF: User Data For Functions
6256** METHOD: sqlite3_context
6257**
6258** ^The sqlite3_user_data() interface returns a copy of
6259** the pointer that was the pUserData parameter (the 5th parameter)
6260** of the [sqlite3_create_function()]
6261** and [sqlite3_create_function16()] routines that originally
6262** registered the application defined function.
6263**
6264** This routine must be called from the same thread in which
6265** the application-defined function is running.
6266*/
6267SQLITE_API void *sqlite3_user_data(sqlite3_context*);
6268
6269/*
6270** CAPI3REF: Database Connection For Functions
6271** METHOD: sqlite3_context
6272**
6273** ^The sqlite3_context_db_handle() interface returns a copy of
6274** the pointer to the [database connection] (the 1st parameter)
6275** of the [sqlite3_create_function()]
6276** and [sqlite3_create_function16()] routines that originally
6277** registered the application defined function.
6278*/
6279SQLITE_API sqlite3 *sqlite3_context_db_handle(sqlite3_context*);
6280
6281/*
6282** CAPI3REF: Function Auxiliary Data
6283** METHOD: sqlite3_context
6284**
6285** These functions may be used by (non-aggregate) SQL functions to
6286** associate auxiliary data with argument values. If the same argument
6287** value is passed to multiple invocations of the same SQL function during
6288** query execution, under some circumstances the associated auxiliary data
6289** might be preserved. An example of where this might be useful is in a
6290** regular-expression matching function. The compiled version of the regular
6291** expression can be stored as auxiliary data associated with the pattern
6292** string. Then as long as the pattern string remains the same,
6293** the compiled regular expression can be reused on multiple
6294** invocations of the same function.
6295**
6296** ^The sqlite3_get_auxdata(C,N) interface returns a pointer to the auxiliary
6297** data associated by the sqlite3_set_auxdata(C,N,P,X) function with the
6298** Nth argument value to the application-defined function. ^N is zero
6299** for the left-most function argument. ^If there is no auxiliary data
6300** associated with the function argument, the sqlite3_get_auxdata(C,N)
6301** interface returns a NULL pointer.
6302**
6303** ^The sqlite3_set_auxdata(C,N,P,X) interface saves P as auxiliary data for the
6304** N-th argument of the application-defined function. ^Subsequent
6305** calls to sqlite3_get_auxdata(C,N) return P from the most recent
6306** sqlite3_set_auxdata(C,N,P,X) call if the auxiliary data is still valid or
6307** NULL if the auxiliary data has been discarded.
6308** ^After each call to sqlite3_set_auxdata(C,N,P,X) where X is not NULL,
6309** SQLite will invoke the destructor function X with parameter P exactly
6310** once, when the auxiliary data is discarded.
6311** SQLite is free to discard the auxiliary data at any time, including: <ul>
6312** <li> ^(when the corresponding function parameter changes)^, or
6313** <li> ^(when [sqlite3_reset()] or [sqlite3_finalize()] is called for the
6314** SQL statement)^, or
6315** <li> ^(when sqlite3_set_auxdata() is invoked again on the same
6316** parameter)^, or
6317** <li> ^(during the original sqlite3_set_auxdata() call when a memory
6318** allocation error occurs.)^
6319** <li> ^(during the original sqlite3_set_auxdata() call if the function
6320** is evaluated during query planning instead of during query execution,
6321** as sometimes happens with [SQLITE_ENABLE_STAT4].)^ </ul>
6322**
6323** Note the last two bullets in particular. The destructor X in
6324** sqlite3_set_auxdata(C,N,P,X) might be called immediately, before the
6325** sqlite3_set_auxdata() interface even returns. Hence sqlite3_set_auxdata()
6326** should be called near the end of the function implementation and the
6327** function implementation should not make any use of P after
6328** sqlite3_set_auxdata() has been called. Furthermore, a call to
6329** sqlite3_get_auxdata() that occurs immediately after a corresponding call
6330** to sqlite3_set_auxdata() might still return NULL if an out-of-memory
6331** condition occurred during the sqlite3_set_auxdata() call or if the
6332** function is being evaluated during query planning rather than during
6333** query execution.
6334**
6335** ^(In practice, auxiliary data is preserved between function calls for
6336** function parameters that are compile-time constants, including literal
6337** values and [parameters] and expressions composed from the same.)^
6338**
6339** The value of the N parameter to these interfaces should be non-negative.
6340** Future enhancements may make use of negative N values to define new
6341** kinds of function caching behavior.
6342**
6343** These routines must be called from the same thread in which
6344** the SQL function is running.
6345**
6346** See also: [sqlite3_get_clientdata()] and [sqlite3_set_clientdata()].
6347*/
6348SQLITE_API void *sqlite3_get_auxdata(sqlite3_context*, int N);
6349SQLITE_API void sqlite3_set_auxdata(sqlite3_context*, int N, void*, void (*)(void*));
6350
6351/*
6352** CAPI3REF: Database Connection Client Data
6353** METHOD: sqlite3
6354**
6355** These functions are used to associate one or more named pointers
6356** with a [database connection].
6357** A call to sqlite3_set_clientdata(D,N,P,X) causes the pointer P
6358** to be attached to [database connection] D using name N. Subsequent
6359** calls to sqlite3_get_clientdata(D,N) will return a copy of pointer P
6360** or a NULL pointer if there were no prior calls to
6361** sqlite3_set_clientdata() with the same values of D and N.
6362** Names are compared using strcmp() and are thus case sensitive.
6363** It returns 0 on success and SQLITE_NOMEM on allocation failure.
6364**
6365** If P and X are both non-NULL, then the destructor X is invoked with
6366** argument P on the first of the following occurrences:
6367** <ul>
6368** <li> An out-of-memory error occurs during the call to
6369** sqlite3_set_clientdata() which attempts to register pointer P.
6370** <li> A subsequent call to sqlite3_set_clientdata(D,N,P,X) is made
6371** with the same D and N parameters.
6372** <li> The database connection closes. SQLite does not make any guarantees
6373** about the order in which destructors are called, only that all
6374** destructors will be called exactly once at some point during the
6375** database connection closing process.
6376** </ul>
6377**
6378** SQLite does not do anything with client data other than invoke
6379** destructors on the client data at the appropriate time. The intended
6380** use for client data is to provide a mechanism for wrapper libraries
6381** to store additional information about an SQLite database connection.
6382**
6383** There is no limit (other than available memory) on the number of different
6384** client data pointers (with different names) that can be attached to a
6385** single database connection. However, the current implementation stores
6386** the content on a linked list. Insert and retrieval performance will
6387** be proportional to the number of entries. The design use case, and
6388** the use case for which the implementation is optimized, is
6389** that an application will store only small number of client data names,
6390** typically just one or two. This interface is not intended to be a
6391** generalized key/value store for thousands or millions of keys. It
6392** will work for that, but performance might be disappointing.
6393**
6394** There is no way to enumerate the client data pointers
6395** associated with a database connection. The N parameter can be thought
6396** of as a secret key such that only code that knows the secret key is able
6397** to access the associated data.
6398**
6399** Security Warning: These interfaces should not be exposed in scripting
6400** languages or in other circumstances where it might be possible for an
6401** attacker to invoke them. Any agent that can invoke these interfaces
6402** can probably also take control of the process.
6403**
6404** Database connection client data is only available for SQLite
6405** version 3.44.0 ([dateof:3.44.0]) and later.
6406**
6407** See also: [sqlite3_set_auxdata()] and [sqlite3_get_auxdata()].
6408*/
6409SQLITE_API void *sqlite3_get_clientdata(sqlite3*,const char*);
6410SQLITE_API int sqlite3_set_clientdata(sqlite3*, const char*, void*, void(*)(void*));
6411
6412/*
6413** CAPI3REF: Constants Defining Special Destructor Behavior
6414**
6415** These are special values for the destructor that is passed in as the
6416** final argument to routines like [sqlite3_result_blob()]. ^If the destructor
6417** argument is SQLITE_STATIC, it means that the content pointer is constant
6418** and will never change. It does not need to be destroyed. ^The
6419** SQLITE_TRANSIENT value means that the content will likely change in
6420** the near future and that SQLite should make its own private copy of
6421** the content before returning.
6422**
6423** The typedef is necessary to work around problems in certain
6424** C++ compilers.
6425*/
6426typedef void (*sqlite3_destructor_type)(void*);
6427#define SQLITE_STATIC ((sqlite3_destructor_type)0)
6428#define SQLITE_TRANSIENT ((sqlite3_destructor_type)-1)
6429
6430/*
6431** CAPI3REF: Setting The Result Of An SQL Function
6432** METHOD: sqlite3_context
6433**
6434** These routines are used by the xFunc or xFinal callbacks that
6435** implement SQL functions and aggregates. See
6436** [sqlite3_create_function()] and [sqlite3_create_function16()]
6437** for additional information.
6438**
6439** These functions work very much like the [parameter binding] family of
6440** functions used to bind values to host parameters in prepared statements.
6441** Refer to the [SQL parameter] documentation for additional information.
6442**
6443** ^The sqlite3_result_blob() interface sets the result from
6444** an application-defined function to be the BLOB whose content is pointed
6445** to by the second parameter and which is N bytes long where N is the
6446** third parameter.
6447**
6448** ^The sqlite3_result_zeroblob(C,N) and sqlite3_result_zeroblob64(C,N)
6449** interfaces set the result of the application-defined function to be
6450** a BLOB containing all zero bytes and N bytes in size.
6451**
6452** ^The sqlite3_result_double() interface sets the result from
6453** an application-defined function to be a floating point value specified
6454** by its 2nd argument.
6455**
6456** ^The sqlite3_result_error() and sqlite3_result_error16() functions
6457** cause the implemented SQL function to throw an exception.
6458** ^SQLite uses the string pointed to by the
6459** 2nd parameter of sqlite3_result_error() or sqlite3_result_error16()
6460** as the text of an error message. ^SQLite interprets the error
6461** message string from sqlite3_result_error() as UTF-8. ^SQLite
6462** interprets the string from sqlite3_result_error16() as UTF-16 using
6463** the same [byte-order determination rules] as [sqlite3_bind_text16()].
6464** ^If the third parameter to sqlite3_result_error()
6465** or sqlite3_result_error16() is negative then SQLite takes as the error
6466** message all text up through the first zero character.
6467** ^If the third parameter to sqlite3_result_error() or
6468** sqlite3_result_error16() is non-negative then SQLite takes that many
6469** bytes (not characters) from the 2nd parameter as the error message.
6470** ^The sqlite3_result_error() and sqlite3_result_error16()
6471** routines make a private copy of the error message text before
6472** they return. Hence, the calling function can deallocate or
6473** modify the text after they return without harm.
6474** ^The sqlite3_result_error_code() function changes the error code
6475** returned by SQLite as a result of an error in a function. ^By default,
6476** the error code is SQLITE_ERROR. ^A subsequent call to sqlite3_result_error()
6477** or sqlite3_result_error16() resets the error code to SQLITE_ERROR.
6478**
6479** ^The sqlite3_result_error_toobig() interface causes SQLite to throw an
6480** error indicating that a string or BLOB is too long to represent.
6481**
6482** ^The sqlite3_result_error_nomem() interface causes SQLite to throw an
6483** error indicating that a memory allocation failed.
6484**
6485** ^The sqlite3_result_int() interface sets the return value
6486** of the application-defined function to be the 32-bit signed integer
6487** value given in the 2nd argument.
6488** ^The sqlite3_result_int64() interface sets the return value
6489** of the application-defined function to be the 64-bit signed integer
6490** value given in the 2nd argument.
6491**
6492** ^The sqlite3_result_null() interface sets the return value
6493** of the application-defined function to be NULL.
6494**
6495** ^The sqlite3_result_text(), sqlite3_result_text16(),
6496** sqlite3_result_text16le(), and sqlite3_result_text16be() interfaces
6497** set the return value of the application-defined function to be
6498** a text string which is represented as UTF-8, UTF-16 native byte order,
6499** UTF-16 little endian, or UTF-16 big endian, respectively.
6500** ^The sqlite3_result_text64(C,Z,N,D,E) interface sets the return value of an
6501** application-defined function to be a text string in an encoding
6502** specified the E parameter, which must be one
6503** of [SQLITE_UTF8], [SQLITE_UTF8_ZT], [SQLITE_UTF16], [SQLITE_UTF16BE],
6504** or [SQLITE_UTF16LE]. ^The special value [SQLITE_UTF8_ZT] means that
6505** the result text is both UTF-8 and zero-terminated. In other words,
6506** SQLITE_UTF8_ZT means that the Z array holds at least N+1 bytes and that
6507** the Z[N] is zero.
6508** ^SQLite takes the text result from the application from
6509** the 2nd parameter of the sqlite3_result_text* interfaces.
6510** ^If the 3rd parameter to any of the sqlite3_result_text* interfaces
6511** other than sqlite3_result_text64() is negative, then SQLite computes
6512** the string length itself by searching the 2nd parameter for the first
6513** zero character.
6514** ^If the 3rd parameter to the sqlite3_result_text* interfaces
6515** is non-negative, then as many bytes (not characters) of the text
6516** pointed to by the 2nd parameter are taken as the application-defined
6517** function result. If the 3rd parameter is non-negative, then it
6518** must be the byte offset into the string where the NUL terminator would
6519** appear if the string were NUL terminated. If any NUL characters occur
6520** in the string at a byte offset that is less than the value of the 3rd
6521** parameter, then the resulting string will contain embedded NULs and the
6522** result of expressions operating on strings with embedded NULs is undefined.
6523** ^If the 4th parameter to the sqlite3_result_text* interfaces
6524** or sqlite3_result_blob is a non-NULL pointer, then SQLite calls that
6525** function as the destructor on the text or BLOB result when it has
6526** finished using that result.
6527** ^If the 4th parameter to the sqlite3_result_text* interfaces or to
6528** sqlite3_result_blob is the special constant SQLITE_STATIC, then SQLite
6529** assumes that the text or BLOB result is in constant space and does not
6530** copy the content of the parameter nor call a destructor on the content
6531** when it has finished using that result.
6532** ^If the 4th parameter to the sqlite3_result_text* interfaces
6533** or sqlite3_result_blob is the special constant SQLITE_TRANSIENT
6534** then SQLite makes a copy of the result into space obtained
6535** from [sqlite3_malloc()] before it returns.
6536**
6537** ^For the sqlite3_result_text16(), sqlite3_result_text16le(), and
6538** sqlite3_result_text16be() routines, and for sqlite3_result_text64()
6539** when the encoding is not UTF8, if the input UTF16 begins with a
6540** byte-order mark (BOM, U+FEFF) then the BOM is removed from the
6541** string and the rest of the string is interpreted according to the
6542** byte-order specified by the BOM. ^The byte-order specified by
6543** the BOM at the beginning of the text overrides the byte-order
6544** specified by the interface procedure. ^So, for example, if
6545** sqlite3_result_text16le() is invoked with text that begins
6546** with bytes 0xfe, 0xff (a big-endian byte-order mark) then the
6547** first two bytes of input are skipped and the remaining input
6548** is interpreted as UTF16BE text.
6549**
6550** ^For UTF16 input text to the sqlite3_result_text16(),
6551** sqlite3_result_text16be(), sqlite3_result_text16le(), and
6552** sqlite3_result_text64() routines, if the text contains invalid
6553** UTF16 characters, the invalid characters might be converted
6554** into the unicode replacement character, U+FFFD.
6555**
6556** ^The sqlite3_result_value() interface sets the result of
6557** the application-defined function to be a copy of the
6558** [unprotected sqlite3_value] object specified by the 2nd parameter. ^The
6559** sqlite3_result_value() interface makes a copy of the [sqlite3_value]
6560** so that the [sqlite3_value] specified in the parameter may change or
6561** be deallocated after sqlite3_result_value() returns without harm.
6562** ^A [protected sqlite3_value] object may always be used where an
6563** [unprotected sqlite3_value] object is required, so either
6564** kind of [sqlite3_value] object can be used with this interface.
6565**
6566** ^The sqlite3_result_pointer(C,P,T,D) interface sets the result to an
6567** SQL NULL value, just like [sqlite3_result_null(C)], except that it
6568** also associates the host-language pointer P or type T with that
6569** NULL value such that the pointer can be retrieved within an
6570** [application-defined SQL function] using [sqlite3_value_pointer()].
6571** ^If the D parameter is not NULL, then it is a pointer to a destructor
6572** for the P parameter. ^SQLite invokes D with P as its only argument
6573** when SQLite is finished with P. The T parameter should be a static
6574** string and preferably a string literal. The sqlite3_result_pointer()
6575** routine is part of the [pointer passing interface] added for SQLite 3.20.0.
6576**
6577** If these routines are called from within a different thread
6578** than the one containing the application-defined function that received
6579** the [sqlite3_context] pointer, the results are undefined.
6580*/
6581SQLITE_API void sqlite3_result_blob(sqlite3_context*, const void*, int, void(*)(void*));
6582SQLITE_API void sqlite3_result_blob64(sqlite3_context*,const void*,
6583 sqlite3_uint64,void(*)(void*));
6584SQLITE_API void sqlite3_result_double(sqlite3_context*, double);
6585SQLITE_API void sqlite3_result_error(sqlite3_context*, const char*, int);
6586SQLITE_API void sqlite3_result_error16(sqlite3_context*, const void*, int);
6587SQLITE_API void sqlite3_result_error_toobig(sqlite3_context*);
6588SQLITE_API void sqlite3_result_error_nomem(sqlite3_context*);
6589SQLITE_API void sqlite3_result_error_code(sqlite3_context*, int);
6590SQLITE_API void sqlite3_result_int(sqlite3_context*, int);
6591SQLITE_API void sqlite3_result_int64(sqlite3_context*, sqlite3_int64);
6592SQLITE_API void sqlite3_result_null(sqlite3_context*);
6593SQLITE_API void sqlite3_result_text(sqlite3_context*, const char*, int, void(*)(void*));
6594SQLITE_API void sqlite3_result_text64(sqlite3_context*, const char *z, sqlite3_uint64 n,
6595 void(*)(void*), unsigned char encoding);
6596SQLITE_API void sqlite3_result_text16(sqlite3_context*, const void*, int, void(*)(void*));
6597SQLITE_API void sqlite3_result_text16le(sqlite3_context*, const void*, int,void(*)(void*));
6598SQLITE_API void sqlite3_result_text16be(sqlite3_context*, const void*, int,void(*)(void*));
6599SQLITE_API void sqlite3_result_value(sqlite3_context*, sqlite3_value*);
6600SQLITE_API void sqlite3_result_pointer(sqlite3_context*, void*,const char*,void(*)(void*));
6601SQLITE_API void sqlite3_result_zeroblob(sqlite3_context*, int n);
6602SQLITE_API int sqlite3_result_zeroblob64(sqlite3_context*, sqlite3_uint64 n);
6603
6604
6605/*
6606** CAPI3REF: Setting The Subtype Of An SQL Function
6607** METHOD: sqlite3_context
6608**
6609** The sqlite3_result_subtype(C,T) function causes the subtype of
6610** the result from the [application-defined SQL function] with
6611** [sqlite3_context] C to be the value T. Only the lower 8 bits
6612** of the subtype T are preserved in current versions of SQLite;
6613** higher order bits are discarded.
6614** The number of subtype bytes preserved by SQLite might increase
6615** in future releases of SQLite.
6616**
6617** Every [application-defined SQL function] that invokes this interface
6618** should include the [SQLITE_RESULT_SUBTYPE] property in its
6619** text encoding argument when the SQL function is
6620** [sqlite3_create_function|registered]. If the [SQLITE_RESULT_SUBTYPE]
6621** property is omitted from the function that invokes sqlite3_result_subtype(),
6622** then in some cases the sqlite3_result_subtype() might fail to set
6623** the result subtype.
6624**
6625** If SQLite is compiled with -DSQLITE_STRICT_SUBTYPE=1, then any
6626** SQL function that invokes the sqlite3_result_subtype() interface
6627** and that does not have the SQLITE_RESULT_SUBTYPE property will raise
6628** an error. Future versions of SQLite might enable -DSQLITE_STRICT_SUBTYPE=1
6629** by default.
6630*/
6631SQLITE_API void sqlite3_result_subtype(sqlite3_context*,unsigned int);
6632
6633/*
6634** CAPI3REF: Define New Collating Sequences
6635** METHOD: sqlite3
6636**
6637** ^These functions add, remove, or modify a [collation] associated
6638** with the [database connection] specified as the first argument.
6639**
6640** ^The name of the collation is a UTF-8 string
6641** for sqlite3_create_collation() and sqlite3_create_collation_v2()
6642** and a UTF-16 string in native byte order for sqlite3_create_collation16().
6643** ^Collation names that compare equal according to [sqlite3_strnicmp()] are
6644** considered to be the same name.
6645**
6646** ^(The third argument (eTextRep) must be one of the constants:
6647** <ul>
6648** <li> [SQLITE_UTF8],
6649** <li> [SQLITE_UTF16LE],
6650** <li> [SQLITE_UTF16BE],
6651** <li> [SQLITE_UTF16], or
6652** <li> [SQLITE_UTF16_ALIGNED].
6653** </ul>)^
6654** ^The eTextRep argument determines the encoding of strings passed
6655** to the collating function callback, xCompare.
6656** ^The [SQLITE_UTF16] and [SQLITE_UTF16_ALIGNED] values for eTextRep
6657** force strings to be UTF16 with native byte order.
6658** ^The [SQLITE_UTF16_ALIGNED] value for eTextRep forces strings to begin
6659** on an even byte address.
6660**
6661** ^The fourth argument, pArg, is an application data pointer that is passed
6662** through as the first argument to the collating function callback.
6663**
6664** ^The fifth argument, xCompare, is a pointer to the collating function.
6665** ^Multiple collating functions can be registered using the same name but
6666** with different eTextRep parameters and SQLite will use whichever
6667** function requires the least amount of data transformation.
6668** ^If the xCompare argument is NULL then the collating function is
6669** deleted. ^When all collating functions having the same name are deleted,
6670** that collation is no longer usable.
6671**
6672** ^The collating function callback is invoked with a copy of the pArg
6673** application data pointer and with two strings in the encoding specified
6674** by the eTextRep argument. The two integer parameters to the collating
6675** function callback are the length of the two strings, in bytes. The collating
6676** function must return an integer that is negative, zero, or positive
6677** if the first string is less than, equal to, or greater than the second,
6678** respectively. A collating function must always return the same answer
6679** given the same inputs. If two or more collating functions are registered
6680** to the same collation name (using different eTextRep values) then all
6681** must give an equivalent answer when invoked with equivalent strings.
6682** The collating function must obey the following properties for all
6683** strings A, B, and C:
6684**
6685** <ol>
6686** <li> If A==B then B==A.
6687** <li> If A==B and B==C then A==C.
6688** <li> If A<B THEN B>A.
6689** <li> If A<B and B<C then A<C.
6690** </ol>
6691**
6692** If a collating function fails any of the above constraints and that
6693** collating function is registered and used, then the behavior of SQLite
6694** is undefined.
6695**
6696** ^The sqlite3_create_collation_v2() works like sqlite3_create_collation()
6697** with the addition that the xDestroy callback is invoked on pArg when
6698** the collating function is deleted.
6699** ^Collating functions are deleted when they are overridden by later
6700** calls to the collation creation functions or when the
6701** [database connection] is closed using [sqlite3_close()].
6702**
6703** ^The xDestroy callback is <u>not</u> called if the
6704** sqlite3_create_collation_v2() function fails. Applications that invoke
6705** sqlite3_create_collation_v2() with a non-NULL xDestroy argument should
6706** check the return code and dispose of the application data pointer
6707** themselves rather than expecting SQLite to deal with it for them.
6708** This is different from every other SQLite interface. The inconsistency
6709** is unfortunate but cannot be changed without breaking backwards
6710** compatibility.
6711**
6712** See also: [sqlite3_collation_needed()] and [sqlite3_collation_needed16()].
6713*/
6714SQLITE_API int sqlite3_create_collation(
6715 sqlite3*,
6716 const char *zName,
6717 int eTextRep,
6718 void *pArg,
6719 int(*xCompare)(void*,int,const void*,int,const void*)
6720);
6721SQLITE_API int sqlite3_create_collation_v2(
6722 sqlite3*,
6723 const char *zName,
6724 int eTextRep,
6725 void *pArg,
6726 int(*xCompare)(void*,int,const void*,int,const void*),
6727 void(*xDestroy)(void*)
6728);
6729SQLITE_API int sqlite3_create_collation16(
6730 sqlite3*,
6731 const void *zName,
6732 int eTextRep,
6733 void *pArg,
6734 int(*xCompare)(void*,int,const void*,int,const void*)
6735);
6736
6737/*
6738** CAPI3REF: Collation Needed Callbacks
6739** METHOD: sqlite3
6740**
6741** ^To avoid having to register all collation sequences before a database
6742** can be used, a single callback function may be registered with the
6743** [database connection] to be invoked whenever an undefined collation
6744** sequence is required.
6745**
6746** ^If the function is registered using the sqlite3_collation_needed() API,
6747** then it is passed the names of undefined collation sequences as strings
6748** encoded in UTF-8. ^If sqlite3_collation_needed16() is used,
6749** the names are passed as UTF-16 in machine native byte order.
6750** ^A call to either function replaces the existing collation-needed callback.
6751**
6752** ^(When the callback is invoked, the first argument passed is a copy
6753** of the second argument to sqlite3_collation_needed() or
6754** sqlite3_collation_needed16(). The second argument is the database
6755** connection. The third argument is one of [SQLITE_UTF8], [SQLITE_UTF16BE],
6756** or [SQLITE_UTF16LE], indicating the most desirable form of the collation
6757** sequence function required. The fourth parameter is the name of the
6758** required collation sequence.)^
6759**
6760** The callback function should register the desired collation using
6761** [sqlite3_create_collation()], [sqlite3_create_collation16()], or
6762** [sqlite3_create_collation_v2()].
6763*/
6764SQLITE_API int sqlite3_collation_needed(
6765 sqlite3*,
6766 void*,
6767 void(*)(void*,sqlite3*,int eTextRep,const char*)
6768);
6769SQLITE_API int sqlite3_collation_needed16(
6770 sqlite3*,
6771 void*,
6772 void(*)(void*,sqlite3*,int eTextRep,const void*)
6773);
6774
6775#ifdef SQLITE_ENABLE_CEROD
6776/*
6777** Specify the activation key for a CEROD database. Unless
6778** activated, none of the CEROD routines will work.
6779*/
6780SQLITE_API void sqlite3_activate_cerod(
6781 const char *zPassPhrase /* Activation phrase */
6782);
6783#endif
6784
6785/*
6786** CAPI3REF: Suspend Execution For A Short Time
6787**
6788** The sqlite3_sleep() function causes the current thread to suspend execution
6789** for at least a number of milliseconds specified in its parameter.
6790**
6791** If the operating system does not support sleep requests with
6792** millisecond time resolution, then the time will be rounded up to
6793** the nearest second. The number of milliseconds of sleep actually
6794** requested from the operating system is returned.
6795**
6796** ^SQLite implements this interface by calling the xSleep()
6797** method of the default [sqlite3_vfs] object. If the xSleep() method
6798** of the default VFS is not implemented correctly, or not implemented at
6799** all, then the behavior of sqlite3_sleep() may deviate from the description
6800** in the previous paragraphs.
6801**
6802** If a negative argument is passed to sqlite3_sleep() the results vary by
6803** VFS and operating system. Some system treat a negative argument as an
6804** instruction to sleep forever. Others understand it to mean do not sleep
6805** at all. ^In SQLite version 3.42.0 and later, a negative
6806** argument passed into sqlite3_sleep() is changed to zero before it is relayed
6807** down into the xSleep method of the VFS.
6808*/
6809SQLITE_API int sqlite3_sleep(int);
6810
6811/*
6812** CAPI3REF: Name Of The Folder Holding Temporary Files
6813**
6814** ^(If this global variable is made to point to a string which is
6815** the name of a folder (a.k.a. directory), then all temporary files
6816** created by SQLite when using a built-in [sqlite3_vfs | VFS]
6817** will be placed in that directory.)^ ^If this variable
6818** is a NULL pointer, then SQLite performs a search for an appropriate
6819** temporary file directory.
6820**
6821** Applications are strongly discouraged from using this global variable.
6822** It is required to set a temporary folder on Windows Runtime (WinRT).
6823** But for all other platforms, it is highly recommended that applications
6824** neither read nor write this variable. This global variable is a relic
6825** that exists for backwards compatibility of legacy applications and should
6826** be avoided in new projects.
6827**
6828** It is not safe to read or modify this variable in more than one
6829** thread at a time. It is not safe to read or modify this variable
6830** if a [database connection] is being used at the same time in a separate
6831** thread.
6832** It is intended that this variable be set once
6833** as part of process initialization and before any SQLite interface
6834** routines have been called and that this variable remain unchanged
6835** thereafter.
6836**
6837** ^The [temp_store_directory pragma] may modify this variable and cause
6838** it to point to memory obtained from [sqlite3_malloc]. ^Furthermore,
6839** the [temp_store_directory pragma] always assumes that any string
6840** that this variable points to is held in memory obtained from
6841** [sqlite3_malloc] and the pragma may attempt to free that memory
6842** using [sqlite3_free].
6843** Hence, if this variable is modified directly, either it should be
6844** made NULL or made to point to memory obtained from [sqlite3_malloc]
6845** or else the use of the [temp_store_directory pragma] should be avoided.
6846** Except when requested by the [temp_store_directory pragma], SQLite
6847** does not free the memory that sqlite3_temp_directory points to. If
6848** the application wants that memory to be freed, it must do
6849** so itself, taking care to only do so after all [database connection]
6850** objects have been destroyed.
6851**
6852** <b>Note to Windows Runtime users:</b> The temporary directory must be set
6853** prior to calling [sqlite3_open] or [sqlite3_open_v2]. Otherwise, various
6854** features that require the use of temporary files may fail. Here is an
6855** example of how to do this using C++ with the Windows Runtime:
6856**
6857** <blockquote><pre>
6858** LPCWSTR zPath = Windows::Storage::ApplicationData::Current->
6859** TemporaryFolder->Path->Data();
6860** char zPathBuf[MAX_PATH + 1];
6861** memset(zPathBuf, 0, sizeof(zPathBuf));
6862** WideCharToMultiByte(CP_UTF8, 0, zPath, -1, zPathBuf, sizeof(zPathBuf),
6863** NULL, NULL);
6864** sqlite3_temp_directory = sqlite3_mprintf("%s", zPathBuf);
6865** </pre></blockquote>
6866*/
6867SQLITE_API SQLITE_EXTERN char *sqlite3_temp_directory;
6868
6869/*
6870** CAPI3REF: Name Of The Folder Holding Database Files
6871**
6872** ^(If this global variable is made to point to a string which is
6873** the name of a folder (a.k.a. directory), then all database files
6874** specified with a relative pathname and created or accessed by
6875** SQLite when using a built-in windows [sqlite3_vfs | VFS] will be assumed
6876** to be relative to that directory.)^ ^If this variable is a NULL
6877** pointer, then SQLite assumes that all database files specified
6878** with a relative pathname are relative to the current directory
6879** for the process. Only the windows VFS makes use of this global
6880** variable; it is ignored by the unix VFS.
6881**
6882** Changing the value of this variable while a database connection is
6883** open can result in a corrupt database.
6884**
6885** It is not safe to read or modify this variable in more than one
6886** thread at a time. It is not safe to read or modify this variable
6887** if a [database connection] is being used at the same time in a separate
6888** thread.
6889** It is intended that this variable be set once
6890** as part of process initialization and before any SQLite interface
6891** routines have been called and that this variable remain unchanged
6892** thereafter.
6893**
6894** ^The [data_store_directory pragma] may modify this variable and cause
6895** it to point to memory obtained from [sqlite3_malloc]. ^Furthermore,
6896** the [data_store_directory pragma] always assumes that any string
6897** that this variable points to is held in memory obtained from
6898** [sqlite3_malloc] and the pragma may attempt to free that memory
6899** using [sqlite3_free].
6900** Hence, if this variable is modified directly, either it should be
6901** made NULL or made to point to memory obtained from [sqlite3_malloc]
6902** or else the use of the [data_store_directory pragma] should be avoided.
6903*/
6904SQLITE_API SQLITE_EXTERN char *sqlite3_data_directory;
6905
6906/*
6907** CAPI3REF: Win32 Specific Interface
6908**
6909** These interfaces are available only on Windows. The
6910** [sqlite3_win32_set_directory] interface is used to set the value associated
6911** with the [sqlite3_temp_directory] or [sqlite3_data_directory] variable, to
6912** zValue, depending on the value of the type parameter. The zValue parameter
6913** should be NULL to cause the previous value to be freed via [sqlite3_free];
6914** a non-NULL value will be copied into memory obtained from [sqlite3_malloc]
6915** prior to being used. The [sqlite3_win32_set_directory] interface returns
6916** [SQLITE_OK] to indicate success, [SQLITE_ERROR] if the type is unsupported,
6917** or [SQLITE_NOMEM] if memory could not be allocated. The value of the
6918** [sqlite3_data_directory] variable is intended to act as a replacement for
6919** the current directory on the sub-platforms of Win32 where that concept is
6920** not present, e.g. WinRT and UWP. The [sqlite3_win32_set_directory8] and
6921** [sqlite3_win32_set_directory16] interfaces behave exactly the same as the
6922** sqlite3_win32_set_directory interface except the string parameter must be
6923** UTF-8 or UTF-16, respectively.
6924*/
6925SQLITE_API int sqlite3_win32_set_directory(
6926 unsigned long type, /* Identifier for directory being set or reset */
6927 void *zValue /* New value for directory being set or reset */
6928);
6929SQLITE_API int sqlite3_win32_set_directory8(unsigned long type, const char *zValue);
6930SQLITE_API int sqlite3_win32_set_directory16(unsigned long type, const void *zValue);
6931
6932/*
6933** CAPI3REF: Win32 Directory Types
6934**
6935** These macros are only available on Windows. They define the allowed values
6936** for the type argument to the [sqlite3_win32_set_directory] interface.
6937*/
6938#define SQLITE_WIN32_DATA_DIRECTORY_TYPE 1
6939#define SQLITE_WIN32_TEMP_DIRECTORY_TYPE 2
6940
6941/*
6942** CAPI3REF: Test For Auto-Commit Mode
6943** KEYWORDS: {autocommit mode}
6944** METHOD: sqlite3
6945**
6946** ^The sqlite3_get_autocommit() interface returns non-zero or
6947** zero if the given database connection is or is not in autocommit mode,
6948** respectively. ^Autocommit mode is on by default.
6949** ^Autocommit mode is disabled by a [BEGIN] statement.
6950** ^Autocommit mode is re-enabled by a [COMMIT] or [ROLLBACK].
6951**
6952** If certain kinds of errors occur on a statement within a multi-statement
6953** transaction (errors including [SQLITE_FULL], [SQLITE_IOERR],
6954** [SQLITE_NOMEM], [SQLITE_BUSY], and [SQLITE_INTERRUPT]) then the
6955** transaction might be rolled back automatically. The only way to
6956** find out whether SQLite automatically rolled back the transaction after
6957** an error is to use this function.
6958**
6959** If another thread changes the autocommit status of the database
6960** connection while this routine is running, then the return value
6961** is undefined.
6962*/
6963SQLITE_API int sqlite3_get_autocommit(sqlite3*);
6964
6965/*
6966** CAPI3REF: Find The Database Handle Of A Prepared Statement
6967** METHOD: sqlite3_stmt
6968**
6969** ^The sqlite3_db_handle interface returns the [database connection] handle
6970** to which a [prepared statement] belongs. ^The [database connection]
6971** returned by sqlite3_db_handle is the same [database connection]
6972** that was the first argument
6973** to the [sqlite3_prepare_v2()] call (or its variants) that was used to
6974** create the statement in the first place.
6975*/
6976SQLITE_API sqlite3 *sqlite3_db_handle(sqlite3_stmt*);
6977
6978/*
6979** CAPI3REF: Return The Schema Name For A Database Connection
6980** METHOD: sqlite3
6981**
6982** ^The sqlite3_db_name(D,N) interface returns a pointer to the schema name
6983** for the N-th database on database connection D, or a NULL pointer if N is
6984** out of range. An N value of 0 means the main database file. An N of 1 is
6985** the "temp" schema. Larger values of N correspond to various ATTACH-ed
6986** databases.
6987**
6988** Space to hold the string that is returned by sqlite3_db_name() is managed
6989** by SQLite itself. The string might be deallocated by any operation that
6990** changes the schema, including [ATTACH] or [DETACH] or calls to
6991** [sqlite3_serialize()] or [sqlite3_deserialize()], even operations that
6992** occur on a different thread. Applications that need to
6993** remember the string long-term should make their own copy. Applications that
6994** are accessing the same database connection simultaneously on multiple
6995** threads should mutex-protect calls to this API and should make their own
6996** private copy of the result prior to releasing the mutex.
6997*/
6998SQLITE_API const char *sqlite3_db_name(sqlite3 *db, int N);
6999
7000/*
7001** CAPI3REF: Return The Filename For A Database Connection
7002** METHOD: sqlite3
7003**
7004** ^The sqlite3_db_filename(D,N) interface returns a pointer to the filename
7005** associated with database N of connection D.
7006** ^If there is no attached database N on the database
7007** connection D, or if database N is a temporary or in-memory database, then
7008** this function will return either a NULL pointer or an empty string.
7009**
7010** ^The string value returned by this routine is owned and managed by
7011** the database connection. ^The value will be valid until the database N
7012** is [DETACH]-ed or until the database connection closes.
7013**
7014** ^The filename returned by this function is the output of the
7015** xFullPathname method of the [VFS]. ^In other words, the filename
7016** will be an absolute pathname, even if the filename used
7017** to open the database originally was a URI or relative pathname.
7018**
7019** If the filename pointer returned by this routine is not NULL, then it
7020** can be used as the filename input parameter to these routines:
7021** <ul>
7022** <li> [sqlite3_uri_parameter()]
7023** <li> [sqlite3_uri_boolean()]
7024** <li> [sqlite3_uri_int64()]
7025** <li> [sqlite3_filename_database()]
7026** <li> [sqlite3_filename_journal()]
7027** <li> [sqlite3_filename_wal()]
7028** </ul>
7029*/
7030SQLITE_API sqlite3_filename sqlite3_db_filename(sqlite3 *db, const char *zDbName);
7031
7032/*
7033** CAPI3REF: Determine if a database is read-only
7034** METHOD: sqlite3
7035**
7036** ^The sqlite3_db_readonly(D,N) interface returns 1 if the database N
7037** of connection D is read-only, 0 if it is read/write, or -1 if N is not
7038** the name of a database on connection D.
7039*/
7040SQLITE_API int sqlite3_db_readonly(sqlite3 *db, const char *zDbName);
7041
7042/*
7043** CAPI3REF: Determine the transaction state of a database
7044** METHOD: sqlite3
7045**
7046** ^The sqlite3_txn_state(D,S) interface returns the current
7047** [transaction state] of schema S in database connection D. ^If S is NULL,
7048** then the highest transaction state of any schema on database connection D
7049** is returned. Transaction states are (in order of lowest to highest):
7050** <ol>
7051** <li value="0"> SQLITE_TXN_NONE
7052** <li value="1"> SQLITE_TXN_READ
7053** <li value="2"> SQLITE_TXN_WRITE
7054** </ol>
7055** ^If the S argument to sqlite3_txn_state(D,S) is not the name of
7056** a valid schema, then -1 is returned.
7057*/
7058SQLITE_API int sqlite3_txn_state(sqlite3*,const char *zSchema);
7059
7060/*
7061** CAPI3REF: Allowed return values from sqlite3_txn_state()
7062** KEYWORDS: {transaction state}
7063**
7064** These constants define the current transaction state of a database file.
7065** ^The [sqlite3_txn_state(D,S)] interface returns one of these
7066** constants in order to describe the transaction state of schema S
7067** in [database connection] D.
7068**
7069** <dl>
7070** [[SQLITE_TXN_NONE]] <dt>SQLITE_TXN_NONE</dt>
7071** <dd>The SQLITE_TXN_NONE state means that no transaction is currently
7072** pending.</dd>
7073**
7074** [[SQLITE_TXN_READ]] <dt>SQLITE_TXN_READ</dt>
7075** <dd>The SQLITE_TXN_READ state means that the database is currently
7076** in a read transaction. Content has been read from the database file
7077** but nothing in the database file has changed. The transaction state
7078** will be advanced to SQLITE_TXN_WRITE if any changes occur and there are
7079** no other conflicting concurrent write transactions. The transaction
7080** state will revert to SQLITE_TXN_NONE following a [ROLLBACK] or
7081** [COMMIT].</dd>
7082**
7083** [[SQLITE_TXN_WRITE]] <dt>SQLITE_TXN_WRITE</dt>
7084** <dd>The SQLITE_TXN_WRITE state means that the database is currently
7085** in a write transaction. Content has been written to the database file
7086** but has not yet committed. The transaction state will change to
7087** SQLITE_TXN_NONE at the next [ROLLBACK] or [COMMIT].</dd>
7088*/
7089#define SQLITE_TXN_NONE 0
7090#define SQLITE_TXN_READ 1
7091#define SQLITE_TXN_WRITE 2
7092
7093/*
7094** CAPI3REF: Find the next prepared statement
7095** METHOD: sqlite3
7096**
7097** ^This interface returns a pointer to the next [prepared statement] after
7098** pStmt associated with the [database connection] pDb. ^If pStmt is NULL
7099** then this interface returns a pointer to the first prepared statement
7100** associated with the database connection pDb. ^If no prepared statement
7101** satisfies the conditions of this routine, it returns NULL.
7102**
7103** The [database connection] pointer D in a call to
7104** [sqlite3_next_stmt(D,S)] must refer to an open database
7105** connection and in particular must not be a NULL pointer.
7106*/
7107SQLITE_API sqlite3_stmt *sqlite3_next_stmt(sqlite3 *pDb, sqlite3_stmt *pStmt);
7108
7109/*
7110** CAPI3REF: Commit And Rollback Notification Callbacks
7111** METHOD: sqlite3
7112**
7113** ^The sqlite3_commit_hook() interface registers a callback
7114** function to be invoked whenever a transaction is [COMMIT | committed].
7115** ^Any callback set by a previous call to sqlite3_commit_hook()
7116** for the same database connection is overridden.
7117** ^The sqlite3_rollback_hook() interface registers a callback
7118** function to be invoked whenever a transaction is [ROLLBACK | rolled back].
7119** ^Any callback set by a previous call to sqlite3_rollback_hook()
7120** for the same database connection is overridden.
7121** ^The pArg argument is passed through to the callback.
7122** ^If the callback on a commit hook function returns non-zero,
7123** then the commit is converted into a rollback.
7124**
7125** ^The sqlite3_commit_hook(D,C,P) and sqlite3_rollback_hook(D,C,P) functions
7126** return the P argument from the previous call of the same function
7127** on the same [database connection] D, or NULL for
7128** the first call for each function on D.
7129**
7130** The commit and rollback hook callbacks are not reentrant.
7131** The callback implementation must not do anything that will modify
7132** the database connection that invoked the callback. Any actions
7133** to modify the database connection must be deferred until after the
7134** completion of the [sqlite3_step()] call that triggered the commit
7135** or rollback hook in the first place.
7136** Note that running any other SQL statements, including SELECT statements,
7137** or merely calling [sqlite3_prepare_v2()] and [sqlite3_step()] will modify
7138** the database connections for the meaning of "modify" in this paragraph.
7139**
7140** ^Registering a NULL function disables the callback.
7141**
7142** ^When the commit hook callback routine returns zero, the [COMMIT]
7143** operation is allowed to continue normally. ^If the commit hook
7144** returns non-zero, then the [COMMIT] is converted into a [ROLLBACK].
7145** ^The rollback hook is invoked on a rollback that results from a commit
7146** hook returning non-zero, just as it would be with any other rollback.
7147**
7148** ^For the purposes of this API, a transaction is said to have been
7149** rolled back if an explicit "ROLLBACK" statement is executed, or
7150** an error or constraint causes an implicit rollback to occur.
7151** ^The rollback callback is not invoked if a transaction is
7152** automatically rolled back because the database connection is closed.
7153**
7154** See also the [sqlite3_update_hook()] interface.
7155*/
7156SQLITE_API void *sqlite3_commit_hook(sqlite3*, int(*)(void*), void*);
7157SQLITE_API void *sqlite3_rollback_hook(sqlite3*, void(*)(void *), void*);
7158
7159/*
7160** CAPI3REF: Autovacuum Compaction Amount Callback
7161** METHOD: sqlite3
7162**
7163** ^The sqlite3_autovacuum_pages(D,C,P,X) interface registers a callback
7164** function C that is invoked prior to each autovacuum of the database
7165** file. ^The callback is passed a copy of the generic data pointer (P),
7166** the schema-name of the attached database that is being autovacuumed,
7167** the size of the database file in pages, the number of free pages,
7168** and the number of bytes per page, respectively. The callback should
7169** return the number of free pages that should be removed by the
7170** autovacuum. ^If the callback returns zero, then no autovacuum happens.
7171** ^If the value returned is greater than or equal to the number of
7172** free pages, then a complete autovacuum happens.
7173**
7174** <p>^If there are multiple ATTACH-ed database files that are being
7175** modified as part of a transaction commit, then the autovacuum pages
7176** callback is invoked separately for each file.
7177**
7178** <p><b>The callback is not reentrant.</b> The callback function should
7179** not attempt to invoke any other SQLite interface. If it does, bad
7180** things may happen, including segmentation faults and corrupt database
7181** files. The callback function should be a simple function that
7182** does some arithmetic on its input parameters and returns a result.
7183**
7184** ^The X parameter to sqlite3_autovacuum_pages(D,C,P,X) is an optional
7185** destructor for the P parameter. ^If X is not NULL, then X(P) is
7186** invoked whenever the database connection closes or when the callback
7187** is overwritten by another invocation of sqlite3_autovacuum_pages().
7188**
7189** <p>^There is only one autovacuum pages callback per database connection.
7190** ^Each call to the sqlite3_autovacuum_pages() interface overrides all
7191** previous invocations for that database connection. ^If the callback
7192** argument (C) to sqlite3_autovacuum_pages(D,C,P,X) is a NULL pointer,
7193** then the autovacuum steps callback is canceled. The return value
7194** from sqlite3_autovacuum_pages() is normally SQLITE_OK, but might
7195** be some other error code if something goes wrong. The current
7196** implementation will only return SQLITE_OK or SQLITE_MISUSE, but other
7197** return codes might be added in future releases.
7198**
7199** <p>If no autovacuum pages callback is specified (the usual case) or
7200** a NULL pointer is provided for the callback,
7201** then the default behavior is to vacuum all free pages. So, in other
7202** words, the default behavior is the same as if the callback function
7203** were something like this:
7204**
7205** <blockquote><pre>
7206** unsigned int demonstration_autovac_pages_callback(
7207** void *pClientData,
7208** const char *zSchema,
7209** unsigned int nDbPage,
7210** unsigned int nFreePage,
7211** unsigned int nBytePerPage
7212** ){
7213** return nFreePage;
7214** }
7215** </pre></blockquote>
7216*/
7217SQLITE_API int sqlite3_autovacuum_pages(
7218 sqlite3 *db,
7219 unsigned int(*)(void*,const char*,unsigned int,unsigned int,unsigned int),
7220 void*,
7221 void(*)(void*)
7222);
7223
7224
7225/*
7226** CAPI3REF: Data Change Notification Callbacks
7227** METHOD: sqlite3
7228**
7229** ^The sqlite3_update_hook() interface registers a callback function
7230** with the [database connection] identified by the first argument
7231** to be invoked whenever a row is updated, inserted or deleted in
7232** a [rowid table].
7233** ^Any callback set by a previous call to this function
7234** for the same database connection is overridden.
7235**
7236** ^The second argument is a pointer to the function to invoke when a
7237** row is updated, inserted or deleted in a rowid table.
7238** ^The update hook is disabled by invoking sqlite3_update_hook()
7239** with a NULL pointer as the second parameter.
7240** ^The first argument to the callback is a copy of the third argument
7241** to sqlite3_update_hook().
7242** ^The second callback argument is one of [SQLITE_INSERT], [SQLITE_DELETE],
7243** or [SQLITE_UPDATE], depending on the operation that caused the callback
7244** to be invoked.
7245** ^The third and fourth arguments to the callback contain pointers to the
7246** database and table name containing the affected row.
7247** ^The final callback parameter is the [rowid] of the row.
7248** ^In the case of an update, this is the [rowid] after the update takes place.
7249**
7250** ^(The update hook is not invoked when internal system tables are
7251** modified (i.e. sqlite_sequence).)^
7252** ^The update hook is not invoked when [WITHOUT ROWID] tables are modified.
7253**
7254** ^In the current implementation, the update hook
7255** is not invoked when conflicting rows are deleted because of an
7256** [ON CONFLICT | ON CONFLICT REPLACE] clause. ^Nor is the update hook
7257** invoked when rows are deleted using the [truncate optimization].
7258** The exceptions defined in this paragraph might change in a future
7259** release of SQLite.
7260**
7261** Whether the update hook is invoked before or after the
7262** corresponding change is currently unspecified and may differ
7263** depending on the type of change. Do not rely on the order of the
7264** hook call with regards to the final result of the operation which
7265** triggers the hook.
7266**
7267** The update hook implementation must not do anything that will modify
7268** the database connection that invoked the update hook. Any actions
7269** to modify the database connection must be deferred until after the
7270** completion of the [sqlite3_step()] call that triggered the update hook.
7271** Note that [sqlite3_prepare_v2()] and [sqlite3_step()] both modify their
7272** database connections for the meaning of "modify" in this paragraph.
7273**
7274** ^The sqlite3_update_hook(D,C,P) function
7275** returns the P argument from the previous call
7276** on the same [database connection] D, or NULL for
7277** the first call on D.
7278**
7279** See also the [sqlite3_commit_hook()], [sqlite3_rollback_hook()],
7280** and [sqlite3_preupdate_hook()] interfaces.
7281*/
7282SQLITE_API void *sqlite3_update_hook(
7283 sqlite3*,
7284 void(*)(void *,int ,char const *,char const *,sqlite3_int64),
7285 void*
7286);
7287
7288/*
7289** CAPI3REF: Enable Or Disable Shared Pager Cache
7290**
7291** ^(This routine enables or disables the sharing of the database cache
7292** and schema data structures between [database connection | connections]
7293** to the same database. Sharing is enabled if the argument is true
7294** and disabled if the argument is false.)^
7295**
7296** This interface is omitted if SQLite is compiled with
7297** [-DSQLITE_OMIT_SHARED_CACHE]. The [-DSQLITE_OMIT_SHARED_CACHE]
7298** compile-time option is recommended because the
7299** [use of shared cache mode is discouraged].
7300**
7301** ^Cache sharing is enabled and disabled for an entire process.
7302** This is a change as of SQLite [version 3.5.0] ([dateof:3.5.0]).
7303** In prior versions of SQLite,
7304** sharing was enabled or disabled for each thread separately.
7305**
7306** ^(The cache sharing mode set by this interface effects all subsequent
7307** calls to [sqlite3_open()], [sqlite3_open_v2()], and [sqlite3_open16()].
7308** Existing database connections continue to use the sharing mode
7309** that was in effect at the time they were opened.)^
7310**
7311** ^(This routine returns [SQLITE_OK] if shared cache was enabled or disabled
7312** successfully. An [error code] is returned otherwise.)^
7313**
7314** ^Shared cache is disabled by default. It is recommended that it stay
7315** that way. In other words, do not use this routine. This interface
7316** continues to be provided for historical compatibility, but its use is
7317** discouraged. Any use of shared cache is discouraged. If shared cache
7318** must be used, it is recommended that shared cache only be enabled for
7319** individual database connections using the [sqlite3_open_v2()] interface
7320** with the [SQLITE_OPEN_SHAREDCACHE] flag.
7321**
7322** Note: This method is disabled on MacOS X 10.7 and iOS version 5.0
7323** and will always return SQLITE_MISUSE. On those systems,
7324** shared cache mode should be enabled per-database connection via
7325** [sqlite3_open_v2()] with [SQLITE_OPEN_SHAREDCACHE].
7326**
7327** This interface is threadsafe on processors where writing a
7328** 32-bit integer is atomic.
7329**
7330** See Also: [SQLite Shared-Cache Mode]
7331*/
7332SQLITE_API int sqlite3_enable_shared_cache(int);
7333
7334/*
7335** CAPI3REF: Attempt To Free Heap Memory
7336**
7337** ^The sqlite3_release_memory() interface attempts to free N bytes
7338** of heap memory by deallocating non-essential memory allocations
7339** held by the database library. Memory used to cache database
7340** pages to improve performance is an example of non-essential memory.
7341** ^sqlite3_release_memory() returns the number of bytes actually freed,
7342** which might be more or less than the amount requested.
7343** ^The sqlite3_release_memory() routine is a no-op returning zero
7344** if SQLite is not compiled with [SQLITE_ENABLE_MEMORY_MANAGEMENT].
7345**
7346** See also: [sqlite3_db_release_memory()]
7347*/
7348SQLITE_API int sqlite3_release_memory(int);
7349
7350/*
7351** CAPI3REF: Free Memory Used By A Database Connection
7352** METHOD: sqlite3
7353**
7354** ^The sqlite3_db_release_memory(D) interface attempts to free as much heap
7355** memory as possible from database connection D. Unlike the
7356** [sqlite3_release_memory()] interface, this interface is in effect even
7357** when the [SQLITE_ENABLE_MEMORY_MANAGEMENT] compile-time option is
7358** omitted.
7359**
7360** See also: [sqlite3_release_memory()]
7361*/
7362SQLITE_API int sqlite3_db_release_memory(sqlite3*);
7363
7364/*
7365** CAPI3REF: Impose A Limit On Heap Size
7366**
7367** These interfaces impose limits on the amount of heap memory that will be
7368** used by all database connections within a single process.
7369**
7370** ^The sqlite3_soft_heap_limit64() interface sets and/or queries the
7371** soft limit on the amount of heap memory that may be allocated by SQLite.
7372** ^SQLite strives to keep heap memory utilization below the soft heap
7373** limit by reducing the number of pages held in the page cache
7374** as heap memory usages approaches the limit.
7375** ^The soft heap limit is "soft" because even though SQLite strives to stay
7376** below the limit, it will exceed the limit rather than generate
7377** an [SQLITE_NOMEM] error. In other words, the soft heap limit
7378** is advisory only.
7379**
7380** ^The sqlite3_hard_heap_limit64(N) interface sets a hard upper bound of
7381** N bytes on the amount of memory that will be allocated. ^The
7382** sqlite3_hard_heap_limit64(N) interface is similar to
7383** sqlite3_soft_heap_limit64(N) except that memory allocations will fail
7384** when the hard heap limit is reached.
7385**
7386** ^The return value from both sqlite3_soft_heap_limit64() and
7387** sqlite3_hard_heap_limit64() is the size of
7388** the heap limit prior to the call, or negative in the case of an
7389** error. ^If the argument N is negative
7390** then no change is made to the heap limit. Hence, the current
7391** size of heap limits can be determined by invoking
7392** sqlite3_soft_heap_limit64(-1) or sqlite3_hard_heap_limit(-1).
7393**
7394** ^Setting the heap limits to zero disables the heap limiter mechanism.
7395**
7396** ^The soft heap limit may not be greater than the hard heap limit.
7397** ^If the hard heap limit is enabled and if sqlite3_soft_heap_limit(N)
7398** is invoked with a value of N that is greater than the hard heap limit,
7399** the soft heap limit is set to the value of the hard heap limit.
7400** ^The soft heap limit is automatically enabled whenever the hard heap
7401** limit is enabled. ^When sqlite3_hard_heap_limit64(N) is invoked and
7402** the soft heap limit is outside the range of 1..N, then the soft heap
7403** limit is set to N. ^Invoking sqlite3_soft_heap_limit64(0) when the
7404** hard heap limit is enabled makes the soft heap limit equal to the
7405** hard heap limit.
7406**
7407** The memory allocation limits can also be adjusted using
7408** [PRAGMA soft_heap_limit] and [PRAGMA hard_heap_limit].
7409**
7410** ^(The heap limits are not enforced in the current implementation
7411** if one or more of following conditions are true:
7412**
7413** <ul>
7414** <li> The limit value is set to zero.
7415** <li> Memory accounting is disabled using a combination of the
7416** [sqlite3_config]([SQLITE_CONFIG_MEMSTATUS],...) start-time option and
7417** the [SQLITE_DEFAULT_MEMSTATUS] compile-time option.
7418** <li> An alternative page cache implementation is specified using
7419** [sqlite3_config]([SQLITE_CONFIG_PCACHE2],...).
7420** <li> The page cache allocates from its own memory pool supplied
7421** by [sqlite3_config]([SQLITE_CONFIG_PAGECACHE],...) rather than
7422** from the heap.
7423** </ul>)^
7424**
7425** The circumstances under which SQLite will enforce the heap limits may
7426** change in future releases of SQLite.
7427*/
7428SQLITE_API sqlite3_int64 sqlite3_soft_heap_limit64(sqlite3_int64 N);
7429SQLITE_API sqlite3_int64 sqlite3_hard_heap_limit64(sqlite3_int64 N);
7430
7431/*
7432** CAPI3REF: Deprecated Soft Heap Limit Interface
7433** DEPRECATED
7434**
7435** This is a deprecated version of the [sqlite3_soft_heap_limit64()]
7436** interface. This routine is provided for historical compatibility
7437** only. All new applications should use the
7438** [sqlite3_soft_heap_limit64()] interface rather than this one.
7439*/
7440SQLITE_API SQLITE_DEPRECATED void sqlite3_soft_heap_limit(int N);
7441
7442
7443/*
7444** CAPI3REF: Extract Metadata About A Column Of A Table
7445** METHOD: sqlite3
7446**
7447** ^(The sqlite3_table_column_metadata(X,D,T,C,....) routine returns
7448** information about column C of table T in database D
7449** on [database connection] X.)^ ^The sqlite3_table_column_metadata()
7450** interface returns SQLITE_OK and fills in the non-NULL pointers in
7451** the final five arguments with appropriate values if the specified
7452** column exists. ^The sqlite3_table_column_metadata() interface returns
7453** SQLITE_ERROR if the specified column does not exist.
7454** ^If the column-name parameter to sqlite3_table_column_metadata() is a
7455** NULL pointer, then this routine simply checks for the existence of the
7456** table and returns SQLITE_OK if the table exists and SQLITE_ERROR if it
7457** does not. If the table name parameter T in a call to
7458** sqlite3_table_column_metadata(X,D,T,C,...) is NULL then the result is
7459** undefined behavior.
7460**
7461** ^The column is identified by the second, third and fourth parameters to
7462** this function. ^(The second parameter is either the name of the database
7463** (i.e. "main", "temp", or an attached database) containing the specified
7464** table or NULL.)^ ^If it is NULL, then all attached databases are searched
7465** for the table using the same algorithm used by the database engine to
7466** resolve unqualified table references.
7467**
7468** ^The third and fourth parameters to this function are the table and column
7469** name of the desired column, respectively.
7470**
7471** ^Metadata is returned by writing to the memory locations passed as the 5th
7472** and subsequent parameters to this function. ^Any of these arguments may be
7473** NULL, in which case the corresponding element of metadata is omitted.
7474**
7475** ^(<blockquote>
7476** <table border="1">
7477** <tr><th> Parameter <th> Output<br>Type <th> Description
7478**
7479** <tr><td> 5th <td> const char* <td> Data type
7480** <tr><td> 6th <td> const char* <td> Name of default collation sequence
7481** <tr><td> 7th <td> int <td> True if column has a NOT NULL constraint
7482** <tr><td> 8th <td> int <td> True if column is part of the PRIMARY KEY
7483** <tr><td> 9th <td> int <td> True if column is [AUTOINCREMENT]
7484** </table>
7485** </blockquote>)^
7486**
7487** ^The memory pointed to by the character pointers returned for the
7488** declaration type and collation sequence is valid until the next
7489** call to any SQLite API function.
7490**
7491** ^If the specified table is actually a view, an [error code] is returned.
7492**
7493** ^If the specified column is "rowid", "oid" or "_rowid_" and the table
7494** is not a [WITHOUT ROWID] table and an
7495** [INTEGER PRIMARY KEY] column has been explicitly declared, then the output
7496** parameters are set for the explicitly declared column. ^(If there is no
7497** [INTEGER PRIMARY KEY] column, then the outputs
7498** for the [rowid] are set as follows:
7499**
7500** <pre>
7501** data type: "INTEGER"
7502** collation sequence: "BINARY"
7503** not null: 0
7504** primary key: 1
7505** auto increment: 0
7506** </pre>)^
7507**
7508** ^This function causes all database schemas to be read from disk and
7509** parsed, if that has not already been done, and returns an error if
7510** any errors are encountered while loading the schema.
7511*/
7512SQLITE_API int sqlite3_table_column_metadata(
7513 sqlite3 *db, /* Connection handle */
7514 const char *zDbName, /* Database name or NULL */
7515 const char *zTableName, /* Table name */
7516 const char *zColumnName, /* Column name */
7517 char const **pzDataType, /* OUTPUT: Declared data type */
7518 char const **pzCollSeq, /* OUTPUT: Collation sequence name */
7519 int *pNotNull, /* OUTPUT: True if NOT NULL constraint exists */
7520 int *pPrimaryKey, /* OUTPUT: True if column part of PK */
7521 int *pAutoinc /* OUTPUT: True if column is auto-increment */
7522);
7523
7524/*
7525** CAPI3REF: Load An Extension
7526** METHOD: sqlite3
7527**
7528** ^This interface loads an SQLite extension library from the named file.
7529**
7530** ^The sqlite3_load_extension() interface attempts to load an
7531** [SQLite extension] library contained in the file zFile. If
7532** the file cannot be loaded directly, attempts are made to load
7533** with various operating-system specific filename extensions added.
7534** So for example, if "samplelib" cannot be loaded, then names like
7535** "samplelib.so" or "samplelib.dylib" or "samplelib.dll" might
7536** be tried also.
7537**
7538** ^The entry point is zProc.
7539** ^(zProc may be 0, in which case SQLite will try to come up with an
7540** entry point name on its own. It first tries "sqlite3_extension_init".
7541** If that does not work, it tries names of the form "sqlite3_X_init"
7542** where X consists of the lower-case equivalent of all ASCII alphabetic
7543** characters or all ASCII alphanumeric characters in the filename from
7544** the last "/" to the first following "." and omitting any initial "lib".)^
7545** ^The sqlite3_load_extension() interface returns
7546** [SQLITE_OK] on success and [SQLITE_ERROR] if something goes wrong.
7547** ^If an error occurs and pzErrMsg is not 0, then the
7548** [sqlite3_load_extension()] interface shall attempt to
7549** fill *pzErrMsg with error message text stored in memory
7550** obtained from [sqlite3_malloc()]. The calling function
7551** should free this memory by calling [sqlite3_free()].
7552**
7553** ^Extension loading must be enabled using
7554** [sqlite3_enable_load_extension()] or
7555** [sqlite3_db_config](db,[SQLITE_DBCONFIG_ENABLE_LOAD_EXTENSION],1,NULL)
7556** prior to calling this API,
7557** otherwise an error will be returned.
7558**
7559** <b>Security warning:</b> It is recommended that the
7560** [SQLITE_DBCONFIG_ENABLE_LOAD_EXTENSION] method be used to enable only this
7561** interface. The use of the [sqlite3_enable_load_extension()] interface
7562** should be avoided. This will keep the SQL function [load_extension()]
7563** disabled and prevent SQL injections from giving attackers
7564** access to extension loading capabilities.
7565**
7566** See also the [load_extension() SQL function].
7567*/
7568SQLITE_API int sqlite3_load_extension(
7569 sqlite3 *db, /* Load the extension into this database connection */
7570 const char *zFile, /* Name of the shared library containing extension */
7571 const char *zProc, /* Entry point. Derived from zFile if 0 */
7572 char **pzErrMsg /* Put error message here if not 0 */
7573);
7574
7575/*
7576** CAPI3REF: Enable Or Disable Extension Loading
7577** METHOD: sqlite3
7578**
7579** ^So as not to open security holes in older applications that are
7580** unprepared to deal with [extension loading], and as a means of disabling
7581** [extension loading] while evaluating user-entered SQL, the following API
7582** is provided to turn the [sqlite3_load_extension()] mechanism on and off.
7583**
7584** ^Extension loading is off by default.
7585** ^Call the sqlite3_enable_load_extension() routine with onoff==1
7586** to turn extension loading on and call it with onoff==0 to turn
7587** it back off again.
7588**
7589** ^This interface enables or disables both the C-API
7590** [sqlite3_load_extension()] and the SQL function [load_extension()].
7591** ^(Use [sqlite3_db_config](db,[SQLITE_DBCONFIG_ENABLE_LOAD_EXTENSION],..)
7592** to enable or disable only the C-API.)^
7593**
7594** <b>Security warning:</b> It is recommended that extension loading
7595** be enabled using the [SQLITE_DBCONFIG_ENABLE_LOAD_EXTENSION] method
7596** rather than this interface, so the [load_extension()] SQL function
7597** remains disabled. This will prevent SQL injections from giving attackers
7598** access to extension loading capabilities.
7599*/
7600SQLITE_API int sqlite3_enable_load_extension(sqlite3 *db, int onoff);
7601
7602/*
7603** CAPI3REF: Automatically Load Statically Linked Extensions
7604**
7605** ^This interface causes the xEntryPoint() function to be invoked for
7606** each new [database connection] that is created. The idea here is that
7607** xEntryPoint() is the entry point for a statically linked [SQLite extension]
7608** that is to be automatically loaded into all new database connections.
7609**
7610** ^(Even though the function prototype shows that xEntryPoint() takes
7611** no arguments and returns void, SQLite invokes xEntryPoint() with three
7612** arguments and expects an integer result as if the signature of the
7613** entry point were as follows:
7614**
7615** <blockquote><pre>
7616** int xEntryPoint(
7617** sqlite3 *db,
7618** char **pzErrMsg,
7619** const struct sqlite3_api_routines *pThunk
7620** );
7621** </pre></blockquote>)^
7622**
7623** If the xEntryPoint routine encounters an error, it should make *pzErrMsg
7624** point to an appropriate error message (obtained from [sqlite3_mprintf()])
7625** and return an appropriate [error code]. ^SQLite ensures that *pzErrMsg
7626** is NULL before calling the xEntryPoint(). ^SQLite will invoke
7627** [sqlite3_free()] on *pzErrMsg after xEntryPoint() returns. ^If any
7628** xEntryPoint() returns an error, the [sqlite3_open()], [sqlite3_open16()],
7629** or [sqlite3_open_v2()] call that provoked the xEntryPoint() will fail.
7630**
7631** ^Calling sqlite3_auto_extension(X) with an entry point X that is already
7632** on the list of automatic extensions is a harmless no-op. ^No entry point
7633** will be called more than once for each database connection that is opened.
7634**
7635** See also: [sqlite3_reset_auto_extension()]
7636** and [sqlite3_cancel_auto_extension()]
7637*/
7638SQLITE_API int sqlite3_auto_extension(void(*xEntryPoint)(void));
7639
7640/*
7641** CAPI3REF: Cancel Automatic Extension Loading
7642**
7643** ^The [sqlite3_cancel_auto_extension(X)] interface unregisters the
7644** initialization routine X that was registered using a prior call to
7645** [sqlite3_auto_extension(X)]. ^The [sqlite3_cancel_auto_extension(X)]
7646** routine returns 1 if initialization routine X was successfully
7647** unregistered and it returns 0 if X was not on the list of initialization
7648** routines.
7649*/
7650SQLITE_API int sqlite3_cancel_auto_extension(void(*xEntryPoint)(void));
7651
7652/*
7653** CAPI3REF: Reset Automatic Extension Loading
7654**
7655** ^This interface disables all automatic extensions previously
7656** registered using [sqlite3_auto_extension()].
7657*/
7658SQLITE_API void sqlite3_reset_auto_extension(void);
7659
7660/*
7661** Structures used by the virtual table interface
7662*/
7663typedef struct sqlite3_vtab sqlite3_vtab;
7664typedef struct sqlite3_index_info sqlite3_index_info;
7665typedef struct sqlite3_vtab_cursor sqlite3_vtab_cursor;
7666typedef struct sqlite3_module sqlite3_module;
7667
7668/*
7669** CAPI3REF: Virtual Table Object
7670** KEYWORDS: sqlite3_module {virtual table module}
7671**
7672** This structure, sometimes called a "virtual table module",
7673** defines the implementation of a [virtual table].
7674** This structure consists mostly of methods for the module.
7675**
7676** ^A virtual table module is created by filling in a persistent
7677** instance of this structure and passing a pointer to that instance
7678** to [sqlite3_create_module()] or [sqlite3_create_module_v2()].
7679** ^The registration remains valid until it is replaced by a different
7680** module or until the [database connection] closes. The content
7681** of this structure must not change while it is registered with
7682** any database connection.
7683*/
7684struct sqlite3_module {
7685 int iVersion;
7686 int (*xCreate)(sqlite3*, void *pAux,
7687 int argc, const char *const*argv,
7688 sqlite3_vtab **ppVTab, char**);
7689 int (*xConnect)(sqlite3*, void *pAux,
7690 int argc, const char *const*argv,
7691 sqlite3_vtab **ppVTab, char**);
7692 int (*xBestIndex)(sqlite3_vtab *pVTab, sqlite3_index_info*);
7693 int (*xDisconnect)(sqlite3_vtab *pVTab);
7694 int (*xDestroy)(sqlite3_vtab *pVTab);
7695 int (*xOpen)(sqlite3_vtab *pVTab, sqlite3_vtab_cursor **ppCursor);
7696 int (*xClose)(sqlite3_vtab_cursor*);
7697 int (*xFilter)(sqlite3_vtab_cursor*, int idxNum, const char *idxStr,
7698 int argc, sqlite3_value **argv);
7699 int (*xNext)(sqlite3_vtab_cursor*);
7700 int (*xEof)(sqlite3_vtab_cursor*);
7701 int (*xColumn)(sqlite3_vtab_cursor*, sqlite3_context*, int);
7702 int (*xRowid)(sqlite3_vtab_cursor*, sqlite3_int64 *pRowid);
7703 int (*xUpdate)(sqlite3_vtab *, int, sqlite3_value **, sqlite3_int64 *);
7704 int (*xBegin)(sqlite3_vtab *pVTab);
7705 int (*xSync)(sqlite3_vtab *pVTab);
7706 int (*xCommit)(sqlite3_vtab *pVTab);
7707 int (*xRollback)(sqlite3_vtab *pVTab);
7708 int (*xFindFunction)(sqlite3_vtab *pVtab, int nArg, const char *zName,
7709 void (**pxFunc)(sqlite3_context*,int,sqlite3_value**),
7710 void **ppArg);
7711 int (*xRename)(sqlite3_vtab *pVtab, const char *zNew);
7712 /* The methods above are in version 1 of the sqlite_module object. Those
7713 ** below are for version 2 and greater. */
7714 int (*xSavepoint)(sqlite3_vtab *pVTab, int);
7715 int (*xRelease)(sqlite3_vtab *pVTab, int);
7716 int (*xRollbackTo)(sqlite3_vtab *pVTab, int);
7717 /* The methods above are in versions 1 and 2 of the sqlite_module object.
7718 ** Those below are for version 3 and greater. */
7719 int (*xShadowName)(const char*);
7720 /* The methods above are in versions 1 through 3 of the sqlite_module object.
7721 ** Those below are for version 4 and greater. */
7722 int (*xIntegrity)(sqlite3_vtab *pVTab, const char *zSchema,
7723 const char *zTabName, int mFlags, char **pzErr);
7724};
7725
7726/*
7727** CAPI3REF: Virtual Table Indexing Information
7728** KEYWORDS: sqlite3_index_info
7729**
7730** The sqlite3_index_info structure and its substructures is used as part
7731** of the [virtual table] interface to
7732** pass information into and receive the reply from the [xBestIndex]
7733** method of a [virtual table module]. The fields under **Inputs** are the
7734** inputs to xBestIndex and are read-only. xBestIndex inserts its
7735** results into the **Outputs** fields.
7736**
7737** ^(The aConstraint[] array records WHERE clause constraints of the form:
7738**
7739** <blockquote>column OP expr</blockquote>
7740**
7741** where OP is =, <, <=, >, or >=.)^ ^(The particular operator is
7742** stored in aConstraint[].op using one of the
7743** [SQLITE_INDEX_CONSTRAINT_EQ | SQLITE_INDEX_CONSTRAINT_ values].)^
7744** ^(The index of the column is stored in
7745** aConstraint[].iColumn.)^ ^(aConstraint[].usable is TRUE if the
7746** expr on the right-hand side can be evaluated (and thus the constraint
7747** is usable) and false if it cannot.)^
7748**
7749** ^The optimizer automatically inverts terms of the form "expr OP column"
7750** and makes other simplifications to the WHERE clause in an attempt to
7751** get as many WHERE clause terms into the form shown above as possible.
7752** ^The aConstraint[] array only reports WHERE clause terms that are
7753** relevant to the particular virtual table being queried.
7754**
7755** ^Information about the ORDER BY clause is stored in aOrderBy[].
7756** ^Each term of aOrderBy records a column of the ORDER BY clause.
7757**
7758** The colUsed field indicates which columns of the virtual table may be
7759** required by the current scan. Virtual table columns are numbered from
7760** zero in the order in which they appear within the CREATE TABLE statement
7761** passed to sqlite3_declare_vtab(). For the first 63 columns (columns 0-62),
7762** the corresponding bit is set within the colUsed mask if the column may be
7763** required by SQLite. If the table has at least 64 columns and any column
7764** to the right of the first 63 is required, then bit 63 of colUsed is also
7765** set. In other words, column iCol may be required if the expression
7766** (colUsed & ((sqlite3_uint64)1 << (iCol>=63 ? 63 : iCol))) evaluates to
7767** non-zero.
7768**
7769** The [xBestIndex] method must fill aConstraintUsage[] with information
7770** about what parameters to pass to xFilter. ^If argvIndex>0 then
7771** the right-hand side of the corresponding aConstraint[] is evaluated
7772** and becomes the argvIndex-th entry in argv. ^(If aConstraintUsage[].omit
7773** is true, then the constraint is assumed to be fully handled by the
7774** virtual table and might not be checked again by the byte code.)^ ^(The
7775** aConstraintUsage[].omit flag is an optimization hint. When the omit flag
7776** is left in its default setting of false, the constraint will always be
7777** checked separately in byte code. If the omit flag is changed to true, then
7778** the constraint may or may not be checked in byte code. In other words,
7779** when the omit flag is true there is no guarantee that the constraint will
7780** not be checked again using byte code.)^
7781**
7782** ^The idxNum and idxStr values are recorded and passed into the
7783** [xFilter] method.
7784** ^[sqlite3_free()] is used to free idxStr if and only if
7785** needToFreeIdxStr is true.
7786**
7787** ^The orderByConsumed means that output from [xFilter]/[xNext] will occur in
7788** the correct order to satisfy the ORDER BY clause so that no separate
7789** sorting step is required.
7790**
7791** ^The estimatedCost value is an estimate of the cost of a particular
7792** strategy. A cost of N indicates that the cost of the strategy is similar
7793** to a linear scan of an SQLite table with N rows. A cost of log(N)
7794** indicates that the expense of the operation is similar to that of a
7795** binary search on a unique indexed field of an SQLite table with N rows.
7796**
7797** ^The estimatedRows value is an estimate of the number of rows that
7798** will be returned by the strategy.
7799**
7800** The xBestIndex method may optionally populate the idxFlags field with a
7801** mask of SQLITE_INDEX_SCAN_* flags. One such flag is
7802** [SQLITE_INDEX_SCAN_HEX], which if set causes the [EXPLAIN QUERY PLAN]
7803** output to show the idxNum as hex instead of as decimal. Another flag is
7804** SQLITE_INDEX_SCAN_UNIQUE, which if set indicates that the query plan will
7805** return at most one row.
7806**
7807** Additionally, if xBestIndex sets the SQLITE_INDEX_SCAN_UNIQUE flag, then
7808** SQLite also assumes that if a call to the xUpdate() method is made as
7809** part of the same statement to delete or update a virtual table row and the
7810** implementation returns SQLITE_CONSTRAINT, then there is no need to rollback
7811** any database changes. In other words, if the xUpdate() returns
7812** SQLITE_CONSTRAINT, the database contents must be exactly as they were
7813** before xUpdate was called. By contrast, if SQLITE_INDEX_SCAN_UNIQUE is not
7814** set and xUpdate returns SQLITE_CONSTRAINT, any database changes made by
7815** the xUpdate method are automatically rolled back by SQLite.
7816**
7817** IMPORTANT: The estimatedRows field was added to the sqlite3_index_info
7818** structure for SQLite [version 3.8.2] ([dateof:3.8.2]).
7819** If a virtual table extension is
7820** used with an SQLite version earlier than 3.8.2, the results of attempting
7821** to read or write the estimatedRows field are undefined (but are likely
7822** to include crashing the application). The estimatedRows field should
7823** therefore only be used if [sqlite3_libversion_number()] returns a
7824** value greater than or equal to 3008002. Similarly, the idxFlags field
7825** was added for [version 3.9.0] ([dateof:3.9.0]).
7826** It may therefore only be used if
7827** sqlite3_libversion_number() returns a value greater than or equal to
7828** 3009000.
7829*/
7830struct sqlite3_index_info {
7831 /* Inputs */
7832 int nConstraint; /* Number of entries in aConstraint */
7833 struct sqlite3_index_constraint {
7834 int iColumn; /* Column constrained. -1 for ROWID */
7835 unsigned char op; /* Constraint operator */
7836 unsigned char usable; /* True if this constraint is usable */
7837 int iTermOffset; /* Used internally - xBestIndex should ignore */
7838 } *aConstraint; /* Table of WHERE clause constraints */
7839 int nOrderBy; /* Number of terms in the ORDER BY clause */
7840 struct sqlite3_index_orderby {
7841 int iColumn; /* Column number */
7842 unsigned char desc; /* True for DESC. False for ASC. */
7843 } *aOrderBy; /* The ORDER BY clause */
7844 /* Outputs */
7845 struct sqlite3_index_constraint_usage {
7846 int argvIndex; /* if >0, constraint is part of argv to xFilter */
7847 unsigned char omit; /* Do not code a test for this constraint */
7848 } *aConstraintUsage;
7849 int idxNum; /* Number used to identify the index */
7850 char *idxStr; /* String, possibly obtained from sqlite3_malloc */
7851 int needToFreeIdxStr; /* Free idxStr using sqlite3_free() if true */
7852 int orderByConsumed; /* True if output is already ordered */
7853 double estimatedCost; /* Estimated cost of using this index */
7854 /* Fields below are only available in SQLite 3.8.2 and later */
7855 sqlite3_int64 estimatedRows; /* Estimated number of rows returned */
7856 /* Fields below are only available in SQLite 3.9.0 and later */
7857 int idxFlags; /* Mask of SQLITE_INDEX_SCAN_* flags */
7858 /* Fields below are only available in SQLite 3.10.0 and later */
7859 sqlite3_uint64 colUsed; /* Input: Mask of columns used by statement */
7860};
7861
7862/*
7863** CAPI3REF: Virtual Table Scan Flags
7864**
7865** Virtual table implementations are allowed to set the
7866** [sqlite3_index_info].idxFlags field to some combination of
7867** these bits.
7868*/
7869#define SQLITE_INDEX_SCAN_UNIQUE 0x00000001 /* Scan visits at most 1 row */
7870#define SQLITE_INDEX_SCAN_HEX 0x00000002 /* Display idxNum as hex */
7871 /* in EXPLAIN QUERY PLAN */
7872
7873/*
7874** CAPI3REF: Virtual Table Constraint Operator Codes
7875**
7876** These macros define the allowed values for the
7877** [sqlite3_index_info].aConstraint[].op field. Each value represents
7878** an operator that is part of a constraint term in the WHERE clause of
7879** a query that uses a [virtual table].
7880**
7881** ^The left-hand operand of the operator is given by the corresponding
7882** aConstraint[].iColumn field. ^An iColumn of -1 indicates the left-hand
7883** operand is the rowid.
7884** The SQLITE_INDEX_CONSTRAINT_LIMIT and SQLITE_INDEX_CONSTRAINT_OFFSET
7885** operators have no left-hand operand, and so for those operators the
7886** corresponding aConstraint[].iColumn is meaningless and should not be
7887** used.
7888**
7889** All operator values from SQLITE_INDEX_CONSTRAINT_FUNCTION through
7890** value 255 are reserved to represent functions that are overloaded
7891** by the [xFindFunction|xFindFunction method] of the virtual table
7892** implementation.
7893**
7894** The right-hand operands for each constraint might be accessible using
7895** the [sqlite3_vtab_rhs_value()] interface. Usually the right-hand
7896** operand is only available if it appears as a single constant literal
7897** in the input SQL. If the right-hand operand is another column or an
7898** expression (even a constant expression) or a parameter, then the
7899** sqlite3_vtab_rhs_value() probably will not be able to extract it.
7900** ^The SQLITE_INDEX_CONSTRAINT_ISNULL and
7901** SQLITE_INDEX_CONSTRAINT_ISNOTNULL operators have no right-hand operand
7902** and hence calls to sqlite3_vtab_rhs_value() for those operators will
7903** always return SQLITE_NOTFOUND.
7904**
7905** The collating sequence to be used for comparison can be found using
7906** the [sqlite3_vtab_collation()] interface. For most real-world virtual
7907** tables, the collating sequence of constraints does not matter (for example
7908** because the constraints are numeric) and so the sqlite3_vtab_collation()
7909** interface is not commonly needed.
7910*/
7911#define SQLITE_INDEX_CONSTRAINT_EQ 2
7912#define SQLITE_INDEX_CONSTRAINT_GT 4
7913#define SQLITE_INDEX_CONSTRAINT_LE 8
7914#define SQLITE_INDEX_CONSTRAINT_LT 16
7915#define SQLITE_INDEX_CONSTRAINT_GE 32
7916#define SQLITE_INDEX_CONSTRAINT_MATCH 64
7917#define SQLITE_INDEX_CONSTRAINT_LIKE 65
7918#define SQLITE_INDEX_CONSTRAINT_GLOB 66
7919#define SQLITE_INDEX_CONSTRAINT_REGEXP 67
7920#define SQLITE_INDEX_CONSTRAINT_NE 68
7921#define SQLITE_INDEX_CONSTRAINT_ISNOT 69
7922#define SQLITE_INDEX_CONSTRAINT_ISNOTNULL 70
7923#define SQLITE_INDEX_CONSTRAINT_ISNULL 71
7924#define SQLITE_INDEX_CONSTRAINT_IS 72
7925#define SQLITE_INDEX_CONSTRAINT_LIMIT 73
7926#define SQLITE_INDEX_CONSTRAINT_OFFSET 74
7927#define SQLITE_INDEX_CONSTRAINT_FUNCTION 150
7928
7929/*
7930** CAPI3REF: Register A Virtual Table Implementation
7931** METHOD: sqlite3
7932**
7933** ^These routines are used to register a new [virtual table module] name.
7934** ^Module names must be registered before
7935** creating a new [virtual table] using the module and before using a
7936** preexisting [virtual table] for the module.
7937**
7938** ^The module name is registered on the [database connection] specified
7939** by the first parameter. ^The name of the module is given by the
7940** second parameter. ^The third parameter is a pointer to
7941** the implementation of the [virtual table module]. ^The fourth
7942** parameter is an arbitrary client data pointer that is passed through
7943** into the [xCreate] and [xConnect] methods of the virtual table module
7944** when a new virtual table is being created or reinitialized.
7945**
7946** ^The sqlite3_create_module_v2() interface has a fifth parameter which
7947** is a pointer to a destructor for the pClientData. ^SQLite will
7948** invoke the destructor function (if it is not NULL) when SQLite
7949** no longer needs the pClientData pointer. ^The destructor will also
7950** be invoked if the call to sqlite3_create_module_v2() fails.
7951** ^The sqlite3_create_module()
7952** interface is equivalent to sqlite3_create_module_v2() with a NULL
7953** destructor.
7954**
7955** ^If the third parameter (the pointer to the sqlite3_module object) is
7956** NULL then no new module is created and any existing modules with the
7957** same name are dropped.
7958**
7959** See also: [sqlite3_drop_modules()]
7960*/
7961SQLITE_API int sqlite3_create_module(
7962 sqlite3 *db, /* SQLite connection to register module with */
7963 const char *zName, /* Name of the module */
7964 const sqlite3_module *p, /* Methods for the module */
7965 void *pClientData /* Client data for xCreate/xConnect */
7966);
7967SQLITE_API int sqlite3_create_module_v2(
7968 sqlite3 *db, /* SQLite connection to register module with */
7969 const char *zName, /* Name of the module */
7970 const sqlite3_module *p, /* Methods for the module */
7971 void *pClientData, /* Client data for xCreate/xConnect */
7972 void(*xDestroy)(void*) /* Module destructor function */
7973);
7974
7975/*
7976** CAPI3REF: Remove Unnecessary Virtual Table Implementations
7977** METHOD: sqlite3
7978**
7979** ^The sqlite3_drop_modules(D,L) interface removes all virtual
7980** table modules from database connection D except those named on list L.
7981** The L parameter must be either NULL or a pointer to an array of pointers
7982** to strings where the array is terminated by a single NULL pointer.
7983** ^If the L parameter is NULL, then all virtual table modules are removed.
7984**
7985** See also: [sqlite3_create_module()]
7986*/
7987SQLITE_API int sqlite3_drop_modules(
7988 sqlite3 *db, /* Remove modules from this connection */
7989 const char **azKeep /* Except, do not remove the ones named here */
7990);
7991
7992/*
7993** CAPI3REF: Virtual Table Instance Object
7994** KEYWORDS: sqlite3_vtab
7995**
7996** Every [virtual table module] implementation uses a subclass
7997** of this object to describe a particular instance
7998** of the [virtual table]. Each subclass will
7999** be tailored to the specific needs of the module implementation.
8000** The purpose of this superclass is to define certain fields that are
8001** common to all module implementations.
8002**
8003** ^Virtual tables methods can set an error message by assigning a
8004** string obtained from [sqlite3_mprintf()] to zErrMsg. The method should
8005** take care that any prior string is freed by a call to [sqlite3_free()]
8006** prior to assigning a new string to zErrMsg. ^After the error message
8007** is delivered up to the client application, the string will be automatically
8008** freed by sqlite3_free() and the zErrMsg field will be zeroed.
8009*/
8010struct sqlite3_vtab {
8011 const sqlite3_module *pModule; /* The module for this virtual table */
8012 int nRef; /* Number of open cursors */
8013 char *zErrMsg; /* Error message from sqlite3_mprintf() */
8014 /* Virtual table implementations will typically add additional fields */
8015};
8016
8017/*
8018** CAPI3REF: Virtual Table Cursor Object
8019** KEYWORDS: sqlite3_vtab_cursor {virtual table cursor}
8020**
8021** Every [virtual table module] implementation uses a subclass of the
8022** following structure to describe cursors that point into the
8023** [virtual table] and are used
8024** to loop through the virtual table. Cursors are created using the
8025** [sqlite3_module.xOpen | xOpen] method of the module and are destroyed
8026** by the [sqlite3_module.xClose | xClose] method. Cursors are used
8027** by the [xFilter], [xNext], [xEof], [xColumn], and [xRowid] methods
8028** of the module. Each module implementation will define
8029** the content of a cursor structure to suit its own needs.
8030**
8031** This superclass exists in order to define fields of the cursor that
8032** are common to all implementations.
8033*/
8034struct sqlite3_vtab_cursor {
8035 sqlite3_vtab *pVtab; /* Virtual table of this cursor */
8036 /* Virtual table implementations will typically add additional fields */
8037};
8038
8039/*
8040** CAPI3REF: Declare The Schema Of A Virtual Table
8041**
8042** ^The [xCreate] and [xConnect] methods of a
8043** [virtual table module] call this interface
8044** to declare the format (the names and datatypes of the columns) of
8045** the virtual tables they implement.
8046*/
8047SQLITE_API int sqlite3_declare_vtab(sqlite3*, const char *zSQL);
8048
8049/*
8050** CAPI3REF: Overload A Function For A Virtual Table
8051** METHOD: sqlite3
8052**
8053** ^(Virtual tables can provide alternative implementations of functions
8054** using the [xFindFunction] method of the [virtual table module].
8055** But global versions of those functions
8056** must exist in order to be overloaded.)^
8057**
8058** ^(This API makes sure a global version of a function with a particular
8059** name and number of parameters exists. If no such function exists
8060** before this API is called, a new function is created.)^ ^The implementation
8061** of the new function always causes an exception to be thrown. So
8062** the new function is not good for anything by itself. Its only
8063** purpose is to be a placeholder function that can be overloaded
8064** by a [virtual table].
8065*/
8066SQLITE_API int sqlite3_overload_function(sqlite3*, const char *zFuncName, int nArg);
8067
8068/*
8069** CAPI3REF: A Handle To An Open BLOB
8070** KEYWORDS: {BLOB handle} {BLOB handles}
8071**
8072** An instance of this object represents an open BLOB on which
8073** [sqlite3_blob_open | incremental BLOB I/O] can be performed.
8074** ^Objects of this type are created by [sqlite3_blob_open()]
8075** and destroyed by [sqlite3_blob_close()].
8076** ^The [sqlite3_blob_read()] and [sqlite3_blob_write()] interfaces
8077** can be used to read or write small subsections of the BLOB.
8078** ^The [sqlite3_blob_bytes()] interface returns the size of the BLOB in bytes.
8079*/
8080typedef struct sqlite3_blob sqlite3_blob;
8081
8082/*
8083** CAPI3REF: Open A BLOB For Incremental I/O
8084** METHOD: sqlite3
8085** CONSTRUCTOR: sqlite3_blob
8086**
8087** ^(This interfaces opens a [BLOB handle | handle] to the BLOB located
8088** in row iRow, column zColumn, table zTable in database zDb;
8089** in other words, the same BLOB that would be selected by:
8090**
8091** <pre>
8092** SELECT zColumn FROM zDb.zTable WHERE [rowid] = iRow;
8093** </pre>)^
8094**
8095** ^(Parameter zDb is not the filename that contains the database, but
8096** rather the symbolic name of the database. For attached databases, this is
8097** the name that appears after the AS keyword in the [ATTACH] statement.
8098** For the main database file, the database name is "main". For TEMP
8099** tables, the database name is "temp".)^
8100**
8101** ^If the flags parameter is non-zero, then the BLOB is opened for read
8102** and write access. ^If the flags parameter is zero, the BLOB is opened for
8103** read-only access.
8104**
8105** ^(On success, [SQLITE_OK] is returned and the new [BLOB handle] is stored
8106** in *ppBlob. Otherwise an [error code] is returned and, unless the error
8107** code is SQLITE_MISUSE, *ppBlob is set to NULL.)^ ^This means that, provided
8108** the API is not misused, it is always safe to call [sqlite3_blob_close()]
8109** on *ppBlob after this function returns.
8110**
8111** This function fails with SQLITE_ERROR if any of the following are true:
8112** <ul>
8113** <li> ^(Database zDb does not exist)^,
8114** <li> ^(Table zTable does not exist within database zDb)^,
8115** <li> ^(Table zTable is a WITHOUT ROWID table)^,
8116** <li> ^(Column zColumn does not exist)^,
8117** <li> ^(Row iRow is not present in the table)^,
8118** <li> ^(The specified column of row iRow contains a value that is not
8119** a TEXT or BLOB value)^,
8120** <li> ^(Column zColumn is part of an index, PRIMARY KEY or UNIQUE
8121** constraint and the blob is being opened for read/write access)^,
8122** <li> ^([foreign key constraints | Foreign key constraints] are enabled,
8123** column zColumn is part of a [child key] definition and the blob is
8124** being opened for read/write access)^.
8125** </ul>
8126**
8127** ^Unless it returns SQLITE_MISUSE, this function sets the
8128** [database connection] error code and message accessible via
8129** [sqlite3_errcode()] and [sqlite3_errmsg()] and related functions.
8130**
8131** A BLOB referenced by sqlite3_blob_open() may be read using the
8132** [sqlite3_blob_read()] interface and modified by using
8133** [sqlite3_blob_write()]. The [BLOB handle] can be moved to a
8134** different row of the same table using the [sqlite3_blob_reopen()]
8135** interface. However, the column, table, or database of a [BLOB handle]
8136** cannot be changed after the [BLOB handle] is opened.
8137**
8138** ^(If the row that a BLOB handle points to is modified by an
8139** [UPDATE], [DELETE], or by [ON CONFLICT] side-effects
8140** then the BLOB handle is marked as "expired".
8141** This is true if any column of the row is changed, even a column
8142** other than the one the BLOB handle is open on.)^
8143** ^Calls to [sqlite3_blob_read()] and [sqlite3_blob_write()] for
8144** an expired BLOB handle fail with a return code of [SQLITE_ABORT].
8145** ^(Changes written into a BLOB prior to the BLOB expiring are not
8146** rolled back by the expiration of the BLOB. Such changes will eventually
8147** commit if the transaction continues to completion.)^
8148**
8149** ^Use the [sqlite3_blob_bytes()] interface to determine the size of
8150** the opened blob. ^The size of a blob may not be changed by this
8151** interface. Use the [UPDATE] SQL command to change the size of a
8152** blob.
8153**
8154** ^The [sqlite3_bind_zeroblob()] and [sqlite3_result_zeroblob()] interfaces
8155** and the built-in [zeroblob] SQL function may be used to create a
8156** zero-filled blob to read or write using the incremental-blob interface.
8157**
8158** To avoid a resource leak, every open [BLOB handle] should eventually
8159** be released by a call to [sqlite3_blob_close()].
8160**
8161** See also: [sqlite3_blob_close()],
8162** [sqlite3_blob_reopen()], [sqlite3_blob_read()],
8163** [sqlite3_blob_bytes()], [sqlite3_blob_write()].
8164*/
8165SQLITE_API int sqlite3_blob_open(
8166 sqlite3*,
8167 const char *zDb,
8168 const char *zTable,
8169 const char *zColumn,
8170 sqlite3_int64 iRow,
8171 int flags,
8172 sqlite3_blob **ppBlob
8173);
8174
8175/*
8176** CAPI3REF: Move a BLOB Handle to a New Row
8177** METHOD: sqlite3_blob
8178**
8179** ^This function is used to move an existing [BLOB handle] so that it points
8180** to a different row of the same database table. ^The new row is identified
8181** by the rowid value passed as the second argument. Only the row can be
8182** changed. ^The database, table and column on which the blob handle is open
8183** remain the same. Moving an existing [BLOB handle] to a new row is
8184** faster than closing the existing handle and opening a new one.
8185**
8186** ^(The new row must meet the same criteria as for [sqlite3_blob_open()] -
8187** it must exist and there must be either a blob or text value stored in
8188** the nominated column.)^ ^If the new row is not present in the table, or if
8189** it does not contain a blob or text value, or if another error occurs, an
8190** SQLite error code is returned and the blob handle is considered aborted.
8191** ^All subsequent calls to [sqlite3_blob_read()], [sqlite3_blob_write()] or
8192** [sqlite3_blob_reopen()] on an aborted blob handle immediately return
8193** SQLITE_ABORT. ^Calling [sqlite3_blob_bytes()] on an aborted blob handle
8194** always returns zero.
8195**
8196** ^This function sets the database handle error code and message.
8197*/
8198SQLITE_API int sqlite3_blob_reopen(sqlite3_blob *, sqlite3_int64);
8199
8200/*
8201** CAPI3REF: Close A BLOB Handle
8202** DESTRUCTOR: sqlite3_blob
8203**
8204** ^This function closes an open [BLOB handle]. ^(The BLOB handle is closed
8205** unconditionally. Even if this routine returns an error code, the
8206** handle is still closed.)^
8207**
8208** ^If the blob handle being closed was opened for read-write access, and if
8209** the database is in auto-commit mode and there are no other open read-write
8210** blob handles or active write statements, the current transaction is
8211** committed. ^If an error occurs while committing the transaction, an error
8212** code is returned and the transaction rolled back.
8213**
8214** Calling this function with an argument that is not a NULL pointer or an
8215** open blob handle results in undefined behavior. ^Calling this routine
8216** with a null pointer (such as would be returned by a failed call to
8217** [sqlite3_blob_open()]) is a harmless no-op. ^Otherwise, if this function
8218** is passed a valid open blob handle, the values returned by the
8219** sqlite3_errcode() and sqlite3_errmsg() functions are set before returning.
8220*/
8221SQLITE_API int sqlite3_blob_close(sqlite3_blob *);
8222
8223/*
8224** CAPI3REF: Return The Size Of An Open BLOB
8225** METHOD: sqlite3_blob
8226**
8227** ^Returns the size in bytes of the BLOB accessible via the
8228** successfully opened [BLOB handle] in its only argument. ^The
8229** incremental blob I/O routines can only read or overwrite existing
8230** blob content; they cannot change the size of a blob.
8231**
8232** This routine only works on a [BLOB handle] which has been created
8233** by a prior successful call to [sqlite3_blob_open()] and which has not
8234** been closed by [sqlite3_blob_close()]. Passing any other pointer in
8235** to this routine results in undefined and probably undesirable behavior.
8236*/
8237SQLITE_API int sqlite3_blob_bytes(sqlite3_blob *);
8238
8239/*
8240** CAPI3REF: Read Data From A BLOB Incrementally
8241** METHOD: sqlite3_blob
8242**
8243** ^(This function is used to read data from an open [BLOB handle] into a
8244** caller-supplied buffer. N bytes of data are copied into buffer Z
8245** from the open BLOB, starting at offset iOffset.)^
8246**
8247** ^If offset iOffset is less than N bytes from the end of the BLOB,
8248** [SQLITE_ERROR] is returned and no data is read. ^If N or iOffset is
8249** less than zero, [SQLITE_ERROR] is returned and no data is read.
8250** ^The size of the blob (and hence the maximum value of N+iOffset)
8251** can be determined using the [sqlite3_blob_bytes()] interface.
8252**
8253** ^An attempt to read from an expired [BLOB handle] fails with an
8254** error code of [SQLITE_ABORT].
8255**
8256** ^(On success, sqlite3_blob_read() returns SQLITE_OK.
8257** Otherwise, an [error code] or an [extended error code] is returned.)^
8258**
8259** This routine only works on a [BLOB handle] which has been created
8260** by a prior successful call to [sqlite3_blob_open()] and which has not
8261** been closed by [sqlite3_blob_close()]. Passing any other pointer in
8262** to this routine results in undefined and probably undesirable behavior.
8263**
8264** See also: [sqlite3_blob_write()].
8265*/
8266SQLITE_API int sqlite3_blob_read(sqlite3_blob *, void *Z, int N, int iOffset);
8267
8268/*
8269** CAPI3REF: Write Data Into A BLOB Incrementally
8270** METHOD: sqlite3_blob
8271**
8272** ^(This function is used to write data into an open [BLOB handle] from a
8273** caller-supplied buffer. N bytes of data are copied from the buffer Z
8274** into the open BLOB, starting at offset iOffset.)^
8275**
8276** ^(On success, sqlite3_blob_write() returns SQLITE_OK.
8277** Otherwise, an [error code] or an [extended error code] is returned.)^
8278** ^Unless SQLITE_MISUSE is returned, this function sets the
8279** [database connection] error code and message accessible via
8280** [sqlite3_errcode()] and [sqlite3_errmsg()] and related functions.
8281**
8282** ^If the [BLOB handle] passed as the first argument was not opened for
8283** writing (the flags parameter to [sqlite3_blob_open()] was zero),
8284** this function returns [SQLITE_READONLY].
8285**
8286** This function may only modify the contents of the BLOB; it is
8287** not possible to increase the size of a BLOB using this API.
8288** ^If offset iOffset is less than N bytes from the end of the BLOB,
8289** [SQLITE_ERROR] is returned and no data is written. The size of the
8290** BLOB (and hence the maximum value of N+iOffset) can be determined
8291** using the [sqlite3_blob_bytes()] interface. ^If N or iOffset are less
8292** than zero [SQLITE_ERROR] is returned and no data is written.
8293**
8294** ^An attempt to write to an expired [BLOB handle] fails with an
8295** error code of [SQLITE_ABORT]. ^Writes to the BLOB that occurred
8296** before the [BLOB handle] expired are not rolled back by the
8297** expiration of the handle, though of course those changes might
8298** have been overwritten by the statement that expired the BLOB handle
8299** or by other independent statements.
8300**
8301** This routine only works on a [BLOB handle] which has been created
8302** by a prior successful call to [sqlite3_blob_open()] and which has not
8303** been closed by [sqlite3_blob_close()]. Passing any other pointer in
8304** to this routine results in undefined and probably undesirable behavior.
8305**
8306** See also: [sqlite3_blob_read()].
8307*/
8308SQLITE_API int sqlite3_blob_write(sqlite3_blob *, const void *z, int n, int iOffset);
8309
8310/*
8311** CAPI3REF: Virtual File System Objects
8312**
8313** A virtual filesystem (VFS) is an [sqlite3_vfs] object
8314** that SQLite uses to interact
8315** with the underlying operating system. Most SQLite builds come with a
8316** single default VFS that is appropriate for the host computer.
8317** New VFSes can be registered and existing VFSes can be unregistered.
8318** The following interfaces are provided.
8319**
8320** ^The sqlite3_vfs_find() interface returns a pointer to a VFS given its name.
8321** ^Names are case sensitive.
8322** ^Names are zero-terminated UTF-8 strings.
8323** ^If there is no match, a NULL pointer is returned.
8324** ^If zVfsName is NULL then the default VFS is returned.
8325**
8326** ^New VFSes are registered with sqlite3_vfs_register().
8327** ^Each new VFS becomes the default VFS if the makeDflt flag is set.
8328** ^The same VFS can be registered multiple times without injury.
8329** ^To make an existing VFS into the default VFS, register it again
8330** with the makeDflt flag set. If two different VFSes with the
8331** same name are registered, the behavior is undefined. If a
8332** VFS is registered with a name that is NULL or an empty string,
8333** then the behavior is undefined.
8334**
8335** ^Unregister a VFS with the sqlite3_vfs_unregister() interface.
8336** ^(If the default VFS is unregistered, another VFS is chosen as
8337** the default. The choice for the new VFS is arbitrary.)^
8338*/
8339SQLITE_API sqlite3_vfs *sqlite3_vfs_find(const char *zVfsName);
8340SQLITE_API int sqlite3_vfs_register(sqlite3_vfs*, int makeDflt);
8341SQLITE_API int sqlite3_vfs_unregister(sqlite3_vfs*);
8342
8343/*
8344** CAPI3REF: Mutexes
8345**
8346** The SQLite core uses these routines for thread
8347** synchronization. Though they are intended for internal
8348** use by SQLite, code that links against SQLite is
8349** permitted to use any of these routines.
8350**
8351** The SQLite source code contains multiple implementations
8352** of these mutex routines. An appropriate implementation
8353** is selected automatically at compile-time. The following
8354** implementations are available in the SQLite core:
8355**
8356** <ul>
8357** <li> SQLITE_MUTEX_PTHREADS
8358** <li> SQLITE_MUTEX_W32
8359** <li> SQLITE_MUTEX_NOOP
8360** </ul>
8361**
8362** The SQLITE_MUTEX_NOOP implementation is a set of routines
8363** that does no real locking and is appropriate for use in
8364** a single-threaded application. The SQLITE_MUTEX_PTHREADS and
8365** SQLITE_MUTEX_W32 implementations are appropriate for use on Unix
8366** and Windows.
8367**
8368**
8369** ^The sqlite3_mutex_alloc() routine allocates a new
8370** mutex and returns a pointer to it. ^The sqlite3_mutex_alloc()
8371** routine returns NULL if it is unable to allocate the requested
8372** mutex. The argument to sqlite3_mutex_alloc() must be one of these
8373** integer constants:
8374**
8375** <ul>
8376** <li> SQLITE_MUTEX_FAST
8377** <li> SQLITE_MUTEX_RECURSIVE
8378** <li> SQLITE_MUTEX_STATIC_MAIN
8379** <li> SQLITE_MUTEX_STATIC_MEM
8380** <li> SQLITE_MUTEX_STATIC_OPEN
8381** <li> SQLITE_MUTEX_STATIC_PRNG
8382** <li> SQLITE_MUTEX_STATIC_LRU
8383** <li> SQLITE_MUTEX_STATIC_PMEM
8384** <li> SQLITE_MUTEX_STATIC_APP1
8385** <li> SQLITE_MUTEX_STATIC_APP2
8386** <li> SQLITE_MUTEX_STATIC_APP3
8387** <li> SQLITE_MUTEX_STATIC_VFS1
8388** <li> SQLITE_MUTEX_STATIC_VFS2
8389** <li> SQLITE_MUTEX_STATIC_VFS3
8390** </ul>
8391**
8392** ^The first two constants (SQLITE_MUTEX_FAST and SQLITE_MUTEX_RECURSIVE)
8393** cause sqlite3_mutex_alloc() to create
8394** a new mutex. ^The new mutex is recursive when SQLITE_MUTEX_RECURSIVE
8395** is used but not necessarily so when SQLITE_MUTEX_FAST is used.
8396** The mutex implementation does not need to make a distinction
8397** between SQLITE_MUTEX_RECURSIVE and SQLITE_MUTEX_FAST if it does
8398** not want to. SQLite will only request a recursive mutex in
8399** cases where it really needs one. If a faster non-recursive mutex
8400** implementation is available on the host platform, the mutex subsystem
8401** might return such a mutex in response to SQLITE_MUTEX_FAST.
8402**
8403** ^The other allowed parameters to sqlite3_mutex_alloc() (anything other
8404** than SQLITE_MUTEX_FAST and SQLITE_MUTEX_RECURSIVE) each return
8405** a pointer to a static preexisting mutex. ^Nine static mutexes are
8406** used by the current version of SQLite. Future versions of SQLite
8407** may add additional static mutexes. Static mutexes are for internal
8408** use by SQLite only. Applications that use SQLite mutexes should
8409** use only the dynamic mutexes returned by SQLITE_MUTEX_FAST or
8410** SQLITE_MUTEX_RECURSIVE.
8411**
8412** ^Note that if one of the dynamic mutex parameters (SQLITE_MUTEX_FAST
8413** or SQLITE_MUTEX_RECURSIVE) is used then sqlite3_mutex_alloc()
8414** returns a different mutex on every call. ^For the static
8415** mutex types, the same mutex is returned on every call that has
8416** the same type number.
8417**
8418** ^The sqlite3_mutex_free() routine deallocates a previously
8419** allocated dynamic mutex. Attempting to deallocate a static
8420** mutex results in undefined behavior.
8421**
8422** ^The sqlite3_mutex_enter() and sqlite3_mutex_try() routines attempt
8423** to enter a mutex. ^If another thread is already within the mutex,
8424** sqlite3_mutex_enter() will block and sqlite3_mutex_try() will return
8425** SQLITE_BUSY. ^The sqlite3_mutex_try() interface returns [SQLITE_OK]
8426** upon successful entry. ^(Mutexes created using
8427** SQLITE_MUTEX_RECURSIVE can be entered multiple times by the same thread.
8428** In such cases, the
8429** mutex must be exited an equal number of times before another thread
8430** can enter.)^ If the same thread tries to enter any mutex other
8431** than an SQLITE_MUTEX_RECURSIVE more than once, the behavior is undefined.
8432**
8433** ^(Some systems (for example, Windows 95) do not support the operation
8434** implemented by sqlite3_mutex_try(). On those systems, sqlite3_mutex_try()
8435** will always return SQLITE_BUSY. In most cases the SQLite core only uses
8436** sqlite3_mutex_try() as an optimization, so this is acceptable
8437** behavior. The exceptions are unix builds that set the
8438** SQLITE_ENABLE_SETLK_TIMEOUT build option. In that case a working
8439** sqlite3_mutex_try() is required.)^
8440**
8441** ^The sqlite3_mutex_leave() routine exits a mutex that was
8442** previously entered by the same thread. The behavior
8443** is undefined if the mutex is not currently entered by the
8444** calling thread or is not currently allocated.
8445**
8446** ^If the argument to sqlite3_mutex_enter(), sqlite3_mutex_try(),
8447** sqlite3_mutex_leave(), or sqlite3_mutex_free() is a NULL pointer,
8448** then any of the four routines behaves as a no-op.
8449**
8450** See also: [sqlite3_mutex_held()] and [sqlite3_mutex_notheld()].
8451*/
8452SQLITE_API sqlite3_mutex *sqlite3_mutex_alloc(int);
8453SQLITE_API void sqlite3_mutex_free(sqlite3_mutex*);
8454SQLITE_API void sqlite3_mutex_enter(sqlite3_mutex*);
8455SQLITE_API int sqlite3_mutex_try(sqlite3_mutex*);
8456SQLITE_API void sqlite3_mutex_leave(sqlite3_mutex*);
8457
8458/*
8459** CAPI3REF: Mutex Methods Object
8460**
8461** An instance of this structure defines the low-level routines
8462** used to allocate and use mutexes.
8463**
8464** Usually, the default mutex implementations provided by SQLite are
8465** sufficient, however the application has the option of substituting a custom
8466** implementation for specialized deployments or systems for which SQLite
8467** does not provide a suitable implementation. In this case, the application
8468** creates and populates an instance of this structure to pass
8469** to sqlite3_config() along with the [SQLITE_CONFIG_MUTEX] option.
8470** Additionally, an instance of this structure can be used as an
8471** output variable when querying the system for the current mutex
8472** implementation, using the [SQLITE_CONFIG_GETMUTEX] option.
8473**
8474** ^The xMutexInit method defined by this structure is invoked as
8475** part of system initialization by the sqlite3_initialize() function.
8476** ^The xMutexInit routine is called by SQLite exactly once for each
8477** effective call to [sqlite3_initialize()].
8478**
8479** ^The xMutexEnd method defined by this structure is invoked as
8480** part of system shutdown by the sqlite3_shutdown() function. The
8481** implementation of this method is expected to release all outstanding
8482** resources obtained by the mutex methods implementation, especially
8483** those obtained by the xMutexInit method. ^The xMutexEnd()
8484** interface is invoked exactly once for each call to [sqlite3_shutdown()].
8485**
8486** ^(The remaining seven methods defined by this structure (xMutexAlloc,
8487** xMutexFree, xMutexEnter, xMutexTry, xMutexLeave, xMutexHeld and
8488** xMutexNotheld) implement the following interfaces (respectively):
8489**
8490** <ul>
8491** <li> [sqlite3_mutex_alloc()] </li>
8492** <li> [sqlite3_mutex_free()] </li>
8493** <li> [sqlite3_mutex_enter()] </li>
8494** <li> [sqlite3_mutex_try()] </li>
8495** <li> [sqlite3_mutex_leave()] </li>
8496** <li> [sqlite3_mutex_held()] </li>
8497** <li> [sqlite3_mutex_notheld()] </li>
8498** </ul>)^
8499**
8500** The only difference is that the public sqlite3_XXX functions enumerated
8501** above silently ignore any invocations that pass a NULL pointer instead
8502** of a valid mutex handle. The implementations of the methods defined
8503** by this structure are not required to handle this case. The results
8504** of passing a NULL pointer instead of a valid mutex handle are undefined
8505** (i.e. it is acceptable to provide an implementation that segfaults if
8506** it is passed a NULL pointer).
8507**
8508** The xMutexInit() method must be threadsafe. It must be harmless to
8509** invoke xMutexInit() multiple times within the same process and without
8510** intervening calls to xMutexEnd(). Second and subsequent calls to
8511** xMutexInit() must be no-ops.
8512**
8513** xMutexInit() must not use SQLite memory allocation ([sqlite3_malloc()]
8514** and its associates). Similarly, xMutexAlloc() must not use SQLite memory
8515** allocation for a static mutex. ^However xMutexAlloc() may use SQLite
8516** memory allocation for a fast or recursive mutex.
8517**
8518** ^SQLite will invoke the xMutexEnd() method when [sqlite3_shutdown()] is
8519** called, but only if the prior call to xMutexInit returned SQLITE_OK.
8520** If xMutexInit fails in any way, it is expected to clean up after itself
8521** prior to returning.
8522*/
8523typedef struct sqlite3_mutex_methods sqlite3_mutex_methods;
8524struct sqlite3_mutex_methods {
8525 int (*xMutexInit)(void);
8526 int (*xMutexEnd)(void);
8527 sqlite3_mutex *(*xMutexAlloc)(int);
8528 void (*xMutexFree)(sqlite3_mutex *);
8529 void (*xMutexEnter)(sqlite3_mutex *);
8530 int (*xMutexTry)(sqlite3_mutex *);
8531 void (*xMutexLeave)(sqlite3_mutex *);
8532 int (*xMutexHeld)(sqlite3_mutex *);
8533 int (*xMutexNotheld)(sqlite3_mutex *);
8534};
8535
8536/*
8537** CAPI3REF: Mutex Verification Routines
8538**
8539** The sqlite3_mutex_held() and sqlite3_mutex_notheld() routines
8540** are intended for use inside assert() statements. The SQLite core
8541** never uses these routines except inside an assert() and applications
8542** are advised to follow the lead of the core. The SQLite core only
8543** provides implementations for these routines when it is compiled
8544** with the SQLITE_DEBUG flag. External mutex implementations
8545** are only required to provide these routines if SQLITE_DEBUG is
8546** defined and if NDEBUG is not defined.
8547**
8548** These routines should return true if the mutex in their argument
8549** is held or not held, respectively, by the calling thread.
8550**
8551** The implementation is not required to provide versions of these
8552** routines that actually work. If the implementation does not provide working
8553** versions of these routines, it should at least provide stubs that always
8554** return true so that one does not get spurious assertion failures.
8555**
8556** If the argument to sqlite3_mutex_held() is a NULL pointer then
8557** the routine should return 1. This seems counter-intuitive since
8558** clearly the mutex cannot be held if it does not exist. But
8559** the reason the mutex does not exist is because the build is not
8560** using mutexes. And we do not want the assert() containing the
8561** call to sqlite3_mutex_held() to fail, so a non-zero return is
8562** the appropriate thing to do. The sqlite3_mutex_notheld()
8563** interface should also return 1 when given a NULL pointer.
8564*/
8565#ifndef NDEBUG
8566SQLITE_API int sqlite3_mutex_held(sqlite3_mutex*);
8567SQLITE_API int sqlite3_mutex_notheld(sqlite3_mutex*);
8568#endif
8569
8570/*
8571** CAPI3REF: Mutex Types
8572**
8573** The [sqlite3_mutex_alloc()] interface takes a single argument
8574** which is one of these integer constants.
8575**
8576** The set of static mutexes may change from one SQLite release to the
8577** next. Applications that override the built-in mutex logic must be
8578** prepared to accommodate additional static mutexes.
8579*/
8580#define SQLITE_MUTEX_FAST 0
8581#define SQLITE_MUTEX_RECURSIVE 1
8582#define SQLITE_MUTEX_STATIC_MAIN 2
8583#define SQLITE_MUTEX_STATIC_MEM 3 /* sqlite3_malloc() */
8584#define SQLITE_MUTEX_STATIC_MEM2 4 /* NOT USED */
8585#define SQLITE_MUTEX_STATIC_OPEN 4 /* sqlite3BtreeOpen() */
8586#define SQLITE_MUTEX_STATIC_PRNG 5 /* sqlite3_randomness() */
8587#define SQLITE_MUTEX_STATIC_LRU 6 /* lru page list */
8588#define SQLITE_MUTEX_STATIC_LRU2 7 /* NOT USED */
8589#define SQLITE_MUTEX_STATIC_PMEM 7 /* sqlite3PageMalloc() */
8590#define SQLITE_MUTEX_STATIC_APP1 8 /* For use by application */
8591#define SQLITE_MUTEX_STATIC_APP2 9 /* For use by application */
8592#define SQLITE_MUTEX_STATIC_APP3 10 /* For use by application */
8593#define SQLITE_MUTEX_STATIC_VFS1 11 /* For use by built-in VFS */
8594#define SQLITE_MUTEX_STATIC_VFS2 12 /* For use by extension VFS */
8595#define SQLITE_MUTEX_STATIC_VFS3 13 /* For use by application VFS */
8596
8597/* Legacy compatibility: */
8598#define SQLITE_MUTEX_STATIC_MASTER 2
8599
8600
8601/*
8602** CAPI3REF: Retrieve the mutex for a database connection
8603** METHOD: sqlite3
8604**
8605** ^This interface returns a pointer to the [sqlite3_mutex] object that
8606** serializes access to the [database connection] given in the argument
8607** when the [threading mode] is Serialized.
8608** ^If the [threading mode] is Single-thread or Multi-thread then this
8609** routine returns a NULL pointer.
8610*/
8611SQLITE_API sqlite3_mutex *sqlite3_db_mutex(sqlite3*);
8612
8613/*
8614** CAPI3REF: Low-Level Control Of Database Files
8615** METHOD: sqlite3
8616** KEYWORDS: {file control}
8617**
8618** ^The [sqlite3_file_control()] interface makes a direct call to the
8619** xFileControl method for the [sqlite3_io_methods] object associated
8620** with a particular database identified by the second argument. ^The
8621** name of the database is "main" for the main database or "temp" for the
8622** TEMP database, or the name that appears after the AS keyword for
8623** databases that are added using the [ATTACH] SQL command.
8624** ^A NULL pointer can be used in place of "main" to refer to the
8625** main database file.
8626** ^The third and fourth parameters to this routine
8627** are passed directly through to the second and third parameters of
8628** the xFileControl method. ^The return value of the xFileControl
8629** method becomes the return value of this routine.
8630**
8631** A few opcodes for [sqlite3_file_control()] are handled directly
8632** by the SQLite core and never invoke the
8633** sqlite3_io_methods.xFileControl method.
8634** ^The [SQLITE_FCNTL_FILE_POINTER] value for the op parameter causes
8635** a pointer to the underlying [sqlite3_file] object to be written into
8636** the space pointed to by the 4th parameter. The
8637** [SQLITE_FCNTL_JOURNAL_POINTER] works similarly except that it returns
8638** the [sqlite3_file] object associated with the journal file instead of
8639** the main database. The [SQLITE_FCNTL_VFS_POINTER] opcode returns
8640** a pointer to the underlying [sqlite3_vfs] object for the file.
8641** The [SQLITE_FCNTL_DATA_VERSION] returns the data version counter
8642** from the pager.
8643**
8644** ^If the second parameter (zDbName) does not match the name of any
8645** open database file, then SQLITE_ERROR is returned. ^This error
8646** code is not remembered and will not be recalled by [sqlite3_errcode()]
8647** or [sqlite3_errmsg()]. The underlying xFileControl method might
8648** also return SQLITE_ERROR. There is no way to distinguish between
8649** an incorrect zDbName and an SQLITE_ERROR return from the underlying
8650** xFileControl method.
8651**
8652** See also: [file control opcodes]
8653*/
8654SQLITE_API int sqlite3_file_control(sqlite3*, const char *zDbName, int op, void*);
8655
8656/*
8657** CAPI3REF: Testing Interface
8658**
8659** ^The sqlite3_test_control() interface is used to read out internal
8660** state of SQLite and to inject faults into SQLite for testing
8661** purposes. ^The first parameter is an operation code that determines
8662** the number, meaning, and operation of all subsequent parameters.
8663**
8664** This interface is not for use by applications. It exists solely
8665** for verifying the correct operation of the SQLite library. Depending
8666** on how the SQLite library is compiled, this interface might not exist.
8667**
8668** The details of the operation codes, their meanings, the parameters
8669** they take, and what they do are all subject to change without notice.
8670** Unlike most of the SQLite API, this function is not guaranteed to
8671** operate consistently from one release to the next.
8672*/
8673SQLITE_API int sqlite3_test_control(int op, ...);
8674
8675/*
8676** CAPI3REF: Testing Interface Operation Codes
8677**
8678** These constants are the valid operation code parameters used
8679** as the first argument to [sqlite3_test_control()].
8680**
8681** These parameters and their meanings are subject to change
8682** without notice. These values are for testing purposes only.
8683** Applications should not use any of these parameters or the
8684** [sqlite3_test_control()] interface.
8685*/
8686#define SQLITE_TESTCTRL_FIRST 5
8687#define SQLITE_TESTCTRL_PRNG_SAVE 5
8688#define SQLITE_TESTCTRL_PRNG_RESTORE 6
8689#define SQLITE_TESTCTRL_PRNG_RESET 7 /* NOT USED */
8690#define SQLITE_TESTCTRL_FK_NO_ACTION 7
8691#define SQLITE_TESTCTRL_BITVEC_TEST 8
8692#define SQLITE_TESTCTRL_FAULT_INSTALL 9
8693#define SQLITE_TESTCTRL_BENIGN_MALLOC_HOOKS 10
8694#define SQLITE_TESTCTRL_PENDING_BYTE 11
8695#define SQLITE_TESTCTRL_ASSERT 12
8696#define SQLITE_TESTCTRL_ALWAYS 13
8697#define SQLITE_TESTCTRL_RESERVE 14 /* NOT USED */
8698#define SQLITE_TESTCTRL_JSON_SELFCHECK 14
8699#define SQLITE_TESTCTRL_OPTIMIZATIONS 15
8700#define SQLITE_TESTCTRL_ISKEYWORD 16 /* NOT USED */
8701#define SQLITE_TESTCTRL_GETOPT 16
8702#define SQLITE_TESTCTRL_SCRATCHMALLOC 17 /* NOT USED */
8703#define SQLITE_TESTCTRL_INTERNAL_FUNCTIONS 17
8704#define SQLITE_TESTCTRL_LOCALTIME_FAULT 18
8705#define SQLITE_TESTCTRL_EXPLAIN_STMT 19 /* NOT USED */
8706#define SQLITE_TESTCTRL_ONCE_RESET_THRESHOLD 19
8707#define SQLITE_TESTCTRL_NEVER_CORRUPT 20
8708#define SQLITE_TESTCTRL_VDBE_COVERAGE 21
8709#define SQLITE_TESTCTRL_BYTEORDER 22
8710#define SQLITE_TESTCTRL_ISINIT 23
8711#define SQLITE_TESTCTRL_SORTER_MMAP 24
8712#define SQLITE_TESTCTRL_IMPOSTER 25
8713#define SQLITE_TESTCTRL_PARSER_COVERAGE 26
8714#define SQLITE_TESTCTRL_RESULT_INTREAL 27
8715#define SQLITE_TESTCTRL_PRNG_SEED 28
8716#define SQLITE_TESTCTRL_EXTRA_SCHEMA_CHECKS 29
8717#define SQLITE_TESTCTRL_SEEK_COUNT 30
8718#define SQLITE_TESTCTRL_TRACEFLAGS 31
8719#define SQLITE_TESTCTRL_TUNE 32
8720#define SQLITE_TESTCTRL_LOGEST 33
8721#define SQLITE_TESTCTRL_USELONGDOUBLE 34 /* NOT USED */
8722#define SQLITE_TESTCTRL_ATOF 34
8723#define SQLITE_TESTCTRL_LAST 34 /* Largest TESTCTRL */
8724
8725/*
8726** CAPI3REF: SQL Keyword Checking
8727**
8728** These routines provide access to the set of SQL language keywords
8729** recognized by SQLite. Applications can use these routines to determine
8730** whether or not a specific identifier needs to be escaped (for example,
8731** by enclosing in double-quotes) so as not to confuse the parser.
8732**
8733** The sqlite3_keyword_count() interface returns the number of distinct
8734** keywords understood by SQLite.
8735**
8736** The sqlite3_keyword_name(N,Z,L) interface finds the 0-based N-th keyword and
8737** makes *Z point to that keyword expressed as UTF8 and writes the number
8738** of bytes in the keyword into *L. The string that *Z points to is not
8739** zero-terminated. The sqlite3_keyword_name(N,Z,L) routine returns
8740** SQLITE_OK if N is within bounds and SQLITE_ERROR if not. If either Z
8741** or L are NULL or invalid pointers then calls to
8742** sqlite3_keyword_name(N,Z,L) result in undefined behavior.
8743**
8744** The sqlite3_keyword_check(Z,L) interface checks to see whether or not
8745** the L-byte UTF8 identifier that Z points to is a keyword, returning non-zero
8746** if it is and zero if not.
8747**
8748** The parser used by SQLite is forgiving. It is often possible to use
8749** a keyword as an identifier as long as such use does not result in a
8750** parsing ambiguity. For example, the statement
8751** "CREATE TABLE BEGIN(REPLACE,PRAGMA,END);" is accepted by SQLite, and
8752** creates a new table named "BEGIN" with three columns named
8753** "REPLACE", "PRAGMA", and "END". Nevertheless, best practice is to avoid
8754** using keywords as identifiers. Common techniques used to avoid keyword
8755** name collisions include:
8756** <ul>
8757** <li> Put all identifier names inside double-quotes. This is the official
8758** SQL way to escape identifier names.
8759** <li> Put identifier names inside [...]. This is not standard SQL,
8760** but it is what SQL Server does and so lots of programmers use this
8761** technique.
8762** <li> Begin every identifier with the letter "Z" as no SQL keywords start
8763** with "Z".
8764** <li> Include a digit somewhere in every identifier name.
8765** </ul>
8766**
8767** Note that the number of keywords understood by SQLite can depend on
8768** compile-time options. For example, "VACUUM" is not a keyword if
8769** SQLite is compiled with the [-DSQLITE_OMIT_VACUUM] option. Also,
8770** new keywords may be added to future releases of SQLite.
8771*/
8772SQLITE_API int sqlite3_keyword_count(void);
8773SQLITE_API int sqlite3_keyword_name(int,const char**,int*);
8774SQLITE_API int sqlite3_keyword_check(const char*,int);
8775
8776/*
8777** CAPI3REF: Dynamic String Object
8778** KEYWORDS: {dynamic string}
8779**
8780** An instance of the sqlite3_str object contains a dynamically-sized
8781** string under construction.
8782**
8783** The lifecycle of an sqlite3_str object is as follows:
8784** <ol>
8785** <li> ^The sqlite3_str object is created using [sqlite3_str_new()].
8786** <li> ^Text is appended to the sqlite3_str object using various
8787** methods, such as [sqlite3_str_appendf()].
8788** <li> ^The sqlite3_str object is destroyed and the string it created
8789** is returned using the [sqlite3_str_finish()] interface.
8790** </ol>
8791*/
8792typedef struct sqlite3_str sqlite3_str;
8793
8794/*
8795** CAPI3REF: Create A New Dynamic String Object
8796** CONSTRUCTOR: sqlite3_str
8797**
8798** ^The [sqlite3_str_new(D)] interface allocates and initializes
8799** a new [sqlite3_str] object. To avoid memory leaks, the object returned by
8800** [sqlite3_str_new()] must be freed by a subsequent call to
8801** [sqlite3_str_finish(X)].
8802**
8803** ^The [sqlite3_str_new(D)] interface always returns a pointer to a
8804** valid [sqlite3_str] object, though in the event of an out-of-memory
8805** error the returned object might be a special singleton that will
8806** silently reject new text, always return SQLITE_NOMEM from
8807** [sqlite3_str_errcode()], always return 0 for
8808** [sqlite3_str_length()], and always return NULL from
8809** [sqlite3_str_finish(X)]. It is always safe to use the value
8810** returned by [sqlite3_str_new(D)] as the sqlite3_str parameter
8811** to any of the other [sqlite3_str] methods.
8812**
8813** The D parameter to [sqlite3_str_new(D)] may be NULL. If the
8814** D parameter in [sqlite3_str_new(D)] is not NULL, then the maximum
8815** length of the string contained in the [sqlite3_str] object will be
8816** the value set for [sqlite3_limit](D,[SQLITE_LIMIT_LENGTH]) instead
8817** of [SQLITE_MAX_LENGTH].
8818*/
8819SQLITE_API sqlite3_str *sqlite3_str_new(sqlite3*);
8820
8821/*
8822** CAPI3REF: Finalize A Dynamic String
8823** DESTRUCTOR: sqlite3_str
8824**
8825** ^The [sqlite3_str_finish(X)] interface destroys the sqlite3_str object X
8826** and returns a pointer to a memory buffer obtained from [sqlite3_malloc64()]
8827** that contains the constructed string. The calling application should
8828** pass the returned value to [sqlite3_free()] to avoid a memory leak.
8829** ^The [sqlite3_str_finish(X)] interface may return a NULL pointer if any
8830** errors were encountered during construction of the string. ^The
8831** [sqlite3_str_finish(X)] interface might also return a NULL pointer if the
8832** string in [sqlite3_str] object X is zero bytes long.
8833**
8834** ^The [sqlite3_str_free(X)] interface destroys both the sqlite3_str object
8835** X and the string content it contains. Calling sqlite3_str_free(X) is
8836** the equivalent of calling [sqlite3_free](sqlite3_str_finish(X)).
8837*/
8838SQLITE_API char *sqlite3_str_finish(sqlite3_str*);
8839SQLITE_API void sqlite3_str_free(sqlite3_str*);
8840
8841/*
8842** CAPI3REF: Add Content To A Dynamic String
8843** METHOD: sqlite3_str
8844**
8845** These interfaces add or remove content to an sqlite3_str object
8846** previously obtained from [sqlite3_str_new()].
8847**
8848** ^The [sqlite3_str_appendf(X,F,...)] and
8849** [sqlite3_str_vappendf(X,F,V)] interfaces uses the [built-in printf]
8850** functionality of SQLite to append formatted text onto the end of
8851** [sqlite3_str] object X.
8852**
8853** ^The [sqlite3_str_append(X,S,N)] method appends exactly N bytes from string S
8854** onto the end of the [sqlite3_str] object X. N must be non-negative.
8855** S must contain at least N non-zero bytes of content. To append a
8856** zero-terminated string in its entirety, use the [sqlite3_str_appendall()]
8857** method instead.
8858**
8859** ^The [sqlite3_str_appendall(X,S)] method appends the complete content of
8860** zero-terminated string S onto the end of [sqlite3_str] object X.
8861**
8862** ^The [sqlite3_str_appendchar(X,N,C)] method appends N copies of the
8863** single-byte character C onto the end of [sqlite3_str] object X.
8864** ^This method can be used, for example, to add whitespace indentation.
8865**
8866** ^The [sqlite3_str_reset(X)] method resets the string under construction
8867** inside [sqlite3_str] object X back to zero bytes in length.
8868**
8869** ^The [sqlite3_str_truncate(X,N)] method changes the length of the string
8870** under construction to be N bytes or less. This routine is a no-op if
8871** N is negative or if the string is already N bytes or smaller in size.
8872**
8873** These methods do not return a result code. ^If an error occurs, that fact
8874** is recorded in the [sqlite3_str] object and can be recovered by a
8875** subsequent call to [sqlite3_str_errcode(X)].
8876*/
8877SQLITE_API void sqlite3_str_appendf(sqlite3_str*, const char *zFormat, ...);
8878SQLITE_API void sqlite3_str_vappendf(sqlite3_str*, const char *zFormat, va_list);
8879SQLITE_API void sqlite3_str_append(sqlite3_str*, const char *zIn, int N);
8880SQLITE_API void sqlite3_str_appendall(sqlite3_str*, const char *zIn);
8881SQLITE_API void sqlite3_str_appendchar(sqlite3_str*, int N, char C);
8882SQLITE_API void sqlite3_str_reset(sqlite3_str*);
8883SQLITE_API void sqlite3_str_truncate(sqlite3_str*,int N);
8884
8885/*
8886** CAPI3REF: Status Of A Dynamic String
8887** METHOD: sqlite3_str
8888**
8889** These interfaces return the current status of an [sqlite3_str] object.
8890**
8891** ^If any prior errors have occurred while constructing the dynamic string
8892** in sqlite3_str X, then the [sqlite3_str_errcode(X)] method will return
8893** an appropriate error code. ^The [sqlite3_str_errcode(X)] method returns
8894** [SQLITE_NOMEM] following any out-of-memory error, or
8895** [SQLITE_TOOBIG] if the size of the dynamic string exceeds
8896** [SQLITE_MAX_LENGTH], or [SQLITE_OK] if there have been no errors.
8897**
8898** ^The [sqlite3_str_length(X)] method returns the current length, in bytes,
8899** of the dynamic string under construction in [sqlite3_str] object X.
8900** ^The length returned by [sqlite3_str_length(X)] does not include the
8901** zero-termination byte.
8902**
8903** ^The [sqlite3_str_value(X)] method returns a pointer to the current
8904** content of the dynamic string under construction in X. The value
8905** returned by [sqlite3_str_value(X)] is managed by the sqlite3_str object X
8906** and might be freed or altered by any subsequent method on the same
8907** [sqlite3_str] object. Applications must not use the pointer returned by
8908** [sqlite3_str_value(X)] after any subsequent method call on the same
8909** object. ^Applications may change the content of the string returned
8910** by [sqlite3_str_value(X)] as long as they do not write into any bytes
8911** outside the range of 0 to [sqlite3_str_length(X)] and do not read or
8912** write any byte after any subsequent sqlite3_str method call.
8913*/
8914SQLITE_API int sqlite3_str_errcode(sqlite3_str*);
8915SQLITE_API int sqlite3_str_length(sqlite3_str*);
8916SQLITE_API char *sqlite3_str_value(sqlite3_str*);
8917
8918/*
8919** CAPI3REF: SQLite Runtime Status
8920**
8921** ^These interfaces are used to retrieve runtime status information
8922** about the performance of SQLite, and optionally to reset various
8923** highwater marks. ^The first argument is an integer code for
8924** the specific parameter to measure. ^(Recognized integer codes
8925** are of the form [status parameters | SQLITE_STATUS_...].)^
8926** ^The current value of the parameter is returned into *pCurrent.
8927** ^The highest recorded value is returned in *pHighwater. ^If the
8928** resetFlag is true, then the highest record value is reset after
8929** *pHighwater is written. ^(Some parameters do not record the highest
8930** value. For those parameters
8931** nothing is written into *pHighwater and the resetFlag is ignored.)^
8932** ^(Other parameters record only the highwater mark and not the current
8933** value. For these latter parameters nothing is written into *pCurrent.)^
8934**
8935** ^The sqlite3_status() and sqlite3_status64() routines return
8936** SQLITE_OK on success and a non-zero [error code] on failure.
8937**
8938** If either the current value or the highwater mark is too large to
8939** be represented by a 32-bit integer, then the values returned by
8940** sqlite3_status() are undefined.
8941**
8942** See also: [sqlite3_db_status()]
8943*/
8944SQLITE_API int sqlite3_status(int op, int *pCurrent, int *pHighwater, int resetFlag);
8945SQLITE_API int sqlite3_status64(
8946 int op,
8947 sqlite3_int64 *pCurrent,
8948 sqlite3_int64 *pHighwater,
8949 int resetFlag
8950);
8951
8952
8953/*
8954** CAPI3REF: Status Parameters
8955** KEYWORDS: {status parameters}
8956**
8957** These integer constants designate various run-time status parameters
8958** that can be returned by [sqlite3_status()].
8959**
8960** <dl>
8961** [[SQLITE_STATUS_MEMORY_USED]] ^(<dt>SQLITE_STATUS_MEMORY_USED</dt>
8962** <dd>This parameter is the current amount of memory checked out
8963** using [sqlite3_malloc()], either directly or indirectly. The
8964** figure includes calls made to [sqlite3_malloc()] by the application
8965** and internal memory usage by the SQLite library. Auxiliary page-cache
8966** memory controlled by [SQLITE_CONFIG_PAGECACHE] is not included in
8967** this parameter. The amount returned is the sum of the allocation
8968** sizes as reported by the xSize method in [sqlite3_mem_methods].</dd>)^
8969**
8970** [[SQLITE_STATUS_MALLOC_SIZE]] ^(<dt>SQLITE_STATUS_MALLOC_SIZE</dt>
8971** <dd>This parameter records the largest memory allocation request
8972** handed to [sqlite3_malloc()] or [sqlite3_realloc()] (or their
8973** internal equivalents). Only the value returned in the
8974** *pHighwater parameter to [sqlite3_status()] is of interest.
8975** The value written into the *pCurrent parameter is undefined.</dd>)^
8976**
8977** [[SQLITE_STATUS_MALLOC_COUNT]] ^(<dt>SQLITE_STATUS_MALLOC_COUNT</dt>
8978** <dd>This parameter records the number of separate memory allocations
8979** currently checked out.</dd>)^
8980**
8981** [[SQLITE_STATUS_PAGECACHE_USED]] ^(<dt>SQLITE_STATUS_PAGECACHE_USED</dt>
8982** <dd>This parameter returns the number of pages used out of the
8983** [pagecache memory allocator] that was configured using
8984** [SQLITE_CONFIG_PAGECACHE]. The
8985** value returned is in pages, not in bytes.</dd>)^
8986**
8987** [[SQLITE_STATUS_PAGECACHE_OVERFLOW]]
8988** ^(<dt>SQLITE_STATUS_PAGECACHE_OVERFLOW</dt>
8989** <dd>This parameter returns the number of bytes of page cache
8990** allocation which could not be satisfied by the [SQLITE_CONFIG_PAGECACHE]
8991** buffer and where forced to overflow to [sqlite3_malloc()]. The
8992** returned value includes allocations that overflowed because they
8993** were too large (they were larger than the "sz" parameter to
8994** [SQLITE_CONFIG_PAGECACHE]) and allocations that overflowed because
8995** no space was left in the page cache.</dd>)^
8996**
8997** [[SQLITE_STATUS_PAGECACHE_SIZE]] ^(<dt>SQLITE_STATUS_PAGECACHE_SIZE</dt>
8998** <dd>This parameter records the largest memory allocation request
8999** handed to the [pagecache memory allocator]. Only the value returned in the
9000** *pHighwater parameter to [sqlite3_status()] is of interest.
9001** The value written into the *pCurrent parameter is undefined.</dd>)^
9002**
9003** [[SQLITE_STATUS_SCRATCH_USED]] <dt>SQLITE_STATUS_SCRATCH_USED</dt>
9004** <dd>No longer used.</dd>
9005**
9006** [[SQLITE_STATUS_SCRATCH_OVERFLOW]] ^(<dt>SQLITE_STATUS_SCRATCH_OVERFLOW</dt>
9007** <dd>No longer used.</dd>
9008**
9009** [[SQLITE_STATUS_SCRATCH_SIZE]] <dt>SQLITE_STATUS_SCRATCH_SIZE</dt>
9010** <dd>No longer used.</dd>
9011**
9012** [[SQLITE_STATUS_PARSER_STACK]] ^(<dt>SQLITE_STATUS_PARSER_STACK</dt>
9013** <dd>The *pHighwater parameter records the deepest parser stack.
9014** The *pCurrent value is undefined. The *pHighwater value is only
9015** meaningful if SQLite is compiled with [YYTRACKMAXSTACKDEPTH].</dd>)^
9016** </dl>
9017**
9018** New status parameters may be added from time to time.
9019*/
9020#define SQLITE_STATUS_MEMORY_USED 0
9021#define SQLITE_STATUS_PAGECACHE_USED 1
9022#define SQLITE_STATUS_PAGECACHE_OVERFLOW 2
9023#define SQLITE_STATUS_SCRATCH_USED 3 /* NOT USED */
9024#define SQLITE_STATUS_SCRATCH_OVERFLOW 4 /* NOT USED */
9025#define SQLITE_STATUS_MALLOC_SIZE 5
9026#define SQLITE_STATUS_PARSER_STACK 6
9027#define SQLITE_STATUS_PAGECACHE_SIZE 7
9028#define SQLITE_STATUS_SCRATCH_SIZE 8 /* NOT USED */
9029#define SQLITE_STATUS_MALLOC_COUNT 9
9030
9031/*
9032** CAPI3REF: Database Connection Status
9033** METHOD: sqlite3
9034**
9035** ^This interface is used to retrieve runtime status information
9036** about a single [database connection]. ^The first argument is the
9037** database connection object to be interrogated. ^The second argument
9038** is an integer constant, taken from the set of
9039** [SQLITE_DBSTATUS options], that
9040** determines the parameter to interrogate. The set of
9041** [SQLITE_DBSTATUS options] is likely
9042** to grow in future releases of SQLite.
9043**
9044** ^The current value of the requested parameter is written into *pCur
9045** and the highest instantaneous value is written into *pHiwtr. ^If
9046** the resetFlg is true, then the highest instantaneous value is
9047** reset back down to the current value.
9048**
9049** ^The sqlite3_db_status() routine returns SQLITE_OK on success and a
9050** non-zero [error code] on failure.
9051**
9052** ^The sqlite3_db_status64(D,O,C,H,R) routine works exactly the same
9053** way as sqlite3_db_status(D,O,C,H,R) routine except that the C and H
9054** parameters are pointer to 64-bit integers (type: sqlite3_int64) instead
9055** of pointers to 32-bit integers, which allows larger status values
9056** to be returned. If a status value exceeds 2,147,483,647 then
9057** sqlite3_db_status() will truncate the value whereas sqlite3_db_status64()
9058** will return the full value.
9059**
9060** See also: [sqlite3_status()] and [sqlite3_stmt_status()].
9061*/
9062SQLITE_API int sqlite3_db_status(sqlite3*, int op, int *pCur, int *pHiwtr, int resetFlg);
9063SQLITE_API int sqlite3_db_status64(sqlite3*,int,sqlite3_int64*,sqlite3_int64*,int);
9064
9065/*
9066** CAPI3REF: Status Parameters for database connections
9067** KEYWORDS: {SQLITE_DBSTATUS options}
9068**
9069** These constants are the available integer "verbs" that can be passed as
9070** the second argument to the [sqlite3_db_status()] interface.
9071**
9072** New verbs may be added in future releases of SQLite. Existing verbs
9073** might be discontinued. Applications should check the return code from
9074** [sqlite3_db_status()] to make sure that the call worked.
9075** The [sqlite3_db_status()] interface will return a non-zero error code
9076** if a discontinued or unsupported verb is invoked.
9077**
9078** <dl>
9079** [[SQLITE_DBSTATUS_LOOKASIDE_USED]] ^(<dt>SQLITE_DBSTATUS_LOOKASIDE_USED</dt>
9080** <dd>This parameter returns the number of lookaside memory slots currently
9081** checked out.</dd>)^
9082**
9083** [[SQLITE_DBSTATUS_LOOKASIDE_HIT]] ^(<dt>SQLITE_DBSTATUS_LOOKASIDE_HIT</dt>
9084** <dd>This parameter returns the number of malloc attempts that were
9085** satisfied using lookaside memory. Only the high-water value is meaningful;
9086** the current value is always zero.</dd>)^
9087**
9088** [[SQLITE_DBSTATUS_LOOKASIDE_MISS_SIZE]]
9089** ^(<dt>SQLITE_DBSTATUS_LOOKASIDE_MISS_SIZE</dt>
9090** <dd>This parameter returns the number of malloc attempts that might have
9091** been satisfied using lookaside memory but failed due to the amount of
9092** memory requested being larger than the lookaside slot size.
9093** Only the high-water value is meaningful;
9094** the current value is always zero.</dd>)^
9095**
9096** [[SQLITE_DBSTATUS_LOOKASIDE_MISS_FULL]]
9097** ^(<dt>SQLITE_DBSTATUS_LOOKASIDE_MISS_FULL</dt>
9098** <dd>This parameter returns the number of malloc attempts that might have
9099** been satisfied using lookaside memory but failed due to all lookaside
9100** memory already being in use.
9101** Only the high-water value is meaningful;
9102** the current value is always zero.</dd>)^
9103**
9104** [[SQLITE_DBSTATUS_CACHE_USED]] ^(<dt>SQLITE_DBSTATUS_CACHE_USED</dt>
9105** <dd>This parameter returns the approximate number of bytes of heap
9106** memory used by all pager caches associated with the database connection.)^
9107** ^The highwater mark associated with SQLITE_DBSTATUS_CACHE_USED is always 0.
9108** </dd>
9109**
9110** [[SQLITE_DBSTATUS_CACHE_USED_SHARED]]
9111** ^(<dt>SQLITE_DBSTATUS_CACHE_USED_SHARED</dt>
9112** <dd>This parameter is similar to DBSTATUS_CACHE_USED, except that if a
9113** pager cache is shared between two or more connections the bytes of heap
9114** memory used by that pager cache is divided evenly between the attached
9115** connections.)^ In other words, if none of the pager caches associated
9116** with the database connection are shared, this request returns the same
9117** value as DBSTATUS_CACHE_USED. Or, if one or more of the pager caches are
9118** shared, the value returned by this call will be smaller than that returned
9119** by DBSTATUS_CACHE_USED. ^The highwater mark associated with
9120** SQLITE_DBSTATUS_CACHE_USED_SHARED is always 0.</dd>
9121**
9122** [[SQLITE_DBSTATUS_SCHEMA_USED]] ^(<dt>SQLITE_DBSTATUS_SCHEMA_USED</dt>
9123** <dd>This parameter returns the approximate number of bytes of heap
9124** memory used to store the schema for all databases associated
9125** with the connection - main, temp, and any [ATTACH]-ed databases.)^
9126** ^The full amount of memory used by the schemas is reported, even if the
9127** schema memory is shared with other database connections due to
9128** [shared cache mode] being enabled.
9129** ^The highwater mark associated with SQLITE_DBSTATUS_SCHEMA_USED is always 0.
9130** </dd>
9131**
9132** [[SQLITE_DBSTATUS_STMT_USED]] ^(<dt>SQLITE_DBSTATUS_STMT_USED</dt>
9133** <dd>This parameter returns the approximate number of bytes of heap
9134** and lookaside memory used by all prepared statements associated with
9135** the database connection.)^
9136** ^The highwater mark associated with SQLITE_DBSTATUS_STMT_USED is always 0.
9137** </dd>
9138**
9139** [[SQLITE_DBSTATUS_CACHE_HIT]] ^(<dt>SQLITE_DBSTATUS_CACHE_HIT</dt>
9140** <dd>This parameter returns the number of pager cache hits that have
9141** occurred.)^ ^The highwater mark associated with SQLITE_DBSTATUS_CACHE_HIT
9142** is always 0.
9143** </dd>
9144**
9145** [[SQLITE_DBSTATUS_CACHE_MISS]] ^(<dt>SQLITE_DBSTATUS_CACHE_MISS</dt>
9146** <dd>This parameter returns the number of pager cache misses that have
9147** occurred.)^ ^The highwater mark associated with SQLITE_DBSTATUS_CACHE_MISS
9148** is always 0.
9149** </dd>
9150**
9151** [[SQLITE_DBSTATUS_CACHE_WRITE]] ^(<dt>SQLITE_DBSTATUS_CACHE_WRITE</dt>
9152** <dd>This parameter returns the number of dirty cache entries that have
9153** been written to disk. Specifically, the number of pages written to the
9154** wal file in wal mode databases, or the number of pages written to the
9155** database file in rollback mode databases. Any pages written as part of
9156** transaction rollback or database recovery operations are not included.
9157** If an IO or other error occurs while writing a page to disk, the effect
9158** on subsequent SQLITE_DBSTATUS_CACHE_WRITE requests is undefined.)^ ^The
9159** highwater mark associated with SQLITE_DBSTATUS_CACHE_WRITE is always 0.
9160** <p>
9161** ^(There is overlap between the quantities measured by this parameter
9162** (SQLITE_DBSTATUS_CACHE_WRITE) and SQLITE_DBSTATUS_TEMPBUF_SPILL.
9163** Resetting one will reduce the other.)^
9164** </dd>
9165**
9166** [[SQLITE_DBSTATUS_CACHE_SPILL]] ^(<dt>SQLITE_DBSTATUS_CACHE_SPILL</dt>
9167** <dd>This parameter returns the number of dirty cache entries that have
9168** been written to disk in the middle of a transaction due to the page
9169** cache overflowing. Transactions are more efficient if they are written
9170** to disk all at once. When pages spill mid-transaction, that introduces
9171** additional overhead. This parameter can be used to help identify
9172** inefficiencies that can be resolved by increasing the cache size.
9173** </dd>
9174**
9175** [[SQLITE_DBSTATUS_DEFERRED_FKS]] ^(<dt>SQLITE_DBSTATUS_DEFERRED_FKS</dt>
9176** <dd>This parameter returns zero for the current value if and only if
9177** all foreign key constraints (deferred or immediate) have been
9178** resolved.)^ ^The highwater mark is always 0.
9179**
9180** [[SQLITE_DBSTATUS_TEMPBUF_SPILL] ^(<dt>SQLITE_DBSTATUS_TEMPBUF_SPILL</dt>
9181** <dd>^(This parameter returns the number of bytes written to temporary
9182** files on disk that could have been kept in memory had sufficient memory
9183** been available. This value includes writes to intermediate tables that
9184** are part of complex queries, external sorts that spill to disk, and
9185** writes to TEMP tables.)^
9186** ^The highwater mark is always 0.
9187** <p>
9188** ^(There is overlap between the quantities measured by this parameter
9189** (SQLITE_DBSTATUS_TEMPBUF_SPILL) and SQLITE_DBSTATUS_CACHE_WRITE.
9190** Resetting one will reduce the other.)^
9191** </dd>
9192** </dl>
9193*/
9194#define SQLITE_DBSTATUS_LOOKASIDE_USED 0
9195#define SQLITE_DBSTATUS_CACHE_USED 1
9196#define SQLITE_DBSTATUS_SCHEMA_USED 2
9197#define SQLITE_DBSTATUS_STMT_USED 3
9198#define SQLITE_DBSTATUS_LOOKASIDE_HIT 4
9199#define SQLITE_DBSTATUS_LOOKASIDE_MISS_SIZE 5
9200#define SQLITE_DBSTATUS_LOOKASIDE_MISS_FULL 6
9201#define SQLITE_DBSTATUS_CACHE_HIT 7
9202#define SQLITE_DBSTATUS_CACHE_MISS 8
9203#define SQLITE_DBSTATUS_CACHE_WRITE 9
9204#define SQLITE_DBSTATUS_DEFERRED_FKS 10
9205#define SQLITE_DBSTATUS_CACHE_USED_SHARED 11
9206#define SQLITE_DBSTATUS_CACHE_SPILL 12
9207#define SQLITE_DBSTATUS_TEMPBUF_SPILL 13
9208#define SQLITE_DBSTATUS_MAX 13 /* Largest defined DBSTATUS */
9209
9210
9211/*
9212** CAPI3REF: Prepared Statement Status
9213** METHOD: sqlite3_stmt
9214**
9215** ^(Each prepared statement maintains various
9216** [SQLITE_STMTSTATUS counters] that measure the number
9217** of times it has performed specific operations.)^ These counters can
9218** be used to monitor the performance characteristics of the prepared
9219** statements. For example, if the number of table steps greatly exceeds
9220** the number of table searches or result rows, that would tend to indicate
9221** that the prepared statement is using a full table scan rather than
9222** an index.
9223**
9224** ^(This interface is used to retrieve and reset counter values from
9225** a [prepared statement]. The first argument is the prepared statement
9226** object to be interrogated. The second argument
9227** is an integer code for a specific [SQLITE_STMTSTATUS counter]
9228** to be interrogated.)^
9229** ^The current value of the requested counter is returned.
9230** ^If the resetFlg is true, then the counter is reset to zero after this
9231** interface call returns.
9232**
9233** See also: [sqlite3_status()] and [sqlite3_db_status()].
9234*/
9235SQLITE_API int sqlite3_stmt_status(sqlite3_stmt*, int op,int resetFlg);
9236
9237/*
9238** CAPI3REF: Status Parameters for prepared statements
9239** KEYWORDS: {SQLITE_STMTSTATUS counter} {SQLITE_STMTSTATUS counters}
9240**
9241** These preprocessor macros define integer codes that name counter
9242** values associated with the [sqlite3_stmt_status()] interface.
9243** The meanings of the various counters are as follows:
9244**
9245** <dl>
9246** [[SQLITE_STMTSTATUS_FULLSCAN_STEP]] <dt>SQLITE_STMTSTATUS_FULLSCAN_STEP</dt>
9247** <dd>^This is the number of times that SQLite has stepped forward in
9248** a table as part of a full table scan. Large numbers for this counter
9249** may indicate opportunities for performance improvement through
9250** careful use of indices.</dd>
9251**
9252** [[SQLITE_STMTSTATUS_SORT]] <dt>SQLITE_STMTSTATUS_SORT</dt>
9253** <dd>^This is the number of sort operations that have occurred.
9254** A non-zero value in this counter may indicate an opportunity to
9255** improve performance through careful use of indices.</dd>
9256**
9257** [[SQLITE_STMTSTATUS_AUTOINDEX]] <dt>SQLITE_STMTSTATUS_AUTOINDEX</dt>
9258** <dd>^This is the number of rows inserted into transient indices that
9259** were created automatically in order to help joins run faster.
9260** A non-zero value in this counter may indicate an opportunity to
9261** improve performance by adding permanent indices that do not
9262** need to be reinitialized each time the statement is run.</dd>
9263**
9264** [[SQLITE_STMTSTATUS_VM_STEP]] <dt>SQLITE_STMTSTATUS_VM_STEP</dt>
9265** <dd>^This is the number of virtual machine operations executed
9266** by the prepared statement if that number is less than or equal
9267** to 2147483647. The number of virtual machine operations can be
9268** used as a proxy for the total work done by the prepared statement.
9269** If the number of virtual machine operations exceeds 2147483647
9270** then the value returned by this statement status code is undefined.</dd>
9271**
9272** [[SQLITE_STMTSTATUS_REPREPARE]] <dt>SQLITE_STMTSTATUS_REPREPARE</dt>
9273** <dd>^This is the number of times that the prepare statement has been
9274** automatically regenerated due to schema changes or changes to
9275** [bound parameters] that might affect the query plan.</dd>
9276**
9277** [[SQLITE_STMTSTATUS_RUN]] <dt>SQLITE_STMTSTATUS_RUN</dt>
9278** <dd>^This is the number of times that the prepared statement has
9279** been run. A single "run" for the purposes of this counter is one
9280** or more calls to [sqlite3_step()] followed by a call to [sqlite3_reset()].
9281** The counter is incremented on the first [sqlite3_step()] call of each
9282** cycle.</dd>
9283**
9284** [[SQLITE_STMTSTATUS_FILTER_MISS]]
9285** [[SQLITE_STMTSTATUS_FILTER HIT]]
9286** <dt>SQLITE_STMTSTATUS_FILTER_HIT<br>
9287** SQLITE_STMTSTATUS_FILTER_MISS</dt>
9288** <dd>^SQLITE_STMTSTATUS_FILTER_HIT is the number of times that a join
9289** step was bypassed because a Bloom filter returned not-found. The
9290** corresponding SQLITE_STMTSTATUS_FILTER_MISS value is the number of
9291** times that the Bloom filter returned a find, and thus the join step
9292** had to be processed as normal.</dd>
9293**
9294** [[SQLITE_STMTSTATUS_MEMUSED]] <dt>SQLITE_STMTSTATUS_MEMUSED</dt>
9295** <dd>^This is the approximate number of bytes of heap memory
9296** used to store the prepared statement. ^This value is not actually
9297** a counter, and so the resetFlg parameter to sqlite3_stmt_status()
9298** is ignored when the opcode is SQLITE_STMTSTATUS_MEMUSED.
9299** </dd>
9300** </dl>
9301*/
9302#define SQLITE_STMTSTATUS_FULLSCAN_STEP 1
9303#define SQLITE_STMTSTATUS_SORT 2
9304#define SQLITE_STMTSTATUS_AUTOINDEX 3
9305#define SQLITE_STMTSTATUS_VM_STEP 4
9306#define SQLITE_STMTSTATUS_REPREPARE 5
9307#define SQLITE_STMTSTATUS_RUN 6
9308#define SQLITE_STMTSTATUS_FILTER_MISS 7
9309#define SQLITE_STMTSTATUS_FILTER_HIT 8
9310#define SQLITE_STMTSTATUS_MEMUSED 99
9311
9312/*
9313** CAPI3REF: Custom Page Cache Object
9314**
9315** The sqlite3_pcache type is opaque. It is implemented by
9316** the pluggable module. The SQLite core has no knowledge of
9317** its size or internal structure and never deals with the
9318** sqlite3_pcache object except by holding and passing pointers
9319** to the object.
9320**
9321** See [sqlite3_pcache_methods2] for additional information.
9322*/
9323typedef struct sqlite3_pcache sqlite3_pcache;
9324
9325/*
9326** CAPI3REF: Custom Page Cache Object
9327**
9328** The sqlite3_pcache_page object represents a single page in the
9329** page cache. The page cache will allocate instances of this
9330** object. Various methods of the page cache use pointers to instances
9331** of this object as parameters or as their return value.
9332**
9333** See [sqlite3_pcache_methods2] for additional information.
9334*/
9335typedef struct sqlite3_pcache_page sqlite3_pcache_page;
9336struct sqlite3_pcache_page {
9337 void *pBuf; /* The content of the page */
9338 void *pExtra; /* Extra information associated with the page */
9339};
9340
9341/*
9342** CAPI3REF: Application Defined Page Cache.
9343** KEYWORDS: {page cache}
9344**
9345** ^(The [sqlite3_config]([SQLITE_CONFIG_PCACHE2], ...) interface can
9346** register an alternative page cache implementation by passing in an
9347** instance of the sqlite3_pcache_methods2 structure.)^
9348** In many applications, most of the heap memory allocated by
9349** SQLite is used for the page cache.
9350** By implementing a
9351** custom page cache using this API, an application can better control
9352** the amount of memory consumed by SQLite, the way in which
9353** that memory is allocated and released, and the policies used to
9354** determine exactly which parts of a database file are cached and for
9355** how long.
9356**
9357** The alternative page cache mechanism is an
9358** extreme measure that is only needed by the most demanding applications.
9359** The built-in page cache is recommended for most uses.
9360**
9361** ^(The contents of the sqlite3_pcache_methods2 structure are copied to an
9362** internal buffer by SQLite within the call to [sqlite3_config]. Hence
9363** the application may discard the parameter after the call to
9364** [sqlite3_config()] returns.)^
9365**
9366** [[the xInit() page cache method]]
9367** ^(The xInit() method is called once for each effective
9368** call to [sqlite3_initialize()])^
9369** (usually only once during the lifetime of the process). ^(The xInit()
9370** method is passed a copy of the sqlite3_pcache_methods2.pArg value.)^
9371** The intent of the xInit() method is to set up global data structures
9372** required by the custom page cache implementation.
9373** ^(If the xInit() method is NULL, then the
9374** built-in default page cache is used instead of the application defined
9375** page cache.)^
9376**
9377** [[the xShutdown() page cache method]]
9378** ^The xShutdown() method is called by [sqlite3_shutdown()].
9379** It can be used to clean up
9380** any outstanding resources before process shutdown, if required.
9381** ^The xShutdown() method may be NULL.
9382**
9383** ^SQLite automatically serializes calls to the xInit method,
9384** so the xInit method need not be threadsafe. ^The
9385** xShutdown method is only called from [sqlite3_shutdown()] so it does
9386** not need to be threadsafe either. All other methods must be threadsafe
9387** in multithreaded applications.
9388**
9389** ^SQLite will never invoke xInit() more than once without an intervening
9390** call to xShutdown().
9391**
9392** [[the xCreate() page cache methods]]
9393** ^SQLite invokes the xCreate() method to construct a new cache instance.
9394** SQLite will typically create one cache instance for each open database file,
9395** though this is not guaranteed. ^The
9396** first parameter, szPage, is the size in bytes of the pages that must
9397** be allocated by the cache. ^szPage will always be a power of two. ^The
9398** second parameter szExtra is a number of bytes of extra storage
9399** associated with each page cache entry. ^The szExtra parameter will be
9400** a number less than 250. SQLite will use the
9401** extra szExtra bytes on each page to store metadata about the underlying
9402** database page on disk. The value passed into szExtra depends
9403** on the SQLite version, the target platform, and how SQLite was compiled.
9404** ^The third argument to xCreate(), bPurgeable, is true if the cache being
9405** created will be used to cache database pages of a file stored on disk, or
9406** false if it is used for an in-memory database. The cache implementation
9407** does not have to do anything special based upon the value of bPurgeable;
9408** it is purely advisory. ^On a cache where bPurgeable is false, SQLite will
9409** never invoke xUnpin() except to deliberately delete a page.
9410** ^In other words, calls to xUnpin() on a cache with bPurgeable set to
9411** false will always have the "discard" flag set to true.
9412** ^Hence, a cache created with bPurgeable set to false will
9413** never contain any unpinned pages.
9414**
9415** [[the xCachesize() page cache method]]
9416** ^(The xCachesize() method may be called at any time by SQLite to set the
9417** suggested maximum cache-size (number of pages stored) for the cache
9418** instance passed as the first argument. This is the value configured using
9419** the SQLite "[PRAGMA cache_size]" command.)^ As with the bPurgeable
9420** parameter, the implementation is not required to do anything with this
9421** value; it is advisory only.
9422**
9423** [[the xPagecount() page cache methods]]
9424** The xPagecount() method must return the number of pages currently
9425** stored in the cache, both pinned and unpinned.
9426**
9427** [[the xFetch() page cache methods]]
9428** The xFetch() method locates a page in the cache and returns a pointer to
9429** an sqlite3_pcache_page object associated with that page, or a NULL pointer.
9430** The pBuf element of the returned sqlite3_pcache_page object will be a
9431** pointer to a buffer of szPage bytes used to store the content of a
9432** single database page. The pExtra element of sqlite3_pcache_page will be
9433** a pointer to the szExtra bytes of extra storage that SQLite has requested
9434** for each entry in the page cache.
9435**
9436** The page to be fetched is determined by the key. ^The minimum key value
9437** is 1. After it has been retrieved using xFetch, the page is considered
9438** to be "pinned".
9439**
9440** If the requested page is already in the page cache, then the page cache
9441** implementation must return a pointer to the page buffer with its content
9442** intact. If the requested page is not already in the cache, then the
9443** cache implementation should use the value of the createFlag
9444** parameter to help it determine what action to take:
9445**
9446** <table border=1 width=85% align=center>
9447** <tr><th> createFlag <th> Behavior when page is not already in cache
9448** <tr><td> 0 <td> Do not allocate a new page. Return NULL.
9449** <tr><td> 1 <td> Allocate a new page if it is easy and convenient to do so.
9450** Otherwise return NULL.
9451** <tr><td> 2 <td> Make every effort to allocate a new page. Only return
9452** NULL if allocating a new page is effectively impossible.
9453** </table>
9454**
9455** ^(SQLite will normally invoke xFetch() with a createFlag of 0 or 1. SQLite
9456** will only use a createFlag of 2 after a prior call with a createFlag of 1
9457** failed.)^ In between the xFetch() calls, SQLite may
9458** attempt to unpin one or more cache pages by spilling the content of
9459** pinned pages to disk and synching the operating system disk cache.
9460**
9461** [[the xUnpin() page cache method]]
9462** ^xUnpin() is called by SQLite with a pointer to a currently pinned page
9463** as its second argument. If the third parameter, discard, is non-zero,
9464** then the page must be evicted from the cache.
9465** ^If the discard parameter is
9466** zero, then the page may be discarded or retained at the discretion of the
9467** page cache implementation. ^The page cache implementation
9468** may choose to evict unpinned pages at any time.
9469**
9470** The cache must not perform any reference counting. A single
9471** call to xUnpin() unpins the page regardless of the number of prior calls
9472** to xFetch().
9473**
9474** [[the xRekey() page cache methods]]
9475** The xRekey() method is used to change the key value associated with the
9476** page passed as the second argument. If the cache
9477** previously contains an entry associated with newKey, it must be
9478** discarded. ^Any prior cache entry associated with newKey is guaranteed not
9479** to be pinned.
9480**
9481** When SQLite calls the xTruncate() method, the cache must discard all
9482** existing cache entries with page numbers (keys) greater than or equal
9483** to the value of the iLimit parameter passed to xTruncate(). If any
9484** of these pages are pinned, they become implicitly unpinned, meaning that
9485** they can be safely discarded.
9486**
9487** [[the xDestroy() page cache method]]
9488** ^The xDestroy() method is used to delete a cache allocated by xCreate().
9489** All resources associated with the specified cache should be freed. ^After
9490** calling the xDestroy() method, SQLite considers the [sqlite3_pcache*]
9491** handle invalid, and will not use it with any other sqlite3_pcache_methods2
9492** functions.
9493**
9494** [[the xShrink() page cache method]]
9495** ^SQLite invokes the xShrink() method when it wants the page cache to
9496** free up as much of heap memory as possible. The page cache implementation
9497** is not obligated to free any memory, but well-behaved implementations should
9498** do their best.
9499*/
9500typedef struct sqlite3_pcache_methods2 sqlite3_pcache_methods2;
9501struct sqlite3_pcache_methods2 {
9502 int iVersion;
9503 void *pArg;
9504 int (*xInit)(void*);
9505 void (*xShutdown)(void*);
9506 sqlite3_pcache *(*xCreate)(int szPage, int szExtra, int bPurgeable);
9507 void (*xCachesize)(sqlite3_pcache*, int nCachesize);
9508 int (*xPagecount)(sqlite3_pcache*);
9509 sqlite3_pcache_page *(*xFetch)(sqlite3_pcache*, unsigned key, int createFlag);
9510 void (*xUnpin)(sqlite3_pcache*, sqlite3_pcache_page*, int discard);
9511 void (*xRekey)(sqlite3_pcache*, sqlite3_pcache_page*,
9512 unsigned oldKey, unsigned newKey);
9513 void (*xTruncate)(sqlite3_pcache*, unsigned iLimit);
9514 void (*xDestroy)(sqlite3_pcache*);
9515 void (*xShrink)(sqlite3_pcache*);
9516};
9517
9518/*
9519** This is the obsolete pcache_methods object that has now been replaced
9520** by sqlite3_pcache_methods2. This object is not used by SQLite. It is
9521** retained in the header file for backwards compatibility only.
9522*/
9523typedef struct sqlite3_pcache_methods sqlite3_pcache_methods;
9524struct sqlite3_pcache_methods {
9525 void *pArg;
9526 int (*xInit)(void*);
9527 void (*xShutdown)(void*);
9528 sqlite3_pcache *(*xCreate)(int szPage, int bPurgeable);
9529 void (*xCachesize)(sqlite3_pcache*, int nCachesize);
9530 int (*xPagecount)(sqlite3_pcache*);
9531 void *(*xFetch)(sqlite3_pcache*, unsigned key, int createFlag);
9532 void (*xUnpin)(sqlite3_pcache*, void*, int discard);
9533 void (*xRekey)(sqlite3_pcache*, void*, unsigned oldKey, unsigned newKey);
9534 void (*xTruncate)(sqlite3_pcache*, unsigned iLimit);
9535 void (*xDestroy)(sqlite3_pcache*);
9536};
9537
9538
9539/*
9540** CAPI3REF: Online Backup Object
9541**
9542** The sqlite3_backup object records state information about an ongoing
9543** online backup operation. ^The sqlite3_backup object is created by
9544** a call to [sqlite3_backup_init()] and is destroyed by a call to
9545** [sqlite3_backup_finish()].
9546**
9547** See Also: [Using the SQLite Online Backup API]
9548*/
9549typedef struct sqlite3_backup sqlite3_backup;
9550
9551/*
9552** CAPI3REF: Online Backup API.
9553**
9554** The backup API copies the content of one database into another.
9555** It is useful either for creating backups of databases or
9556** for copying in-memory databases to or from persistent files.
9557**
9558** See Also: [Using the SQLite Online Backup API]
9559**
9560** ^SQLite holds a write transaction open on the destination database file
9561** for the duration of the backup operation.
9562** ^The source database is read-locked only while it is being read;
9563** it is not locked continuously for the entire backup operation.
9564** ^Thus, the backup may be performed on a live source database without
9565** preventing other database connections from
9566** reading or writing to the source database while the backup is underway.
9567**
9568** ^(To perform a backup operation:
9569** <ol>
9570** <li><b>sqlite3_backup_init()</b> is called once to initialize the
9571** backup,
9572** <li><b>sqlite3_backup_step()</b> is called one or more times to transfer
9573** the data between the two databases, and finally
9574** <li><b>sqlite3_backup_finish()</b> is called to release all resources
9575** associated with the backup operation.
9576** </ol>)^
9577** There should be exactly one call to sqlite3_backup_finish() for each
9578** successful call to sqlite3_backup_init().
9579**
9580** [[sqlite3_backup_init()]] <b>sqlite3_backup_init()</b>
9581**
9582** ^The D and N arguments to sqlite3_backup_init(D,N,S,M) are the
9583** [database connection] associated with the destination database
9584** and the database name, respectively.
9585** ^The database name is "main" for the main database, "temp" for the
9586** temporary database, or the name specified after the AS keyword in
9587** an [ATTACH] statement for an attached database.
9588** ^The S and M arguments passed to
9589** sqlite3_backup_init(D,N,S,M) identify the [database connection]
9590** and database name of the source database, respectively.
9591** ^The source and destination [database connections] (parameters S and D)
9592** must be different or else sqlite3_backup_init(D,N,S,M) will fail with
9593** an error.
9594**
9595** ^A call to sqlite3_backup_init() will fail, returning NULL, if
9596** there is already a read or read-write transaction open on the
9597** destination database.
9598**
9599** ^If an error occurs within sqlite3_backup_init(D,N,S,M), then NULL is
9600** returned and an error code and error message are stored in the
9601** destination [database connection] D.
9602** ^The error code and message for the failed call to sqlite3_backup_init()
9603** can be retrieved using the [sqlite3_errcode()], [sqlite3_errmsg()], and/or
9604** [sqlite3_errmsg16()] functions.
9605** ^A successful call to sqlite3_backup_init() returns a pointer to an
9606** [sqlite3_backup] object.
9607** ^The [sqlite3_backup] object may be used with the sqlite3_backup_step() and
9608** sqlite3_backup_finish() functions to perform the specified backup
9609** operation.
9610**
9611** [[sqlite3_backup_step()]] <b>sqlite3_backup_step()</b>
9612**
9613** ^Function sqlite3_backup_step(B,N) will copy up to N pages between
9614** the source and destination databases specified by [sqlite3_backup] object B.
9615** ^If N is negative, all remaining source pages are copied.
9616** ^If sqlite3_backup_step(B,N) successfully copies N pages and there
9617** are still more pages to be copied, then the function returns [SQLITE_OK].
9618** ^If sqlite3_backup_step(B,N) successfully finishes copying all pages
9619** from source to destination, then it returns [SQLITE_DONE].
9620** ^If an error occurs while running sqlite3_backup_step(B,N),
9621** then an [error code] is returned. ^As well as [SQLITE_OK] and
9622** [SQLITE_DONE], a call to sqlite3_backup_step() may return [SQLITE_READONLY],
9623** [SQLITE_NOMEM], [SQLITE_BUSY], [SQLITE_LOCKED], or an
9624** [SQLITE_IOERR_ACCESS | SQLITE_IOERR_XXX] extended error code.
9625**
9626** ^(The sqlite3_backup_step() might return [SQLITE_READONLY] if
9627** <ol>
9628** <li> the destination database was opened read-only, or
9629** <li> the destination database is using write-ahead-log journaling
9630** and the destination and source page sizes differ, or
9631** <li> the destination database is an in-memory database and the
9632** destination and source page sizes differ.
9633** </ol>)^
9634**
9635** ^If sqlite3_backup_step() cannot obtain a required file-system lock, then
9636** the [sqlite3_busy_handler | busy-handler function]
9637** is invoked (if one is specified). ^If the
9638** busy-handler returns non-zero before the lock is available, then
9639** [SQLITE_BUSY] is returned to the caller. ^In this case the call to
9640** sqlite3_backup_step() can be retried later. ^If the source
9641** [database connection]
9642** is being used to write to the source database when sqlite3_backup_step()
9643** is called, then [SQLITE_LOCKED] is returned immediately. ^Again, in this
9644** case the call to sqlite3_backup_step() can be retried later on. ^(If
9645** [SQLITE_IOERR_ACCESS | SQLITE_IOERR_XXX], [SQLITE_NOMEM], or
9646** [SQLITE_READONLY] is returned, then
9647** there is no point in retrying the call to sqlite3_backup_step(). These
9648** errors are considered fatal.)^ The application must accept
9649** that the backup operation has failed and pass the backup operation handle
9650** to the sqlite3_backup_finish() to release associated resources.
9651**
9652** ^The first call to sqlite3_backup_step() obtains an exclusive lock
9653** on the destination file. ^The exclusive lock is not released until either
9654** sqlite3_backup_finish() is called or the backup operation is complete
9655** and sqlite3_backup_step() returns [SQLITE_DONE]. ^Every call to
9656** sqlite3_backup_step() obtains a [shared lock] on the source database that
9657** lasts for the duration of the sqlite3_backup_step() call.
9658** ^Because the source database is not locked between calls to
9659** sqlite3_backup_step(), the source database may be modified mid-way
9660** through the backup process. ^If the source database is modified by an
9661** external process or via a database connection other than the one being
9662** used by the backup operation, then the backup will be automatically
9663** restarted by the next call to sqlite3_backup_step(). ^If the source
9664** database is modified by using the same database connection as is used
9665** by the backup operation, then the backup database is automatically
9666** updated at the same time.
9667**
9668** [[sqlite3_backup_finish()]] <b>sqlite3_backup_finish()</b>
9669**
9670** When sqlite3_backup_step() has returned [SQLITE_DONE], or when the
9671** application wishes to abandon the backup operation, the application
9672** should destroy the [sqlite3_backup] by passing it to sqlite3_backup_finish().
9673** ^The sqlite3_backup_finish() interfaces releases all
9674** resources associated with the [sqlite3_backup] object.
9675** ^If sqlite3_backup_step() has not yet returned [SQLITE_DONE], then any
9676** active write-transaction on the destination database is rolled back.
9677** The [sqlite3_backup] object is invalid
9678** and may not be used following a call to sqlite3_backup_finish().
9679**
9680** ^The value returned by sqlite3_backup_finish is [SQLITE_OK] if no
9681** sqlite3_backup_step() errors occurred, regardless of whether or not
9682** sqlite3_backup_step() completed.
9683** ^If an out-of-memory condition or IO error occurred during any prior
9684** sqlite3_backup_step() call on the same [sqlite3_backup] object, then
9685** sqlite3_backup_finish() returns the corresponding [error code].
9686**
9687** ^A return of [SQLITE_BUSY] or [SQLITE_LOCKED] from sqlite3_backup_step()
9688** is not a permanent error and does not affect the return value of
9689** sqlite3_backup_finish().
9690**
9691** [[sqlite3_backup_remaining()]] [[sqlite3_backup_pagecount()]]
9692** <b>sqlite3_backup_remaining() and sqlite3_backup_pagecount()</b>
9693**
9694** ^The sqlite3_backup_remaining() routine returns the number of pages still
9695** to be backed up at the conclusion of the most recent sqlite3_backup_step().
9696** ^The sqlite3_backup_pagecount() routine returns the total number of pages
9697** in the source database at the conclusion of the most recent
9698** sqlite3_backup_step().
9699** ^(The values returned by these functions are only updated by
9700** sqlite3_backup_step(). If the source database is modified in a way that
9701** changes the size of the source database or the number of pages remaining,
9702** those changes are not reflected in the output of sqlite3_backup_pagecount()
9703** and sqlite3_backup_remaining() until after the next
9704** sqlite3_backup_step().)^
9705**
9706** <b>Concurrent Usage of Database Handles</b>
9707**
9708** ^The source [database connection] may be used by the application for other
9709** purposes while a backup operation is underway or being initialized.
9710** ^If SQLite is compiled and configured to support threadsafe database
9711** connections, then the source database connection may be used concurrently
9712** from within other threads.
9713**
9714** However, the application must guarantee that the destination
9715** [database connection] is not passed to any other API (by any thread) after
9716** sqlite3_backup_init() is called and before the corresponding call to
9717** sqlite3_backup_finish(). SQLite does not currently check to see
9718** if the application incorrectly accesses the destination [database connection]
9719** and so no error code is reported, but the operations may malfunction
9720** nevertheless. Use of the destination database connection while a
9721** backup is in progress might also cause a mutex deadlock.
9722**
9723** If running in [shared cache mode], the application must
9724** guarantee that the shared cache used by the destination database
9725** is not accessed while the backup is running. In practice this means
9726** that the application must guarantee that the disk file being
9727** backed up to is not accessed by any connection within the process,
9728** not just the specific connection that was passed to sqlite3_backup_init().
9729**
9730** The [sqlite3_backup] object itself is partially threadsafe. Multiple
9731** threads may safely make multiple concurrent calls to sqlite3_backup_step().
9732** However, the sqlite3_backup_remaining() and sqlite3_backup_pagecount()
9733** APIs are not strictly speaking threadsafe. If they are invoked at the
9734** same time as another thread is invoking sqlite3_backup_step() it is
9735** possible that they return invalid values.
9736**
9737** <b>Alternatives To Using The Backup API</b>
9738**
9739** Other techniques for safely creating a consistent backup of an SQLite
9740** database include:
9741**
9742** <ul>
9743** <li> The [VACUUM INTO] command.
9744** <li> The [sqlite3_rsync] utility program.
9745** </ul>
9746*/
9747SQLITE_API sqlite3_backup *sqlite3_backup_init(
9748 sqlite3 *pDest, /* Destination database handle */
9749 const char *zDestName, /* Destination database name */
9750 sqlite3 *pSource, /* Source database handle */
9751 const char *zSourceName /* Source database name */
9752);
9753SQLITE_API int sqlite3_backup_step(sqlite3_backup *p, int nPage);
9754SQLITE_API int sqlite3_backup_finish(sqlite3_backup *p);
9755SQLITE_API int sqlite3_backup_remaining(sqlite3_backup *p);
9756SQLITE_API int sqlite3_backup_pagecount(sqlite3_backup *p);
9757
9758/*
9759** CAPI3REF: Unlock Notification
9760** METHOD: sqlite3
9761**
9762** ^When running in shared-cache mode, a database operation may fail with
9763** an [SQLITE_LOCKED] error if the required locks on the shared-cache or
9764** individual tables within the shared-cache cannot be obtained. See
9765** [SQLite Shared-Cache Mode] for a description of shared-cache locking.
9766** ^This API may be used to register a callback that SQLite will invoke
9767** when the connection currently holding the required lock relinquishes it.
9768** ^This API is only available if the library was compiled with the
9769** [SQLITE_ENABLE_UNLOCK_NOTIFY] C-preprocessor symbol defined.
9770**
9771** See Also: [Using the SQLite Unlock Notification Feature].
9772**
9773** ^Shared-cache locks are released when a database connection concludes
9774** its current transaction, either by committing it or rolling it back.
9775**
9776** ^When a connection (known as the blocked connection) fails to obtain a
9777** shared-cache lock and SQLITE_LOCKED is returned to the caller, the
9778** identity of the database connection (the blocking connection) that
9779** has locked the required resource is stored internally. ^After an
9780** application receives an SQLITE_LOCKED error, it may call the
9781** sqlite3_unlock_notify() method with the blocked connection handle as
9782** the first argument to register for a callback that will be invoked
9783** when the blocking connection's current transaction is concluded. ^The
9784** callback is invoked from within the [sqlite3_step] or [sqlite3_close]
9785** call that concludes the blocking connection's transaction.
9786**
9787** ^(If sqlite3_unlock_notify() is called in a multi-threaded application,
9788** there is a chance that the blocking connection will have already
9789** concluded its transaction by the time sqlite3_unlock_notify() is invoked.
9790** If this happens, then the specified callback is invoked immediately,
9791** from within the call to sqlite3_unlock_notify().)^
9792**
9793** ^If the blocked connection is attempting to obtain a write-lock on a
9794** shared-cache table, and more than one other connection currently holds
9795** a read-lock on the same table, then SQLite arbitrarily selects one of
9796** the other connections to use as the blocking connection.
9797**
9798** ^(There may be at most one unlock-notify callback registered by a
9799** blocked connection. If sqlite3_unlock_notify() is called when the
9800** blocked connection already has a registered unlock-notify callback,
9801** then the new callback replaces the old.)^ ^If sqlite3_unlock_notify() is
9802** called with a NULL pointer as its second argument, then any existing
9803** unlock-notify callback is canceled. ^The blocked connection's
9804** unlock-notify callback may also be canceled by closing the blocked
9805** connection using [sqlite3_close()].
9806**
9807** The unlock-notify callback is not reentrant. If an application invokes
9808** any sqlite3_xxx API functions from within an unlock-notify callback, a
9809** crash or deadlock may be the result.
9810**
9811** ^Unless deadlock is detected (see below), sqlite3_unlock_notify() always
9812** returns SQLITE_OK.
9813**
9814** <b>Callback Invocation Details</b>
9815**
9816** When an unlock-notify callback is registered, the application provides a
9817** single void* pointer that is passed to the callback when it is invoked.
9818** However, the signature of the callback function allows SQLite to pass
9819** it an array of void* context pointers. The first argument passed to
9820** an unlock-notify callback is a pointer to an array of void* pointers,
9821** and the second is the number of entries in the array.
9822**
9823** When a blocking connection's transaction is concluded, there may be
9824** more than one blocked connection that has registered for an unlock-notify
9825** callback. ^If two or more such blocked connections have specified the
9826** same callback function, then instead of invoking the callback function
9827** multiple times, it is invoked once with the set of void* context pointers
9828** specified by the blocked connections bundled together into an array.
9829** This gives the application an opportunity to prioritize any actions
9830** related to the set of unblocked database connections.
9831**
9832** <b>Deadlock Detection</b>
9833**
9834** Assuming that after registering for an unlock-notify callback a
9835** database waits for the callback to be issued before taking any further
9836** action (a reasonable assumption), then using this API may cause the
9837** application to deadlock. For example, if connection X is waiting for
9838** connection Y's transaction to be concluded, and similarly connection
9839** Y is waiting on connection X's transaction, then neither connection
9840** will proceed and the system may remain deadlocked indefinitely.
9841**
9842** To avoid this scenario, the sqlite3_unlock_notify() performs deadlock
9843** detection. ^If a given call to sqlite3_unlock_notify() would put the
9844** system in a deadlocked state, then SQLITE_LOCKED is returned and no
9845** unlock-notify callback is registered. The system is said to be in
9846** a deadlocked state if connection A has registered for an unlock-notify
9847** callback on the conclusion of connection B's transaction, and connection
9848** B has itself registered for an unlock-notify callback when connection
9849** A's transaction is concluded. ^Indirect deadlock is also detected, so
9850** the system is also considered to be deadlocked if connection B has
9851** registered for an unlock-notify callback on the conclusion of connection
9852** C's transaction, where connection C is waiting on connection A. ^Any
9853** number of levels of indirection are allowed.
9854**
9855** <b>The "DROP TABLE" Exception</b>
9856**
9857** When a call to [sqlite3_step()] returns SQLITE_LOCKED, it is almost
9858** always appropriate to call sqlite3_unlock_notify(). There is however,
9859** one exception. When executing a "DROP TABLE" or "DROP INDEX" statement,
9860** SQLite checks if there are any currently executing SELECT statements
9861** that belong to the same connection. If there are, SQLITE_LOCKED is
9862** returned. In this case there is no "blocking connection", so invoking
9863** sqlite3_unlock_notify() results in the unlock-notify callback being
9864** invoked immediately. If the application then re-attempts the "DROP TABLE"
9865** or "DROP INDEX" query, an infinite loop might be the result.
9866**
9867** One way around this problem is to check the extended error code returned
9868** by an sqlite3_step() call. ^(If there is a blocking connection, then the
9869** extended error code is set to SQLITE_LOCKED_SHAREDCACHE. Otherwise, in
9870** the special "DROP TABLE/INDEX" case, the extended error code is just
9871** SQLITE_LOCKED.)^
9872*/
9873SQLITE_API int sqlite3_unlock_notify(
9874 sqlite3 *pBlocked, /* Waiting connection */
9875 void (*xNotify)(void **apArg, int nArg), /* Callback function to invoke */
9876 void *pNotifyArg /* Argument to pass to xNotify */
9877);
9878
9879
9880/*
9881** CAPI3REF: String Comparison
9882**
9883** ^The [sqlite3_stricmp()] and [sqlite3_strnicmp()] APIs allow applications
9884** and extensions to compare the contents of two buffers containing UTF-8
9885** strings in a case-independent fashion, using the same definition of "case
9886** independence" that SQLite uses internally when comparing identifiers.
9887*/
9888SQLITE_API int sqlite3_stricmp(const char *, const char *);
9889SQLITE_API int sqlite3_strnicmp(const char *, const char *, int);
9890
9891/*
9892** CAPI3REF: String Globbing
9893*
9894** ^The [sqlite3_strglob(P,X)] interface returns zero if and only if
9895** string X matches the [GLOB] pattern P.
9896** ^The definition of [GLOB] pattern matching used in
9897** [sqlite3_strglob(P,X)] is the same as for the "X GLOB P" operator in the
9898** SQL dialect understood by SQLite. ^The [sqlite3_strglob(P,X)] function
9899** is case sensitive.
9900**
9901** Note that this routine returns zero on a match and non-zero if the strings
9902** do not match, the same as [sqlite3_stricmp()] and [sqlite3_strnicmp()].
9903**
9904** See also: [sqlite3_strlike()].
9905*/
9906SQLITE_API int sqlite3_strglob(const char *zGlob, const char *zStr);
9907
9908/*
9909** CAPI3REF: String LIKE Matching
9910*
9911** ^The [sqlite3_strlike(P,X,E)] interface returns zero if and only if
9912** string X matches the [LIKE] pattern P with escape character E.
9913** ^The definition of [LIKE] pattern matching used in
9914** [sqlite3_strlike(P,X,E)] is the same as for the "X LIKE P ESCAPE E"
9915** operator in the SQL dialect understood by SQLite. ^For "X LIKE P" without
9916** the ESCAPE clause, set the E parameter of [sqlite3_strlike(P,X,E)] to 0.
9917** ^As with the LIKE operator, the [sqlite3_strlike(P,X,E)] function is case
9918** insensitive - equivalent upper and lower case ASCII characters match
9919** one another.
9920**
9921** ^The [sqlite3_strlike(P,X,E)] function matches Unicode characters, though
9922** only ASCII characters are case folded.
9923**
9924** Note that this routine returns zero on a match and non-zero if the strings
9925** do not match, the same as [sqlite3_stricmp()] and [sqlite3_strnicmp()].
9926**
9927** See also: [sqlite3_strglob()].
9928*/
9929SQLITE_API int sqlite3_strlike(const char *zGlob, const char *zStr, unsigned int cEsc);
9930
9931/*
9932** CAPI3REF: Error Logging Interface
9933**
9934** ^The [sqlite3_log()] interface writes a message into the [error log]
9935** established by the [SQLITE_CONFIG_LOG] option to [sqlite3_config()].
9936** ^If logging is enabled, the zFormat string and subsequent arguments are
9937** used with [sqlite3_snprintf()] to generate the final output string.
9938**
9939** The sqlite3_log() interface is intended for use by extensions such as
9940** virtual tables, collating functions, and SQL functions. While there is
9941** nothing to prevent an application from calling sqlite3_log(), doing so
9942** is considered bad form.
9943**
9944** The zFormat string must not be NULL.
9945**
9946** To avoid deadlocks and other threading problems, the sqlite3_log() routine
9947** will not use dynamically allocated memory. The log message is stored in
9948** a fixed-length buffer on the stack. If the log message is longer than
9949** a few hundred characters, it will be truncated to the length of the
9950** buffer.
9951*/
9952SQLITE_API void sqlite3_log(int iErrCode, const char *zFormat, ...);
9953
9954/*
9955** CAPI3REF: Write-Ahead Log Commit Hook
9956** METHOD: sqlite3
9957**
9958** ^The [sqlite3_wal_hook()] function is used to register a callback that
9959** is invoked each time data is committed to a database in wal mode.
9960**
9961** ^(The callback is invoked by SQLite after the commit has taken place and
9962** the associated write-lock on the database released)^, so the implementation
9963** may read, write or [checkpoint] the database as required.
9964**
9965** ^The first parameter passed to the callback function when it is invoked
9966** is a copy of the third parameter passed to sqlite3_wal_hook() when
9967** registering the callback. ^The second is a copy of the database handle.
9968** ^The third parameter is the name of the database that was written to -
9969** either "main" or the name of an [ATTACH]-ed database. ^The fourth parameter
9970** is the number of pages currently in the write-ahead log file,
9971** including those that were just committed.
9972**
9973** ^The callback function should normally return [SQLITE_OK]. ^If an error
9974** code is returned, that error will propagate back up through the
9975** SQLite code base to cause the statement that provoked the callback
9976** to report an error, though the commit will have still occurred. If the
9977** callback returns [SQLITE_ROW] or [SQLITE_DONE], or if it returns a value
9978** that does not correspond to any valid SQLite error code, the results
9979** are undefined.
9980**
9981** ^A single database handle may have at most a single write-ahead log
9982** callback registered at one time. ^Calling [sqlite3_wal_hook()]
9983** replaces the default behavior or previously registered write-ahead
9984** log callback.
9985**
9986** ^The return value is a copy of the third parameter from the
9987** previous call, if any, or 0.
9988**
9989** ^The [sqlite3_wal_autocheckpoint()] interface and the
9990** [wal_autocheckpoint pragma] both invoke [sqlite3_wal_hook()] and
9991** will overwrite any prior [sqlite3_wal_hook()] settings.
9992**
9993** ^If a write-ahead log callback is set using this function then
9994** [sqlite3_wal_checkpoint_v2()] or [PRAGMA wal_checkpoint]
9995** should be invoked periodically to keep the write-ahead log file
9996** from growing without bound.
9997**
9998** ^Passing a NULL pointer for the callback disables automatic
9999** checkpointing entirely. To re-enable the default behavior, call
10000** sqlite3_wal_autocheckpoint(db,1000) or use [PRAGMA wal_checkpoint].
10001*/
10002SQLITE_API void *sqlite3_wal_hook(
10003 sqlite3*,
10004 int(*)(void *,sqlite3*,const char*,int),
10005 void*
10006);
10007
10008/*
10009** CAPI3REF: Configure an auto-checkpoint
10010** METHOD: sqlite3
10011**
10012** ^The [sqlite3_wal_autocheckpoint(D,N)] is a wrapper around
10013** [sqlite3_wal_hook()] that causes any database on [database connection] D
10014** to automatically [checkpoint]
10015** after committing a transaction if there are N or
10016** more frames in the [write-ahead log] file. ^Passing zero or
10017** a negative value as the N parameter disables automatic
10018** checkpoints entirely.
10019**
10020** ^The callback registered by this function replaces any existing callback
10021** registered using [sqlite3_wal_hook()]. ^Likewise, registering a callback
10022** using [sqlite3_wal_hook()] disables the automatic checkpoint mechanism
10023** configured by this function.
10024**
10025** ^The [wal_autocheckpoint pragma] can be used to invoke this interface
10026** from SQL.
10027**
10028** ^Checkpoints initiated by this mechanism are
10029** [sqlite3_wal_checkpoint_v2|PASSIVE].
10030**
10031** ^Every new [database connection] defaults to having the auto-checkpoint
10032** enabled with a threshold of 1000 or [SQLITE_DEFAULT_WAL_AUTOCHECKPOINT]
10033** pages.
10034**
10035** ^The use of this interface is only necessary if the default setting
10036** is found to be suboptimal for a particular application.
10037*/
10038SQLITE_API int sqlite3_wal_autocheckpoint(sqlite3 *db, int N);
10039
10040/*
10041** CAPI3REF: Checkpoint a database
10042** METHOD: sqlite3
10043**
10044** ^(The sqlite3_wal_checkpoint(D,X) is equivalent to
10045** [sqlite3_wal_checkpoint_v2](D,X,[SQLITE_CHECKPOINT_PASSIVE],0,0).)^
10046**
10047** In brief, sqlite3_wal_checkpoint(D,X) causes the content in the
10048** [write-ahead log] for database X on [database connection] D to be
10049** transferred into the database file and for the write-ahead log to
10050** be reset. See the [checkpointing] documentation for addition
10051** information.
10052**
10053** This interface used to be the only way to cause a checkpoint to
10054** occur. But then the newer and more powerful [sqlite3_wal_checkpoint_v2()]
10055** interface was added. This interface is retained for backwards
10056** compatibility and as a convenience for applications that need to manually
10057** start a callback but which do not need the full power (and corresponding
10058** complication) of [sqlite3_wal_checkpoint_v2()].
10059*/
10060SQLITE_API int sqlite3_wal_checkpoint(sqlite3 *db, const char *zDb);
10061
10062/*
10063** CAPI3REF: Checkpoint a database
10064** METHOD: sqlite3
10065**
10066** ^(The sqlite3_wal_checkpoint_v2(D,X,M,L,C) interface runs a checkpoint
10067** operation on database X of [database connection] D in mode M. Status
10068** information is written back into integers pointed to by L and C.)^
10069** ^(The M parameter must be a valid [checkpoint mode]:)^
10070**
10071** <dl>
10072** <dt>SQLITE_CHECKPOINT_PASSIVE<dd>
10073** ^Checkpoint as many frames as possible without waiting for any database
10074** readers or writers to finish, then sync the database file if all frames
10075** in the log were checkpointed. ^The [busy-handler callback]
10076** is never invoked in the SQLITE_CHECKPOINT_PASSIVE mode.
10077** ^On the other hand, passive mode might leave the checkpoint unfinished
10078** if there are concurrent readers or writers.
10079**
10080** <dt>SQLITE_CHECKPOINT_FULL<dd>
10081** ^This mode blocks (it invokes the
10082** [sqlite3_busy_handler|busy-handler callback]) until there is no
10083** database writer and all readers are reading from the most recent database
10084** snapshot. ^It then checkpoints all frames in the log file and syncs the
10085** database file. ^This mode blocks new database writers while it is pending,
10086** but new database readers are allowed to continue unimpeded.
10087**
10088** <dt>SQLITE_CHECKPOINT_RESTART<dd>
10089** ^This mode works the same way as SQLITE_CHECKPOINT_FULL with the addition
10090** that after checkpointing the log file it blocks (calls the
10091** [busy-handler callback])
10092** until all readers are reading from the database file only. ^This ensures
10093** that the next writer will restart the log file from the beginning.
10094** ^Like SQLITE_CHECKPOINT_FULL, this mode blocks new
10095** database writer attempts while it is pending, but does not impede readers.
10096**
10097** <dt>SQLITE_CHECKPOINT_TRUNCATE<dd>
10098** ^This mode works the same way as SQLITE_CHECKPOINT_RESTART with the
10099** addition that it also truncates the log file to zero bytes just prior
10100** to a successful return.
10101**
10102** <dt>SQLITE_CHECKPOINT_NOOP<dd>
10103** ^This mode always checkpoints zero frames. The only reason to invoke
10104** a NOOP checkpoint is to access the values returned by
10105** sqlite3_wal_checkpoint_v2() via output parameters *pnLog and *pnCkpt.
10106** </dl>
10107**
10108** ^If pnLog is not NULL, then *pnLog is set to the total number of frames in
10109** the log file or to -1 if the checkpoint could not run because
10110** of an error or because the database is not in [WAL mode]. ^If pnCkpt is not
10111** NULL,then *pnCkpt is set to the total number of checkpointed frames in the
10112** log file (including any that were already checkpointed before the function
10113** was called) or to -1 if the checkpoint could not run due to an error or
10114** because the database is not in WAL mode. ^Note that upon successful
10115** completion of an SQLITE_CHECKPOINT_TRUNCATE, the log file will have been
10116** truncated to zero bytes and so both *pnLog and *pnCkpt will be set to zero.
10117**
10118** ^All calls obtain an exclusive "checkpoint" lock on the database file. ^If
10119** any other process is running a checkpoint operation at the same time, the
10120** lock cannot be obtained and SQLITE_BUSY is returned. ^Even if there is a
10121** busy-handler configured, it will not be invoked in this case.
10122**
10123** ^The SQLITE_CHECKPOINT_FULL, RESTART and TRUNCATE modes also obtain the
10124** exclusive "writer" lock on the database file. ^If the writer lock cannot be
10125** obtained immediately, and a busy-handler is configured, it is invoked and
10126** the writer lock retried until either the busy-handler returns 0 or the lock
10127** is successfully obtained. ^The busy-handler is also invoked while waiting for
10128** database readers as described above. ^If the busy-handler returns 0 before
10129** the writer lock is obtained or while waiting for database readers, the
10130** checkpoint operation proceeds from that point in the same way as
10131** SQLITE_CHECKPOINT_PASSIVE - checkpointing as many frames as possible
10132** without blocking any further. ^SQLITE_BUSY is returned in this case.
10133**
10134** ^If parameter zDb is NULL or points to a zero length string, then the
10135** specified operation is attempted on all WAL databases [attached] to
10136** [database connection] db. In this case the
10137** values written to output parameters *pnLog and *pnCkpt are undefined. ^If
10138** an SQLITE_BUSY error is encountered when processing one or more of the
10139** attached WAL databases, the operation is still attempted on any remaining
10140** attached databases and SQLITE_BUSY is returned at the end. ^If any other
10141** error occurs while processing an attached database, processing is abandoned
10142** and the error code is returned to the caller immediately. ^If no error
10143** (SQLITE_BUSY or otherwise) is encountered while processing the attached
10144** databases, SQLITE_OK is returned.
10145**
10146** ^If database zDb is the name of an attached database that is not in WAL
10147** mode, SQLITE_OK is returned and both *pnLog and *pnCkpt set to -1. ^If
10148** zDb is not NULL (or a zero length string) and is not the name of any
10149** attached database, SQLITE_ERROR is returned to the caller.
10150**
10151** ^Unless it returns SQLITE_MISUSE,
10152** the sqlite3_wal_checkpoint_v2() interface
10153** sets the error information that is queried by
10154** [sqlite3_errcode()] and [sqlite3_errmsg()].
10155**
10156** ^The [PRAGMA wal_checkpoint] command can be used to invoke this interface
10157** from SQL.
10158*/
10159SQLITE_API int sqlite3_wal_checkpoint_v2(
10160 sqlite3 *db, /* Database handle */
10161 const char *zDb, /* Name of attached database (or NULL) */
10162 int eMode, /* SQLITE_CHECKPOINT_* value */
10163 int *pnLog, /* OUT: Size of WAL log in frames */
10164 int *pnCkpt /* OUT: Total number of frames checkpointed */
10165);
10166
10167/*
10168** CAPI3REF: Checkpoint Mode Values
10169** KEYWORDS: {checkpoint mode}
10170**
10171** These constants define all valid values for the "checkpoint mode" passed
10172** as the third parameter to the [sqlite3_wal_checkpoint_v2()] interface.
10173** See the [sqlite3_wal_checkpoint_v2()] documentation for details on the
10174** meaning of each of these checkpoint modes.
10175*/
10176#define SQLITE_CHECKPOINT_NOOP -1 /* Do no work at all */
10177#define SQLITE_CHECKPOINT_PASSIVE 0 /* Do as much as possible w/o blocking */
10178#define SQLITE_CHECKPOINT_FULL 1 /* Wait for writers, then checkpoint */
10179#define SQLITE_CHECKPOINT_RESTART 2 /* Like FULL but wait for readers */
10180#define SQLITE_CHECKPOINT_TRUNCATE 3 /* Like RESTART but also truncate WAL */
10181
10182/*
10183** CAPI3REF: Virtual Table Interface Configuration
10184**
10185** This function may be called by either the [xConnect] or [xCreate] method
10186** of a [virtual table] implementation to configure
10187** various facets of the virtual table interface.
10188**
10189** If this interface is invoked outside the context of an xConnect or
10190** xCreate virtual table method then the behavior is undefined.
10191**
10192** In the call sqlite3_vtab_config(D,C,...) the D parameter is the
10193** [database connection] in which the virtual table is being created and
10194** which is passed in as the first argument to the [xConnect] or [xCreate]
10195** method that is invoking sqlite3_vtab_config(). The C parameter is one
10196** of the [virtual table configuration options]. The presence and meaning
10197** of parameters after C depend on which [virtual table configuration option]
10198** is used.
10199*/
10200SQLITE_API int sqlite3_vtab_config(sqlite3*, int op, ...);
10201
10202/*
10203** CAPI3REF: Virtual Table Configuration Options
10204** KEYWORDS: {virtual table configuration options}
10205** KEYWORDS: {virtual table configuration option}
10206**
10207** These macros define the various options to the
10208** [sqlite3_vtab_config()] interface that [virtual table] implementations
10209** can use to customize and optimize their behavior.
10210**
10211** <dl>
10212** [[SQLITE_VTAB_CONSTRAINT_SUPPORT]]
10213** <dt>SQLITE_VTAB_CONSTRAINT_SUPPORT</dt>
10214** <dd>Calls of the form
10215** [sqlite3_vtab_config](db,SQLITE_VTAB_CONSTRAINT_SUPPORT,X) are supported,
10216** where X is an integer. If X is zero, then the [virtual table] whose
10217** [xCreate] or [xConnect] method invoked [sqlite3_vtab_config()] does not
10218** support constraints. In this configuration (which is the default) if
10219** a call to the [xUpdate] method returns [SQLITE_CONSTRAINT], then the entire
10220** statement is rolled back as if [ON CONFLICT | OR ABORT] had been
10221** specified as part of the user's SQL statement, regardless of the actual
10222** ON CONFLICT mode specified.
10223**
10224** If X is non-zero, then the virtual table implementation guarantees
10225** that if [xUpdate] returns [SQLITE_CONSTRAINT], it will do so before
10226** any modifications to internal or persistent data structures have been made.
10227** If the [ON CONFLICT] mode is ABORT, FAIL, IGNORE or ROLLBACK, SQLite
10228** is able to roll back a statement or database transaction, and abandon
10229** or continue processing the current SQL statement as appropriate.
10230** If the ON CONFLICT mode is REPLACE and the [xUpdate] method returns
10231** [SQLITE_CONSTRAINT], SQLite handles this as if the ON CONFLICT mode
10232** had been ABORT.
10233**
10234** Virtual table implementations that are required to handle OR REPLACE
10235** must do so within the [xUpdate] method. If a call to the
10236** [sqlite3_vtab_on_conflict()] function indicates that the current ON
10237** CONFLICT policy is REPLACE, the virtual table implementation should
10238** silently replace the appropriate rows within the xUpdate callback and
10239** return SQLITE_OK. Or, if this is not possible, it may return
10240** SQLITE_CONSTRAINT, in which case SQLite falls back to OR ABORT
10241** constraint handling.
10242** </dd>
10243**
10244** [[SQLITE_VTAB_DIRECTONLY]]<dt>SQLITE_VTAB_DIRECTONLY</dt>
10245** <dd>Calls of the form
10246** [sqlite3_vtab_config](db,SQLITE_VTAB_DIRECTONLY) from within the
10247** the [xConnect] or [xCreate] methods of a [virtual table] implementation
10248** prohibits that virtual table from being used from within triggers and
10249** views.
10250** </dd>
10251**
10252** [[SQLITE_VTAB_INNOCUOUS]]<dt>SQLITE_VTAB_INNOCUOUS</dt>
10253** <dd>Calls of the form
10254** [sqlite3_vtab_config](db,SQLITE_VTAB_INNOCUOUS) from within the
10255** [xConnect] or [xCreate] methods of a [virtual table] implementation
10256** identify that virtual table as being safe to use from within triggers
10257** and views. Conceptually, the SQLITE_VTAB_INNOCUOUS tag means that the
10258** virtual table can do no serious harm even if it is controlled by a
10259** malicious hacker. Developers should avoid setting the SQLITE_VTAB_INNOCUOUS
10260** flag unless absolutely necessary.
10261** </dd>
10262**
10263** [[SQLITE_VTAB_USES_ALL_SCHEMAS]]<dt>SQLITE_VTAB_USES_ALL_SCHEMAS</dt>
10264** <dd>Calls of the form
10265** [sqlite3_vtab_config](db,SQLITE_VTAB_USES_ALL_SCHEMA) from within the
10266** the [xConnect] or [xCreate] methods of a [virtual table] implementation
10267** instruct the query planner to begin at least a read transaction on
10268** all schemas ("main", "temp", and any ATTACH-ed databases) whenever the
10269** virtual table is used.
10270** </dd>
10271** </dl>
10272*/
10273#define SQLITE_VTAB_CONSTRAINT_SUPPORT 1
10274#define SQLITE_VTAB_INNOCUOUS 2
10275#define SQLITE_VTAB_DIRECTONLY 3
10276#define SQLITE_VTAB_USES_ALL_SCHEMAS 4
10277
10278/*
10279** CAPI3REF: Determine The Virtual Table Conflict Policy
10280**
10281** This function may only be called from within a call to the [xUpdate] method
10282** of a [virtual table] implementation for an INSERT or UPDATE operation. ^The
10283** value returned is one of [SQLITE_ROLLBACK], [SQLITE_IGNORE], [SQLITE_FAIL],
10284** [SQLITE_ABORT], or [SQLITE_REPLACE], according to the [ON CONFLICT] mode
10285** of the SQL statement that triggered the call to the [xUpdate] method of the
10286** [virtual table].
10287*/
10288SQLITE_API int sqlite3_vtab_on_conflict(sqlite3 *);
10289
10290/*
10291** CAPI3REF: Determine If Virtual Table Column Access Is For UPDATE
10292**
10293** If the sqlite3_vtab_nochange(X) routine is called within the [xColumn]
10294** method of a [virtual table], then it might return true if the
10295** column is being fetched as part of an UPDATE operation during which the
10296** column value will not change. The virtual table implementation can use
10297** this hint as permission to substitute a return value that is less
10298** expensive to compute and that the corresponding
10299** [xUpdate] method understands as a "no-change" value.
10300**
10301** If the [xColumn] method calls sqlite3_vtab_nochange() and finds that
10302** the column is not changed by the UPDATE statement, then the xColumn
10303** method can optionally return without setting a result, without calling
10304** any of the [sqlite3_result_int|sqlite3_result_xxxxx() interfaces].
10305** In that case, [sqlite3_value_nochange(X)] will return true for the
10306** same column in the [xUpdate] method.
10307**
10308** The sqlite3_vtab_nochange() routine is an optimization. Virtual table
10309** implementations should continue to give a correct answer even if the
10310** sqlite3_vtab_nochange() interface were to always return false. In the
10311** current implementation, the sqlite3_vtab_nochange() interface does always
10312** returns false for the enhanced [UPDATE FROM] statement.
10313*/
10314SQLITE_API int sqlite3_vtab_nochange(sqlite3_context*);
10315
10316/*
10317** CAPI3REF: Determine The Collation For a Virtual Table Constraint
10318** METHOD: sqlite3_index_info
10319**
10320** This function may only be called from within a call to the [xBestIndex]
10321** method of a [virtual table]. This function returns a pointer to a string
10322** that is the name of the appropriate collation sequence to use for text
10323** comparisons on the constraint identified by its arguments.
10324**
10325** The first argument must be the pointer to the [sqlite3_index_info] object
10326** that is the first parameter to the xBestIndex() method. The second argument
10327** must be an index into the aConstraint[] array belonging to the
10328** sqlite3_index_info structure passed to xBestIndex.
10329**
10330** Important:
10331** The first parameter must be the same pointer that is passed into the
10332** xBestMethod() method. The first parameter may not be a pointer to a
10333** different [sqlite3_index_info] object, even an exact copy.
10334**
10335** The return value is computed as follows:
10336**
10337** <ol>
10338** <li><p> If the constraint comes from a WHERE clause expression that contains
10339** a [COLLATE operator], then the name of the collation specified by
10340** that COLLATE operator is returned.
10341** <li><p> If there is no COLLATE operator, but the column that is the subject
10342** of the constraint specifies an alternative collating sequence via
10343** a [COLLATE clause] on the column definition within the CREATE TABLE
10344** statement that was passed into [sqlite3_declare_vtab()], then the
10345** name of that alternative collating sequence is returned.
10346** <li><p> Otherwise, "BINARY" is returned.
10347** </ol>
10348*/
10349SQLITE_API const char *sqlite3_vtab_collation(sqlite3_index_info*,int);
10350
10351/*
10352** CAPI3REF: Determine if a virtual table query is DISTINCT
10353** METHOD: sqlite3_index_info
10354**
10355** This API may only be used from within an [xBestIndex|xBestIndex method]
10356** of a [virtual table] implementation. The result of calling this
10357** interface from outside of xBestIndex() is undefined and probably harmful.
10358**
10359** ^The sqlite3_vtab_distinct() interface returns an integer between 0 and
10360** 3. The integer returned by sqlite3_vtab_distinct()
10361** gives the virtual table additional information about how the query
10362** planner wants the output to be ordered. As long as the virtual table
10363** can meet the ordering requirements of the query planner, it may set
10364** the "orderByConsumed" flag.
10365**
10366** <ol><li value="0"><p>
10367** ^If the sqlite3_vtab_distinct() interface returns 0, that means
10368** that the query planner needs the virtual table to return all rows in the
10369** sort order defined by the "nOrderBy" and "aOrderBy" fields of the
10370** [sqlite3_index_info] object. This is the default expectation. If the
10371** virtual table outputs all rows in sorted order, then it is always safe for
10372** the xBestIndex method to set the "orderByConsumed" flag, regardless of
10373** the return value from sqlite3_vtab_distinct().
10374** <li value="1"><p>
10375** ^(If the sqlite3_vtab_distinct() interface returns 1, that means
10376** that the query planner does not need the rows to be returned in sorted order
10377** as long as all rows with the same values in all columns identified by the
10378** "aOrderBy" field are adjacent.)^ This mode is used when the query planner
10379** is doing a GROUP BY.
10380** <li value="2"><p>
10381** ^(If the sqlite3_vtab_distinct() interface returns 2, that means
10382** that the query planner does not need the rows returned in any particular
10383** order, as long as rows with the same values in all columns identified
10384** by "aOrderBy" are adjacent.)^ ^(Furthermore, when two or more rows
10385** contain the same values for all columns identified by "colUsed", all but
10386** one such row may optionally be omitted from the result.)^
10387** The virtual table is not required to omit rows that are duplicates
10388** over the "colUsed" columns, but if the virtual table can do that without
10389** too much extra effort, it could potentially help the query to run faster.
10390** This mode is used for a DISTINCT query.
10391** <li value="3"><p>
10392** ^(If the sqlite3_vtab_distinct() interface returns 3, that means the
10393** virtual table must return rows in the order defined by "aOrderBy" as
10394** if the sqlite3_vtab_distinct() interface had returned 0. However if
10395** two or more rows in the result have the same values for all columns
10396** identified by "colUsed", then all but one such row may optionally be
10397** omitted.)^ Like when the return value is 2, the virtual table
10398** is not required to omit rows that are duplicates over the "colUsed"
10399** columns, but if the virtual table can do that without
10400** too much extra effort, it could potentially help the query to run faster.
10401** This mode is used for queries
10402** that have both DISTINCT and ORDER BY clauses.
10403** </ol>
10404**
10405** <p>The following table summarizes the conditions under which the
10406** virtual table is allowed to set the "orderByConsumed" flag based on
10407** the value returned by sqlite3_vtab_distinct(). This table is a
10408** restatement of the previous four paragraphs:
10409**
10410** <table border=1 cellspacing=0 cellpadding=10 width="90%">
10411** <tr>
10412** <td valign="top">sqlite3_vtab_distinct() return value
10413** <td valign="top">Rows are returned in aOrderBy order
10414** <td valign="top">Rows with the same value in all aOrderBy columns are
10415** adjacent
10416** <td valign="top">Duplicates over all colUsed columns may be omitted
10417** <tr><td>0<td>yes<td>yes<td>no
10418** <tr><td>1<td>no<td>yes<td>no
10419** <tr><td>2<td>no<td>yes<td>yes
10420** <tr><td>3<td>yes<td>yes<td>yes
10421** </table>
10422**
10423** ^For the purposes of comparing virtual table output values to see if the
10424** values are the same value for sorting purposes, two NULL values are
10425** considered to be the same. In other words, the comparison operator is "IS"
10426** (or "IS NOT DISTINCT FROM") and not "==".
10427**
10428** If a virtual table implementation is unable to meet the requirements
10429** specified above, then it must not set the "orderByConsumed" flag in the
10430** [sqlite3_index_info] object or an incorrect answer may result.
10431**
10432** ^A virtual table implementation is always free to return rows in any order
10433** it wants, as long as the "orderByConsumed" flag is not set. ^When the
10434** "orderByConsumed" flag is unset, the query planner will add extra
10435** [bytecode] to ensure that the final results returned by the SQL query are
10436** ordered correctly. The use of the "orderByConsumed" flag and the
10437** sqlite3_vtab_distinct() interface is merely an optimization. ^Careful
10438** use of the sqlite3_vtab_distinct() interface and the "orderByConsumed"
10439** flag might help queries against a virtual table to run faster. Being
10440** overly aggressive and setting the "orderByConsumed" flag when it is not
10441** valid to do so, on the other hand, might cause SQLite to return incorrect
10442** results.
10443*/
10444SQLITE_API int sqlite3_vtab_distinct(sqlite3_index_info*);
10445
10446/*
10447** CAPI3REF: Identify and handle IN constraints in xBestIndex
10448**
10449** This interface may only be used from within an
10450** [xBestIndex|xBestIndex() method] of a [virtual table] implementation.
10451** The result of invoking this interface from any other context is
10452** undefined and probably harmful.
10453**
10454** ^(A constraint on a virtual table of the form
10455** "[IN operator|column IN (...)]" is
10456** communicated to the xBestIndex method as a
10457** [SQLITE_INDEX_CONSTRAINT_EQ] constraint.)^ If xBestIndex wants to use
10458** this constraint, it must set the corresponding
10459** aConstraintUsage[].argvIndex to a positive integer. ^(Then, under
10460** the usual mode of handling IN operators, SQLite generates [bytecode]
10461** that invokes the [xFilter|xFilter() method] once for each value
10462** on the right-hand side of the IN operator.)^ Thus the virtual table
10463** only sees a single value from the right-hand side of the IN operator
10464** at a time.
10465**
10466** In some cases, however, it would be advantageous for the virtual
10467** table to see all values on the right-hand of the IN operator all at
10468** once. The sqlite3_vtab_in() interfaces facilitates this in two ways:
10469**
10470** <ol>
10471** <li><p>
10472** ^A call to sqlite3_vtab_in(P,N,-1) will return true (non-zero)
10473** if and only if the [sqlite3_index_info|P->aConstraint][N] constraint
10474** is an [IN operator] that can be processed all at once. ^In other words,
10475** sqlite3_vtab_in() with -1 in the third argument is a mechanism
10476** by which the virtual table can ask SQLite if all-at-once processing
10477** of the IN operator is even possible.
10478**
10479** <li><p>
10480** ^A call to sqlite3_vtab_in(P,N,F) with F==1 or F==0 indicates
10481** to SQLite that the virtual table does or does not want to process
10482** the IN operator all-at-once, respectively. ^Thus when the third
10483** parameter (F) is non-negative, this interface is the mechanism by
10484** which the virtual table tells SQLite how it wants to process the
10485** IN operator.
10486** </ol>
10487**
10488** ^The sqlite3_vtab_in(P,N,F) interface can be invoked multiple times
10489** within the same xBestIndex method call. ^For any given P,N pair,
10490** the return value from sqlite3_vtab_in(P,N,F) will always be the same
10491** within the same xBestIndex call. ^If the interface returns true
10492** (non-zero), that means that the constraint is an IN operator
10493** that can be processed all-at-once. ^If the constraint is not an IN
10494** operator or cannot be processed all-at-once, then the interface returns
10495** false.
10496**
10497** ^(All-at-once processing of the IN operator is selected if both of the
10498** following conditions are met:
10499**
10500** <ol>
10501** <li><p> The P->aConstraintUsage[N].argvIndex value is set to a positive
10502** integer. This is how the virtual table tells SQLite that it wants to
10503** use the N-th constraint.
10504**
10505** <li><p> The last call to sqlite3_vtab_in(P,N,F) for which F was
10506** non-negative had F>=1.
10507** </ol>)^
10508**
10509** ^If either or both of the conditions above are false, then SQLite uses
10510** the traditional one-at-a-time processing strategy for the IN constraint.
10511** ^If both conditions are true, then the argvIndex-th parameter to the
10512** xFilter method will be an [sqlite3_value] that appears to be NULL,
10513** but which can be passed to [sqlite3_vtab_in_first()] and
10514** [sqlite3_vtab_in_next()] to find all values on the right-hand side
10515** of the IN constraint.
10516*/
10517SQLITE_API int sqlite3_vtab_in(sqlite3_index_info*, int iCons, int bHandle);
10518
10519/*
10520** CAPI3REF: Find all elements on the right-hand side of an IN constraint.
10521**
10522** These interfaces are only useful from within the
10523** [xFilter|xFilter() method] of a [virtual table] implementation.
10524** The result of invoking these interfaces from any other context
10525** is undefined and probably harmful.
10526**
10527** The X parameter in a call to sqlite3_vtab_in_first(X,P) or
10528** sqlite3_vtab_in_next(X,P) should be one of the parameters to the
10529** xFilter method which invokes these routines, and specifically
10530** a parameter that was previously selected for all-at-once IN constraint
10531** processing using the [sqlite3_vtab_in()] interface in the
10532** [xBestIndex|xBestIndex method]. ^(If the X parameter is not
10533** an xFilter argument that was selected for all-at-once IN constraint
10534** processing, then these routines return [SQLITE_ERROR].)^
10535**
10536** ^(Use these routines to access all values on the right-hand side
10537** of the IN constraint using code like the following:
10538**
10539** <blockquote><pre>
10540** for(rc=sqlite3_vtab_in_first(pList, &pVal);
10541** rc==SQLITE_OK && pVal;
10542** rc=sqlite3_vtab_in_next(pList, &pVal)
10543** ){
10544** // do something with pVal
10545** }
10546** if( rc!=SQLITE_DONE ){
10547** // an error has occurred
10548** }
10549** </pre></blockquote>)^
10550**
10551** ^On success, the sqlite3_vtab_in_first(X,P) and sqlite3_vtab_in_next(X,P)
10552** routines return SQLITE_OK and set *P to point to the first or next value
10553** on the RHS of the IN constraint. ^If there are no more values on the
10554** right hand side of the IN constraint, then *P is set to NULL and these
10555** routines return [SQLITE_DONE]. ^The return value might be
10556** some other value, such as SQLITE_NOMEM, in the event of a malfunction.
10557**
10558** The *ppOut values returned by these routines are only valid until the
10559** next call to either of these routines or until the end of the xFilter
10560** method from which these routines were called. If the virtual table
10561** implementation needs to retain the *ppOut values for longer, it must make
10562** copies. The *ppOut values are [protected sqlite3_value|protected].
10563*/
10564SQLITE_API int sqlite3_vtab_in_first(sqlite3_value *pVal, sqlite3_value **ppOut);
10565SQLITE_API int sqlite3_vtab_in_next(sqlite3_value *pVal, sqlite3_value **ppOut);
10566
10567/*
10568** CAPI3REF: Constraint values in xBestIndex()
10569** METHOD: sqlite3_index_info
10570**
10571** This API may only be used from within the [xBestIndex|xBestIndex method]
10572** of a [virtual table] implementation. The result of calling this interface
10573** from outside of an xBestIndex method are undefined and probably harmful.
10574**
10575** ^When the sqlite3_vtab_rhs_value(P,J,V) interface is invoked from within
10576** the [xBestIndex] method of a [virtual table] implementation, with P being
10577** a copy of the [sqlite3_index_info] object pointer passed into xBestIndex and
10578** J being a 0-based index into P->aConstraint[], then this routine
10579** attempts to set *V to the value of the right-hand operand of
10580** that constraint if the right-hand operand is known. ^If the
10581** right-hand operand is not known, then *V is set to a NULL pointer.
10582** ^The sqlite3_vtab_rhs_value(P,J,V) interface returns SQLITE_OK if
10583** and only if *V is set to a value. ^The sqlite3_vtab_rhs_value(P,J,V)
10584** inteface returns SQLITE_NOTFOUND if the right-hand side of the J-th
10585** constraint is not available. ^The sqlite3_vtab_rhs_value() interface
10586** can return a result code other than SQLITE_OK or SQLITE_NOTFOUND if
10587** something goes wrong.
10588**
10589** The sqlite3_vtab_rhs_value() interface is usually only successful if
10590** the right-hand operand of a constraint is a literal value in the original
10591** SQL statement. If the right-hand operand is an expression or a reference
10592** to some other column or a [host parameter], then sqlite3_vtab_rhs_value()
10593** will probably return [SQLITE_NOTFOUND].
10594**
10595** ^(Some constraints, such as [SQLITE_INDEX_CONSTRAINT_ISNULL] and
10596** [SQLITE_INDEX_CONSTRAINT_ISNOTNULL], have no right-hand operand. For such
10597** constraints, sqlite3_vtab_rhs_value() always returns SQLITE_NOTFOUND.)^
10598**
10599** ^The [sqlite3_value] object returned in *V is a protected sqlite3_value
10600** and remains valid for the duration of the xBestIndex method call.
10601** ^When xBestIndex returns, the sqlite3_value object returned by
10602** sqlite3_vtab_rhs_value() is automatically deallocated.
10603**
10604** The "_rhs_" in the name of this routine is an abbreviation for
10605** "Right-Hand Side".
10606*/
10607SQLITE_API int sqlite3_vtab_rhs_value(sqlite3_index_info*, int, sqlite3_value **ppVal);
10608
10609/*
10610** CAPI3REF: Conflict resolution modes
10611** KEYWORDS: {conflict resolution mode}
10612**
10613** These constants are returned by [sqlite3_vtab_on_conflict()] to
10614** inform a [virtual table] implementation of the [ON CONFLICT] mode
10615** for the SQL statement being evaluated.
10616**
10617** Note that the [SQLITE_IGNORE] constant is also used as a potential
10618** return value from the [sqlite3_set_authorizer()] callback and that
10619** [SQLITE_ABORT] is also a [result code].
10620*/
10621#define SQLITE_ROLLBACK 1
10622/* #define SQLITE_IGNORE 2 // Also used by sqlite3_authorizer() callback */
10623#define SQLITE_FAIL 3
10624/* #define SQLITE_ABORT 4 // Also an error code */
10625#define SQLITE_REPLACE 5
10626
10627/*
10628** CAPI3REF: Prepared Statement Scan Status Opcodes
10629** KEYWORDS: {scanstatus options}
10630**
10631** The following constants can be used for the T parameter to the
10632** [sqlite3_stmt_scanstatus(S,X,T,V)] interface. Each constant designates a
10633** different metric for sqlite3_stmt_scanstatus() to return.
10634**
10635** When the value returned to V is a string, space to hold that string is
10636** managed by the prepared statement S and will be automatically freed when
10637** S is finalized.
10638**
10639** Not all values are available for all query elements. When a value is
10640** not available, the output variable is set to -1 if the value is numeric,
10641** or to NULL if it is a string (SQLITE_SCANSTAT_NAME).
10642**
10643** <dl>
10644** [[SQLITE_SCANSTAT_NLOOP]] <dt>SQLITE_SCANSTAT_NLOOP</dt>
10645** <dd>^The [sqlite3_int64] variable pointed to by the V parameter will be
10646** set to the total number of times that the X-th loop has run.</dd>
10647**
10648** [[SQLITE_SCANSTAT_NVISIT]] <dt>SQLITE_SCANSTAT_NVISIT</dt>
10649** <dd>^The [sqlite3_int64] variable pointed to by the V parameter will be set
10650** to the total number of rows examined by all iterations of the X-th loop.</dd>
10651**
10652** [[SQLITE_SCANSTAT_EST]] <dt>SQLITE_SCANSTAT_EST</dt>
10653** <dd>^The "double" variable pointed to by the V parameter will be set to the
10654** query planner's estimate for the average number of rows output from each
10655** iteration of the X-th loop. If the query planner's estimate was accurate,
10656** then this value will approximate the quotient NVISIT/NLOOP and the
10657** product of this value for all prior loops with the same SELECTID will
10658** be the NLOOP value for the current loop.</dd>
10659**
10660** [[SQLITE_SCANSTAT_NAME]] <dt>SQLITE_SCANSTAT_NAME</dt>
10661** <dd>^The "const char *" variable pointed to by the V parameter will be set
10662** to a zero-terminated UTF-8 string containing the name of the index or table
10663** used for the X-th loop.</dd>
10664**
10665** [[SQLITE_SCANSTAT_EXPLAIN]] <dt>SQLITE_SCANSTAT_EXPLAIN</dt>
10666** <dd>^The "const char *" variable pointed to by the V parameter will be set
10667** to a zero-terminated UTF-8 string containing the [EXPLAIN QUERY PLAN]
10668** description for the X-th loop.</dd>
10669**
10670** [[SQLITE_SCANSTAT_SELECTID]] <dt>SQLITE_SCANSTAT_SELECTID</dt>
10671** <dd>^The "int" variable pointed to by the V parameter will be set to the
10672** id for the X-th query plan element. The id value is unique within the
10673** statement. The select-id is the same value as is output in the first
10674** column of an [EXPLAIN QUERY PLAN] query.</dd>
10675**
10676** [[SQLITE_SCANSTAT_PARENTID]] <dt>SQLITE_SCANSTAT_PARENTID</dt>
10677** <dd>The "int" variable pointed to by the V parameter will be set to the
10678** id of the parent of the current query element, if applicable, or
10679** to zero if the query element has no parent. This is the same value as
10680** returned in the second column of an [EXPLAIN QUERY PLAN] query.</dd>
10681**
10682** [[SQLITE_SCANSTAT_NCYCLE]] <dt>SQLITE_SCANSTAT_NCYCLE</dt>
10683** <dd>The sqlite3_int64 output value is set to the number of cycles,
10684** according to the processor time-stamp counter, that elapsed while the
10685** query element was being processed. This value is not available for
10686** all query elements - if it is unavailable the output variable is
10687** set to -1.</dd>
10688** </dl>
10689*/
10690#define SQLITE_SCANSTAT_NLOOP 0
10691#define SQLITE_SCANSTAT_NVISIT 1
10692#define SQLITE_SCANSTAT_EST 2
10693#define SQLITE_SCANSTAT_NAME 3
10694#define SQLITE_SCANSTAT_EXPLAIN 4
10695#define SQLITE_SCANSTAT_SELECTID 5
10696#define SQLITE_SCANSTAT_PARENTID 6
10697#define SQLITE_SCANSTAT_NCYCLE 7
10698
10699/*
10700** CAPI3REF: Prepared Statement Scan Status
10701** METHOD: sqlite3_stmt
10702**
10703** These interfaces return information about the predicted and measured
10704** performance for pStmt. Advanced applications can use this
10705** interface to compare the predicted and the measured performance and
10706** issue warnings and/or rerun [ANALYZE] if discrepancies are found.
10707**
10708** Since this interface is expected to be rarely used, it is only
10709** available if SQLite is compiled using the [SQLITE_ENABLE_STMT_SCANSTATUS]
10710** compile-time option.
10711**
10712** The "iScanStatusOp" parameter determines which status information to return.
10713** The "iScanStatusOp" must be one of the [scanstatus options] or the behavior
10714** of this interface is undefined. ^The requested measurement is written into
10715** a variable pointed to by the "pOut" parameter.
10716**
10717** The "flags" parameter must be passed a mask of flags. At present only
10718** one flag is defined - [SQLITE_SCANSTAT_COMPLEX]. If SQLITE_SCANSTAT_COMPLEX
10719** is specified, then status information is available for all elements
10720** of a query plan that are reported by "[EXPLAIN QUERY PLAN]" output. If
10721** SQLITE_SCANSTAT_COMPLEX is not specified, then only query plan elements
10722** that correspond to query loops (the "SCAN..." and "SEARCH..." elements of
10723** the EXPLAIN QUERY PLAN output) are available. Invoking API
10724** sqlite3_stmt_scanstatus() is equivalent to calling
10725** sqlite3_stmt_scanstatus_v2() with a zeroed flags parameter.
10726**
10727** Parameter "idx" identifies the specific query element to retrieve statistics
10728** for. Query elements are numbered starting from zero. A value of -1 may
10729** retrieve statistics for the entire query. ^If idx is out of range
10730** - less than -1 or greater than or equal to the total number of query
10731** elements used to implement the statement - a non-zero value is returned and
10732** the variable that pOut points to is unchanged.
10733**
10734** See also: [sqlite3_stmt_scanstatus_reset()] and the
10735** [nexec and ncycle] columns of the [bytecode virtual table].
10736*/
10737SQLITE_API int sqlite3_stmt_scanstatus(
10738 sqlite3_stmt *pStmt, /* Prepared statement for which info desired */
10739 int idx, /* Index of loop to report on */
10740 int iScanStatusOp, /* Information desired. SQLITE_SCANSTAT_* */
10741 void *pOut /* Result written here */
10742);
10743SQLITE_API int sqlite3_stmt_scanstatus_v2(
10744 sqlite3_stmt *pStmt, /* Prepared statement for which info desired */
10745 int idx, /* Index of loop to report on */
10746 int iScanStatusOp, /* Information desired. SQLITE_SCANSTAT_* */
10747 int flags, /* Mask of flags defined below */
10748 void *pOut /* Result written here */
10749);
10750
10751/*
10752** CAPI3REF: Prepared Statement Scan Status
10753** KEYWORDS: {scan status flags}
10754*/
10755#define SQLITE_SCANSTAT_COMPLEX 0x0001
10756
10757/*
10758** CAPI3REF: Zero Scan-Status Counters
10759** METHOD: sqlite3_stmt
10760**
10761** ^Zero all [sqlite3_stmt_scanstatus()] related event counters.
10762**
10763** This API is only available if the library is built with pre-processor
10764** symbol [SQLITE_ENABLE_STMT_SCANSTATUS] defined.
10765*/
10766SQLITE_API void sqlite3_stmt_scanstatus_reset(sqlite3_stmt*);
10767
10768/*
10769** CAPI3REF: Flush caches to disk mid-transaction
10770** METHOD: sqlite3
10771**
10772** ^If a write-transaction is open on [database connection] D when the
10773** [sqlite3_db_cacheflush(D)] interface is invoked, any dirty
10774** pages in the pager-cache that are not currently in use are written out
10775** to disk. A dirty page may be in use if a database cursor created by an
10776** active SQL statement is reading from it, or if it is page 1 of a database
10777** file (page 1 is always "in use"). ^The [sqlite3_db_cacheflush(D)]
10778** interface flushes caches for all schemas - "main", "temp", and
10779** any [attached] databases.
10780**
10781** ^If this function needs to obtain extra database locks before dirty pages
10782** can be flushed to disk, it does so. ^If those locks cannot be obtained
10783** immediately and there is a busy-handler callback configured, it is invoked
10784** in the usual manner. ^If the required lock still cannot be obtained, then
10785** the database is skipped and an attempt made to flush any dirty pages
10786** belonging to the next (if any) database. ^If any databases are skipped
10787** because locks cannot be obtained, but no other error occurs, this
10788** function returns SQLITE_BUSY.
10789**
10790** ^If any other error occurs while flushing dirty pages to disk (for
10791** example an IO error or out-of-memory condition), then processing is
10792** abandoned and an SQLite [error code] is returned to the caller immediately.
10793**
10794** ^Otherwise, if no error occurs, [sqlite3_db_cacheflush()] returns SQLITE_OK.
10795**
10796** ^This function does not set the database handle error code or message
10797** returned by the [sqlite3_errcode()] and [sqlite3_errmsg()] functions.
10798*/
10799SQLITE_API int sqlite3_db_cacheflush(sqlite3*);
10800
10801/*
10802** CAPI3REF: The pre-update hook.
10803** METHOD: sqlite3
10804**
10805** ^These interfaces are only available if SQLite is compiled using the
10806** [SQLITE_ENABLE_PREUPDATE_HOOK] compile-time option.
10807**
10808** ^The [sqlite3_preupdate_hook()] interface registers a callback function
10809** that is invoked prior to each [INSERT], [UPDATE], and [DELETE] operation
10810** on a database table.
10811** ^At most one preupdate hook may be registered at a time on a single
10812** [database connection]; each call to [sqlite3_preupdate_hook()] overrides
10813** the previous setting.
10814** ^The preupdate hook is disabled by invoking [sqlite3_preupdate_hook()]
10815** with a NULL pointer as the second parameter.
10816** ^The third parameter to [sqlite3_preupdate_hook()] is passed through as
10817** the first parameter to callbacks.
10818**
10819** ^The preupdate hook only fires for changes to real database tables; the
10820** preupdate hook is not invoked for changes to [virtual tables] or to
10821** system tables like sqlite_sequence or sqlite_stat1.
10822**
10823** ^The second parameter to the preupdate callback is a pointer to
10824** the [database connection] that registered the preupdate hook.
10825** ^The third parameter to the preupdate callback is one of the constants
10826** [SQLITE_INSERT], [SQLITE_DELETE], or [SQLITE_UPDATE] to identify the
10827** kind of update operation that is about to occur.
10828** ^(The fourth parameter to the preupdate callback is the name of the
10829** database within the database connection that is being modified. This
10830** will be "main" for the main database or "temp" for TEMP tables or
10831** the name given after the AS keyword in the [ATTACH] statement for attached
10832** databases.)^
10833** ^The fifth parameter to the preupdate callback is the name of the
10834** table that is being modified.
10835**
10836** For an UPDATE or DELETE operation on a [rowid table], the sixth
10837** parameter passed to the preupdate callback is the initial [rowid] of the
10838** row being modified or deleted. For an INSERT operation on a rowid table,
10839** or any operation on a WITHOUT ROWID table, the value of the sixth
10840** parameter is undefined. For an INSERT or UPDATE on a rowid table the
10841** seventh parameter is the final rowid value of the row being inserted
10842** or updated. The value of the seventh parameter passed to the callback
10843** function is not defined for operations on WITHOUT ROWID tables, or for
10844** DELETE operations on rowid tables.
10845**
10846** ^The sqlite3_preupdate_hook(D,C,P) function returns the P argument from
10847** the previous call on the same [database connection] D, or NULL for
10848** the first call on D.
10849**
10850** The [sqlite3_preupdate_old()], [sqlite3_preupdate_new()],
10851** [sqlite3_preupdate_count()], and [sqlite3_preupdate_depth()] interfaces
10852** provide additional information about a preupdate event. These routines
10853** may only be called from within a preupdate callback. Invoking any of
10854** these routines from outside of a preupdate callback or with a
10855** [database connection] pointer that is different from the one supplied
10856** to the preupdate callback results in undefined and probably undesirable
10857** behavior.
10858**
10859** ^The [sqlite3_preupdate_count(D)] interface returns the number of columns
10860** in the row that is being inserted, updated, or deleted.
10861**
10862** ^The [sqlite3_preupdate_old(D,N,P)] interface writes into P a pointer to
10863** a [protected sqlite3_value] that contains the value of the Nth column of
10864** the table row before it is updated. The N parameter must be between 0
10865** and one less than the number of columns or the behavior will be
10866** undefined. This must only be used within SQLITE_UPDATE and SQLITE_DELETE
10867** preupdate callbacks; if it is used by an SQLITE_INSERT callback then the
10868** behavior is undefined. The [sqlite3_value] that P points to
10869** will be destroyed when the preupdate callback returns.
10870**
10871** ^The [sqlite3_preupdate_new(D,N,P)] interface writes into P a pointer to
10872** a [protected sqlite3_value] that contains the value of the Nth column of
10873** the table row after it is updated. The N parameter must be between 0
10874** and one less than the number of columns or the behavior will be
10875** undefined. This must only be used within SQLITE_INSERT and SQLITE_UPDATE
10876** preupdate callbacks; if it is used by an SQLITE_DELETE callback then the
10877** behavior is undefined. The [sqlite3_value] that P points to
10878** will be destroyed when the preupdate callback returns.
10879**
10880** ^The [sqlite3_preupdate_depth(D)] interface returns 0 if the preupdate
10881** callback was invoked as a result of a direct insert, update, or delete
10882** operation; or 1 for inserts, updates, or deletes invoked by top-level
10883** triggers; or 2 for changes resulting from triggers called by top-level
10884** triggers; and so forth.
10885**
10886** When the [sqlite3_blob_write()] API is used to update a blob column,
10887** the pre-update hook is invoked with SQLITE_DELETE, because
10888** the new values are not yet available. In this case, when a
10889** callback made with op==SQLITE_DELETE is actually a write using the
10890** sqlite3_blob_write() API, the [sqlite3_preupdate_blobwrite()] returns
10891** the index of the column being written. In other cases, where the
10892** pre-update hook is being invoked for some other reason, including a
10893** regular DELETE, sqlite3_preupdate_blobwrite() returns -1.
10894**
10895** See also: [sqlite3_update_hook()]
10896*/
10897#if defined(SQLITE_ENABLE_PREUPDATE_HOOK)
10898SQLITE_API void *sqlite3_preupdate_hook(
10899 sqlite3 *db,
10900 void(*xPreUpdate)(
10901 void *pCtx, /* Copy of third arg to preupdate_hook() */
10902 sqlite3 *db, /* Database handle */
10903 int op, /* SQLITE_UPDATE, DELETE or INSERT */
10904 char const *zDb, /* Database name */
10905 char const *zName, /* Table name */
10906 sqlite3_int64 iKey1, /* Rowid of row about to be deleted/updated */
10907 sqlite3_int64 iKey2 /* New rowid value (for a rowid UPDATE) */
10908 ),
10909 void*
10910);
10911SQLITE_API int sqlite3_preupdate_old(sqlite3 *, int, sqlite3_value **);
10912SQLITE_API int sqlite3_preupdate_count(sqlite3 *);
10913SQLITE_API int sqlite3_preupdate_depth(sqlite3 *);
10914SQLITE_API int sqlite3_preupdate_new(sqlite3 *, int, sqlite3_value **);
10915SQLITE_API int sqlite3_preupdate_blobwrite(sqlite3 *);
10916#endif
10917
10918/*
10919** CAPI3REF: Low-level system error code
10920** METHOD: sqlite3
10921**
10922** ^Attempt to return the underlying operating system error code or error
10923** number that caused the most recent I/O error or failure to open a file.
10924** The return value is OS-dependent. For example, on unix systems, after
10925** [sqlite3_open_v2()] returns [SQLITE_CANTOPEN], this interface could be
10926** called to get back the underlying "errno" that caused the problem, such
10927** as ENOSPC, EAUTH, EISDIR, and so forth.
10928*/
10929SQLITE_API int sqlite3_system_errno(sqlite3*);
10930
10931/*
10932** CAPI3REF: Database Snapshot
10933** KEYWORDS: {snapshot} {sqlite3_snapshot}
10934**
10935** An instance of the snapshot object records the state of a [WAL mode]
10936** database for some specific point in history.
10937**
10938** In [WAL mode], multiple [database connections] that are open on the
10939** same database file can each be reading a different historical version
10940** of the database file. When a [database connection] begins a read
10941** transaction, that connection sees an unchanging copy of the database
10942** as it existed for the point in time when the transaction first started.
10943** Subsequent changes to the database from other connections are not seen
10944** by the reader until a new read transaction is started.
10945**
10946** The sqlite3_snapshot object records state information about an historical
10947** version of the database file so that it is possible to later open a new read
10948** transaction that sees that historical version of the database rather than
10949** the most recent version.
10950*/
10951typedef struct sqlite3_snapshot {
10952 unsigned char hidden[48];
10953} sqlite3_snapshot;
10954
10955/*
10956** CAPI3REF: Record A Database Snapshot
10957** CONSTRUCTOR: sqlite3_snapshot
10958**
10959** ^The [sqlite3_snapshot_get(D,S,P)] interface attempts to make a
10960** new [sqlite3_snapshot] object that records the current state of
10961** schema S in database connection D. ^On success, the
10962** [sqlite3_snapshot_get(D,S,P)] interface writes a pointer to the newly
10963** created [sqlite3_snapshot] object into *P and returns SQLITE_OK.
10964** If there is not already a read-transaction open on schema S when
10965** this function is called, one is opened automatically.
10966**
10967** If a read-transaction is opened by this function, then it is guaranteed
10968** that the returned snapshot object may not be invalidated by a database
10969** writer or checkpointer until after the read-transaction is closed. This
10970** is not guaranteed if a read-transaction is already open when this
10971** function is called. In that case, any subsequent write or checkpoint
10972** operation on the database may invalidate the returned snapshot handle,
10973** even while the read-transaction remains open.
10974**
10975** The following must be true for this function to succeed. If any of
10976** the following statements are false when sqlite3_snapshot_get() is
10977** called, SQLITE_ERROR is returned. The final value of *P is undefined
10978** in this case.
10979**
10980** <ul>
10981** <li> The database handle must not be in [autocommit mode].
10982**
10983** <li> Schema S of [database connection] D must be a [WAL mode] database.
10984**
10985** <li> There must not be a write transaction open on schema S of database
10986** connection D.
10987**
10988** <li> One or more transactions must have been written to the current wal
10989** file since it was created on disk (by any connection). This means
10990** that a snapshot cannot be taken on a wal mode database with no wal
10991** file immediately after it is first opened. At least one transaction
10992** must be written to it first.
10993** </ul>
10994**
10995** This function may also return SQLITE_NOMEM. If it is called with the
10996** database handle in autocommit mode but fails for some other reason,
10997** whether or not a read transaction is opened on schema S is undefined.
10998**
10999** The [sqlite3_snapshot] object returned from a successful call to
11000** [sqlite3_snapshot_get()] must be freed using [sqlite3_snapshot_free()]
11001** to avoid a memory leak.
11002**
11003** The [sqlite3_snapshot_get()] interface is only available when the
11004** [SQLITE_ENABLE_SNAPSHOT] compile-time option is used.
11005*/
11006SQLITE_API int sqlite3_snapshot_get(
11007 sqlite3 *db,
11008 const char *zSchema,
11009 sqlite3_snapshot **ppSnapshot
11010);
11011
11012/*
11013** CAPI3REF: Start a read transaction on an historical snapshot
11014** METHOD: sqlite3_snapshot
11015**
11016** ^The [sqlite3_snapshot_open(D,S,P)] interface either starts a new read
11017** transaction or upgrades an existing one for schema S of
11018** [database connection] D such that the read transaction refers to
11019** historical [snapshot] P, rather than the most recent change to the
11020** database. ^The [sqlite3_snapshot_open()] interface returns SQLITE_OK
11021** on success or an appropriate [error code] if it fails.
11022**
11023** ^In order to succeed, the database connection must not be in
11024** [autocommit mode] when [sqlite3_snapshot_open(D,S,P)] is called. If there
11025** is already a read transaction open on schema S, then the database handle
11026** must have no active statements (SELECT statements that have been passed
11027** to sqlite3_step() but not sqlite3_reset() or sqlite3_finalize()).
11028** SQLITE_ERROR is returned if either of these conditions is violated, or
11029** if schema S does not exist, or if the snapshot object is invalid.
11030**
11031** ^A call to sqlite3_snapshot_open() will fail to open if the specified
11032** snapshot has been overwritten by a [checkpoint]. In this case
11033** SQLITE_ERROR_SNAPSHOT is returned.
11034**
11035** If there is already a read transaction open when this function is
11036** invoked, then the same read transaction remains open (on the same
11037** database snapshot) if SQLITE_ERROR, SQLITE_BUSY or SQLITE_ERROR_SNAPSHOT
11038** is returned. If another error code - for example SQLITE_PROTOCOL or an
11039** SQLITE_IOERR error code - is returned, then the final state of the
11040** read transaction is undefined. If SQLITE_OK is returned, then the
11041** read transaction is now open on database snapshot P.
11042**
11043** ^(A call to [sqlite3_snapshot_open(D,S,P)] will fail if the
11044** database connection D does not know that the database file for
11045** schema S is in [WAL mode]. A database connection might not know
11046** that the database file is in [WAL mode] if there has been no prior
11047** I/O on that database connection, or if the database entered [WAL mode]
11048** after the most recent I/O on the database connection.)^
11049** (Hint: Run "[PRAGMA application_id]" against a newly opened
11050** database connection in order to make it ready to use snapshots.)
11051**
11052** The [sqlite3_snapshot_open()] interface is only available when the
11053** [SQLITE_ENABLE_SNAPSHOT] compile-time option is used.
11054*/
11055SQLITE_API int sqlite3_snapshot_open(
11056 sqlite3 *db,
11057 const char *zSchema,
11058 sqlite3_snapshot *pSnapshot
11059);
11060
11061/*
11062** CAPI3REF: Destroy a snapshot
11063** DESTRUCTOR: sqlite3_snapshot
11064**
11065** ^The [sqlite3_snapshot_free(P)] interface destroys [sqlite3_snapshot] P.
11066** The application must eventually free every [sqlite3_snapshot] object
11067** using this routine to avoid a memory leak.
11068**
11069** The [sqlite3_snapshot_free()] interface is only available when the
11070** [SQLITE_ENABLE_SNAPSHOT] compile-time option is used.
11071*/
11072SQLITE_API void sqlite3_snapshot_free(sqlite3_snapshot*);
11073
11074/*
11075** CAPI3REF: Compare the ages of two snapshot handles.
11076** METHOD: sqlite3_snapshot
11077**
11078** The sqlite3_snapshot_cmp(P1, P2) interface is used to compare the ages
11079** of two valid snapshot handles.
11080**
11081** If the two snapshot handles are not associated with the same database
11082** file, the result of the comparison is undefined.
11083**
11084** Additionally, the result of the comparison is only valid if both of the
11085** snapshot handles were obtained by calling sqlite3_snapshot_get() since the
11086** last time the wal file was deleted. The wal file is deleted when the
11087** database is changed back to rollback mode or when the number of database
11088** clients drops to zero. If either snapshot handle was obtained before the
11089** wal file was last deleted, the value returned by this function
11090** is undefined.
11091**
11092** Otherwise, this API returns a negative value if P1 refers to an older
11093** snapshot than P2, zero if the two handles refer to the same database
11094** snapshot, and a positive value if P1 is a newer snapshot than P2.
11095**
11096** This interface is only available if SQLite is compiled with the
11097** [SQLITE_ENABLE_SNAPSHOT] option.
11098*/
11099SQLITE_API int sqlite3_snapshot_cmp(
11100 sqlite3_snapshot *p1,
11101 sqlite3_snapshot *p2
11102);
11103
11104/*
11105** CAPI3REF: Recover snapshots from a wal file
11106** METHOD: sqlite3_snapshot
11107**
11108** If a [WAL file] remains on disk after all database connections close
11109** (either through the use of the [SQLITE_FCNTL_PERSIST_WAL] [file control]
11110** or because the last process to have the database opened exited without
11111** calling [sqlite3_close()]) and a new connection is subsequently opened
11112** on that database and [WAL file], the [sqlite3_snapshot_open()] interface
11113** will only be able to open the last transaction added to the WAL file
11114** even though the WAL file contains other valid transactions.
11115**
11116** This function attempts to scan the WAL file associated with database zDb
11117** of database handle db and make all valid snapshots available to
11118** sqlite3_snapshot_open(). It is an error if there is already a read
11119** transaction open on the database, or if the database is not a WAL mode
11120** database.
11121**
11122** SQLITE_OK is returned if successful, or an SQLite error code otherwise.
11123**
11124** This interface is only available if SQLite is compiled with the
11125** [SQLITE_ENABLE_SNAPSHOT] option.
11126*/
11127SQLITE_API int sqlite3_snapshot_recover(sqlite3 *db, const char *zDb);
11128
11129/*
11130** CAPI3REF: Serialize a database
11131**
11132** The sqlite3_serialize(D,S,P,F) interface returns a pointer to
11133** memory that is a serialization of the S database on
11134** [database connection] D. If S is a NULL pointer, the main database is used.
11135** If P is not a NULL pointer, then the size of the database in bytes
11136** is written into *P.
11137**
11138** For an ordinary on-disk database file, the serialization is just a
11139** copy of the disk file. For an in-memory database or a "TEMP" database,
11140** the serialization is the same sequence of bytes which would be written
11141** to disk if that database were backed up to disk.
11142**
11143** The usual case is that sqlite3_serialize() copies the serialization of
11144** the database into memory obtained from [sqlite3_malloc64()] and returns
11145** a pointer to that memory. The caller is responsible for freeing the
11146** returned value to avoid a memory leak. However, if the F argument
11147** contains the SQLITE_SERIALIZE_NOCOPY bit, then no memory allocations
11148** are made, and the sqlite3_serialize() function will return a pointer
11149** to the contiguous memory representation of the database that SQLite
11150** is currently using for that database, or NULL if no such contiguous
11151** memory representation of the database exists. A contiguous memory
11152** representation of the database will usually only exist if there has
11153** been a prior call to [sqlite3_deserialize(D,S,...)] with the same
11154** values of D and S.
11155** The size of the database is written into *P even if the
11156** SQLITE_SERIALIZE_NOCOPY bit is set but no contiguous copy
11157** of the database exists.
11158**
11159** After the call, if the SQLITE_SERIALIZE_NOCOPY bit had been set,
11160** the returned buffer content will remain accessible and unchanged
11161** until either the next write operation on the connection or when
11162** the connection is closed, and applications must not modify the
11163** buffer. If the bit had been clear, the returned buffer will not
11164** be accessed by SQLite after the call.
11165**
11166** A call to sqlite3_serialize(D,S,P,F) might return NULL even if the
11167** SQLITE_SERIALIZE_NOCOPY bit is omitted from argument F if a memory
11168** allocation error occurs.
11169**
11170** This interface is omitted if SQLite is compiled with the
11171** [SQLITE_OMIT_DESERIALIZE] option.
11172*/
11173SQLITE_API unsigned char *sqlite3_serialize(
11174 sqlite3 *db, /* The database connection */
11175 const char *zSchema, /* Which DB to serialize. ex: "main", "temp", ... */
11176 sqlite3_int64 *piSize, /* Write size of the DB here, if not NULL */
11177 unsigned int mFlags /* Zero or more SQLITE_SERIALIZE_* flags */
11178);
11179
11180/*
11181** CAPI3REF: Flags for sqlite3_serialize
11182**
11183** Zero or more of the following constants can be OR-ed together for
11184** the F argument to [sqlite3_serialize(D,S,P,F)].
11185**
11186** SQLITE_SERIALIZE_NOCOPY means that [sqlite3_serialize()] will return
11187** a pointer to contiguous in-memory database that it is currently using,
11188** without making a copy of the database. If SQLite is not currently using
11189** a contiguous in-memory database, then this option causes
11190** [sqlite3_serialize()] to return a NULL pointer. SQLite will only be
11191** using a contiguous in-memory database if it has been initialized by a
11192** prior call to [sqlite3_deserialize()].
11193*/
11194#define SQLITE_SERIALIZE_NOCOPY 0x001 /* Do no memory allocations */
11195
11196/*
11197** CAPI3REF: Deserialize a database
11198**
11199** The sqlite3_deserialize(D,S,P,N,M,F) interface causes the
11200** [database connection] D to disconnect from database S and then
11201** reopen S as an in-memory database based on the serialization
11202** contained in P. If S is a NULL pointer, the main database is
11203** used. The serialized database P is N bytes in size. M is the size
11204** of the buffer P, which might be larger than N. If M is larger than
11205** N, and the SQLITE_DESERIALIZE_READONLY bit is not set in F, then
11206** SQLite is permitted to add content to the in-memory database as
11207** long as the total size does not exceed M bytes.
11208**
11209** If the SQLITE_DESERIALIZE_FREEONCLOSE bit is set in F, then SQLite will
11210** invoke sqlite3_free() on the serialization buffer when the database
11211** connection closes. If the SQLITE_DESERIALIZE_RESIZEABLE bit is set, then
11212** SQLite will try to increase the buffer size using sqlite3_realloc64()
11213** if writes on the database cause it to grow larger than M bytes.
11214**
11215** Applications must not modify the buffer P or invalidate it before
11216** the database connection D is closed.
11217**
11218** The sqlite3_deserialize() interface will fail with SQLITE_BUSY if the
11219** database is currently in a read transaction or is involved in a backup
11220** operation.
11221**
11222** It is not possible to deserialize into the TEMP database. If the
11223** S argument to sqlite3_deserialize(D,S,P,N,M,F) is "temp" then the
11224** function returns SQLITE_ERROR.
11225**
11226** The deserialized database should not be in [WAL mode]. If the database
11227** is in WAL mode, then any attempt to use the database file will result
11228** in an [SQLITE_CANTOPEN] error. The application can set the
11229** [file format version numbers] (bytes 18 and 19) of the input database P
11230** to 0x01 prior to invoking sqlite3_deserialize(D,S,P,N,M,F) to force the
11231** database file into rollback mode and work around this limitation.
11232**
11233** If sqlite3_deserialize(D,S,P,N,M,F) fails for any reason and if the
11234** SQLITE_DESERIALIZE_FREEONCLOSE bit is set in argument F, then
11235** [sqlite3_free()] is invoked on argument P prior to returning.
11236**
11237** This interface is omitted if SQLite is compiled with the
11238** [SQLITE_OMIT_DESERIALIZE] option.
11239*/
11240SQLITE_API int sqlite3_deserialize(
11241 sqlite3 *db, /* The database connection */
11242 const char *zSchema, /* Which DB to reopen with the deserialization */
11243 unsigned char *pData, /* The serialized database content */
11244 sqlite3_int64 szDb, /* Number of bytes in the deserialization */
11245 sqlite3_int64 szBuf, /* Total size of buffer pData[] */
11246 unsigned mFlags /* Zero or more SQLITE_DESERIALIZE_* flags */
11247);
11248
11249/*
11250** CAPI3REF: Flags for sqlite3_deserialize()
11251**
11252** The following are allowed values for the 6th argument (the F argument) to
11253** the [sqlite3_deserialize(D,S,P,N,M,F)] interface.
11254**
11255** The SQLITE_DESERIALIZE_FREEONCLOSE means that the database serialization
11256** in the P argument is held in memory obtained from [sqlite3_malloc64()]
11257** and that SQLite should take ownership of this memory and automatically
11258** free it when it has finished using it. Without this flag, the caller
11259** is responsible for freeing any dynamically allocated memory.
11260**
11261** The SQLITE_DESERIALIZE_RESIZEABLE flag means that SQLite is allowed to
11262** grow the size of the database using calls to [sqlite3_realloc64()]. This
11263** flag should only be used if SQLITE_DESERIALIZE_FREEONCLOSE is also used.
11264** Without this flag, the deserialized database cannot increase in size beyond
11265** the number of bytes specified by the M parameter.
11266**
11267** The SQLITE_DESERIALIZE_READONLY flag means that the deserialized database
11268** should be treated as read-only.
11269*/
11270#define SQLITE_DESERIALIZE_FREEONCLOSE 1 /* Call sqlite3_free() on close */
11271#define SQLITE_DESERIALIZE_RESIZEABLE 2 /* Resize using sqlite3_realloc64() */
11272#define SQLITE_DESERIALIZE_READONLY 4 /* Database is read-only */
11273
11274/*
11275** CAPI3REF: Bind array values to the CARRAY table-valued function
11276**
11277** The sqlite3_carray_bind_v2(S,I,P,N,F,X,D) interface binds an array value to
11278** parameter that is the first argument of the [carray() table-valued function].
11279** The S parameter is a pointer to the [prepared statement] that uses the
11280** carray() functions. I is the parameter index to be bound. I must be the
11281** index of the parameter that is the first argument to the carray()
11282** table-valued function. P is a pointer to the array to be bound, and N
11283** is the number of elements in the array. The F argument is one of
11284** constants [SQLITE_CARRAY_INT32], [SQLITE_CARRAY_INT64],
11285** [SQLITE_CARRAY_DOUBLE], [SQLITE_CARRAY_TEXT],
11286** or [SQLITE_CARRAY_BLOB] to indicate the datatype of the array P.
11287**
11288** If the X argument is not a NULL pointer or one of the special
11289** values [SQLITE_STATIC] or [SQLITE_TRANSIENT], then SQLite will invoke
11290** the function X with argument D when it is finished using the data in P.
11291** The call to X(D) is a destructor for the array P. The destructor X(D)
11292** is invoked even if the call to sqlite3_carray_bind_v2() fails. If the X
11293** parameter is the special-case value [SQLITE_STATIC], then SQLite assumes
11294** that the data static and the destructor is never invoked. If the X
11295** parameter is the special-case value [SQLITE_TRANSIENT], then
11296** sqlite3_carray_bind_v2() makes its own private copy of the data prior
11297** to returning and never invokes the destructor X.
11298**
11299** The sqlite3_carray_bind() function works the same as sqlite3_carray_bind_v2()
11300** with a D parameter set to P. In other words,
11301** sqlite3_carray_bind(S,I,P,N,F,X) is same as
11302** sqlite3_carray_bind_v2(S,I,P,N,F,X,P).
11303*/
11304SQLITE_API int sqlite3_carray_bind_v2(
11305 sqlite3_stmt *pStmt, /* Statement to be bound */
11306 int i, /* Parameter index */
11307 void *aData, /* Pointer to array data */
11308 int nData, /* Number of data elements */
11309 int mFlags, /* CARRAY flags */
11310 void (*xDel)(void*), /* Destructor for aData */
11311 void *pDel /* Optional argument to xDel() */
11312);
11313SQLITE_API int sqlite3_carray_bind(
11314 sqlite3_stmt *pStmt, /* Statement to be bound */
11315 int i, /* Parameter index */
11316 void *aData, /* Pointer to array data */
11317 int nData, /* Number of data elements */
11318 int mFlags, /* CARRAY flags */
11319 void (*xDel)(void*) /* Destructor for aData */
11320);
11321
11322/*
11323** CAPI3REF: Datatypes for the CARRAY table-valued function
11324**
11325** The fifth argument to the [sqlite3_carray_bind()] interface musts be
11326** one of the following constants, to specify the datatype of the array
11327** that is being bound into the [carray table-valued function].
11328*/
11329#define SQLITE_CARRAY_INT32 0 /* Data is 32-bit signed integers */
11330#define SQLITE_CARRAY_INT64 1 /* Data is 64-bit signed integers */
11331#define SQLITE_CARRAY_DOUBLE 2 /* Data is doubles */
11332#define SQLITE_CARRAY_TEXT 3 /* Data is char* */
11333#define SQLITE_CARRAY_BLOB 4 /* Data is struct iovec */
11334
11335/*
11336** Versions of the above #defines that omit the initial SQLITE_, for
11337** legacy compatibility.
11338*/
11339#define CARRAY_INT32 0 /* Data is 32-bit signed integers */
11340#define CARRAY_INT64 1 /* Data is 64-bit signed integers */
11341#define CARRAY_DOUBLE 2 /* Data is doubles */
11342#define CARRAY_TEXT 3 /* Data is char* */
11343#define CARRAY_BLOB 4 /* Data is struct iovec */
11344
11345/*
11346** Undo the hack that converts floating point types to integer for
11347** builds on processors without floating point support.
11348*/
11349#ifdef SQLITE_OMIT_FLOATING_POINT
11350# undef double
11351#endif
11352
11353#if defined(__wasi__)
11354# undef SQLITE_WASI
11355# define SQLITE_WASI 1
11356# ifndef SQLITE_OMIT_LOAD_EXTENSION
11357# define SQLITE_OMIT_LOAD_EXTENSION
11358# endif
11359# ifndef SQLITE_THREADSAFE
11360# define SQLITE_THREADSAFE 0
11361# endif
11362#endif
11363
11364#ifdef __cplusplus
11365} /* End of the 'extern "C"' block */
11366#endif
11367/* #endif for SQLITE3_H will be added by mksqlite3.tcl */
11368
11369/******** Begin file sqlite3rtree.h *********/
11370/*
11371** 2010 August 30
11372**
11373** The author disclaims copyright to this source code. In place of
11374** a legal notice, here is a blessing:
11375**
11376** May you do good and not evil.
11377** May you find forgiveness for yourself and forgive others.
11378** May you share freely, never taking more than you give.
11379**
11380*************************************************************************
11381*/
11382
11383#ifndef _SQLITE3RTREE_H_
11384#define _SQLITE3RTREE_H_
11385
11386
11387#ifdef __cplusplus
11388extern "C" {
11389#endif
11390
11391typedef struct sqlite3_rtree_geometry sqlite3_rtree_geometry;
11392typedef struct sqlite3_rtree_query_info sqlite3_rtree_query_info;
11393
11394/* The double-precision datatype used by RTree depends on the
11395** SQLITE_RTREE_INT_ONLY compile-time option.
11396*/
11397#ifdef SQLITE_RTREE_INT_ONLY
11398 typedef sqlite3_int64 sqlite3_rtree_dbl;
11399#else
11400 typedef double sqlite3_rtree_dbl;
11401#endif
11402
11403/*
11404** Register a geometry callback named zGeom that can be used as part of an
11405** R-Tree geometry query as follows:
11406**
11407** SELECT ... FROM <rtree> WHERE <rtree col> MATCH $zGeom(... params ...)
11408*/
11409SQLITE_API int sqlite3_rtree_geometry_callback(
11410 sqlite3 *db,
11411 const char *zGeom,
11412 int (*xGeom)(sqlite3_rtree_geometry*, int, sqlite3_rtree_dbl*,int*),
11413 void *pContext
11414);
11415
11416
11417/*
11418** A pointer to a structure of the following type is passed as the first
11419** argument to callbacks registered using rtree_geometry_callback().
11420*/
11421struct sqlite3_rtree_geometry {
11422 void *pContext; /* Copy of pContext passed to s_r_g_c() */
11423 int nParam; /* Size of array aParam[] */
11424 sqlite3_rtree_dbl *aParam; /* Parameters passed to SQL geom function */
11425 void *pUser; /* Callback implementation user data */
11426 void (*xDelUser)(void *); /* Called by SQLite to clean up pUser */
11427};
11428
11429/*
11430** Register a 2nd-generation geometry callback named zScore that can be
11431** used as part of an R-Tree geometry query as follows:
11432**
11433** SELECT ... FROM <rtree> WHERE <rtree col> MATCH $zQueryFunc(... params ...)
11434*/
11435SQLITE_API int sqlite3_rtree_query_callback(
11436 sqlite3 *db,
11437 const char *zQueryFunc,
11438 int (*xQueryFunc)(sqlite3_rtree_query_info*),
11439 void *pContext,
11440 void (*xDestructor)(void*)
11441);
11442
11443
11444/*
11445** A pointer to a structure of the following type is passed as the
11446** argument to scored geometry callback registered using
11447** sqlite3_rtree_query_callback().
11448**
11449** Note that the first 5 fields of this structure are identical to
11450** sqlite3_rtree_geometry. This structure is a subclass of
11451** sqlite3_rtree_geometry.
11452*/
11453struct sqlite3_rtree_query_info {
11454 void *pContext; /* pContext from when function registered */
11455 int nParam; /* Number of function parameters */
11456 sqlite3_rtree_dbl *aParam; /* value of function parameters */
11457 void *pUser; /* callback can use this, if desired */
11458 void (*xDelUser)(void*); /* function to free pUser */
11459 sqlite3_rtree_dbl *aCoord; /* Coordinates of node or entry to check */
11460 unsigned int *anQueue; /* Number of pending entries in the queue */
11461 int nCoord; /* Number of coordinates */
11462 int iLevel; /* Level of current node or entry */
11463 int mxLevel; /* The largest iLevel value in the tree */
11464 sqlite3_int64 iRowid; /* Rowid for current entry */
11465 sqlite3_rtree_dbl rParentScore; /* Score of parent node */
11466 int eParentWithin; /* Visibility of parent node */
11467 int eWithin; /* OUT: Visibility */
11468 sqlite3_rtree_dbl rScore; /* OUT: Write the score here */
11469 /* The following fields are only available in 3.8.11 and later */
11470 sqlite3_value **apSqlParam; /* Original SQL values of parameters */
11471};
11472
11473/*
11474** Allowed values for sqlite3_rtree_query.eWithin and .eParentWithin.
11475*/
11476#define NOT_WITHIN 0 /* Object completely outside of query region */
11477#define PARTLY_WITHIN 1 /* Object partially overlaps query region */
11478#define FULLY_WITHIN 2 /* Object fully contained within query region */
11479
11480
11481#ifdef __cplusplus
11482} /* end of the 'extern "C"' block */
11483#endif
11484
11485#endif /* ifndef _SQLITE3RTREE_H_ */
11486
11487/******** End of sqlite3rtree.h *********/
11488/******** Begin file sqlite3session.h *********/
11489
11490#if !defined(__SQLITESESSION_H_) && defined(SQLITE_ENABLE_SESSION)
11491#define __SQLITESESSION_H_ 1
11492
11493/*
11494** Make sure we can call this stuff from C++.
11495*/
11496#ifdef __cplusplus
11497extern "C" {
11498#endif
11499
11500
11501/*
11502** CAPI3REF: Session Object Handle
11503**
11504** An instance of this object is a [session] that can be used to
11505** record changes to a database.
11506*/
11507typedef struct sqlite3_session sqlite3_session;
11508
11509/*
11510** CAPI3REF: Changeset Iterator Handle
11511**
11512** An instance of this object acts as a cursor for iterating
11513** over the elements of a [changeset] or [patchset].
11514*/
11515typedef struct sqlite3_changeset_iter sqlite3_changeset_iter;
11516
11517/*
11518** CAPI3REF: Create A New Session Object
11519** CONSTRUCTOR: sqlite3_session
11520**
11521** Create a new session object attached to database handle db. If successful,
11522** a pointer to the new object is written to *ppSession and SQLITE_OK is
11523** returned. If an error occurs, *ppSession is set to NULL and an SQLite
11524** error code (e.g. SQLITE_NOMEM) is returned.
11525**
11526** It is possible to create multiple session objects attached to a single
11527** database handle.
11528**
11529** Session objects created using this function should be deleted using the
11530** [sqlite3session_delete()] function before the database handle that they
11531** are attached to is itself closed. If the database handle is closed before
11532** the session object is deleted, then the results of calling any session
11533** module function, including [sqlite3session_delete()] on the session object
11534** are undefined.
11535**
11536** Because the session module uses the [sqlite3_preupdate_hook()] API, it
11537** is not possible for an application to register a pre-update hook on a
11538** database handle that has one or more session objects attached. Nor is
11539** it possible to create a session object attached to a database handle for
11540** which a pre-update hook is already defined. The results of attempting
11541** either of these things are undefined.
11542**
11543** The session object will be used to create changesets for tables in
11544** database zDb, where zDb is either "main", or "temp", or the name of an
11545** attached database. It is not an error if database zDb is not attached
11546** to the database when the session object is created.
11547*/
11548SQLITE_API int sqlite3session_create(
11549 sqlite3 *db, /* Database handle */
11550 const char *zDb, /* Name of db (e.g. "main") */
11551 sqlite3_session **ppSession /* OUT: New session object */
11552);
11553
11554/*
11555** CAPI3REF: Delete A Session Object
11556** DESTRUCTOR: sqlite3_session
11557**
11558** Delete a session object previously allocated using
11559** [sqlite3session_create()]. Once a session object has been deleted, the
11560** results of attempting to use pSession with any other session module
11561** function are undefined.
11562**
11563** Session objects must be deleted before the database handle to which they
11564** are attached is closed. Refer to the documentation for
11565** [sqlite3session_create()] for details.
11566*/
11567SQLITE_API void sqlite3session_delete(sqlite3_session *pSession);
11568
11569/*
11570** CAPI3REF: Configure a Session Object
11571** METHOD: sqlite3_session
11572**
11573** This method is used to configure a session object after it has been
11574** created. At present the only valid values for the second parameter are
11575** [SQLITE_SESSION_OBJCONFIG_SIZE] and [SQLITE_SESSION_OBJCONFIG_ROWID].
11576**
11577*/
11578SQLITE_API int sqlite3session_object_config(sqlite3_session*, int op, void *pArg);
11579
11580/*
11581** CAPI3REF: Options for sqlite3session_object_config
11582**
11583** The following values may passed as the the 2nd parameter to
11584** sqlite3session_object_config().
11585**
11586** <dt>SQLITE_SESSION_OBJCONFIG_SIZE <dd>
11587** This option is used to set, clear or query the flag that enables
11588** the [sqlite3session_changeset_size()] API. Because it imposes some
11589** computational overhead, this API is disabled by default. Argument
11590** pArg must point to a value of type (int). If the value is initially
11591** 0, then the sqlite3session_changeset_size() API is disabled. If it
11592** is greater than 0, then the same API is enabled. Or, if the initial
11593** value is less than zero, no change is made. In all cases the (int)
11594** variable is set to 1 if the sqlite3session_changeset_size() API is
11595** enabled following the current call, or 0 otherwise.
11596**
11597** It is an error (SQLITE_MISUSE) to attempt to modify this setting after
11598** the first table has been attached to the session object.
11599**
11600** <dt>SQLITE_SESSION_OBJCONFIG_ROWID <dd>
11601** This option is used to set, clear or query the flag that enables
11602** collection of data for tables with no explicit PRIMARY KEY.
11603**
11604** Normally, tables with no explicit PRIMARY KEY are simply ignored
11605** by the sessions module. However, if this flag is set, it behaves
11606** as if such tables have a column "_rowid_ INTEGER PRIMARY KEY" inserted
11607** as their leftmost columns.
11608**
11609** It is an error (SQLITE_MISUSE) to attempt to modify this setting after
11610** the first table has been attached to the session object.
11611*/
11612#define SQLITE_SESSION_OBJCONFIG_SIZE 1
11613#define SQLITE_SESSION_OBJCONFIG_ROWID 2
11614
11615/*
11616** CAPI3REF: Enable Or Disable A Session Object
11617** METHOD: sqlite3_session
11618**
11619** Enable or disable the recording of changes by a session object. When
11620** enabled, a session object records changes made to the database. When
11621** disabled - it does not. A newly created session object is enabled.
11622** Refer to the documentation for [sqlite3session_changeset()] for further
11623** details regarding how enabling and disabling a session object affects
11624** the eventual changesets.
11625**
11626** Passing zero to this function disables the session. Passing a value
11627** greater than zero enables it. Passing a value less than zero is a
11628** no-op, and may be used to query the current state of the session.
11629**
11630** The return value indicates the final state of the session object: 0 if
11631** the session is disabled, or 1 if it is enabled.
11632*/
11633SQLITE_API int sqlite3session_enable(sqlite3_session *pSession, int bEnable);
11634
11635/*
11636** CAPI3REF: Set Or Clear the Indirect Change Flag
11637** METHOD: sqlite3_session
11638**
11639** Each change recorded by a session object is marked as either direct or
11640** indirect. A change is marked as indirect if either:
11641**
11642** <ul>
11643** <li> The session object "indirect" flag is set when the change is
11644** made, or
11645** <li> The change is made by an SQL trigger or foreign key action
11646** instead of directly as a result of a users SQL statement.
11647** </ul>
11648**
11649** If a single row is affected by more than one operation within a session,
11650** then the change is considered indirect if all operations meet the criteria
11651** for an indirect change above, or direct otherwise.
11652**
11653** This function is used to set, clear or query the session object indirect
11654** flag. If the second argument passed to this function is zero, then the
11655** indirect flag is cleared. If it is greater than zero, the indirect flag
11656** is set. Passing a value less than zero does not modify the current value
11657** of the indirect flag, and may be used to query the current state of the
11658** indirect flag for the specified session object.
11659**
11660** The return value indicates the final state of the indirect flag: 0 if
11661** it is clear, or 1 if it is set.
11662*/
11663SQLITE_API int sqlite3session_indirect(sqlite3_session *pSession, int bIndirect);
11664
11665/*
11666** CAPI3REF: Attach A Table To A Session Object
11667** METHOD: sqlite3_session
11668**
11669** If argument zTab is not NULL, then it is the name of a table to attach
11670** to the session object passed as the first argument. All subsequent changes
11671** made to the table while the session object is enabled will be recorded. See
11672** documentation for [sqlite3session_changeset()] for further details.
11673**
11674** Or, if argument zTab is NULL, then changes are recorded for all tables
11675** in the database. If additional tables are added to the database (by
11676** executing "CREATE TABLE" statements) after this call is made, changes for
11677** the new tables are also recorded.
11678**
11679** Changes can only be recorded for tables that have a PRIMARY KEY explicitly
11680** defined as part of their CREATE TABLE statement. It does not matter if the
11681** PRIMARY KEY is an "INTEGER PRIMARY KEY" (rowid alias) or not. The PRIMARY
11682** KEY may consist of a single column, or may be a composite key.
11683**
11684** It is not an error if the named table does not exist in the database. Nor
11685** is it an error if the named table does not have a PRIMARY KEY. However,
11686** no changes will be recorded in either of these scenarios.
11687**
11688** Changes are not recorded for individual rows that have NULL values stored
11689** in one or more of their PRIMARY KEY columns.
11690**
11691** SQLITE_OK is returned if the call completes without error. Or, if an error
11692** occurs, an SQLite error code (e.g. SQLITE_NOMEM) is returned.
11693**
11694** <h3>Special sqlite_stat1 Handling</h3>
11695**
11696** As of SQLite version 3.22.0, the "sqlite_stat1" table is an exception to
11697** some of the rules above. In SQLite, the schema of sqlite_stat1 is:
11698** <pre>
11699** CREATE TABLE sqlite_stat1(tbl,idx,stat)
11700** </pre>
11701**
11702** Even though sqlite_stat1 does not have a PRIMARY KEY, changes are
11703** recorded for it as if the PRIMARY KEY is (tbl,idx). Additionally, changes
11704** are recorded for rows for which (idx IS NULL) is true. However, for such
11705** rows a zero-length blob (SQL value X'') is stored in the changeset or
11706** patchset instead of a NULL value. This allows such changesets to be
11707** manipulated by legacy implementations of sqlite3changeset_invert(),
11708** concat() and similar.
11709**
11710** The sqlite3changeset_apply() function automatically converts the
11711** zero-length blob back to a NULL value when updating the sqlite_stat1
11712** table. However, if the application calls sqlite3changeset_new(),
11713** sqlite3changeset_old() or sqlite3changeset_conflict on a changeset
11714** iterator directly (including on a changeset iterator passed to a
11715** conflict-handler callback) then the X'' value is returned. The application
11716** must translate X'' to NULL itself if required.
11717**
11718** Legacy (older than 3.22.0) versions of the sessions module cannot capture
11719** changes made to the sqlite_stat1 table. Legacy versions of the
11720** sqlite3changeset_apply() function silently ignore any modifications to the
11721** sqlite_stat1 table that are part of a changeset or patchset.
11722*/
11723SQLITE_API int sqlite3session_attach(
11724 sqlite3_session *pSession, /* Session object */
11725 const char *zTab /* Table name */
11726);
11727
11728/*
11729** CAPI3REF: Set a table filter on a Session Object.
11730** METHOD: sqlite3_session
11731**
11732** The second argument (xFilter) is the "filter callback". For changes to rows
11733** in tables that are not attached to the Session object, the filter is called
11734** to determine whether changes to the table's rows should be tracked or not.
11735** If xFilter returns 0, changes are not tracked. Note that once a table is
11736** attached, xFilter will not be called again.
11737*/
11738SQLITE_API void sqlite3session_table_filter(
11739 sqlite3_session *pSession, /* Session object */
11740 int(*xFilter)(
11741 void *pCtx, /* Copy of third arg to _filter_table() */
11742 const char *zTab /* Table name */
11743 ),
11744 void *pCtx /* First argument passed to xFilter */
11745);
11746
11747/*
11748** CAPI3REF: Generate A Changeset From A Session Object
11749** METHOD: sqlite3_session
11750**
11751** Obtain a changeset containing changes to the tables attached to the
11752** session object passed as the first argument. If successful,
11753** set *ppChangeset to point to a buffer containing the changeset
11754** and *pnChangeset to the size of the changeset in bytes before returning
11755** SQLITE_OK. If an error occurs, set both *ppChangeset and *pnChangeset to
11756** zero and return an SQLite error code.
11757**
11758** A changeset consists of zero or more INSERT, UPDATE and/or DELETE changes,
11759** each representing a change to a single row of an attached table. An INSERT
11760** change contains the values of each field of a new database row. A DELETE
11761** contains the original values of each field of a deleted database row. An
11762** UPDATE change contains the original values of each field of an updated
11763** database row along with the updated values for each updated non-primary-key
11764** column. It is not possible for an UPDATE change to represent a change that
11765** modifies the values of primary key columns. If such a change is made, it
11766** is represented in a changeset as a DELETE followed by an INSERT.
11767**
11768** Changes are not recorded for rows that have NULL values stored in one or
11769** more of their PRIMARY KEY columns. If such a row is inserted or deleted,
11770** no corresponding change is present in the changesets returned by this
11771** function. If an existing row with one or more NULL values stored in
11772** PRIMARY KEY columns is updated so that all PRIMARY KEY columns are non-NULL,
11773** only an INSERT is appears in the changeset. Similarly, if an existing row
11774** with non-NULL PRIMARY KEY values is updated so that one or more of its
11775** PRIMARY KEY columns are set to NULL, the resulting changeset contains a
11776** DELETE change only.
11777**
11778** The contents of a changeset may be traversed using an iterator created
11779** using the [sqlite3changeset_start()] API. A changeset may be applied to
11780** a database with a compatible schema using the [sqlite3changeset_apply()]
11781** API.
11782**
11783** Within a changeset generated by this function, all changes related to a
11784** single table are grouped together. In other words, when iterating through
11785** a changeset or when applying a changeset to a database, all changes related
11786** to a single table are processed before moving on to the next table. Tables
11787** are sorted in the same order in which they were attached (or auto-attached)
11788** to the sqlite3_session object. The order in which the changes related to
11789** a single table are stored is undefined.
11790**
11791** Following a successful call to this function, it is the responsibility of
11792** the caller to eventually free the buffer that *ppChangeset points to using
11793** [sqlite3_free()].
11794**
11795** <h3>Changeset Generation</h3>
11796**
11797** Once a table has been attached to a session object, the session object
11798** records the primary key values of all new rows inserted into the table.
11799** It also records the original primary key and other column values of any
11800** deleted or updated rows. For each unique primary key value, data is only
11801** recorded once - the first time a row with said primary key is inserted,
11802** updated or deleted in the lifetime of the session.
11803**
11804** There is one exception to the previous paragraph: when a row is inserted,
11805** updated or deleted, if one or more of its primary key columns contain a
11806** NULL value, no record of the change is made.
11807**
11808** The session object therefore accumulates two types of records - those
11809** that consist of primary key values only (created when the user inserts
11810** a new record) and those that consist of the primary key values and the
11811** original values of other table columns (created when the users deletes
11812** or updates a record).
11813**
11814** When this function is called, the requested changeset is created using
11815** both the accumulated records and the current contents of the database
11816** file. Specifically:
11817**
11818** <ul>
11819** <li> For each record generated by an insert, the database is queried
11820** for a row with a matching primary key. If one is found, an INSERT
11821** change is added to the changeset. If no such row is found, no change
11822** is added to the changeset.
11823**
11824** <li> For each record generated by an update or delete, the database is
11825** queried for a row with a matching primary key. If such a row is
11826** found and one or more of the non-primary key fields have been
11827** modified from their original values, an UPDATE change is added to
11828** the changeset. Or, if no such row is found in the table, a DELETE
11829** change is added to the changeset. If there is a row with a matching
11830** primary key in the database, but all fields contain their original
11831** values, no change is added to the changeset.
11832** </ul>
11833**
11834** This means, amongst other things, that if a row is inserted and then later
11835** deleted while a session object is active, neither the insert nor the delete
11836** will be present in the changeset. Or if a row is deleted and then later a
11837** row with the same primary key values inserted while a session object is
11838** active, the resulting changeset will contain an UPDATE change instead of
11839** a DELETE and an INSERT.
11840**
11841** When a session object is disabled (see the [sqlite3session_enable()] API),
11842** it does not accumulate records when rows are inserted, updated or deleted.
11843** This may appear to have some counter-intuitive effects if a single row
11844** is written to more than once during a session. For example, if a row
11845** is inserted while a session object is enabled, then later deleted while
11846** the same session object is disabled, no INSERT record will appear in the
11847** changeset, even though the delete took place while the session was disabled.
11848** Or, if one field of a row is updated while a session is enabled, and
11849** then another field of the same row is updated while the session is disabled,
11850** the resulting changeset will contain an UPDATE change that updates both
11851** fields.
11852*/
11853SQLITE_API int sqlite3session_changeset(
11854 sqlite3_session *pSession, /* Session object */
11855 int *pnChangeset, /* OUT: Size of buffer at *ppChangeset */
11856 void **ppChangeset /* OUT: Buffer containing changeset */
11857);
11858
11859/*
11860** CAPI3REF: Return An Upper-limit For The Size Of The Changeset
11861** METHOD: sqlite3_session
11862**
11863** By default, this function always returns 0. For it to return
11864** a useful result, the sqlite3_session object must have been configured
11865** to enable this API using sqlite3session_object_config() with the
11866** SQLITE_SESSION_OBJCONFIG_SIZE verb.
11867**
11868** When enabled, this function returns an upper limit, in bytes, for the size
11869** of the changeset that might be produced if sqlite3session_changeset() were
11870** called. The final changeset size might be equal to or smaller than the
11871** size in bytes returned by this function.
11872*/
11873SQLITE_API sqlite3_int64 sqlite3session_changeset_size(sqlite3_session *pSession);
11874
11875/*
11876** CAPI3REF: Load The Difference Between Tables Into A Session
11877** METHOD: sqlite3_session
11878**
11879** If it is not already attached to the session object passed as the first
11880** argument, this function attaches table zTbl in the same manner as the
11881** [sqlite3session_attach()] function. If zTbl does not exist, or if it
11882** does not have a primary key, this function is a no-op (but does not return
11883** an error).
11884**
11885** Argument zFromDb must be the name of a database ("main", "temp" etc.)
11886** attached to the same database handle as the session object that contains
11887** a table compatible with the table attached to the session by this function.
11888** A table is considered compatible if it:
11889**
11890** <ul>
11891** <li> Has the same name,
11892** <li> Has the same set of columns declared in the same order, and
11893** <li> Has the same PRIMARY KEY definition.
11894** </ul>
11895**
11896** If the tables are not compatible, SQLITE_SCHEMA is returned. If the tables
11897** are compatible but do not have any PRIMARY KEY columns, it is not an error
11898** but no changes are added to the session object. As with other session
11899** APIs, tables without PRIMARY KEYs are simply ignored.
11900**
11901** This function adds a set of changes to the session object that could be
11902** used to update the table in database zFrom (call this the "from-table")
11903** so that its content is the same as the table attached to the session
11904** object (call this the "to-table"). Specifically:
11905**
11906** <ul>
11907** <li> For each row (primary key) that exists in the to-table but not in
11908** the from-table, an INSERT record is added to the session object.
11909**
11910** <li> For each row (primary key) that exists in the to-table but not in
11911** the from-table, a DELETE record is added to the session object.
11912**
11913** <li> For each row (primary key) that exists in both tables, but features
11914** different non-PK values in each, an UPDATE record is added to the
11915** session.
11916** </ul>
11917**
11918** To clarify, if this function is called and then a changeset constructed
11919** using [sqlite3session_changeset()], then after applying that changeset to
11920** database zFrom the contents of the two compatible tables would be
11921** identical.
11922**
11923** Unless the call to this function is a no-op as described above, it is an
11924** error if database zFrom does not exist or does not contain the required
11925** compatible table.
11926**
11927** If the operation is successful, SQLITE_OK is returned. Otherwise, an SQLite
11928** error code. In this case, if argument pzErrMsg is not NULL, *pzErrMsg
11929** may be set to point to a buffer containing an English language error
11930** message. It is the responsibility of the caller to free this buffer using
11931** sqlite3_free().
11932*/
11933SQLITE_API int sqlite3session_diff(
11934 sqlite3_session *pSession,
11935 const char *zFromDb,
11936 const char *zTbl,
11937 char **pzErrMsg
11938);
11939
11940
11941/*
11942** CAPI3REF: Generate A Patchset From A Session Object
11943** METHOD: sqlite3_session
11944**
11945** The differences between a patchset and a changeset are that:
11946**
11947** <ul>
11948** <li> DELETE records consist of the primary key fields only. The
11949** original values of other fields are omitted.
11950** <li> The original values of any modified fields are omitted from
11951** UPDATE records.
11952** </ul>
11953**
11954** A patchset blob may be used with up to date versions of all
11955** sqlite3changeset_xxx API functions except for sqlite3changeset_invert(),
11956** which returns SQLITE_CORRUPT if it is passed a patchset. Similarly,
11957** attempting to use a patchset blob with old versions of the
11958** sqlite3changeset_xxx APIs also provokes an SQLITE_CORRUPT error.
11959**
11960** Because the non-primary key "old.*" fields are omitted, no
11961** SQLITE_CHANGESET_DATA conflicts can be detected or reported if a patchset
11962** is passed to the sqlite3changeset_apply() API. Other conflict types work
11963** in the same way as for changesets.
11964**
11965** Changes within a patchset are ordered in the same way as for changesets
11966** generated by the sqlite3session_changeset() function (i.e. all changes for
11967** a single table are grouped together, tables appear in the order in which
11968** they were attached to the session object).
11969*/
11970SQLITE_API int sqlite3session_patchset(
11971 sqlite3_session *pSession, /* Session object */
11972 int *pnPatchset, /* OUT: Size of buffer at *ppPatchset */
11973 void **ppPatchset /* OUT: Buffer containing patchset */
11974);
11975
11976/*
11977** CAPI3REF: Test if a changeset has recorded any changes.
11978**
11979** Return non-zero if no changes to attached tables have been recorded by
11980** the session object passed as the first argument. Otherwise, if one or
11981** more changes have been recorded, return zero.
11982**
11983** Even if this function returns zero, it is possible that calling
11984** [sqlite3session_changeset()] on the session handle may still return a
11985** changeset that contains no changes. This can happen when a row in
11986** an attached table is modified and then later on the original values
11987** are restored. However, if this function returns non-zero, then it is
11988** guaranteed that a call to sqlite3session_changeset() will return a
11989** changeset containing zero changes.
11990*/
11991SQLITE_API int sqlite3session_isempty(sqlite3_session *pSession);
11992
11993/*
11994** CAPI3REF: Query for the amount of heap memory used by a session object.
11995**
11996** This API returns the total amount of heap memory in bytes currently
11997** used by the session object passed as the only argument.
11998*/
11999SQLITE_API sqlite3_int64 sqlite3session_memory_used(sqlite3_session *pSession);
12000
12001/*
12002** CAPI3REF: Create An Iterator To Traverse A Changeset
12003** CONSTRUCTOR: sqlite3_changeset_iter
12004**
12005** Create an iterator used to iterate through the contents of a changeset.
12006** If successful, *pp is set to point to the iterator handle and SQLITE_OK
12007** is returned. Otherwise, if an error occurs, *pp is set to zero and an
12008** SQLite error code is returned.
12009**
12010** The following functions can be used to advance and query a changeset
12011** iterator created by this function:
12012**
12013** <ul>
12014** <li> [sqlite3changeset_next()]
12015** <li> [sqlite3changeset_op()]
12016** <li> [sqlite3changeset_new()]
12017** <li> [sqlite3changeset_old()]
12018** </ul>
12019**
12020** It is the responsibility of the caller to eventually destroy the iterator
12021** by passing it to [sqlite3changeset_finalize()]. The buffer containing the
12022** changeset (pChangeset) must remain valid until after the iterator is
12023** destroyed.
12024**
12025** Assuming the changeset blob was created by one of the
12026** [sqlite3session_changeset()], [sqlite3changeset_concat()] or
12027** [sqlite3changeset_invert()] functions, all changes within the changeset
12028** that apply to a single table are grouped together. This means that when
12029** an application iterates through a changeset using an iterator created by
12030** this function, all changes that relate to a single table are visited
12031** consecutively. There is no chance that the iterator will visit a change
12032** the applies to table X, then one for table Y, and then later on visit
12033** another change for table X.
12034**
12035** The behavior of sqlite3changeset_start_v2() and its streaming equivalent
12036** may be modified by passing a combination of
12037** [SQLITE_CHANGESETSTART_INVERT | supported flags] as the 4th parameter.
12038**
12039** Note that the sqlite3changeset_start_v2() API is still <b>experimental</b>
12040** and therefore subject to change.
12041*/
12042SQLITE_API int sqlite3changeset_start(
12043 sqlite3_changeset_iter **pp, /* OUT: New changeset iterator handle */
12044 int nChangeset, /* Size of changeset blob in bytes */
12045 void *pChangeset /* Pointer to blob containing changeset */
12046);
12047SQLITE_API int sqlite3changeset_start_v2(
12048 sqlite3_changeset_iter **pp, /* OUT: New changeset iterator handle */
12049 int nChangeset, /* Size of changeset blob in bytes */
12050 void *pChangeset, /* Pointer to blob containing changeset */
12051 int flags /* SESSION_CHANGESETSTART_* flags */
12052);
12053
12054/*
12055** CAPI3REF: Flags for sqlite3changeset_start_v2
12056**
12057** The following flags may passed via the 4th parameter to
12058** [sqlite3changeset_start_v2] and [sqlite3changeset_start_v2_strm]:
12059**
12060** <dt>SQLITE_CHANGESETSTART_INVERT <dd>
12061** Invert the changeset while iterating through it. This is equivalent to
12062** inverting a changeset using sqlite3changeset_invert() before applying it.
12063** It is an error to specify this flag with a patchset.
12064*/
12065#define SQLITE_CHANGESETSTART_INVERT 0x0002
12066
12067
12068/*
12069** CAPI3REF: Advance A Changeset Iterator
12070** METHOD: sqlite3_changeset_iter
12071**
12072** This function may only be used with iterators created by the function
12073** [sqlite3changeset_start()]. If it is called on an iterator passed to
12074** a conflict-handler callback by [sqlite3changeset_apply()], SQLITE_MISUSE
12075** is returned and the call has no effect.
12076**
12077** Immediately after an iterator is created by sqlite3changeset_start(), it
12078** does not point to any change in the changeset. Assuming the changeset
12079** is not empty, the first call to this function advances the iterator to
12080** point to the first change in the changeset. Each subsequent call advances
12081** the iterator to point to the next change in the changeset (if any). If
12082** no error occurs and the iterator points to a valid change after a call
12083** to sqlite3changeset_next() has advanced it, SQLITE_ROW is returned.
12084** Otherwise, if all changes in the changeset have already been visited,
12085** SQLITE_DONE is returned.
12086**
12087** If an error occurs, an SQLite error code is returned. Possible error
12088** codes include SQLITE_CORRUPT (if the changeset buffer is corrupt) or
12089** SQLITE_NOMEM.
12090*/
12091SQLITE_API int sqlite3changeset_next(sqlite3_changeset_iter *pIter);
12092
12093/*
12094** CAPI3REF: Obtain The Current Operation From A Changeset Iterator
12095** METHOD: sqlite3_changeset_iter
12096**
12097** The pIter argument passed to this function may either be an iterator
12098** passed to a conflict-handler by [sqlite3changeset_apply()], or an iterator
12099** created by [sqlite3changeset_start()]. In the latter case, the most recent
12100** call to [sqlite3changeset_next()] must have returned [SQLITE_ROW]. If this
12101** is not the case, this function returns [SQLITE_MISUSE].
12102**
12103** Arguments pOp, pnCol and pzTab may not be NULL. Upon return, three
12104** outputs are set through these pointers:
12105**
12106** *pOp is set to one of [SQLITE_INSERT], [SQLITE_DELETE] or [SQLITE_UPDATE],
12107** depending on the type of change that the iterator currently points to;
12108**
12109** *pnCol is set to the number of columns in the table affected by the change; and
12110**
12111** *pzTab is set to point to a nul-terminated utf-8 encoded string containing
12112** the name of the table affected by the current change. The buffer remains
12113** valid until either sqlite3changeset_next() is called on the iterator
12114** or until the conflict-handler function returns.
12115**
12116** If pbIndirect is not NULL, then *pbIndirect is set to true (1) if the change
12117** is an indirect change, or false (0) otherwise. See the documentation for
12118** [sqlite3session_indirect()] for a description of direct and indirect
12119** changes.
12120**
12121** If no error occurs, SQLITE_OK is returned. If an error does occur, an
12122** SQLite error code is returned. The values of the output variables may not
12123** be trusted in this case.
12124*/
12125SQLITE_API int sqlite3changeset_op(
12126 sqlite3_changeset_iter *pIter, /* Iterator object */
12127 const char **pzTab, /* OUT: Pointer to table name */
12128 int *pnCol, /* OUT: Number of columns in table */
12129 int *pOp, /* OUT: SQLITE_INSERT, DELETE or UPDATE */
12130 int *pbIndirect /* OUT: True for an 'indirect' change */
12131);
12132
12133/*
12134** CAPI3REF: Obtain The Primary Key Definition Of A Table
12135** METHOD: sqlite3_changeset_iter
12136**
12137** For each modified table, a changeset includes the following:
12138**
12139** <ul>
12140** <li> The number of columns in the table, and
12141** <li> Which of those columns make up the tables PRIMARY KEY.
12142** </ul>
12143**
12144** This function is used to find which columns comprise the PRIMARY KEY of
12145** the table modified by the change that iterator pIter currently points to.
12146** If successful, *pabPK is set to point to an array of nCol entries, where
12147** nCol is the number of columns in the table. Elements of *pabPK are set to
12148** 0x01 if the corresponding column is part of the tables primary key, or
12149** 0x00 if it is not.
12150**
12151** If argument pnCol is not NULL, then *pnCol is set to the number of columns
12152** in the table.
12153**
12154** If this function is called when the iterator does not point to a valid
12155** entry, SQLITE_MISUSE is returned and the output variables zeroed. Otherwise,
12156** SQLITE_OK is returned and the output variables populated as described
12157** above.
12158*/
12159SQLITE_API int sqlite3changeset_pk(
12160 sqlite3_changeset_iter *pIter, /* Iterator object */
12161 unsigned char **pabPK, /* OUT: Array of boolean - true for PK cols */
12162 int *pnCol /* OUT: Number of entries in output array */
12163);
12164
12165/*
12166** CAPI3REF: Obtain old.* Values From A Changeset Iterator
12167** METHOD: sqlite3_changeset_iter
12168**
12169** The pIter argument passed to this function may either be an iterator
12170** passed to a conflict-handler by [sqlite3changeset_apply()], or an iterator
12171** created by [sqlite3changeset_start()]. In the latter case, the most recent
12172** call to [sqlite3changeset_next()] must have returned SQLITE_ROW.
12173** Furthermore, it may only be called if the type of change that the iterator
12174** currently points to is either [SQLITE_DELETE] or [SQLITE_UPDATE]. Otherwise,
12175** this function returns [SQLITE_MISUSE] and sets *ppValue to NULL.
12176**
12177** Argument iVal must be greater than or equal to 0, and less than the number
12178** of columns in the table affected by the current change. Otherwise,
12179** [SQLITE_RANGE] is returned and *ppValue is set to NULL.
12180**
12181** If successful, this function sets *ppValue to point to a protected
12182** sqlite3_value object containing the iVal'th value from the vector of
12183** original row values stored as part of the UPDATE or DELETE change and
12184** returns SQLITE_OK. The name of the function comes from the fact that this
12185** is similar to the "old.*" columns available to update or delete triggers.
12186**
12187** If some other error occurs (e.g. an OOM condition), an SQLite error code
12188** is returned and *ppValue is set to NULL.
12189*/
12190SQLITE_API int sqlite3changeset_old(
12191 sqlite3_changeset_iter *pIter, /* Changeset iterator */
12192 int iVal, /* Column number */
12193 sqlite3_value **ppValue /* OUT: Old value (or NULL pointer) */
12194);
12195
12196/*
12197** CAPI3REF: Obtain new.* Values From A Changeset Iterator
12198** METHOD: sqlite3_changeset_iter
12199**
12200** The pIter argument passed to this function may either be an iterator
12201** passed to a conflict-handler by [sqlite3changeset_apply()], or an iterator
12202** created by [sqlite3changeset_start()]. In the latter case, the most recent
12203** call to [sqlite3changeset_next()] must have returned SQLITE_ROW.
12204** Furthermore, it may only be called if the type of change that the iterator
12205** currently points to is either [SQLITE_UPDATE] or [SQLITE_INSERT]. Otherwise,
12206** this function returns [SQLITE_MISUSE] and sets *ppValue to NULL.
12207**
12208** Argument iVal must be greater than or equal to 0, and less than the number
12209** of columns in the table affected by the current change. Otherwise,
12210** [SQLITE_RANGE] is returned and *ppValue is set to NULL.
12211**
12212** If successful, this function sets *ppValue to point to a protected
12213** sqlite3_value object containing the iVal'th value from the vector of
12214** new row values stored as part of the UPDATE or INSERT change and
12215** returns SQLITE_OK. If the change is an UPDATE and does not include
12216** a new value for the requested column, *ppValue is set to NULL and
12217** SQLITE_OK returned. The name of the function comes from the fact that
12218** this is similar to the "new.*" columns available to update or delete
12219** triggers.
12220**
12221** If some other error occurs (e.g. an OOM condition), an SQLite error code
12222** is returned and *ppValue is set to NULL.
12223*/
12224SQLITE_API int sqlite3changeset_new(
12225 sqlite3_changeset_iter *pIter, /* Changeset iterator */
12226 int iVal, /* Column number */
12227 sqlite3_value **ppValue /* OUT: New value (or NULL pointer) */
12228);
12229
12230/*
12231** CAPI3REF: Obtain Conflicting Row Values From A Changeset Iterator
12232** METHOD: sqlite3_changeset_iter
12233**
12234** This function should only be used with iterator objects passed to a
12235** conflict-handler callback by [sqlite3changeset_apply()] with either
12236** [SQLITE_CHANGESET_DATA] or [SQLITE_CHANGESET_CONFLICT]. If this function
12237** is called on any other iterator, [SQLITE_MISUSE] is returned and *ppValue
12238** is set to NULL.
12239**
12240** Argument iVal must be greater than or equal to 0, and less than the number
12241** of columns in the table affected by the current change. Otherwise,
12242** [SQLITE_RANGE] is returned and *ppValue is set to NULL.
12243**
12244** If successful, this function sets *ppValue to point to a protected
12245** sqlite3_value object containing the iVal'th value from the
12246** "conflicting row" associated with the current conflict-handler callback
12247** and returns SQLITE_OK.
12248**
12249** If some other error occurs (e.g. an OOM condition), an SQLite error code
12250** is returned and *ppValue is set to NULL.
12251*/
12252SQLITE_API int sqlite3changeset_conflict(
12253 sqlite3_changeset_iter *pIter, /* Changeset iterator */
12254 int iVal, /* Column number */
12255 sqlite3_value **ppValue /* OUT: Value from conflicting row */
12256);
12257
12258/*
12259** CAPI3REF: Determine The Number Of Foreign Key Constraint Violations
12260** METHOD: sqlite3_changeset_iter
12261**
12262** This function may only be called with an iterator passed to an
12263** SQLITE_CHANGESET_FOREIGN_KEY conflict handler callback. In this case
12264** it sets the output variable to the total number of known foreign key
12265** violations in the destination database and returns SQLITE_OK.
12266**
12267** In all other cases this function returns SQLITE_MISUSE.
12268*/
12269SQLITE_API int sqlite3changeset_fk_conflicts(
12270 sqlite3_changeset_iter *pIter, /* Changeset iterator */
12271 int *pnOut /* OUT: Number of FK violations */
12272);
12273
12274
12275/*
12276** CAPI3REF: Finalize A Changeset Iterator
12277** METHOD: sqlite3_changeset_iter
12278**
12279** This function is used to finalize an iterator allocated with
12280** [sqlite3changeset_start()].
12281**
12282** This function should only be called on iterators created using the
12283** [sqlite3changeset_start()] function. If an application calls this
12284** function with an iterator passed to a conflict-handler by
12285** [sqlite3changeset_apply()], [SQLITE_MISUSE] is immediately returned and the
12286** call has no effect.
12287**
12288** If an error was encountered within a call to an sqlite3changeset_xxx()
12289** function (for example an [SQLITE_CORRUPT] in [sqlite3changeset_next()] or an
12290** [SQLITE_NOMEM] in [sqlite3changeset_new()]) then an error code corresponding
12291** to that error is returned by this function. Otherwise, SQLITE_OK is
12292** returned. This is to allow the following pattern (pseudo-code):
12293**
12294** <pre>
12295** sqlite3changeset_start();
12296** while( SQLITE_ROW==sqlite3changeset_next() ){
12297** // Do something with change.
12298** }
12299** rc = sqlite3changeset_finalize();
12300** if( rc!=SQLITE_OK ){
12301** // An error has occurred
12302** }
12303** </pre>
12304*/
12305SQLITE_API int sqlite3changeset_finalize(sqlite3_changeset_iter *pIter);
12306
12307/*
12308** CAPI3REF: Invert A Changeset
12309**
12310** This function is used to "invert" a changeset object. Applying an inverted
12311** changeset to a database reverses the effects of applying the uninverted
12312** changeset. Specifically:
12313**
12314** <ul>
12315** <li> Each DELETE change is changed to an INSERT, and
12316** <li> Each INSERT change is changed to a DELETE, and
12317** <li> For each UPDATE change, the old.* and new.* values are exchanged.
12318** </ul>
12319**
12320** This function does not change the order in which changes appear within
12321** the changeset. It merely reverses the sense of each individual change.
12322**
12323** If successful, a pointer to a buffer containing the inverted changeset
12324** is stored in *ppOut, the size of the same buffer is stored in *pnOut, and
12325** SQLITE_OK is returned. If an error occurs, both *pnOut and *ppOut are
12326** zeroed and an SQLite error code returned.
12327**
12328** It is the responsibility of the caller to eventually call sqlite3_free()
12329** on the *ppOut pointer to free the buffer allocation following a successful
12330** call to this function.
12331**
12332** WARNING/TODO: This function currently assumes that the input is a valid
12333** changeset. If it is not, the results are undefined.
12334*/
12335SQLITE_API int sqlite3changeset_invert(
12336 int nIn, const void *pIn, /* Input changeset */
12337 int *pnOut, void **ppOut /* OUT: Inverse of input */
12338);
12339
12340/*
12341** CAPI3REF: Concatenate Two Changeset Objects
12342**
12343** This function is used to concatenate two changesets, A and B, into a
12344** single changeset. The result is a changeset equivalent to applying
12345** changeset A followed by changeset B.
12346**
12347** This function combines the two input changesets using an
12348** sqlite3_changegroup object. Calling it produces similar results as the
12349** following code fragment:
12350**
12351** <pre>
12352** sqlite3_changegroup *pGrp;
12353** rc = sqlite3_changegroup_new(&pGrp);
12354** if( rc==SQLITE_OK ) rc = sqlite3changegroup_add(pGrp, nA, pA);
12355** if( rc==SQLITE_OK ) rc = sqlite3changegroup_add(pGrp, nB, pB);
12356** if( rc==SQLITE_OK ){
12357** rc = sqlite3changegroup_output(pGrp, pnOut, ppOut);
12358** }else{
12359** *ppOut = 0;
12360** *pnOut = 0;
12361** }
12362** </pre>
12363**
12364** Refer to the sqlite3_changegroup documentation below for details.
12365*/
12366SQLITE_API int sqlite3changeset_concat(
12367 int nA, /* Number of bytes in buffer pA */
12368 void *pA, /* Pointer to buffer containing changeset A */
12369 int nB, /* Number of bytes in buffer pB */
12370 void *pB, /* Pointer to buffer containing changeset B */
12371 int *pnOut, /* OUT: Number of bytes in output changeset */
12372 void **ppOut /* OUT: Buffer containing output changeset */
12373);
12374
12375/*
12376** CAPI3REF: Changegroup Handle
12377**
12378** A changegroup is an object used to combine two or more
12379** [changesets] or [patchsets]
12380*/
12381typedef struct sqlite3_changegroup sqlite3_changegroup;
12382
12383/*
12384** CAPI3REF: Create A New Changegroup Object
12385** CONSTRUCTOR: sqlite3_changegroup
12386**
12387** An sqlite3_changegroup object is used to combine two or more changesets
12388** (or patchsets) into a single changeset (or patchset). A single changegroup
12389** object may combine changesets or patchsets, but not both. The output is
12390** always in the same format as the input.
12391**
12392** If successful, this function returns SQLITE_OK and populates (*pp) with
12393** a pointer to a new sqlite3_changegroup object before returning. The caller
12394** should eventually free the returned object using a call to
12395** sqlite3changegroup_delete(). If an error occurs, an SQLite error code
12396** (i.e. SQLITE_NOMEM) is returned and *pp is set to NULL.
12397**
12398** The usual usage pattern for an sqlite3_changegroup object is as follows:
12399**
12400** <ul>
12401** <li> It is created using a call to sqlite3changegroup_new().
12402**
12403** <li> Zero or more changesets (or patchsets) are added to the object
12404** by calling sqlite3changegroup_add().
12405**
12406** <li> The result of combining all input changesets together is obtained
12407** by the application via a call to sqlite3changegroup_output().
12408**
12409** <li> The object is deleted using a call to sqlite3changegroup_delete().
12410** </ul>
12411**
12412** Any number of calls to add() and output() may be made between the calls to
12413** new() and delete(), and in any order.
12414**
12415** As well as the regular sqlite3changegroup_add() and
12416** sqlite3changegroup_output() functions, also available are the streaming
12417** versions sqlite3changegroup_add_strm() and sqlite3changegroup_output_strm().
12418*/
12419SQLITE_API int sqlite3changegroup_new(sqlite3_changegroup **pp);
12420
12421/*
12422** CAPI3REF: Add a Schema to a Changegroup
12423** METHOD: sqlite3_changegroup_schema
12424**
12425** This method may be used to optionally enforce the rule that the changesets
12426** added to the changegroup handle must match the schema of database zDb
12427** ("main", "temp", or the name of an attached database). If
12428** sqlite3changegroup_add() is called to add a changeset that is not compatible
12429** with the configured schema, SQLITE_SCHEMA is returned and the changegroup
12430** object is left in an undefined state.
12431**
12432** A changeset schema is considered compatible with the database schema in
12433** the same way as for sqlite3changeset_apply(). Specifically, for each
12434** table in the changeset, there exists a database table with:
12435**
12436** <ul>
12437** <li> The name identified by the changeset, and
12438** <li> at least as many columns as recorded in the changeset, and
12439** <li> the primary key columns in the same position as recorded in
12440** the changeset.
12441** </ul>
12442**
12443** The output of the changegroup object always has the same schema as the
12444** database nominated using this function. In cases where changesets passed
12445** to sqlite3changegroup_add() have fewer columns than the corresponding table
12446** in the database schema, these are filled in using the default column
12447** values from the database schema. This makes it possible to combined
12448** changesets that have different numbers of columns for a single table
12449** within a changegroup, provided that they are otherwise compatible.
12450*/
12451SQLITE_API int sqlite3changegroup_schema(sqlite3_changegroup*, sqlite3*, const char *zDb);
12452
12453/*
12454** CAPI3REF: Add A Changeset To A Changegroup
12455** METHOD: sqlite3_changegroup
12456**
12457** Add all changes within the changeset (or patchset) in buffer pData (size
12458** nData bytes) to the changegroup.
12459**
12460** If the buffer contains a patchset, then all prior calls to this function
12461** on the same changegroup object must also have specified patchsets. Or, if
12462** the buffer contains a changeset, so must have the earlier calls to this
12463** function. Otherwise, SQLITE_ERROR is returned and no changes are added
12464** to the changegroup.
12465**
12466** Rows within the changeset and changegroup are identified by the values in
12467** their PRIMARY KEY columns. A change in the changeset is considered to
12468** apply to the same row as a change already present in the changegroup if
12469** the two rows have the same primary key.
12470**
12471** Changes to rows that do not already appear in the changegroup are
12472** simply copied into it. Or, if both the new changeset and the changegroup
12473** contain changes that apply to a single row, the final contents of the
12474** changegroup depends on the type of each change, as follows:
12475**
12476** <table border=1 style="margin-left:8ex;margin-right:8ex">
12477** <tr><th style="white-space:pre">Existing Change </th>
12478** <th style="white-space:pre">New Change </th>
12479** <th>Output Change
12480** <tr><td>INSERT <td>INSERT <td>
12481** The new change is ignored. This case does not occur if the new
12482** changeset was recorded immediately after the changesets already
12483** added to the changegroup.
12484** <tr><td>INSERT <td>UPDATE <td>
12485** The INSERT change remains in the changegroup. The values in the
12486** INSERT change are modified as if the row was inserted by the
12487** existing change and then updated according to the new change.
12488** <tr><td>INSERT <td>DELETE <td>
12489** The existing INSERT is removed from the changegroup. The DELETE is
12490** not added.
12491** <tr><td>UPDATE <td>INSERT <td>
12492** The new change is ignored. This case does not occur if the new
12493** changeset was recorded immediately after the changesets already
12494** added to the changegroup.
12495** <tr><td>UPDATE <td>UPDATE <td>
12496** The existing UPDATE remains within the changegroup. It is amended
12497** so that the accompanying values are as if the row was updated once
12498** by the existing change and then again by the new change.
12499** <tr><td>UPDATE <td>DELETE <td>
12500** The existing UPDATE is replaced by the new DELETE within the
12501** changegroup.
12502** <tr><td>DELETE <td>INSERT <td>
12503** If one or more of the column values in the row inserted by the
12504** new change differ from those in the row deleted by the existing
12505** change, the existing DELETE is replaced by an UPDATE within the
12506** changegroup. Otherwise, if the inserted row is exactly the same
12507** as the deleted row, the existing DELETE is simply discarded.
12508** <tr><td>DELETE <td>UPDATE <td>
12509** The new change is ignored. This case does not occur if the new
12510** changeset was recorded immediately after the changesets already
12511** added to the changegroup.
12512** <tr><td>DELETE <td>DELETE <td>
12513** The new change is ignored. This case does not occur if the new
12514** changeset was recorded immediately after the changesets already
12515** added to the changegroup.
12516** </table>
12517**
12518** If the new changeset contains changes to a table that is already present
12519** in the changegroup, then the number of columns and the position of the
12520** primary key columns for the table must be consistent. If this is not the
12521** case, this function fails with SQLITE_SCHEMA. Except, if the changegroup
12522** object has been configured with a database schema using the
12523** sqlite3changegroup_schema() API, then it is possible to combine changesets
12524** with different numbers of columns for a single table, provided that
12525** they are otherwise compatible.
12526**
12527** If the input changeset appears to be corrupt and the corruption is
12528** detected, SQLITE_CORRUPT is returned. Or, if an out-of-memory condition
12529** occurs during processing, this function returns SQLITE_NOMEM.
12530**
12531** In all cases, if an error occurs the state of the final contents of the
12532** changegroup is undefined. If no error occurs, SQLITE_OK is returned.
12533*/
12534SQLITE_API int sqlite3changegroup_add(sqlite3_changegroup*, int nData, void *pData);
12535
12536/*
12537** CAPI3REF: Add A Single Change To A Changegroup
12538** METHOD: sqlite3_changegroup
12539**
12540** This function adds the single change currently indicated by the iterator
12541** passed as the second argument to the changegroup object. The rules for
12542** adding the change are just as described for [sqlite3changegroup_add()].
12543**
12544** If the change is successfully added to the changegroup, SQLITE_OK is
12545** returned. Otherwise, an SQLite error code is returned.
12546**
12547** The iterator must point to a valid entry when this function is called.
12548** If it does not, SQLITE_ERROR is returned and no change is added to the
12549** changegroup. Additionally, the iterator must not have been opened with
12550** the SQLITE_CHANGESETAPPLY_INVERT flag. In this case SQLITE_ERROR is also
12551** returned.
12552*/
12553SQLITE_API int sqlite3changegroup_add_change(
12554 sqlite3_changegroup*,
12555 sqlite3_changeset_iter*
12556);
12557
12558
12559
12560/*
12561** CAPI3REF: Obtain A Composite Changeset From A Changegroup
12562** METHOD: sqlite3_changegroup
12563**
12564** Obtain a buffer containing a changeset (or patchset) representing the
12565** current contents of the changegroup. If the inputs to the changegroup
12566** were themselves changesets, the output is a changeset. Or, if the
12567** inputs were patchsets, the output is also a patchset.
12568**
12569** As with the output of the sqlite3session_changeset() and
12570** sqlite3session_patchset() functions, all changes related to a single
12571** table are grouped together in the output of this function. Tables appear
12572** in the same order as for the very first changeset added to the changegroup.
12573** If the second or subsequent changesets added to the changegroup contain
12574** changes for tables that do not appear in the first changeset, they are
12575** appended onto the end of the output changeset, again in the order in
12576** which they are first encountered.
12577**
12578** If an error occurs, an SQLite error code is returned and the output
12579** variables (*pnData) and (*ppData) are set to 0. Otherwise, SQLITE_OK
12580** is returned and the output variables are set to the size of and a
12581** pointer to the output buffer, respectively. In this case it is the
12582** responsibility of the caller to eventually free the buffer using a
12583** call to sqlite3_free().
12584*/
12585SQLITE_API int sqlite3changegroup_output(
12586 sqlite3_changegroup*,
12587 int *pnData, /* OUT: Size of output buffer in bytes */
12588 void **ppData /* OUT: Pointer to output buffer */
12589);
12590
12591/*
12592** CAPI3REF: Delete A Changegroup Object
12593** DESTRUCTOR: sqlite3_changegroup
12594*/
12595SQLITE_API void sqlite3changegroup_delete(sqlite3_changegroup*);
12596
12597/*
12598** CAPI3REF: Apply A Changeset To A Database
12599**
12600** Apply a changeset or patchset to a database. These functions attempt to
12601** update the "main" database attached to handle db with the changes found in
12602** the changeset passed via the second and third arguments.
12603**
12604** All changes made by these functions are enclosed in a savepoint transaction.
12605** If any other error (aside from a constraint failure when attempting to
12606** write to the target database) occurs, then the savepoint transaction is
12607** rolled back, restoring the target database to its original state, and an
12608** SQLite error code returned. Additionally, starting with version 3.51.0,
12609** an error code and error message that may be accessed using the
12610** [sqlite3_errcode()] and [sqlite3_errmsg()] APIs are left in the database
12611** handle.
12612**
12613** The fourth argument (xFilter) passed to these functions is the "filter
12614** callback". This may be passed NULL, in which case all changes in the
12615** changeset are applied to the database. For sqlite3changeset_apply() and
12616** sqlite3_changeset_apply_v2(), if it is not NULL, then it is invoked once
12617** for each table affected by at least one change in the changeset. In this
12618** case the table name is passed as the second argument, and a copy of
12619** the context pointer passed as the sixth argument to apply() or apply_v2()
12620** as the first. If the "filter callback" returns zero, then no attempt is
12621** made to apply any changes to the table. Otherwise, if the return value is
12622** non-zero, all changes related to the table are attempted.
12623**
12624** For sqlite3_changeset_apply_v3(), the xFilter callback is invoked once
12625** per change. The second argument in this case is an sqlite3_changeset_iter
12626** that may be queried using the usual APIs for the details of the current
12627** change. If the "filter callback" returns zero in this case, then no attempt
12628** is made to apply the current change. If it returns non-zero, the change
12629** is applied.
12630**
12631** For each table that is not excluded by the filter callback, this function
12632** tests that the target database contains a compatible table. A table is
12633** considered compatible if all of the following are true:
12634**
12635** <ul>
12636** <li> The table has the same name as the name recorded in the
12637** changeset, and
12638** <li> The table has at least as many columns as recorded in the
12639** changeset, and
12640** <li> The table has primary key columns in the same position as
12641** recorded in the changeset.
12642** </ul>
12643**
12644** If there is no compatible table, it is not an error, but none of the
12645** changes associated with the table are applied. A warning message is issued
12646** via the sqlite3_log() mechanism with the error code SQLITE_SCHEMA. At most
12647** one such warning is issued for each table in the changeset.
12648**
12649** For each change for which there is a compatible table, an attempt is made
12650** to modify the table contents according to each UPDATE, INSERT or DELETE
12651** change that is not excluded by a filter callback. If a change cannot be
12652** applied cleanly, the conflict handler function passed as the fifth argument
12653** to sqlite3changeset_apply() may be invoked. A description of exactly when
12654** the conflict handler is invoked for each type of change is below.
12655**
12656** Unlike the xFilter argument, xConflict may not be passed NULL. The results
12657** of passing anything other than a valid function pointer as the xConflict
12658** argument are undefined.
12659**
12660** Each time the conflict handler function is invoked, it must return one
12661** of [SQLITE_CHANGESET_OMIT], [SQLITE_CHANGESET_ABORT] or
12662** [SQLITE_CHANGESET_REPLACE]. SQLITE_CHANGESET_REPLACE may only be returned
12663** if the second argument passed to the conflict handler is either
12664** SQLITE_CHANGESET_DATA or SQLITE_CHANGESET_CONFLICT. If the conflict-handler
12665** returns an illegal value, any changes already made are rolled back and
12666** the call to sqlite3changeset_apply() returns SQLITE_MISUSE. Different
12667** actions are taken by sqlite3changeset_apply() depending on the value
12668** returned by each invocation of the conflict-handler function. Refer to
12669** the documentation for the three
12670** [SQLITE_CHANGESET_OMIT|available return values] for details.
12671**
12672** <dl>
12673** <dt>DELETE Changes<dd>
12674** For each DELETE change, the function checks if the target database
12675** contains a row with the same primary key value (or values) as the
12676** original row values stored in the changeset. If it does, and the values
12677** stored in all non-primary key columns also match the values stored in
12678** the changeset the row is deleted from the target database.
12679**
12680** If a row with matching primary key values is found, but one or more of
12681** the non-primary key fields contains a value different from the original
12682** row value stored in the changeset, the conflict-handler function is
12683** invoked with [SQLITE_CHANGESET_DATA] as the second argument. If the
12684** database table has more columns than are recorded in the changeset,
12685** only the values of those non-primary key fields are compared against
12686** the current database contents - any trailing database table columns
12687** are ignored.
12688**
12689** If no row with matching primary key values is found in the database,
12690** the conflict-handler function is invoked with [SQLITE_CHANGESET_NOTFOUND]
12691** passed as the second argument.
12692**
12693** If the DELETE operation is attempted, but SQLite returns SQLITE_CONSTRAINT
12694** (which can only happen if a foreign key constraint is violated), the
12695** conflict-handler function is invoked with [SQLITE_CHANGESET_CONSTRAINT]
12696** passed as the second argument. This includes the case where the DELETE
12697** operation is attempted because an earlier call to the conflict handler
12698** function returned [SQLITE_CHANGESET_REPLACE].
12699**
12700** <dt>INSERT Changes<dd>
12701** For each INSERT change, an attempt is made to insert the new row into
12702** the database. If the changeset row contains fewer fields than the
12703** database table, the trailing fields are populated with their default
12704** values.
12705**
12706** If the attempt to insert the row fails because the database already
12707** contains a row with the same primary key values, the conflict handler
12708** function is invoked with the second argument set to
12709** [SQLITE_CHANGESET_CONFLICT].
12710**
12711** If the attempt to insert the row fails because of some other constraint
12712** violation (e.g. NOT NULL or UNIQUE), the conflict handler function is
12713** invoked with the second argument set to [SQLITE_CHANGESET_CONSTRAINT].
12714** This includes the case where the INSERT operation is re-attempted because
12715** an earlier call to the conflict handler function returned
12716** [SQLITE_CHANGESET_REPLACE].
12717**
12718** <dt>UPDATE Changes<dd>
12719** For each UPDATE change, the function checks if the target database
12720** contains a row with the same primary key value (or values) as the
12721** original row values stored in the changeset. If it does, and the values
12722** stored in all modified non-primary key columns also match the values
12723** stored in the changeset the row is updated within the target database.
12724**
12725** If a row with matching primary key values is found, but one or more of
12726** the modified non-primary key fields contains a value different from an
12727** original row value stored in the changeset, the conflict-handler function
12728** is invoked with [SQLITE_CHANGESET_DATA] as the second argument. Since
12729** UPDATE changes only contain values for non-primary key fields that are
12730** to be modified, only those fields need to match the original values to
12731** avoid the SQLITE_CHANGESET_DATA conflict-handler callback.
12732**
12733** If no row with matching primary key values is found in the database,
12734** the conflict-handler function is invoked with [SQLITE_CHANGESET_NOTFOUND]
12735** passed as the second argument.
12736**
12737** If the UPDATE operation is attempted, but SQLite returns
12738** SQLITE_CONSTRAINT, the conflict-handler function is invoked with
12739** [SQLITE_CHANGESET_CONSTRAINT] passed as the second argument.
12740** This includes the case where the UPDATE operation is attempted after
12741** an earlier call to the conflict handler function returned
12742** [SQLITE_CHANGESET_REPLACE].
12743** </dl>
12744**
12745** It is safe to execute SQL statements, including those that write to the
12746** table that the callback related to, from within the xConflict callback.
12747** This can be used to further customize the application's conflict
12748** resolution strategy.
12749**
12750** If the output parameters (ppRebase) and (pnRebase) are non-NULL and
12751** the input is a changeset (not a patchset), then sqlite3changeset_apply_v2()
12752** may set (*ppRebase) to point to a "rebase" that may be used with the
12753** sqlite3_rebaser APIs buffer before returning. In this case (*pnRebase)
12754** is set to the size of the buffer in bytes. It is the responsibility of the
12755** caller to eventually free any such buffer using sqlite3_free(). The buffer
12756** is only allocated and populated if one or more conflicts were encountered
12757** while applying the patchset. See comments surrounding the sqlite3_rebaser
12758** APIs for further details.
12759**
12760** The behavior of sqlite3changeset_apply_v2() and its streaming equivalent
12761** may be modified by passing a combination of
12762** [SQLITE_CHANGESETAPPLY_NOSAVEPOINT | supported flags] as the 9th parameter.
12763**
12764** Note that the sqlite3changeset_apply_v2() API is still <b>experimental</b>
12765** and therefore subject to change.
12766*/
12767SQLITE_API int sqlite3changeset_apply(
12768 sqlite3 *db, /* Apply change to "main" db of this handle */
12769 int nChangeset, /* Size of changeset in bytes */
12770 void *pChangeset, /* Changeset blob */
12771 int(*xFilter)(
12772 void *pCtx, /* Copy of sixth arg to _apply() */
12773 const char *zTab /* Table name */
12774 ),
12775 int(*xConflict)(
12776 void *pCtx, /* Copy of sixth arg to _apply() */
12777 int eConflict, /* DATA, MISSING, CONFLICT, CONSTRAINT */
12778 sqlite3_changeset_iter *p /* Handle describing change and conflict */
12779 ),
12780 void *pCtx /* First argument passed to xConflict */
12781);
12782SQLITE_API int sqlite3changeset_apply_v2(
12783 sqlite3 *db, /* Apply change to "main" db of this handle */
12784 int nChangeset, /* Size of changeset in bytes */
12785 void *pChangeset, /* Changeset blob */
12786 int(*xFilter)(
12787 void *pCtx, /* Copy of sixth arg to _apply() */
12788 const char *zTab /* Table name */
12789 ),
12790 int(*xConflict)(
12791 void *pCtx, /* Copy of sixth arg to _apply() */
12792 int eConflict, /* DATA, MISSING, CONFLICT, CONSTRAINT */
12793 sqlite3_changeset_iter *p /* Handle describing change and conflict */
12794 ),
12795 void *pCtx, /* First argument passed to xConflict */
12796 void **ppRebase, int *pnRebase, /* OUT: Rebase data */
12797 int flags /* SESSION_CHANGESETAPPLY_* flags */
12798);
12799SQLITE_API int sqlite3changeset_apply_v3(
12800 sqlite3 *db, /* Apply change to "main" db of this handle */
12801 int nChangeset, /* Size of changeset in bytes */
12802 void *pChangeset, /* Changeset blob */
12803 int(*xFilter)(
12804 void *pCtx, /* Copy of sixth arg to _apply() */
12805 sqlite3_changeset_iter *p /* Handle describing change */
12806 ),
12807 int(*xConflict)(
12808 void *pCtx, /* Copy of sixth arg to _apply() */
12809 int eConflict, /* DATA, MISSING, CONFLICT, CONSTRAINT */
12810 sqlite3_changeset_iter *p /* Handle describing change and conflict */
12811 ),
12812 void *pCtx, /* First argument passed to xConflict */
12813 void **ppRebase, int *pnRebase, /* OUT: Rebase data */
12814 int flags /* SESSION_CHANGESETAPPLY_* flags */
12815);
12816
12817/*
12818** CAPI3REF: Flags for sqlite3changeset_apply_v2
12819**
12820** The following flags may passed via the 9th parameter to
12821** [sqlite3changeset_apply_v2] and [sqlite3changeset_apply_v2_strm]:
12822**
12823** <dl>
12824** <dt>SQLITE_CHANGESETAPPLY_NOSAVEPOINT <dd>
12825** Usually, the sessions module encloses all operations performed by
12826** a single call to apply_v2() or apply_v2_strm() in a [SAVEPOINT]. The
12827** SAVEPOINT is committed if the changeset or patchset is successfully
12828** applied, or rolled back if an error occurs. Specifying this flag
12829** causes the sessions module to omit this savepoint. In this case, if the
12830** caller has an open transaction or savepoint when apply_v2() is called,
12831** it may revert the partially applied changeset by rolling it back.
12832**
12833** <dt>SQLITE_CHANGESETAPPLY_INVERT <dd>
12834** Invert the changeset before applying it. This is equivalent to inverting
12835** a changeset using sqlite3changeset_invert() before applying it. It is
12836** an error to specify this flag with a patchset.
12837**
12838** <dt>SQLITE_CHANGESETAPPLY_IGNORENOOP <dd>
12839** Do not invoke the conflict handler callback for any changes that
12840** would not actually modify the database even if they were applied.
12841** Specifically, this means that the conflict handler is not invoked
12842** for:
12843** <ul>
12844** <li>a delete change if the row being deleted cannot be found,
12845** <li>an update change if the modified fields are already set to
12846** their new values in the conflicting row, or
12847** <li>an insert change if all fields of the conflicting row match
12848** the row being inserted.
12849** </ul>
12850**
12851** <dt>SQLITE_CHANGESETAPPLY_FKNOACTION <dd>
12852** If this flag it set, then all foreign key constraints in the target
12853** database behave as if they were declared with "ON UPDATE NO ACTION ON
12854** DELETE NO ACTION", even if they are actually CASCADE, RESTRICT, SET NULL
12855** or SET DEFAULT.
12856*/
12857#define SQLITE_CHANGESETAPPLY_NOSAVEPOINT 0x0001
12858#define SQLITE_CHANGESETAPPLY_INVERT 0x0002
12859#define SQLITE_CHANGESETAPPLY_IGNORENOOP 0x0004
12860#define SQLITE_CHANGESETAPPLY_FKNOACTION 0x0008
12861
12862/*
12863** CAPI3REF: Constants Passed To The Conflict Handler
12864**
12865** Values that may be passed as the second argument to a conflict-handler.
12866**
12867** <dl>
12868** <dt>SQLITE_CHANGESET_DATA<dd>
12869** The conflict handler is invoked with CHANGESET_DATA as the second argument
12870** when processing a DELETE or UPDATE change if a row with the required
12871** PRIMARY KEY fields is present in the database, but one or more other
12872** (non primary-key) fields modified by the update do not contain the
12873** expected "before" values.
12874**
12875** The conflicting row, in this case, is the database row with the matching
12876** primary key.
12877**
12878** <dt>SQLITE_CHANGESET_NOTFOUND<dd>
12879** The conflict handler is invoked with CHANGESET_NOTFOUND as the second
12880** argument when processing a DELETE or UPDATE change if a row with the
12881** required PRIMARY KEY fields is not present in the database.
12882**
12883** There is no conflicting row in this case. The results of invoking the
12884** sqlite3changeset_conflict() API are undefined.
12885**
12886** <dt>SQLITE_CHANGESET_CONFLICT<dd>
12887** CHANGESET_CONFLICT is passed as the second argument to the conflict
12888** handler while processing an INSERT change if the operation would result
12889** in duplicate primary key values.
12890**
12891** The conflicting row in this case is the database row with the matching
12892** primary key.
12893**
12894** <dt>SQLITE_CHANGESET_FOREIGN_KEY<dd>
12895** If foreign key handling is enabled, and applying a changeset leaves the
12896** database in a state containing foreign key violations, the conflict
12897** handler is invoked with CHANGESET_FOREIGN_KEY as the second argument
12898** exactly once before the changeset is committed. If the conflict handler
12899** returns CHANGESET_OMIT, the changes, including those that caused the
12900** foreign key constraint violation, are committed. Or, if it returns
12901** CHANGESET_ABORT, the changeset is rolled back.
12902**
12903** No current or conflicting row information is provided. The only function
12904** it is possible to call on the supplied sqlite3_changeset_iter handle
12905** is sqlite3changeset_fk_conflicts().
12906**
12907** <dt>SQLITE_CHANGESET_CONSTRAINT<dd>
12908** If any other constraint violation occurs while applying a change (i.e.
12909** a UNIQUE, CHECK or NOT NULL constraint), the conflict handler is
12910** invoked with CHANGESET_CONSTRAINT as the second argument.
12911**
12912** There is no conflicting row in this case. The results of invoking the
12913** sqlite3changeset_conflict() API are undefined.
12914**
12915** </dl>
12916*/
12917#define SQLITE_CHANGESET_DATA 1
12918#define SQLITE_CHANGESET_NOTFOUND 2
12919#define SQLITE_CHANGESET_CONFLICT 3
12920#define SQLITE_CHANGESET_CONSTRAINT 4
12921#define SQLITE_CHANGESET_FOREIGN_KEY 5
12922
12923/*
12924** CAPI3REF: Constants Returned By The Conflict Handler
12925**
12926** A conflict handler callback must return one of the following three values.
12927**
12928** <dl>
12929** <dt>SQLITE_CHANGESET_OMIT<dd>
12930** If a conflict handler returns this value no special action is taken. The
12931** change that caused the conflict is not applied. The session module
12932** continues to the next change in the changeset.
12933**
12934** <dt>SQLITE_CHANGESET_REPLACE<dd>
12935** This value may only be returned if the second argument to the conflict
12936** handler was SQLITE_CHANGESET_DATA or SQLITE_CHANGESET_CONFLICT. If this
12937** is not the case, any changes applied so far are rolled back and the
12938** call to sqlite3changeset_apply() returns SQLITE_MISUSE.
12939**
12940** If CHANGESET_REPLACE is returned by an SQLITE_CHANGESET_DATA conflict
12941** handler, then the conflicting row is either updated or deleted, depending
12942** on the type of change.
12943**
12944** If CHANGESET_REPLACE is returned by an SQLITE_CHANGESET_CONFLICT conflict
12945** handler, then the conflicting row is removed from the database and a
12946** second attempt to apply the change is made. If this second attempt fails,
12947** the original row is restored to the database before continuing.
12948**
12949** <dt>SQLITE_CHANGESET_ABORT<dd>
12950** If this value is returned, any changes applied so far are rolled back
12951** and the call to sqlite3changeset_apply() returns SQLITE_ABORT.
12952** </dl>
12953*/
12954#define SQLITE_CHANGESET_OMIT 0
12955#define SQLITE_CHANGESET_REPLACE 1
12956#define SQLITE_CHANGESET_ABORT 2
12957
12958/*
12959** CAPI3REF: Rebasing changesets
12960** EXPERIMENTAL
12961**
12962** Suppose there is a site hosting a database in state S0. And that
12963** modifications are made that move that database to state S1 and a
12964** changeset recorded (the "local" changeset). Then, a changeset based
12965** on S0 is received from another site (the "remote" changeset) and
12966** applied to the database. The database is then in state
12967** (S1+"remote"), where the exact state depends on any conflict
12968** resolution decisions (OMIT or REPLACE) made while applying "remote".
12969** Rebasing a changeset is to update it to take those conflict
12970** resolution decisions into account, so that the same conflicts
12971** do not have to be resolved elsewhere in the network.
12972**
12973** For example, if both the local and remote changesets contain an
12974** INSERT of the same key on "CREATE TABLE t1(a PRIMARY KEY, b)":
12975**
12976** local: INSERT INTO t1 VALUES(1, 'v1');
12977** remote: INSERT INTO t1 VALUES(1, 'v2');
12978**
12979** and the conflict resolution is REPLACE, then the INSERT change is
12980** removed from the local changeset (it was overridden). Or, if the
12981** conflict resolution was "OMIT", then the local changeset is modified
12982** to instead contain:
12983**
12984** UPDATE t1 SET b = 'v2' WHERE a=1;
12985**
12986** Changes within the local changeset are rebased as follows:
12987**
12988** <dl>
12989** <dt>Local INSERT<dd>
12990** This may only conflict with a remote INSERT. If the conflict
12991** resolution was OMIT, then add an UPDATE change to the rebased
12992** changeset. Or, if the conflict resolution was REPLACE, add
12993** nothing to the rebased changeset.
12994**
12995** <dt>Local DELETE<dd>
12996** This may conflict with a remote UPDATE or DELETE. In both cases the
12997** only possible resolution is OMIT. If the remote operation was a
12998** DELETE, then add no change to the rebased changeset. If the remote
12999** operation was an UPDATE, then the old.* fields of change are updated
13000** to reflect the new.* values in the UPDATE.
13001**
13002** <dt>Local UPDATE<dd>
13003** This may conflict with a remote UPDATE or DELETE. If it conflicts
13004** with a DELETE, and the conflict resolution was OMIT, then the update
13005** is changed into an INSERT. Any undefined values in the new.* record
13006** from the update change are filled in using the old.* values from
13007** the conflicting DELETE. Or, if the conflict resolution was REPLACE,
13008** the UPDATE change is simply omitted from the rebased changeset.
13009**
13010** If conflict is with a remote UPDATE and the resolution is OMIT, then
13011** the old.* values are rebased using the new.* values in the remote
13012** change. Or, if the resolution is REPLACE, then the change is copied
13013** into the rebased changeset with updates to columns also updated by
13014** the conflicting remote UPDATE removed. If this means no columns would
13015** be updated, the change is omitted.
13016** </dl>
13017**
13018** A local change may be rebased against multiple remote changes
13019** simultaneously. If a single key is modified by multiple remote
13020** changesets, they are combined as follows before the local changeset
13021** is rebased:
13022**
13023** <ul>
13024** <li> If there has been one or more REPLACE resolutions on a
13025** key, it is rebased according to a REPLACE.
13026**
13027** <li> If there have been no REPLACE resolutions on a key, then
13028** the local changeset is rebased according to the most recent
13029** of the OMIT resolutions.
13030** </ul>
13031**
13032** Note that conflict resolutions from multiple remote changesets are
13033** combined on a per-field basis, not per-row. This means that in the
13034** case of multiple remote UPDATE operations, some fields of a single
13035** local change may be rebased for REPLACE while others are rebased for
13036** OMIT.
13037**
13038** In order to rebase a local changeset, the remote changeset must first
13039** be applied to the local database using sqlite3changeset_apply_v2() and
13040** the buffer of rebase information captured. Then:
13041**
13042** <ol>
13043** <li> An sqlite3_rebaser object is created by calling
13044** sqlite3rebaser_create().
13045** <li> The new object is configured with the rebase buffer obtained from
13046** sqlite3changeset_apply_v2() by calling sqlite3rebaser_configure().
13047** If the local changeset is to be rebased against multiple remote
13048** changesets, then sqlite3rebaser_configure() should be called
13049** multiple times, in the same order that the multiple
13050** sqlite3changeset_apply_v2() calls were made.
13051** <li> Each local changeset is rebased by calling sqlite3rebaser_rebase().
13052** <li> The sqlite3_rebaser object is deleted by calling
13053** sqlite3rebaser_delete().
13054** </ol>
13055*/
13056typedef struct sqlite3_rebaser sqlite3_rebaser;
13057
13058/*
13059** CAPI3REF: Create a changeset rebaser object.
13060** EXPERIMENTAL
13061**
13062** Allocate a new changeset rebaser object. If successful, set (*ppNew) to
13063** point to the new object and return SQLITE_OK. Otherwise, if an error
13064** occurs, return an SQLite error code (e.g. SQLITE_NOMEM) and set (*ppNew)
13065** to NULL.
13066*/
13067SQLITE_API int sqlite3rebaser_create(sqlite3_rebaser **ppNew);
13068
13069/*
13070** CAPI3REF: Configure a changeset rebaser object.
13071** EXPERIMENTAL
13072**
13073** Configure the changeset rebaser object to rebase changesets according
13074** to the conflict resolutions described by buffer pRebase (size nRebase
13075** bytes), which must have been obtained from a previous call to
13076** sqlite3changeset_apply_v2().
13077*/
13078SQLITE_API int sqlite3rebaser_configure(
13079 sqlite3_rebaser*,
13080 int nRebase, const void *pRebase
13081);
13082
13083/*
13084** CAPI3REF: Rebase a changeset
13085** EXPERIMENTAL
13086**
13087** Argument pIn must point to a buffer containing a changeset nIn bytes
13088** in size. This function allocates and populates a buffer with a copy
13089** of the changeset rebased according to the configuration of the
13090** rebaser object passed as the first argument. If successful, (*ppOut)
13091** is set to point to the new buffer containing the rebased changeset and
13092** (*pnOut) to its size in bytes and SQLITE_OK returned. It is the
13093** responsibility of the caller to eventually free the new buffer using
13094** sqlite3_free(). Otherwise, if an error occurs, (*ppOut) and (*pnOut)
13095** are set to zero and an SQLite error code returned.
13096*/
13097SQLITE_API int sqlite3rebaser_rebase(
13098 sqlite3_rebaser*,
13099 int nIn, const void *pIn,
13100 int *pnOut, void **ppOut
13101);
13102
13103/*
13104** CAPI3REF: Delete a changeset rebaser object.
13105** EXPERIMENTAL
13106**
13107** Delete the changeset rebaser object and all associated resources. There
13108** should be one call to this function for each successful invocation
13109** of sqlite3rebaser_create().
13110*/
13111SQLITE_API void sqlite3rebaser_delete(sqlite3_rebaser *p);
13112
13113/*
13114** CAPI3REF: Streaming Versions of API functions.
13115**
13116** The six streaming API xxx_strm() functions serve similar purposes to the
13117** corresponding non-streaming API functions:
13118**
13119** <table border=1 style="margin-left:8ex;margin-right:8ex">
13120** <tr><th>Streaming function<th>Non-streaming equivalent</th>
13121** <tr><td>sqlite3changeset_apply_strm<td>[sqlite3changeset_apply]
13122** <tr><td>sqlite3changeset_apply_strm_v2<td>[sqlite3changeset_apply_v2]
13123** <tr><td>sqlite3changeset_concat_strm<td>[sqlite3changeset_concat]
13124** <tr><td>sqlite3changeset_invert_strm<td>[sqlite3changeset_invert]
13125** <tr><td>sqlite3changeset_start_strm<td>[sqlite3changeset_start]
13126** <tr><td>sqlite3session_changeset_strm<td>[sqlite3session_changeset]
13127** <tr><td>sqlite3session_patchset_strm<td>[sqlite3session_patchset]
13128** </table>
13129**
13130** Non-streaming functions that accept changesets (or patchsets) as input
13131** require that the entire changeset be stored in a single buffer in memory.
13132** Similarly, those that return a changeset or patchset do so by returning
13133** a pointer to a single large buffer allocated using sqlite3_malloc().
13134** Normally this is convenient. However, if an application running in a
13135** low-memory environment is required to handle very large changesets, the
13136** large contiguous memory allocations required can become onerous.
13137**
13138** In order to avoid this problem, instead of a single large buffer, input
13139** is passed to a streaming API functions by way of a callback function that
13140** the sessions module invokes to incrementally request input data as it is
13141** required. In all cases, a pair of API function parameters such as
13142**
13143** <pre>
13144** int nChangeset,
13145** void *pChangeset,
13146** </pre>
13147**
13148** Is replaced by:
13149**
13150** <pre>
13151** int (*xInput)(void *pIn, void *pData, int *pnData),
13152** void *pIn,
13153** </pre>
13154**
13155** Each time the xInput callback is invoked by the sessions module, the first
13156** argument passed is a copy of the supplied pIn context pointer. The second
13157** argument, pData, points to a buffer (*pnData) bytes in size. Assuming no
13158** error occurs the xInput method should copy up to (*pnData) bytes of data
13159** into the buffer and set (*pnData) to the actual number of bytes copied
13160** before returning SQLITE_OK. If the input is completely exhausted, (*pnData)
13161** should be set to zero to indicate this. Or, if an error occurs, an SQLite
13162** error code should be returned. In all cases, if an xInput callback returns
13163** an error, all processing is abandoned and the streaming API function
13164** returns a copy of the error code to the caller.
13165**
13166** In the case of sqlite3changeset_start_strm(), the xInput callback may be
13167** invoked by the sessions module at any point during the lifetime of the
13168** iterator. If such an xInput callback returns an error, the iterator enters
13169** an error state, whereby all subsequent calls to iterator functions
13170** immediately fail with the same error code as returned by xInput.
13171**
13172** Similarly, streaming API functions that return changesets (or patchsets)
13173** return them in chunks by way of a callback function instead of via a
13174** pointer to a single large buffer. In this case, a pair of parameters such
13175** as:
13176**
13177** <pre>
13178** int *pnChangeset,
13179** void **ppChangeset,
13180** </pre>
13181**
13182** Is replaced by:
13183**
13184** <pre>
13185** int (*xOutput)(void *pOut, const void *pData, int nData),
13186** void *pOut
13187** </pre>
13188**
13189** The xOutput callback is invoked zero or more times to return data to
13190** the application. The first parameter passed to each call is a copy of the
13191** pOut pointer supplied by the application. The second parameter, pData,
13192** points to a buffer nData bytes in size containing the chunk of output
13193** data being returned. If the xOutput callback successfully processes the
13194** supplied data, it should return SQLITE_OK to indicate success. Otherwise,
13195** it should return some other SQLite error code. In this case processing
13196** is immediately abandoned and the streaming API function returns a copy
13197** of the xOutput error code to the application.
13198**
13199** The sessions module never invokes an xOutput callback with the third
13200** parameter set to a value less than or equal to zero. Other than this,
13201** no guarantees are made as to the size of the chunks of data returned.
13202*/
13203SQLITE_API int sqlite3changeset_apply_strm(
13204 sqlite3 *db, /* Apply change to "main" db of this handle */
13205 int (*xInput)(void *pIn, void *pData, int *pnData), /* Input function */
13206 void *pIn, /* First arg for xInput */
13207 int(*xFilter)(
13208 void *pCtx, /* Copy of sixth arg to _apply() */
13209 const char *zTab /* Table name */
13210 ),
13211 int(*xConflict)(
13212 void *pCtx, /* Copy of sixth arg to _apply() */
13213 int eConflict, /* DATA, MISSING, CONFLICT, CONSTRAINT */
13214 sqlite3_changeset_iter *p /* Handle describing change and conflict */
13215 ),
13216 void *pCtx /* First argument passed to xConflict */
13217);
13218SQLITE_API int sqlite3changeset_apply_v2_strm(
13219 sqlite3 *db, /* Apply change to "main" db of this handle */
13220 int (*xInput)(void *pIn, void *pData, int *pnData), /* Input function */
13221 void *pIn, /* First arg for xInput */
13222 int(*xFilter)(
13223 void *pCtx, /* Copy of sixth arg to _apply() */
13224 const char *zTab /* Table name */
13225 ),
13226 int(*xConflict)(
13227 void *pCtx, /* Copy of sixth arg to _apply() */
13228 int eConflict, /* DATA, MISSING, CONFLICT, CONSTRAINT */
13229 sqlite3_changeset_iter *p /* Handle describing change and conflict */
13230 ),
13231 void *pCtx, /* First argument passed to xConflict */
13232 void **ppRebase, int *pnRebase,
13233 int flags
13234);
13235SQLITE_API int sqlite3changeset_apply_v3_strm(
13236 sqlite3 *db, /* Apply change to "main" db of this handle */
13237 int (*xInput)(void *pIn, void *pData, int *pnData), /* Input function */
13238 void *pIn, /* First arg for xInput */
13239 int(*xFilter)(
13240 void *pCtx, /* Copy of sixth arg to _apply() */
13241 sqlite3_changeset_iter *p
13242 ),
13243 int(*xConflict)(
13244 void *pCtx, /* Copy of sixth arg to _apply() */
13245 int eConflict, /* DATA, MISSING, CONFLICT, CONSTRAINT */
13246 sqlite3_changeset_iter *p /* Handle describing change and conflict */
13247 ),
13248 void *pCtx, /* First argument passed to xConflict */
13249 void **ppRebase, int *pnRebase,
13250 int flags
13251);
13252SQLITE_API int sqlite3changeset_concat_strm(
13253 int (*xInputA)(void *pIn, void *pData, int *pnData),
13254 void *pInA,
13255 int (*xInputB)(void *pIn, void *pData, int *pnData),
13256 void *pInB,
13257 int (*xOutput)(void *pOut, const void *pData, int nData),
13258 void *pOut
13259);
13260SQLITE_API int sqlite3changeset_invert_strm(
13261 int (*xInput)(void *pIn, void *pData, int *pnData),
13262 void *pIn,
13263 int (*xOutput)(void *pOut, const void *pData, int nData),
13264 void *pOut
13265);
13266SQLITE_API int sqlite3changeset_start_strm(
13267 sqlite3_changeset_iter **pp,
13268 int (*xInput)(void *pIn, void *pData, int *pnData),
13269 void *pIn
13270);
13271SQLITE_API int sqlite3changeset_start_v2_strm(
13272 sqlite3_changeset_iter **pp,
13273 int (*xInput)(void *pIn, void *pData, int *pnData),
13274 void *pIn,
13275 int flags
13276);
13277SQLITE_API int sqlite3session_changeset_strm(
13278 sqlite3_session *pSession,
13279 int (*xOutput)(void *pOut, const void *pData, int nData),
13280 void *pOut
13281);
13282SQLITE_API int sqlite3session_patchset_strm(
13283 sqlite3_session *pSession,
13284 int (*xOutput)(void *pOut, const void *pData, int nData),
13285 void *pOut
13286);
13287SQLITE_API int sqlite3changegroup_add_strm(sqlite3_changegroup*,
13288 int (*xInput)(void *pIn, void *pData, int *pnData),
13289 void *pIn
13290);
13291SQLITE_API int sqlite3changegroup_output_strm(sqlite3_changegroup*,
13292 int (*xOutput)(void *pOut, const void *pData, int nData),
13293 void *pOut
13294);
13295SQLITE_API int sqlite3rebaser_rebase_strm(
13296 sqlite3_rebaser *pRebaser,
13297 int (*xInput)(void *pIn, void *pData, int *pnData),
13298 void *pIn,
13299 int (*xOutput)(void *pOut, const void *pData, int nData),
13300 void *pOut
13301);
13302
13303/*
13304** CAPI3REF: Configure global parameters
13305**
13306** The sqlite3session_config() interface is used to make global configuration
13307** changes to the sessions module in order to tune it to the specific needs
13308** of the application.
13309**
13310** The sqlite3session_config() interface is not threadsafe. If it is invoked
13311** while any other thread is inside any other sessions method then the
13312** results are undefined. Furthermore, if it is invoked after any sessions
13313** related objects have been created, the results are also undefined.
13314**
13315** The first argument to the sqlite3session_config() function must be one
13316** of the SQLITE_SESSION_CONFIG_XXX constants defined below. The
13317** interpretation of the (void*) value passed as the second parameter and
13318** the effect of calling this function depends on the value of the first
13319** parameter.
13320**
13321** <dl>
13322** <dt>SQLITE_SESSION_CONFIG_STRMSIZE<dd>
13323** By default, the sessions module streaming interfaces attempt to input
13324** and output data in approximately 1 KiB chunks. This operand may be used
13325** to set and query the value of this configuration setting. The pointer
13326** passed as the second argument must point to a value of type (int).
13327** If this value is greater than 0, it is used as the new streaming data
13328** chunk size for both input and output. Before returning, the (int) value
13329** pointed to by pArg is set to the final value of the streaming interface
13330** chunk size.
13331** </dl>
13332**
13333** This function returns SQLITE_OK if successful, or an SQLite error code
13334** otherwise.
13335*/
13336SQLITE_API int sqlite3session_config(int op, void *pArg);
13337
13338/*
13339** CAPI3REF: Values for sqlite3session_config().
13340*/
13341#define SQLITE_SESSION_CONFIG_STRMSIZE 1
13342
13343/*
13344** CAPI3REF: Configure a changegroup object
13345**
13346** Configure the changegroup object passed as the first argument.
13347** At present the only valid value for the second parameter is
13348** [SQLITE_CHANGEGROUP_CONFIG_PATCHSET].
13349*/
13350SQLITE_API int sqlite3changegroup_config(sqlite3_changegroup*, int, void *pArg);
13351
13352/*
13353** CAPI3REF: Options for sqlite3changegroup_config().
13354**
13355** The following values may be passed as the 2nd parameter to
13356** sqlite3changegroup_config().
13357**
13358** <dt>SQLITE_CHANGEGROUP_CONFIG_PATCHSET <dd>
13359** A changegroup object generates either a changeset or patchset. Usually,
13360** this is determined by whether the first call to sqlite3changegroup_add()
13361** is passed a changeset or a patchset. Or, if the first changes are added
13362** to the changegroup object using the sqlite3changegroup_change_xxx()
13363** APIs, then this option may be used to configure whether the changegroup
13364** object generates a changeset or patchset.
13365**
13366** When this option is invoked, parameter pArg must point to a value of
13367** type int. If the changegroup currently contains zero changes, and the
13368** value of the int variable is zero or greater than zero, then the
13369** changegroup is configured to generate a changeset or patchset,
13370** respectively. It is a no-op, not an error, if the changegroup is not
13371** configured because it has already started accumulating changes.
13372**
13373** Before returning, the int variable is set to 0 if the changegroup is
13374** configured to generate a changeset, or 1 if it is configured to generate
13375** a patchset.
13376*/
13377#define SQLITE_CHANGEGROUP_CONFIG_PATCHSET 1
13378
13379
13380/*
13381** CAPI3REF: Begin adding a change to a changegroup
13382**
13383** This API is used, in concert with other sqlite3changegroup_change_xxx()
13384** APIs, to add changes to a changegroup object one at a time. To add a
13385** single change, the caller must:
13386**
13387** 1. Invoke sqlite3changegroup_change_begin() to indicate the type of
13388** change (INSERT, UPDATE or DELETE), the affected table and whether
13389** or not the change should be marked as indirect.
13390**
13391** 2. Invoke sqlite3changegroup_change_int64() or one of the other four
13392** value functions - _null(), _double(), _text() or _blob() - one or
13393** more times to specify old.* and new.* values for the change being
13394** constructed.
13395**
13396** 3. Invoke sqlite3changegroup_change_finish() to either finish adding
13397** the change to the group, or to discard the change altogether.
13398**
13399** The first argument to this function must be a pointer to the existing
13400** changegroup object that the change will be added to. The second argument
13401** must be SQLITE_INSERT, SQLITE_UPDATE or SQLITE_DELETE. The third is the
13402** name of the table that the change affects, and the fourth is a boolean
13403** flag specifying whether the change should be marked as "indirect" (if
13404** bIndirect is non-zero) or not indirect (if bIndirect is zero).
13405**
13406** Following a successful call to this function, this function may not be
13407** called again on the same changegroup object until after
13408** sqlite3changegroup_change_finish() has been called. Doing so is an
13409** SQLITE_MISUSE error.
13410**
13411** The changegroup object passed as the first argument must be already
13412** configured with schema data for the specified table. It may be configured
13413** either by calling sqlite3changegroup_schema() with a database that contains
13414** the table, or sqlite3changegroup_add() with a changeset that contains the
13415** table. If the changegroup object has not been configured with a schema for
13416** the specified table when this function is called, SQLITE_ERROR is returned.
13417**
13418** If successful, SQLITE_OK is returned. Otherwise, if an error occurs, an
13419** SQLite error code is returned. In this case, if argument pzErr is non-NULL,
13420** then (*pzErr) may be set to point to a buffer containing a utf-8 formated,
13421** nul-terminated, English language error message. It is the responsibility
13422** of the caller to eventually free this buffer using sqlite3_free().
13423*/
13424SQLITE_API int sqlite3changegroup_change_begin(
13425 sqlite3_changegroup*,
13426 int eOp,
13427 const char *zTab,
13428 int bIndirect,
13429 char **pzErr
13430);
13431
13432/*
13433** CAPI3REF: Add a 64-bit integer to a changegroup
13434**
13435** This function may only be called between a successful call to
13436** sqlite3changegroup_change_begin() and its matching
13437** sqlite3changegroup_change_finish() call. If it is called at any
13438** other time, it is an SQLITE_MISUSE error. Calling this function
13439** specifies a 64-bit integer value to be used in the change currently being
13440** added to the changegroup object passed as the first argument.
13441**
13442** The second parameter, bNew, specifies whether the value is to be part of
13443** the new.* (if bNew is non-zero) or old.* (if bNew is zero) record of
13444** the change under construction. If this does not match the type of change
13445** specified by the preceding call to sqlite3changegroup_change_begin() (i.e.
13446** an old.* value for an SQLITE_INSERT change, or a new.* value for an
13447** SQLITE_DELETE), then SQLITE_ERROR is returned.
13448**
13449** The third parameter specifies the column of the old.* or new.* record that
13450** the value will be a part of. If the specified table has an explicit primary
13451** key, then this is the index of the table column, numbered from 0 in the order
13452** specified within the CREATE TABLE statement. Or, if the table uses an
13453** implicit rowid key, then the column 0 is the rowid and the explicit columns
13454** are numbered starting from 1. If the iCol parameter is less than 0 or greater
13455** than the index of the last column in the table, SQLITE_RANGE is returned.
13456**
13457** The fourth parameter is the integer value to use as part of the old.* or
13458** new.* record.
13459**
13460** If this call is successful, SQLITE_OK is returned. Otherwise, if an
13461** error occurs, an SQLite error code is returned.
13462*/
13463SQLITE_API int sqlite3changegroup_change_int64(
13464 sqlite3_changegroup*,
13465 int bNew,
13466 int iCol,
13467 sqlite3_int64 iVal
13468);
13469
13470/*
13471** CAPI3REF: Add a NULL to a changegroup
13472**
13473** This function is similar to sqlite3changegroup_change_int64(). Except that
13474** it configures the change currently under construction with a NULL value
13475** instead of a 64-bit integer.
13476*/
13477SQLITE_API int sqlite3changegroup_change_null(sqlite3_changegroup*, int, int);
13478
13479/*
13480** CAPI3REF: Add an double to a changegroup
13481**
13482** This function is similar to sqlite3changegroup_change_int64(). Except that
13483** it configures the change currently being constructed with a real value
13484** instead of a 64-bit integer.
13485*/
13486SQLITE_API int sqlite3changegroup_change_double(sqlite3_changegroup*, int, int, double);
13487
13488/*
13489** CAPI3REF: Add a text value to a changegroup
13490**
13491** This function is similar to sqlite3changegroup_change_int64(). It configures
13492** the currently accumulated change with a text value instead of a 64-bit
13493** integer. Parameter pVal points to a buffer containing the text encoded using
13494** utf-8. Parameter nVal may either be the size of the text value in bytes, or
13495** else a negative value, in which case the buffer pVal points to is assumed to
13496** be nul-terminated.
13497*/
13498SQLITE_API int sqlite3changegroup_change_text(
13499 sqlite3_changegroup*, int, int, const char *pVal, int nVal
13500);
13501
13502/*
13503** CAPI3REF: Add a blob to a changegroup
13504**
13505** This function is similar to sqlite3changegroup_change_int64(). It configures
13506** the currently accumulated change with a blob value instead of a 64-bit
13507** integer. Parameter pVal points to a buffer containing the blob. Parameter
13508** nVal is the size of the blob in bytes.
13509*/
13510SQLITE_API int sqlite3changegroup_change_blob(
13511 sqlite3_changegroup*, int, int, const void *pVal, int nVal
13512);
13513
13514/*
13515** CAPI3REF: Finish adding one-at-at-time changes to a changegroup
13516**
13517** This function may only be called following a successful call to
13518** sqlite3changegroup_change_begin(). Otherwise, it is an SQLITE_MISUSE error.
13519**
13520** If parameter bDiscard is non-zero, then the current change is simply
13521** discarded. In this case this function is always successful and SQLITE_OK
13522** returned.
13523**
13524** If parameter bDiscard is zero, then an attempt is made to add the current
13525** change to the changegroup. Assuming the changegroup is configured to
13526** produce a changeset (not a patchset), this requires that:
13527**
13528** * If the change is an INSERT or DELETE, then a value must be specified
13529** for all columns of the new.* or old.* record, respectively.
13530**
13531** * If the change is an UPDATE record, then values must be provided for
13532** the PRIMARY KEY columns of the old.* record, but must not be provided
13533** for PRIMARY KEY columns of the new.* record.
13534**
13535** * If the change is an UPDATE record, then for each non-PRIMARY KEY
13536** column in the old.* record for which a value has been provided, a
13537** value must also be provided for the same column in the new.* record.
13538** Similarly, for each non-PK column in the old.* record for which
13539** a value is not provided, a value must not be provided for the same
13540** column in the new.* record.
13541**
13542** * All values specified for PRIMARY KEY columns must be non-NULL.
13543**
13544** Otherwise, it is an error.
13545**
13546** If the changegroup already contains a change for the same row (identified
13547** by PRIMARY KEY columns), then the current change is combined with the
13548** existing change in the same way as for sqlite3changegroup_add().
13549**
13550** For a patchset, all of the above rules apply except that it doesn't matter
13551** whether or not values are provided for the non-PK old.* record columns
13552** for an UPDATE or DELETE change. This means that code used to produce
13553** a changeset using the sqlite3changegroup_change_xxx() APIs may also
13554** be used to produce patchsets.
13555**
13556** If the call is successful, SQLITE_OK is returned. Otherwise, if an error
13557** occurs, an SQLite error code is returned. If an error is returned and
13558** parameter pzErr is not NULL, then (*pzErr) may be set to point to a buffer
13559** containing a nul-terminated, utf-8 encoded, English language error message.
13560** It is the responsibility of the caller to eventually free any such error
13561** message buffer using sqlite3_free().
13562*/
13563SQLITE_API int sqlite3changegroup_change_finish(
13564 sqlite3_changegroup*,
13565 int bDiscard,
13566 char **pzErr
13567);
13568
13569/*
13570** Make sure we can call this stuff from C++.
13571*/
13572#ifdef __cplusplus
13573}
13574#endif
13575
13576#endif /* !defined(__SQLITESESSION_H_) && defined(SQLITE_ENABLE_SESSION) */
13577
13578/******** End of sqlite3session.h *********/
13579/******** Begin file fts5.h *********/
13580/*
13581** 2014 May 31
13582**
13583** The author disclaims copyright to this source code. In place of
13584** a legal notice, here is a blessing:
13585**
13586** May you do good and not evil.
13587** May you find forgiveness for yourself and forgive others.
13588** May you share freely, never taking more than you give.
13589**
13590******************************************************************************
13591**
13592** Interfaces to extend FTS5. Using the interfaces defined in this file,
13593** FTS5 may be extended with:
13594**
13595** * custom tokenizers, and
13596** * custom auxiliary functions.
13597*/
13598
13599
13600#ifndef _FTS5_H
13601#define _FTS5_H
13602
13603
13604#ifdef __cplusplus
13605extern "C" {
13606#endif
13607
13608/*************************************************************************
13609** CUSTOM AUXILIARY FUNCTIONS
13610**
13611** Virtual table implementations may overload SQL functions by implementing
13612** the sqlite3_module.xFindFunction() method.
13613*/
13614
13615typedef struct Fts5ExtensionApi Fts5ExtensionApi;
13616typedef struct Fts5Context Fts5Context;
13617typedef struct Fts5PhraseIter Fts5PhraseIter;
13618
13619typedef void (*fts5_extension_function)(
13620 const Fts5ExtensionApi *pApi, /* API offered by current FTS version */
13621 Fts5Context *pFts, /* First arg to pass to pApi functions */
13622 sqlite3_context *pCtx, /* Context for returning result/error */
13623 int nVal, /* Number of values in apVal[] array */
13624 sqlite3_value **apVal /* Array of trailing arguments */
13625);
13626
13627struct Fts5PhraseIter {
13628 const unsigned char *a;
13629 const unsigned char *b;
13630};
13631
13632/*
13633** EXTENSION API FUNCTIONS
13634**
13635** xUserData(pFts):
13636** Return a copy of the pUserData pointer passed to the xCreateFunction()
13637** API when the extension function was registered.
13638**
13639** xColumnTotalSize(pFts, iCol, pnToken):
13640** If parameter iCol is less than zero, set output variable *pnToken
13641** to the total number of tokens in the FTS5 table. Or, if iCol is
13642** non-negative but less than the number of columns in the table, return
13643** the total number of tokens in column iCol, considering all rows in
13644** the FTS5 table.
13645**
13646** If parameter iCol is greater than or equal to the number of columns
13647** in the table, SQLITE_RANGE is returned. Or, if an error occurs (e.g.
13648** an OOM condition or IO error), an appropriate SQLite error code is
13649** returned.
13650**
13651** xColumnCount(pFts):
13652** Return the number of columns in the table.
13653**
13654** xColumnSize(pFts, iCol, pnToken):
13655** If parameter iCol is less than zero, set output variable *pnToken
13656** to the total number of tokens in the current row. Or, if iCol is
13657** non-negative but less than the number of columns in the table, set
13658** *pnToken to the number of tokens in column iCol of the current row.
13659**
13660** If parameter iCol is greater than or equal to the number of columns
13661** in the table, SQLITE_RANGE is returned. Or, if an error occurs (e.g.
13662** an OOM condition or IO error), an appropriate SQLite error code is
13663** returned.
13664**
13665** This function may be quite inefficient if used with an FTS5 table
13666** created with the "columnsize=0" option.
13667**
13668** xColumnText:
13669** If parameter iCol is less than zero, or greater than or equal to the
13670** number of columns in the table, SQLITE_RANGE is returned.
13671**
13672** Otherwise, this function attempts to retrieve the text of column iCol of
13673** the current document. If successful, (*pz) is set to point to a buffer
13674** containing the text in utf-8 encoding, (*pn) is set to the size in bytes
13675** (not characters) of the buffer and SQLITE_OK is returned. Otherwise,
13676** if an error occurs, an SQLite error code is returned and the final values
13677** of (*pz) and (*pn) are undefined.
13678**
13679** xPhraseCount:
13680** Returns the number of phrases in the current query expression.
13681**
13682** xPhraseSize:
13683** If parameter iCol is less than zero, or greater than or equal to the
13684** number of phrases in the current query, as returned by xPhraseCount,
13685** 0 is returned. Otherwise, this function returns the number of tokens in
13686** phrase iPhrase of the query. Phrases are numbered starting from zero.
13687**
13688** xInstCount:
13689** Set *pnInst to the total number of occurrences of all phrases within
13690** the query within the current row. Return SQLITE_OK if successful, or
13691** an error code (i.e. SQLITE_NOMEM) if an error occurs.
13692**
13693** This API can be quite slow if used with an FTS5 table created with the
13694** "detail=none" or "detail=column" option. If the FTS5 table is created
13695** with either "detail=none" or "detail=column" and "content=" option
13696** (i.e. if it is a contentless table), then this API always returns 0.
13697**
13698** xInst:
13699** Query for the details of phrase match iIdx within the current row.
13700** Phrase matches are numbered starting from zero, so the iIdx argument
13701** should be greater than or equal to zero and smaller than the value
13702** output by xInstCount(). If iIdx is less than zero or greater than
13703** or equal to the value returned by xInstCount(), SQLITE_RANGE is returned.
13704**
13705** Otherwise, output parameter *piPhrase is set to the phrase number, *piCol
13706** to the column in which it occurs and *piOff the token offset of the
13707** first token of the phrase. SQLITE_OK is returned if successful, or an
13708** error code (i.e. SQLITE_NOMEM) if an error occurs.
13709**
13710** This API can be quite slow if used with an FTS5 table created with the
13711** "detail=none" or "detail=column" option.
13712**
13713** xRowid:
13714** Returns the rowid of the current row.
13715**
13716** xTokenize:
13717** Tokenize text using the tokenizer belonging to the FTS5 table.
13718**
13719** xQueryPhrase(pFts5, iPhrase, pUserData, xCallback):
13720** This API function is used to query the FTS table for phrase iPhrase
13721** of the current query. Specifically, a query equivalent to:
13722**
13723** ... FROM ftstable WHERE ftstable MATCH $p ORDER BY rowid
13724**
13725** with $p set to a phrase equivalent to the phrase iPhrase of the
13726** current query is executed. Any column filter that applies to
13727** phrase iPhrase of the current query is included in $p. For each
13728** row visited, the callback function passed as the fourth argument
13729** is invoked. The context and API objects passed to the callback
13730** function may be used to access the properties of each matched row.
13731** Invoking Api.xUserData() returns a copy of the pointer passed as
13732** the third argument to pUserData.
13733**
13734** If parameter iPhrase is less than zero, or greater than or equal to
13735** the number of phrases in the query, as returned by xPhraseCount(),
13736** this function returns SQLITE_RANGE.
13737**
13738** If the callback function returns any value other than SQLITE_OK, the
13739** query is abandoned and the xQueryPhrase function returns immediately.
13740** If the returned value is SQLITE_DONE, xQueryPhrase returns SQLITE_OK.
13741** Otherwise, the error code is propagated upwards.
13742**
13743** If the query runs to completion without incident, SQLITE_OK is returned.
13744** Or, if some error occurs before the query completes or is aborted by
13745** the callback, an SQLite error code is returned.
13746**
13747**
13748** xSetAuxdata(pFts5, pAux, xDelete)
13749**
13750** Save the pointer passed as the second argument as the extension function's
13751** "auxiliary data". The pointer may then be retrieved by the current or any
13752** future invocation of the same fts5 extension function made as part of
13753** the same MATCH query using the xGetAuxdata() API.
13754**
13755** Each extension function is allocated a single auxiliary data slot for
13756** each FTS query (MATCH expression). If the extension function is invoked
13757** more than once for a single FTS query, then all invocations share a
13758** single auxiliary data context.
13759**
13760** If there is already an auxiliary data pointer when this function is
13761** invoked, then it is replaced by the new pointer. If an xDelete callback
13762** was specified along with the original pointer, it is invoked at this
13763** point.
13764**
13765** The xDelete callback, if one is specified, is also invoked on the
13766** auxiliary data pointer after the FTS5 query has finished.
13767**
13768** If an error (e.g. an OOM condition) occurs within this function,
13769** the auxiliary data is set to NULL and an error code returned. If the
13770** xDelete parameter was not NULL, it is invoked on the auxiliary data
13771** pointer before returning.
13772**
13773**
13774** xGetAuxdata(pFts5, bClear)
13775**
13776** Returns the current auxiliary data pointer for the fts5 extension
13777** function. See the xSetAuxdata() method for details.
13778**
13779** If the bClear argument is non-zero, then the auxiliary data is cleared
13780** (set to NULL) before this function returns. In this case the xDelete,
13781** if any, is not invoked.
13782**
13783**
13784** xRowCount(pFts5, pnRow)
13785**
13786** This function is used to retrieve the total number of rows in the table.
13787** In other words, the same value that would be returned by:
13788**
13789** SELECT count(*) FROM ftstable;
13790**
13791** xPhraseFirst()
13792** This function is used, along with type Fts5PhraseIter and the xPhraseNext
13793** method, to iterate through all instances of a single query phrase within
13794** the current row. This is the same information as is accessible via the
13795** xInstCount/xInst APIs. While the xInstCount/xInst APIs are more convenient
13796** to use, this API may be faster under some circumstances. To iterate
13797** through instances of phrase iPhrase, use the following code:
13798**
13799** Fts5PhraseIter iter;
13800** int iCol, iOff;
13801** for(pApi->xPhraseFirst(pFts, iPhrase, &iter, &iCol, &iOff);
13802** iCol>=0;
13803** pApi->xPhraseNext(pFts, &iter, &iCol, &iOff)
13804** ){
13805** // An instance of phrase iPhrase at offset iOff of column iCol
13806** }
13807**
13808** The Fts5PhraseIter structure is defined above. Applications should not
13809** modify this structure directly - it should only be used as shown above
13810** with the xPhraseFirst() and xPhraseNext() API methods (and by
13811** xPhraseFirstColumn() and xPhraseNextColumn() as illustrated below).
13812**
13813** This API can be quite slow if used with an FTS5 table created with the
13814** "detail=none" or "detail=column" option. If the FTS5 table is created
13815** with either "detail=none" or "detail=column" and "content=" option
13816** (i.e. if it is a contentless table), then this API always iterates
13817** through an empty set (all calls to xPhraseFirst() set iCol to -1).
13818**
13819** In all cases, matches are visited in (column ASC, offset ASC) order.
13820** i.e. all those in column 0, sorted by offset, followed by those in
13821** column 1, etc.
13822**
13823** xPhraseNext()
13824** See xPhraseFirst above.
13825**
13826** xPhraseFirstColumn()
13827** This function and xPhraseNextColumn() are similar to the xPhraseFirst()
13828** and xPhraseNext() APIs described above. The difference is that instead
13829** of iterating through all instances of a phrase in the current row, these
13830** APIs are used to iterate through the set of columns in the current row
13831** that contain one or more instances of a specified phrase. For example:
13832**
13833** Fts5PhraseIter iter;
13834** int iCol;
13835** for(pApi->xPhraseFirstColumn(pFts, iPhrase, &iter, &iCol);
13836** iCol>=0;
13837** pApi->xPhraseNextColumn(pFts, &iter, &iCol)
13838** ){
13839** // Column iCol contains at least one instance of phrase iPhrase
13840** }
13841**
13842** This API can be quite slow if used with an FTS5 table created with the
13843** "detail=none" option. If the FTS5 table is created with either
13844** "detail=none" "content=" option (i.e. if it is a contentless table),
13845** then this API always iterates through an empty set (all calls to
13846** xPhraseFirstColumn() set iCol to -1).
13847**
13848** The information accessed using this API and its companion
13849** xPhraseFirstColumn() may also be obtained using xPhraseFirst/xPhraseNext
13850** (or xInst/xInstCount). The chief advantage of this API is that it is
13851** significantly more efficient than those alternatives when used with
13852** "detail=column" tables.
13853**
13854** xPhraseNextColumn()
13855** See xPhraseFirstColumn above.
13856**
13857** xQueryToken(pFts5, iPhrase, iToken, ppToken, pnToken)
13858** This is used to access token iToken of phrase iPhrase of the current
13859** query. Before returning, output parameter *ppToken is set to point
13860** to a buffer containing the requested token, and *pnToken to the
13861** size of this buffer in bytes.
13862**
13863** If iPhrase or iToken are less than zero, or if iPhrase is greater than
13864** or equal to the number of phrases in the query as reported by
13865** xPhraseCount(), or if iToken is equal to or greater than the number of
13866** tokens in the phrase, SQLITE_RANGE is returned and *ppToken and *pnToken
13867 are both zeroed.
13868**
13869** The output text is not a copy of the query text that specified the
13870** token. It is the output of the tokenizer module. For tokendata=1
13871** tables, this includes any embedded 0x00 and trailing data.
13872**
13873** xInstToken(pFts5, iIdx, iToken, ppToken, pnToken)
13874** This is used to access token iToken of phrase hit iIdx within the
13875** current row. If iIdx is less than zero or greater than or equal to the
13876** value returned by xInstCount(), SQLITE_RANGE is returned. Otherwise,
13877** output variable (*ppToken) is set to point to a buffer containing the
13878** matching document token, and (*pnToken) to the size of that buffer in
13879** bytes.
13880**
13881** The output text is not a copy of the document text that was tokenized.
13882** It is the output of the tokenizer module. For tokendata=1 tables, this
13883** includes any embedded 0x00 and trailing data.
13884**
13885** This API may be slow in some cases if the token identified by parameters
13886** iIdx and iToken matched a prefix token in the query. In most cases, the
13887** first call to this API for each prefix token in the query is forced
13888** to scan the portion of the full-text index that matches the prefix
13889** token to collect the extra data required by this API. If the prefix
13890** token matches a large number of token instances in the document set,
13891** this may be a performance problem.
13892**
13893** If the user knows in advance that a query may use this API for a
13894** prefix token, FTS5 may be configured to collect all required data as part
13895** of the initial querying of the full-text index, avoiding the second scan
13896** entirely. This also causes prefix queries that do not use this API to
13897** run more slowly and use more memory. FTS5 may be configured in this way
13898** either on a per-table basis using the [FTS5 insttoken | 'insttoken']
13899** option, or on a per-query basis using the
13900** [fts5_insttoken | fts5_insttoken()] user function.
13901**
13902** This API can be quite slow if used with an FTS5 table created with the
13903** "detail=none" or "detail=column" option.
13904**
13905** xColumnLocale(pFts5, iIdx, pzLocale, pnLocale)
13906** If parameter iCol is less than zero, or greater than or equal to the
13907** number of columns in the table, SQLITE_RANGE is returned.
13908**
13909** Otherwise, this function attempts to retrieve the locale associated
13910** with column iCol of the current row. Usually, there is no associated
13911** locale, and output parameters (*pzLocale) and (*pnLocale) are set
13912** to NULL and 0, respectively. However, if the fts5_locale() function
13913** was used to associate a locale with the value when it was inserted
13914** into the fts5 table, then (*pzLocale) is set to point to a nul-terminated
13915** buffer containing the name of the locale in utf-8 encoding. (*pnLocale)
13916** is set to the size in bytes of the buffer, not including the
13917** nul-terminator.
13918**
13919** If successful, SQLITE_OK is returned. Or, if an error occurs, an
13920** SQLite error code is returned. The final value of the output parameters
13921** is undefined in this case.
13922**
13923** xTokenize_v2:
13924** Tokenize text using the tokenizer belonging to the FTS5 table. This
13925** API is the same as the xTokenize() API, except that it allows a tokenizer
13926** locale to be specified.
13927*/
13928struct Fts5ExtensionApi {
13929 int iVersion; /* Currently always set to 4 */
13930
13931 void *(*xUserData)(Fts5Context*);
13932
13933 int (*xColumnCount)(Fts5Context*);
13934 int (*xRowCount)(Fts5Context*, sqlite3_int64 *pnRow);
13935 int (*xColumnTotalSize)(Fts5Context*, int iCol, sqlite3_int64 *pnToken);
13936
13937 int (*xTokenize)(Fts5Context*,
13938 const char *pText, int nText, /* Text to tokenize */
13939 void *pCtx, /* Context passed to xToken() */
13940 int (*xToken)(void*, int, const char*, int, int, int) /* Callback */
13941 );
13942
13943 int (*xPhraseCount)(Fts5Context*);
13944 int (*xPhraseSize)(Fts5Context*, int iPhrase);
13945
13946 int (*xInstCount)(Fts5Context*, int *pnInst);
13947 int (*xInst)(Fts5Context*, int iIdx, int *piPhrase, int *piCol, int *piOff);
13948
13949 sqlite3_int64 (*xRowid)(Fts5Context*);
13950 int (*xColumnText)(Fts5Context*, int iCol, const char **pz, int *pn);
13951 int (*xColumnSize)(Fts5Context*, int iCol, int *pnToken);
13952
13953 int (*xQueryPhrase)(Fts5Context*, int iPhrase, void *pUserData,
13954 int(*)(const Fts5ExtensionApi*,Fts5Context*,void*)
13955 );
13956 int (*xSetAuxdata)(Fts5Context*, void *pAux, void(*xDelete)(void*));
13957 void *(*xGetAuxdata)(Fts5Context*, int bClear);
13958
13959 int (*xPhraseFirst)(Fts5Context*, int iPhrase, Fts5PhraseIter*, int*, int*);
13960 void (*xPhraseNext)(Fts5Context*, Fts5PhraseIter*, int *piCol, int *piOff);
13961
13962 int (*xPhraseFirstColumn)(Fts5Context*, int iPhrase, Fts5PhraseIter*, int*);
13963 void (*xPhraseNextColumn)(Fts5Context*, Fts5PhraseIter*, int *piCol);
13964
13965 /* Below this point are iVersion>=3 only */
13966 int (*xQueryToken)(Fts5Context*,
13967 int iPhrase, int iToken,
13968 const char **ppToken, int *pnToken
13969 );
13970 int (*xInstToken)(Fts5Context*, int iIdx, int iToken, const char**, int*);
13971
13972 /* Below this point are iVersion>=4 only */
13973 int (*xColumnLocale)(Fts5Context*, int iCol, const char **pz, int *pn);
13974 int (*xTokenize_v2)(Fts5Context*,
13975 const char *pText, int nText, /* Text to tokenize */
13976 const char *pLocale, int nLocale, /* Locale to pass to tokenizer */
13977 void *pCtx, /* Context passed to xToken() */
13978 int (*xToken)(void*, int, const char*, int, int, int) /* Callback */
13979 );
13980};
13981
13982/*
13983** CUSTOM AUXILIARY FUNCTIONS
13984*************************************************************************/
13985
13986/*************************************************************************
13987** CUSTOM TOKENIZERS
13988**
13989** Applications may also register custom tokenizer types. A tokenizer
13990** is registered by providing fts5 with a populated instance of the
13991** following structure. All structure methods must be defined, setting
13992** any member of the fts5_tokenizer struct to NULL leads to undefined
13993** behaviour. The structure methods are expected to function as follows:
13994**
13995** xCreate:
13996** This function is used to allocate and initialize a tokenizer instance.
13997** A tokenizer instance is required to actually tokenize text.
13998**
13999** The first argument passed to this function is a copy of the (void*)
14000** pointer provided by the application when the fts5_tokenizer_v2 object
14001** was registered with FTS5 (the third argument to xCreateTokenizer()).
14002** The second and third arguments are an array of nul-terminated strings
14003** containing the tokenizer arguments, if any, specified following the
14004** tokenizer name as part of the CREATE VIRTUAL TABLE statement used
14005** to create the FTS5 table.
14006**
14007** The final argument is an output variable. If successful, (*ppOut)
14008** should be set to point to the new tokenizer handle and SQLITE_OK
14009** returned. If an error occurs, some value other than SQLITE_OK should
14010** be returned. In this case, fts5 assumes that the final value of *ppOut
14011** is undefined.
14012**
14013** xDelete:
14014** This function is invoked to delete a tokenizer handle previously
14015** allocated using xCreate(). Fts5 guarantees that this function will
14016** be invoked exactly once for each successful call to xCreate().
14017**
14018** xTokenize:
14019** This function is expected to tokenize the nText byte string indicated
14020** by argument pText. pText may or may not be nul-terminated. The first
14021** argument passed to this function is a pointer to an Fts5Tokenizer object
14022** returned by an earlier call to xCreate().
14023**
14024** The third argument indicates the reason that FTS5 is requesting
14025** tokenization of the supplied text. This is always one of the following
14026** four values:
14027**
14028** <ul><li> <b>FTS5_TOKENIZE_DOCUMENT</b> - A document is being inserted into
14029** or removed from the FTS table. The tokenizer is being invoked to
14030** determine the set of tokens to add to (or delete from) the
14031** FTS index.
14032**
14033** <li> <b>FTS5_TOKENIZE_QUERY</b> - A MATCH query is being executed
14034** against the FTS index. The tokenizer is being called to tokenize
14035** a bareword or quoted string specified as part of the query.
14036**
14037** <li> <b>(FTS5_TOKENIZE_QUERY | FTS5_TOKENIZE_PREFIX)</b> - Same as
14038** FTS5_TOKENIZE_QUERY, except that the bareword or quoted string is
14039** followed by a "*" character, indicating that the last token
14040** returned by the tokenizer will be treated as a token prefix.
14041**
14042** <li> <b>FTS5_TOKENIZE_AUX</b> - The tokenizer is being invoked to
14043** satisfy an fts5_api.xTokenize() request made by an auxiliary
14044** function. Or an fts5_api.xColumnSize() request made by the same
14045** on a columnsize=0 database.
14046** </ul>
14047**
14048** The sixth and seventh arguments passed to xTokenize() - pLocale and
14049** nLocale - are a pointer to a buffer containing the locale to use for
14050** tokenization (e.g. "en_US") and its size in bytes, respectively. The
14051** pLocale buffer is not nul-terminated. pLocale may be passed NULL (in
14052** which case nLocale is always 0) to indicate that the tokenizer should
14053** use its default locale.
14054**
14055** For each token in the input string, the supplied callback xToken() must
14056** be invoked. The first argument to it should be a copy of the pointer
14057** passed as the second argument to xTokenize(). The third and fourth
14058** arguments are a pointer to a buffer containing the token text, and the
14059** size of the token in bytes. The 4th and 5th arguments are the byte offsets
14060** of the first byte of and first byte immediately following the text from
14061** which the token is derived within the input.
14062**
14063** The second argument passed to the xToken() callback ("tflags") should
14064** normally be set to 0. The exception is if the tokenizer supports
14065** synonyms. In this case see the discussion below for details.
14066**
14067** FTS5 assumes the xToken() callback is invoked for each token in the
14068** order that they occur within the input text.
14069**
14070** If an xToken() callback returns any value other than SQLITE_OK, then
14071** the tokenization should be abandoned and the xTokenize() method should
14072** immediately return a copy of the xToken() return value. Or, if the
14073** input buffer is exhausted, xTokenize() should return SQLITE_OK. Finally,
14074** if an error occurs with the xTokenize() implementation itself, it
14075** may abandon the tokenization and return any error code other than
14076** SQLITE_OK or SQLITE_DONE.
14077**
14078** If the tokenizer is registered using an fts5_tokenizer_v2 object,
14079** then the xTokenize() method has two additional arguments - pLocale
14080** and nLocale. These specify the locale that the tokenizer should use
14081** for the current request. If pLocale and nLocale are both 0, then the
14082** tokenizer should use its default locale. Otherwise, pLocale points to
14083** an nLocale byte buffer containing the name of the locale to use as utf-8
14084** text. pLocale is not nul-terminated.
14085**
14086** FTS5_TOKENIZER
14087**
14088** There is also an fts5_tokenizer object. This is an older, deprecated,
14089** version of fts5_tokenizer_v2. It is similar except that:
14090**
14091** <ul>
14092** <li> There is no "iVersion" field, and
14093** <li> The xTokenize() method does not take a locale argument.
14094** </ul>
14095**
14096** Legacy fts5_tokenizer tokenizers must be registered using the
14097** legacy xCreateTokenizer() function, instead of xCreateTokenizer_v2().
14098**
14099** Tokenizer implementations registered using either API may be retrieved
14100** using both xFindTokenizer() and xFindTokenizer_v2().
14101**
14102** SYNONYM SUPPORT
14103**
14104** Custom tokenizers may also support synonyms. Consider a case in which a
14105** user wishes to query for a phrase such as "first place". Using the
14106** built-in tokenizers, the FTS5 query 'first + place' will match instances
14107** of "first place" within the document set, but not alternative forms
14108** such as "1st place". In some applications, it would be better to match
14109** all instances of "first place" or "1st place" regardless of which form
14110** the user specified in the MATCH query text.
14111**
14112** There are several ways to approach this in FTS5:
14113**
14114** <ol><li> By mapping all synonyms to a single token. In this case, using
14115** the above example, this means that the tokenizer returns the
14116** same token for inputs "first" and "1st". Say that token is in
14117** fact "first", so that when the user inserts the document "I won
14118** 1st place" entries are added to the index for tokens "i", "won",
14119** "first" and "place". If the user then queries for '1st + place',
14120** the tokenizer substitutes "first" for "1st" and the query works
14121** as expected.
14122**
14123** <li> By querying the index for all synonyms of each query term
14124** separately. In this case, when tokenizing query text, the
14125** tokenizer may provide multiple synonyms for a single term
14126** within the document. FTS5 then queries the index for each
14127** synonym individually. For example, faced with the query:
14128**
14129** <codeblock>
14130** ... MATCH 'first place'</codeblock>
14131**
14132** the tokenizer offers both "1st" and "first" as synonyms for the
14133** first token in the MATCH query and FTS5 effectively runs a query
14134** similar to:
14135**
14136** <codeblock>
14137** ... MATCH '(first OR 1st) place'</codeblock>
14138**
14139** except that, for the purposes of auxiliary functions, the query
14140** still appears to contain just two phrases - "(first OR 1st)"
14141** being treated as a single phrase.
14142**
14143** <li> By adding multiple synonyms for a single term to the FTS index.
14144** Using this method, when tokenizing document text, the tokenizer
14145** provides multiple synonyms for each token. So that when a
14146** document such as "I won first place" is tokenized, entries are
14147** added to the FTS index for "i", "won", "first", "1st" and
14148** "place".
14149**
14150** This way, even if the tokenizer does not provide synonyms
14151** when tokenizing query text (it should not - to do so would be
14152** inefficient), it doesn't matter if the user queries for
14153** 'first + place' or '1st + place', as there are entries in the
14154** FTS index corresponding to both forms of the first token.
14155** </ol>
14156**
14157** Whether it is parsing document or query text, any call to xToken that
14158** specifies a <i>tflags</i> argument with the FTS5_TOKEN_COLOCATED bit
14159** is considered to supply a synonym for the previous token. For example,
14160** when parsing the document "I won first place", a tokenizer that supports
14161** synonyms would call xToken() 5 times, as follows:
14162**
14163** <codeblock>
14164** xToken(pCtx, 0, "i", 1, 0, 1);
14165** xToken(pCtx, 0, "won", 3, 2, 5);
14166** xToken(pCtx, 0, "first", 5, 6, 11);
14167** xToken(pCtx, FTS5_TOKEN_COLOCATED, "1st", 3, 6, 11);
14168** xToken(pCtx, 0, "place", 5, 12, 17);
14169**</codeblock>
14170**
14171** It is an error to specify the FTS5_TOKEN_COLOCATED flag the first time
14172** xToken() is called. Multiple synonyms may be specified for a single token
14173** by making multiple calls to xToken(FTS5_TOKEN_COLOCATED) in sequence.
14174** There is no limit to the number of synonyms that may be provided for a
14175** single token.
14176**
14177** In many cases, method (1) above is the best approach. It does not add
14178** extra data to the FTS index or require FTS5 to query for multiple terms,
14179** so it is efficient in terms of disk space and query speed. However, it
14180** does not support prefix queries very well. If, as suggested above, the
14181** token "first" is substituted for "1st" by the tokenizer, then the query:
14182**
14183** <codeblock>
14184** ... MATCH '1s*'</codeblock>
14185**
14186** will not match documents that contain the token "1st" (as the tokenizer
14187** will probably not map "1s" to any prefix of "first").
14188**
14189** For full prefix support, method (3) may be preferred. In this case,
14190** because the index contains entries for both "first" and "1st", prefix
14191** queries such as 'fi*' or '1s*' will match correctly. However, because
14192** extra entries are added to the FTS index, this method uses more space
14193** within the database.
14194**
14195** Method (2) offers a midpoint between (1) and (3). Using this method,
14196** a query such as '1s*' will match documents that contain the literal
14197** token "1st", but not "first" (assuming the tokenizer is not able to
14198** provide synonyms for prefixes). However, a non-prefix query like '1st'
14199** will match against "1st" and "first". This method does not require
14200** extra disk space, as no extra entries are added to the FTS index.
14201** On the other hand, it may require more CPU cycles to run MATCH queries,
14202** as separate queries of the FTS index are required for each synonym.
14203**
14204** When using methods (2) or (3), it is important that the tokenizer only
14205** provide synonyms when tokenizing document text (method (3)) or query
14206** text (method (2)), not both. Doing so will not cause any errors, but is
14207** inefficient.
14208*/
14209typedef struct Fts5Tokenizer Fts5Tokenizer;
14210typedef struct fts5_tokenizer_v2 fts5_tokenizer_v2;
14211struct fts5_tokenizer_v2 {
14212 int iVersion; /* Currently always 2 */
14213
14214 int (*xCreate)(void*, const char **azArg, int nArg, Fts5Tokenizer **ppOut);
14215 void (*xDelete)(Fts5Tokenizer*);
14216 int (*xTokenize)(Fts5Tokenizer*,
14217 void *pCtx,
14218 int flags, /* Mask of FTS5_TOKENIZE_* flags */
14219 const char *pText, int nText,
14220 const char *pLocale, int nLocale,
14221 int (*xToken)(
14222 void *pCtx, /* Copy of 2nd argument to xTokenize() */
14223 int tflags, /* Mask of FTS5_TOKEN_* flags */
14224 const char *pToken, /* Pointer to buffer containing token */
14225 int nToken, /* Size of token in bytes */
14226 int iStart, /* Byte offset of token within input text */
14227 int iEnd /* Byte offset of end of token within input text */
14228 )
14229 );
14230};
14231
14232/*
14233** New code should use the fts5_tokenizer_v2 type to define tokenizer
14234** implementations. The following type is included for legacy applications
14235** that still use it.
14236*/
14237typedef struct fts5_tokenizer fts5_tokenizer;
14238struct fts5_tokenizer {
14239 int (*xCreate)(void*, const char **azArg, int nArg, Fts5Tokenizer **ppOut);
14240 void (*xDelete)(Fts5Tokenizer*);
14241 int (*xTokenize)(Fts5Tokenizer*,
14242 void *pCtx,
14243 int flags, /* Mask of FTS5_TOKENIZE_* flags */
14244 const char *pText, int nText,
14245 int (*xToken)(
14246 void *pCtx, /* Copy of 2nd argument to xTokenize() */
14247 int tflags, /* Mask of FTS5_TOKEN_* flags */
14248 const char *pToken, /* Pointer to buffer containing token */
14249 int nToken, /* Size of token in bytes */
14250 int iStart, /* Byte offset of token within input text */
14251 int iEnd /* Byte offset of end of token within input text */
14252 )
14253 );
14254};
14255
14256
14257/* Flags that may be passed as the third argument to xTokenize() */
14258#define FTS5_TOKENIZE_QUERY 0x0001
14259#define FTS5_TOKENIZE_PREFIX 0x0002
14260#define FTS5_TOKENIZE_DOCUMENT 0x0004
14261#define FTS5_TOKENIZE_AUX 0x0008
14262
14263/* Flags that may be passed by the tokenizer implementation back to FTS5
14264** as the third argument to the supplied xToken callback. */
14265#define FTS5_TOKEN_COLOCATED 0x0001 /* Same position as prev. token */
14266
14267/*
14268** END OF CUSTOM TOKENIZERS
14269*************************************************************************/
14270
14271/*************************************************************************
14272** FTS5 EXTENSION REGISTRATION API
14273*/
14274typedef struct fts5_api fts5_api;
14275struct fts5_api {
14276 int iVersion; /* Currently always set to 3 */
14277
14278 /* Create a new tokenizer */
14279 int (*xCreateTokenizer)(
14280 fts5_api *pApi,
14281 const char *zName,
14282 void *pUserData,
14283 fts5_tokenizer *pTokenizer,
14284 void (*xDestroy)(void*)
14285 );
14286
14287 /* Find an existing tokenizer */
14288 int (*xFindTokenizer)(
14289 fts5_api *pApi,
14290 const char *zName,
14291 void **ppUserData,
14292 fts5_tokenizer *pTokenizer
14293 );
14294
14295 /* Create a new auxiliary function */
14296 int (*xCreateFunction)(
14297 fts5_api *pApi,
14298 const char *zName,
14299 void *pUserData,
14300 fts5_extension_function xFunction,
14301 void (*xDestroy)(void*)
14302 );
14303
14304 /* APIs below this point are only available if iVersion>=3 */
14305
14306 /* Create a new tokenizer */
14307 int (*xCreateTokenizer_v2)(
14308 fts5_api *pApi,
14309 const char *zName,
14310 void *pUserData,
14311 fts5_tokenizer_v2 *pTokenizer,
14312 void (*xDestroy)(void*)
14313 );
14314
14315 /* Find an existing tokenizer */
14316 int (*xFindTokenizer_v2)(
14317 fts5_api *pApi,
14318 const char *zName,
14319 void **ppUserData,
14320 fts5_tokenizer_v2 **ppTokenizer
14321 );
14322};
14323
14324/*
14325** END OF REGISTRATION API
14326*************************************************************************/
14327
14328#ifdef __cplusplus
14329} /* end of the 'extern "C"' block */
14330#endif
14331
14332#endif /* _FTS5_H */
14333
14334/******** End of fts5.h *********/
14335#endif /* SQLITE3_H */