When you execute a prepared statement (see Prepared statements), or a parameterised statement (using functions like pqxx::connection::exec_params
), you may write special placeholders in the query text. They look like $1
, $2
, and so on.
\n
If you execute the query and pass parameter values, the call will respectively substitute the first where it finds $1
, the second where it finds $2
, et cetera.
\n
Doing this saves you work. If you don't use statement parameters, you'll need to quote and escape your values (see connection::quote()
and friends) as you insert them into your query as literal values.
\n
Or if you forget to do that, you leave yourself open to horrible SQL injection attacks. Trust me, I was born in a town whose name started with an apostrophe!
\n
Statement parameters save you this work. With these parameters you can pass your values as-is, and they will go across the wire to the database in a safe format.
\n
In some cases it may even be faster! When a parameter represents binary data (as in the SQL BYTEA
type), libpqxx will send it directly as binary, which is a bit more efficient. If you insert the binary data directly in your query text, your CPU will have some extra work to do, converting the data into a text format, escaping it, and adding quotes.
\n-
\n+\n Dynamic parameter lists
\n
In rare cases you may just not know how many parameters you'll pass into your statement when you call it.
\n
For these situations, have a look at params
. It lets you compose your parameters list on the fly, even add whole ranges of parameters at a time.
\n
You can pass a params
into your statement as a normal parameter. It will fill in all the parameter values it contains into that position of the statement's overall parameter list.
\n
So if you call your statement passing a regular parameter a
, a params
containing just a parameter b
, and another regular parameter c
, then your call will pass parameters a
, b
, and c
. Or if the params object is empty, it will pass just a
and c
. If the params object contains x
and y
, your call will pass a, x, y, c
.
\n
You can mix static and dynamic parameters freely. Don't go overboard though: complexity is where bugs happen!
\n-
\n+\n Generating placeholders
\n
If your code gets particularly complex, it may sometimes happen that it becomes hard to track which parameter value belongs with which placeholder. Did you intend to pass this numeric value as $7
, or as $8
? The answer may depend on an if
that happened earlier in a different function.
\n
(Generally if things get that complex, it's a good idea to look for simpler solutions. But especially when performance matters, sometimes you can't avoid complexity like that.)
\n
There's a little helper class called placeholders
. You can use it as a counter which produces those placeholder strings, $1
, $2
, $3
, et cetera. When you start generating a complex statement, you can create both a params
and a placeholders
:
\n
\n
\n
Build a parameter list for a parameterised or prepared statement.
Definition params.hxx:46
\n"}, {"source1": "./usr/share/doc/libpqxx-doc/doxygen-html/prepared.html", "source2": "./usr/share/doc/libpqxx-doc/doxygen-html/prepared.html", "unified_diff": "@@ -91,15 +91,15 @@\n \n
\n
\n
Prepared statements are SQL queries that you define once and then invoke as many times as you like, typically with varying parameters. It's basically a function that you can define ad hoc.
\n
If you have an SQL statement that you're going to execute many times in quick succession, it may be more efficient to prepare it once and reuse it. This saves the database backend the effort of parsing complex SQL and figuring out an efficient execution plan. Another nice side effect is that you don't need to worry about escaping parameters. Some corporate coding standards require all SQL parameters to be passed in this way, to reduce the risk of programmer mistakes leaving room for SQL injections.
\n-
\n+\n Preparing a statement
\n
You create a prepared statement by preparing it on the connection (using the pqxx::connection::prepare
functions), passing an identifier and its SQL text.
\n
The identifier is the name by which the prepared statement will be known; it should consist of ASCII letters, digits, and underscores only, and start with an ASCII letter. The name is case-sensitive.
\n
\n
{
\n
\n
"my_statement",
\n@@ -111,15 +111,15 @@\n
\n
{
\n
\n
}
\n
Result set containing data returned by a query or command.
Definition result.hxx:73
\n
result exec_prepared(zview statement, Args &&...args)
Execute a prepared statement, with optional arguments.
Definition transaction_base.hxx:948
\n
Interface definition (and common code) for "transaction" classes.
Definition transaction_base.hxx:150
\n-
\n+
\n Parameters
\n
Did I mention that prepared statements can have parameters? The query text can contain $1
, $2
etc. as placeholders for parameter values that you will provide when you invoke the prepared satement.
\n
See Statement parameters for more about this. And here's a simple example of preparing a statement and invoking it with parameters:
\n
\n
{
\n
\n
\n@@ -130,23 +130,23 @@\n
}
\n
This example looks up the prepared statement \"find,\" passes name
and min_salary
as parameters, and invokes the statement with those values:
\n
\n+
\n A special prepared statement
\n
There is one special case: the nameless prepared statement. You may prepare a statement without a name, i.e. whose name is an empty string. The unnamed statement can be redefined at any time, without un-preparing it first.
\n-
\n+\n Performance note
\n
Don't assume that using prepared statements will speed up your application. There are cases where prepared statements are actually slower than plain SQL.
\n
The reason is that the backend can often produce a better execution plan when it knows the statement's actual parameter values.
\n
For example, say you've got a web application and you're querying for users with status \"inactive\" who have email addresses in a given domain name X. If X is a very popular provider, the best way for the database engine to plan the query may be to list the inactive users first and then filter for the email addresses you're looking for. But in other cases, it may be much faster to find matching email addresses first and then see which of their owners are \"inactive.\" A prepared statement must be planned to fit either case, but a direct query will be optimised based on table statistics, partial indexes, etc.
\n-
\n+\n Zero bytes
\n - Warning
- Beware of \"nul\" bytes!
\n
Any string you pass as a parameter will end at the first char with value zero. If you pass a string that contains a zero byte, the last byte in the value will be the one just before the zero.
\n
So, if you need a zero byte in a string, consider that it's really a binary string, which is not the same thing as a text string. SQL represents binary data as the BYTEA
type, or in binary large objects (\"blobs\").
\n
In libpqxx, you represent binary data as a range of std::byte
. They must be contiguous in memory, so that libpqxx can pass pointers to the underlying C library. So you might use pqxx::bytes
, or pqxx::bytes_view
, or std::vector<std::byte>
.
\n
\n
\n"}, {"source1": "./usr/share/doc/libpqxx-doc/doxygen-html/search/all_0.js", "source2": "./usr/share/doc/libpqxx-doc/doxygen-html/search/all_0.js", "unified_diff": null, "details": [{"source1": "js-beautify {}", "source2": "js-beautify {}", "unified_diff": "@@ -1,13 +1,13 @@\n var searchData = [\n- ['a_20new_20type_0', ['Supporting a new type', ['../datatypes.html#autotoc_md2', 1, '']]],\n- ['a_20query_20em_1', ['Streaming data <em>from a query</em>', ['../streams.html#autotoc_md24', 1, '']]],\n- ['a_20special_20prepared_20statement_2', ['A special prepared statement', ['../prepared.html#autotoc_md20', 1, '']]],\n- ['a_20statement_3', ['Preparing a statement', ['../prepared.html#autotoc_md18', 1, '']]],\n- ['a_20table_20em_4', ['Streaming data <em>into a table</em>', ['../streams.html#autotoc_md26', 1, '']]],\n+ ['a_20new_20type_0', ['Supporting a new type', ['../datatypes.html#autotoc_md7', 1, '']]],\n+ ['a_20query_20em_1', ['Streaming data <em>from a query</em>', ['../streams.html#autotoc_md26', 1, '']]],\n+ ['a_20special_20prepared_20statement_2', ['A special prepared statement', ['../prepared.html#autotoc_md22', 1, '']]],\n+ ['a_20statement_3', ['Preparing a statement', ['../prepared.html#autotoc_md20', 1, '']]],\n+ ['a_20table_20em_4', ['Streaming data <em>into a table</em>', ['../streams.html#autotoc_md28', 1, '']]],\n ['abort_5', ['abort', ['../group__transactions.html#a955f2497216d9eae268ac662b46d5a45', 1, 'pqxx::transaction_base']]],\n ['access_5fpolicy_6', ['access_policy', ['../classpqxx_1_1cursor__base.html#ab2dbdc503c97b0200dd3eca6ae22f0a2', 1, 'pqxx::cursor_base']]],\n ['accessing_20results_20and_20result_20rows_7', ['Accessing results and result rows', ['../accessing-results.html', 1, '']]],\n ['additional_20data_20types_8', ['Supporting additional data types', ['../datatypes.html', 1, '']]],\n ['adorn_5fname_9', ['adorn_name', ['../classpqxx_1_1connection.html#ab4cbd2e2d30694fcaf0969c33fbeaa8f', 1, 'pqxx::connection']]],\n ['affected_5frows_10', ['affected_rows', ['../classpqxx_1_1result.html#af73d036566ef69618f8b22ba9a220a2e', 1, 'pqxx::result']]],\n ['all_11', ['all', ['../classpqxx_1_1cursor__base.html#a8ce6273da334bfd0a571c47a7eece137', 1, 'pqxx::cursor_base']]],\n"}]}, {"source1": "./usr/share/doc/libpqxx-doc/doxygen-html/search/all_1.js", "source2": "./usr/share/doc/libpqxx-doc/doxygen-html/search/all_1.js", "unified_diff": null, "details": [{"source1": "js-beautify {}", "source2": "js-beautify {}", "unified_diff": "@@ -35,13 +35,13 @@\n ['../classpqxx_1_1blob.html#a3c1c5fcc157476dfe938c6901059502f', 1, 'pqxx::blob::blob()=default'],\n ['../classpqxx_1_1blob.html#aafa3ce93f6401c592f8985217be1d416', 1, 'pqxx::blob::blob(blob &&)']\n ]],\n ['broken_5fconnection_15', ['broken_connection', ['../group__exception.html#structpqxx_1_1broken__connection', 1, 'pqxx']]],\n ['byte_5fchar_5ftraits_16', ['byte_char_traits', ['../structpqxx_1_1byte__char__traits.html', 1, 'pqxx']]],\n ['bytes_17', ['bytes', ['../group__escaping-functions.html#a9c32ded06d7701f6aec265699b09a3d7', 1, 'pqxx::binarystring::bytes()'],\n ['../namespacepqxx.html#ac5e2f3e80ccc3a5f58bab7d699c9be05', 1, 'pqxx::bytes'],\n- ['../prepared.html#autotoc_md22', 1, 'Zero bytes']\n+ ['../prepared.html#autotoc_md24', 1, 'Zero bytes']\n ]],\n ['bytes_5fview_18', ['bytes_view', ['../group__escaping-functions.html#a896578493ce8e0a82e1b2de5fc786c17', 1, 'pqxx::binarystring::bytes_view()'],\n ['../namespacepqxx.html#adf98e8b2ed585c586f9575928421e07d', 1, 'pqxx::bytes_view']\n ]]\n ];\n"}]}, {"source1": "./usr/share/doc/libpqxx-doc/doxygen-html/search/all_10.js", "source2": "./usr/share/doc/libpqxx-doc/doxygen-html/search/all_10.js", "unified_diff": null, "details": [{"source1": "js-beautify {}", "source2": "js-beautify {}", "unified_diff": "@@ -39,31 +39,31 @@\n ['../classpqxx_1_1internal_1_1result__iter.html#a0c920149f5043b7d03b7ac765447a929', 1, 'pqxx::internal::result_iter::result_iter()']\n ]],\n ['result_5fiteration_24', ['result_iteration', ['../classpqxx_1_1internal_1_1result__iteration.html', 1, 'pqxx::internal']]],\n ['result_5fpipeline_25', ['result_pipeline', ['../classpqxx_1_1internal_1_1gate_1_1result__pipeline.html', 1, 'pqxx::internal::gate']]],\n ['result_5fsize_5ftype_26', ['result_size_type', ['../namespacepqxx.html#a937d9f67d0bc04774b85efa58736852b', 1, 'pqxx']]],\n ['result_5fsql_5fcursor_27', ['result_sql_cursor', ['../classpqxx_1_1internal_1_1gate_1_1result__sql__cursor.html', 1, 'pqxx::internal::gate']]],\n ['results_20and_20result_20rows_28', ['Accessing results and result rows', ['../accessing-results.html', 1, '']]],\n- ['results_20with_20metadata_29', ['Results with metadata', ['../accessing-results.html#autotoc_md17', 1, '']]],\n+ ['results_20with_20metadata_29', ['Results with metadata', ['../accessing-results.html#autotoc_md2', 1, '']]],\n ['resume_30', ['resume', ['../classpqxx_1_1pipeline.html#a06667e2e73b597586e61cae8533a2874', 1, 'pqxx::pipeline']]],\n ['retain_31', ['retain', ['../classpqxx_1_1pipeline.html#a5de968e394d7d9b68cfd84f9ae93f5bb', 1, 'pqxx::pipeline']]],\n ['retrieve_32', ['retrieve', ['../classpqxx_1_1pipeline.html#a5f8dfe951c18c19f24dd2e7a30ef276d', 1, 'pqxx::pipeline::retrieve()'],\n ['../classpqxx_1_1pipeline.html#a19c508710d0025993e41512f23de56be', 1, 'pqxx::pipeline::retrieve(query_id qid)'],\n ['../classpqxx_1_1stateless__cursor.html#a97046479f709ae621473c48ed7a0932d', 1, 'pqxx::stateless_cursor::retrieve()']\n ]],\n- ['right_20for_20my_20query_33', ['Is streaming right for my query?', ['../streams.html#autotoc_md25', 1, '']]],\n+ ['right_20for_20my_20query_33', ['Is streaming right for my query?', ['../streams.html#autotoc_md27', 1, '']]],\n ['row_34', ['row', ['../classpqxx_1_1row.html#a734e6042a829b78c4abef2cfd77d1025', 1, 'pqxx::row::row()'],\n ['../classpqxx_1_1row.html', 1, 'pqxx::row']\n ]],\n ['row_5fdifference_5ftype_35', ['row_difference_type', ['../namespacepqxx.html#a3269cdd94e1966b5d9e5d175f27741db', 1, 'pqxx']]],\n ['row_5fend_36', ['row_end', ['../classpqxx_1_1array__parser.html#a039577d83d313a6daf35fd7c273e189eab11c3eff6dd36f1f7136020d32b38051', 1, 'pqxx::array_parser']]],\n ['row_5fsize_5ftype_37', ['row_size_type', ['../namespacepqxx.html#a2dedde27863671a16a59f2625bf03d03', 1, 'pqxx']]],\n ['row_5fstart_38', ['row_start', ['../classpqxx_1_1array__parser.html#a039577d83d313a6daf35fd7c273e189ea776234b9f0a5c0e802f2790824042092', 1, 'pqxx::array_parser']]],\n ['rownumber_39', ['rownumber', ['../classpqxx_1_1const__reverse__result__iterator.html#aadd30c2141060d954c16301e3711a02c', 1, 'pqxx::const_reverse_result_iterator::rownumber()'],\n ['../classpqxx_1_1const__result__iterator.html#aadd30c2141060d954c16301e3711a02c', 1, 'pqxx::const_result_iterator::rownumber()'],\n ['../classpqxx_1_1row.html#aadd30c2141060d954c16301e3711a02c', 1, 'pqxx::row::rownumber()']\n ]],\n ['rows_40', ['rows', ['../accessing-results.html', 1, 'Accessing results and result rows'],\n- ['../accessing-results.html#autotoc_md16', 1, 'Streaming rows']\n+ ['../accessing-results.html#autotoc_md1', 1, 'Streaming rows']\n ]],\n- ['rows_20of_20data_41', ['Querying rows of data', ['../accessing-results.html#autotoc_md15', 1, '']]]\n+ ['rows_20of_20data_41', ['Querying rows of data', ['../accessing-results.html#autotoc_md0', 1, '']]]\n ];\n"}]}, {"source1": "./usr/share/doc/libpqxx-doc/doxygen-html/search/all_11.js", "source2": "./usr/share/doc/libpqxx-doc/doxygen-html/search/all_11.js", "unified_diff": null, "details": [{"source1": "js-beautify {}", "source2": "js-beautify {}", "unified_diff": "@@ -29,90 +29,90 @@\n ['size_19', ['size', ['../classpqxx_1_1array.html#a592afe2ec16fbb793501e84d805c87eb', 1, 'pqxx::array::size()'],\n ['../group__escaping-functions.html#afa6be7a52ce16a143ce6ebf640ff3aea', 1, 'pqxx::binarystring::size()'],\n ['../classpqxx_1_1params.html#a1a3ca8939fbeec4db4f7d69c8014a937', 1, 'pqxx::params::size()'],\n ['../classpqxx_1_1field.html#a20ceb9e1dd63c481e412af866e88ccaa', 1, 'pqxx::field::size()'],\n ['../classpqxx_1_1stateless__cursor.html#ae278f24bab98d3946061934a48992067', 1, 'pqxx::stateless_cursor::size()']\n ]],\n ['size_5fbuffer_20', ['size_buffer', ['../structpqxx_1_1string__traits.html#a16b9aef87d46bafdcfcfdaca42f2f73f', 1, 'pqxx::string_traits']]],\n- ['size_5fbuffer_20tt_21', ['<tt>size_buffer</tt>', ['../datatypes.html#autotoc_md10', 1, '']]],\n+ ['size_5fbuffer_20tt_21', ['<tt>size_buffer</tt>', ['../datatypes.html#autotoc_md15', 1, '']]],\n ['size_5fcomposite_5ffield_5fbuffer_22', ['size_composite_field_buffer', ['../namespacepqxx_1_1internal.html#a28ae4ea69fdef1f1eba5a771ccd1dc2f', 1, 'pqxx::internal']]],\n ['size_5fesc_5fbin_23', ['size_esc_bin', ['../namespacepqxx_1_1internal.html#a297e2d7f026b9baf4b8a57872ea345fc', 1, 'pqxx::internal']]],\n ['size_5funesc_5fbin_24', ['size_unesc_bin', ['../namespacepqxx_1_1internal.html#aff5de6ade6ae7234093bac118bf7ab8c', 1, 'pqxx::internal']]],\n ['sizes_25', ['sizes', ['../classpqxx_1_1array.html#ad0bf0e010691f056bebaa506f9e034dc', 1, 'pqxx::array']]],\n ['skip_5finit_26', ['skip_init', ['../namespacepqxx.html#adabe80e8385e85d663acc6e44332070d', 1, 'pqxx']]],\n ['skip_5finit_5fssl_27', ['skip_init_ssl', ['../namespacepqxx_1_1internal.html#a2ff078037fe1e6ca2b76fd9e0ac94b87', 1, 'pqxx::internal::skip_init_ssl()'],\n ['../namespacepqxx.html#a71f4fd3d06b6e0a849c58a8160380a86', 1, 'pqxx::skip_init_ssl()']\n ]],\n ['slice_28', ['slice', ['../classpqxx_1_1row.html#a4195a594e4f11829637820cd89e39c7b', 1, 'pqxx::row']]],\n ['sock_29', ['sock', ['../classpqxx_1_1connecting.html#a26fe754177b77ce5d62a7de871d79b7b', 1, 'pqxx::connecting::sock()'],\n ['../classpqxx_1_1connection.html#af312d26f21b1cfd4d063e3b591fb7579', 1, 'pqxx::connection::sock()']\n ]],\n- ['special_20prepared_20statement_30', ['A special prepared statement', ['../prepared.html#autotoc_md20', 1, '']]],\n- ['specialise_20tt_20is_5funquoted_5fsafe_20tt_31', ['Optional: Specialise <tt>is_unquoted_safe</tt>', ['../datatypes.html#autotoc_md11', 1, '']]],\n- ['specialise_20tt_20nullness_20tt_32', ['Specialise <tt>nullness</tt>', ['../datatypes.html#autotoc_md5', 1, '']]],\n- ['specialise_20tt_20param_5fformat_20tt_33', ['Optional: Specialise <tt>param_format</tt>', ['../datatypes.html#autotoc_md12', 1, '']]],\n- ['specialise_20tt_20string_5ftraits_20tt_34', ['Specialise <tt>string_traits</tt>', ['../datatypes.html#autotoc_md6', 1, '']]],\n- ['specialise_20tt_20type_5fname_20tt_35', ['Specialise <tt>type_name</tt>', ['../datatypes.html#autotoc_md4', 1, '']]],\n+ ['special_20prepared_20statement_30', ['A special prepared statement', ['../prepared.html#autotoc_md22', 1, '']]],\n+ ['specialise_20tt_20is_5funquoted_5fsafe_20tt_31', ['Optional: Specialise <tt>is_unquoted_safe</tt>', ['../datatypes.html#autotoc_md16', 1, '']]],\n+ ['specialise_20tt_20nullness_20tt_32', ['Specialise <tt>nullness</tt>', ['../datatypes.html#autotoc_md10', 1, '']]],\n+ ['specialise_20tt_20param_5fformat_20tt_33', ['Optional: Specialise <tt>param_format</tt>', ['../datatypes.html#autotoc_md17', 1, '']]],\n+ ['specialise_20tt_20string_5ftraits_20tt_34', ['Specialise <tt>string_traits</tt>', ['../datatypes.html#autotoc_md11', 1, '']]],\n+ ['specialise_20tt_20type_5fname_20tt_35', ['Specialise <tt>type_name</tt>', ['../datatypes.html#autotoc_md9', 1, '']]],\n ['specialize_5fparse_5fcomposite_5ffield_36', ['specialize_parse_composite_field', ['../namespacepqxx_1_1internal.html#ab1007038de5942f048d5da32e49b6b07', 1, 'pqxx::internal']]],\n- ['sql_20injection_37', ['SQL injection', ['../escaping.html#autotoc_md13', 1, '']]],\n+ ['sql_20injection_37', ['SQL injection', ['../escaping.html#autotoc_md4', 1, '']]],\n ['sql_5fcursor_38', ['sql_cursor', ['../classpqxx_1_1internal_1_1sql__cursor.html', 1, 'pqxx::internal']]],\n ['sql_5ferror_39', ['sql_error', ['../group__exception.html#classpqxx_1_1sql__error', 1, 'pqxx']]],\n ['sqlstate_40', ['sqlstate', ['../group__exception.html#a31ffc7a42e9a388eb2b7cb46647e4282', 1, 'pqxx::sql_error']]],\n ['ssize_41', ['ssize', ['../classpqxx_1_1array.html#a707b514df7835fa198a29ae68897efd8', 1, 'pqxx::array::ssize()'],\n ['../classpqxx_1_1params.html#ab23b2a3b2a58bfd03fca36022ebce8b4', 1, 'pqxx::params::ssize()'],\n ['../namespacepqxx_1_1internal.html#af21d8461eaf6d185ed98ab88b2edac6e', 1, 'pqxx::internal::ssize()']\n ]],\n ['started_42', ['Getting started', ['../getting-started.html', 1, '']]],\n ['state_5fbuffer_5foverrun_43', ['state_buffer_overrun', ['../namespacepqxx_1_1internal.html#ac32dacb4b6c712d3d7b1de9ebad0e1d5', 1, 'pqxx::internal']]],\n- ['stateless_5fcursor_44', ['stateless_cursor', ['../classpqxx_1_1stateless__cursor.html#ad77d68832afb8572fd976fc816bec89a', 1, 'pqxx::stateless_cursor::stateless_cursor(transaction_base &tx, std::string_view query, std::string_view cname, bool hold)'],\n- ['../classpqxx_1_1stateless__cursor.html#afe5492d726a1765647985874d17f4149', 1, 'pqxx::stateless_cursor::stateless_cursor(transaction_base &tx, std::string_view adopted_cursor)'],\n- ['../classpqxx_1_1stateless__cursor.html', 1, 'pqxx::stateless_cursor< up, op >']\n+ ['stateless_5fcursor_44', ['stateless_cursor', ['../classpqxx_1_1stateless__cursor.html', 1, 'pqxx::stateless_cursor< up, op >'],\n+ ['../classpqxx_1_1stateless__cursor.html#ad77d68832afb8572fd976fc816bec89a', 1, 'pqxx::stateless_cursor::stateless_cursor(transaction_base &tx, std::string_view query, std::string_view cname, bool hold)'],\n+ ['../classpqxx_1_1stateless__cursor.html#afe5492d726a1765647985874d17f4149', 1, 'pqxx::stateless_cursor::stateless_cursor(transaction_base &tx, std::string_view adopted_cursor)']\n ]],\n- ['statement_45', ['statement', ['../prepared.html#autotoc_md20', 1, 'A special prepared statement'],\n- ['../prepared.html#autotoc_md18', 1, 'Preparing a statement']\n+ ['statement_45', ['statement', ['../prepared.html#autotoc_md22', 1, 'A special prepared statement'],\n+ ['../prepared.html#autotoc_md20', 1, 'Preparing a statement']\n ]],\n ['statement_20parameters_46', ['Statement parameters', ['../parameters.html', 1, '']]],\n ['statement_5fcompletion_5funknown_47', ['statement_completion_unknown', ['../group__exception.html#structpqxx_1_1statement__completion__unknown', 1, 'pqxx']]],\n ['statements_48', ['Prepared statements', ['../prepared.html', 1, '']]],\n ['str_49', ['str', ['../group__escaping-functions.html#a9686dbe184806d5e115d9842aa3484dd', 1, 'pqxx::binarystring']]],\n ['stream_50', ['stream', ['../group__transactions.html#aec4d0f102c2c0fab8fa1a48f452abc0f', 1, 'pqxx::transaction_base']]],\n- ['stream_5ffrom_51', ['stream_from', ['../classpqxx_1_1stream__from.html', 1, 'pqxx::stream_from'],\n- ['../classpqxx_1_1stream__from.html#a11a6e30a28260f10fa9bfbd6f7ea36c4', 1, 'pqxx::stream_from::stream_from(transaction_base &, from_query_t, std::string_view query)'],\n- ['../classpqxx_1_1stream__from.html#a3c4cd42c50e3e90282ea5570ddb19e70', 1, 'pqxx::stream_from::stream_from(transaction_base &, from_table_t, std::string_view table)'],\n- ['../classpqxx_1_1stream__from.html#a0f32402331d7f2b8ed73419f1eed22ba', 1, 'pqxx::stream_from::stream_from(transaction_base &, from_table_t, std::string_view table, Iter columns_begin, Iter columns_end)'],\n+ ['stream_5ffrom_51', ['stream_from', ['../classpqxx_1_1stream__from.html#a6afe5f8cdb8f158b46fa9c616c7864bf', 1, 'pqxx::stream_from::stream_from(transaction_base &, std::string_view table, Iter columns_begin, Iter columns_end)'],\n ['../classpqxx_1_1stream__from.html#a832fe2b217cf7e1a5496d35f75dcd15c', 1, 'pqxx::stream_from::stream_from(transaction_base &tx, from_table_t, std::string_view table, Columns const &columns)'],\n ['../classpqxx_1_1stream__from.html#abcfe96b18d9e2c4177799248fe143807', 1, 'pqxx::stream_from::stream_from(transaction_base &tx, std::string_view table)'],\n ['../classpqxx_1_1stream__from.html#a38b17b7198ed153d01e42d5873cdf070', 1, 'pqxx::stream_from::stream_from(transaction_base &tx, std::string_view table, Columns const &columns)'],\n- ['../classpqxx_1_1stream__from.html#a6afe5f8cdb8f158b46fa9c616c7864bf', 1, 'pqxx::stream_from::stream_from(transaction_base &, std::string_view table, Iter columns_begin, Iter columns_end)']\n+ ['../classpqxx_1_1stream__from.html', 1, 'pqxx::stream_from'],\n+ ['../classpqxx_1_1stream__from.html#a11a6e30a28260f10fa9bfbd6f7ea36c4', 1, 'pqxx::stream_from::stream_from(transaction_base &, from_query_t, std::string_view query)'],\n+ ['../classpqxx_1_1stream__from.html#a3c4cd42c50e3e90282ea5570ddb19e70', 1, 'pqxx::stream_from::stream_from(transaction_base &, from_table_t, std::string_view table)'],\n+ ['../classpqxx_1_1stream__from.html#a0f32402331d7f2b8ed73419f1eed22ba', 1, 'pqxx::stream_from::stream_from(transaction_base &, from_table_t, std::string_view table, Iter columns_begin, Iter columns_end)']\n ]],\n- ['stream_5ffrom_5finput_5fiterator_52', ['stream_from_input_iterator', ['../classpqxx_1_1internal_1_1stream__from__input__iterator.html#a6ee371294bb42b9e604d7313d0878a61', 1, 'pqxx::internal::stream_from_input_iterator::stream_from_input_iterator()'],\n- ['../classpqxx_1_1internal_1_1stream__from__input__iterator.html', 1, 'pqxx::internal::stream_from_input_iterator< TYPE >']\n+ ['stream_5ffrom_5finput_5fiterator_52', ['stream_from_input_iterator', ['../classpqxx_1_1internal_1_1stream__from__input__iterator.html', 1, 'pqxx::internal::stream_from_input_iterator< TYPE >'],\n+ ['../classpqxx_1_1internal_1_1stream__from__input__iterator.html#a6ee371294bb42b9e604d7313d0878a61', 1, 'pqxx::internal::stream_from_input_iterator::stream_from_input_iterator()']\n ]],\n ['stream_5finput_5fiteration_53', ['stream_input_iteration', ['../classpqxx_1_1internal_1_1stream__input__iteration.html', 1, 'pqxx::internal']]],\n- ['stream_5fquery_54', ['stream_query', ['../namespacepqxx.html#classpqxx_1_1stream__query', 1, 'pqxx::stream_query< TYPE >'],\n- ['../classpqxx_1_1internal_1_1stream__query.html', 1, 'pqxx::internal::stream_query< TYPE >'],\n- ['../classpqxx_1_1internal_1_1stream__query.html#a82a1a8435b756b9cb075f4a9a2fc6c09', 1, 'pqxx::internal::stream_query::stream_query()']\n+ ['stream_5fquery_54', ['stream_query', ['../classpqxx_1_1internal_1_1stream__query.html#a82a1a8435b756b9cb075f4a9a2fc6c09', 1, 'pqxx::internal::stream_query::stream_query()'],\n+ ['../namespacepqxx.html#classpqxx_1_1stream__query', 1, 'pqxx::stream_query< TYPE >'],\n+ ['../classpqxx_1_1internal_1_1stream__query.html', 1, 'pqxx::internal::stream_query< TYPE >']\n ]],\n ['stream_5fquery_5fend_5fiterator_55', ['stream_query_end_iterator', ['../namespacepqxx_1_1internal.html#classpqxx_1_1internal_1_1stream__query__end__iterator', 1, 'pqxx::internal']]],\n ['stream_5fquery_5finput_5fiterator_56', ['stream_query_input_iterator', ['../classpqxx_1_1internal_1_1stream__query__input__iterator.html', 1, 'pqxx::internal']]],\n- ['stream_5fto_57', ['stream_to', ['../classpqxx_1_1stream__to.html#af7d4df107f7c1db0bff89a61ae5df7a3', 1, 'pqxx::stream_to::stream_to(transaction_base &, std::string_view table_name, Iter columns_begin, Iter columns_end)'],\n+ ['stream_5fto_57', ['stream_to', ['../classpqxx_1_1stream__to.html#a726187a18a93a4c5cc2343bcb9e97da8', 1, 'pqxx::stream_to::stream_to(transaction_base &tx, std::string_view table_name)'],\n ['../classpqxx_1_1stream__to.html#a3491f56118589adff7b7fc214689ad67', 1, 'pqxx::stream_to::stream_to(transaction_base &, std::string_view table_name, Columns const &columns)'],\n- ['../classpqxx_1_1stream__to.html#a726187a18a93a4c5cc2343bcb9e97da8', 1, 'pqxx::stream_to::stream_to(transaction_base &tx, std::string_view table_name)'],\n+ ['../classpqxx_1_1stream__to.html#af7d4df107f7c1db0bff89a61ae5df7a3', 1, 'pqxx::stream_to::stream_to(transaction_base &, std::string_view table_name, Iter columns_begin, Iter columns_end)'],\n ['../classpqxx_1_1stream__to.html', 1, 'pqxx::stream_to']\n ]],\n- ['streaming_20data_20em_20from_20a_20query_20em_58', ['Streaming data <em>from a query</em>', ['../streams.html#autotoc_md24', 1, '']]],\n- ['streaming_20data_20em_20into_20a_20table_20em_59', ['Streaming data <em>into a table</em>', ['../streams.html#autotoc_md26', 1, '']]],\n- ['streaming_20right_20for_20my_20query_60', ['Is streaming right for my query?', ['../streams.html#autotoc_md25', 1, '']]],\n- ['streaming_20rows_61', ['Streaming rows', ['../accessing-results.html#autotoc_md16', 1, '']]],\n+ ['streaming_20data_20em_20from_20a_20query_20em_58', ['Streaming data <em>from a query</em>', ['../streams.html#autotoc_md26', 1, '']]],\n+ ['streaming_20data_20em_20into_20a_20table_20em_59', ['Streaming data <em>into a table</em>', ['../streams.html#autotoc_md28', 1, '']]],\n+ ['streaming_20right_20for_20my_20query_60', ['Is streaming right for my query?', ['../streams.html#autotoc_md27', 1, '']]],\n+ ['streaming_20rows_61', ['Streaming rows', ['../accessing-results.html#autotoc_md1', 1, '']]],\n ['streams_62', ['Streams', ['../streams.html', 1, '']]],\n ['string_20conversion_63', ['String conversion', ['../group__stringconversion.html', 1, '']]],\n ['string_20escaping_64', ['String escaping', ['../escaping.html', 1, '']]],\n ['string_20escaping_20functions_65', ['String-escaping functions', ['../group__escaping-functions.html', 1, '']]],\n ['string_5ftraits_66', ['string_traits', ['../structpqxx_1_1string__traits.html', 1, 'pqxx']]],\n- ['string_5ftraits_20tt_67', ['Specialise <tt>string_traits</tt>', ['../datatypes.html#autotoc_md6', 1, '']]],\n+ ['string_5ftraits_20tt_67', ['Specialise <tt>string_traits</tt>', ['../datatypes.html#autotoc_md11', 1, '']]],\n ['string_5ftraits_3c_20binarystring_20_3e_68', ['string_traits< binarystring >', ['../structpqxx_1_1string__traits_3_01binarystring_01_4.html', 1, 'pqxx']]],\n ['string_5ftraits_3c_20bool_20_3e_69', ['string_traits< bool >', ['../structpqxx_1_1string__traits_3_01bool_01_4.html', 1, 'pqxx']]],\n ['string_5ftraits_3c_20bytes_20_3e_70', ['string_traits< bytes >', ['../structpqxx_1_1string__traits_3_01bytes_01_4.html', 1, 'pqxx']]],\n ['string_5ftraits_3c_20bytes_5fview_20_3e_71', ['string_traits< bytes_view >', ['../structpqxx_1_1string__traits_3_01bytes__view_01_4.html', 1, 'pqxx']]],\n ['string_5ftraits_3c_20char_20_2a_20_3e_72', ['string_traits< char * >', ['../structpqxx_1_1string__traits_3_01char_01_5_01_4.html', 1, 'pqxx']]],\n ['string_5ftraits_3c_20char_20_3e_73', ['string_traits< char >', ['../structpqxx_1_1string__traits_3_01char_01_4.html', 1, 'pqxx']]],\n ['string_5ftraits_3c_20char_20const_20_2a_20_3e_74', ['string_traits< char const * >', ['../structpqxx_1_1string__traits_3_01char_01const_01_5_01_4.html', 1, 'pqxx']]],\n@@ -151,15 +151,15 @@\n ['strip_5ftypes_107', ['strip_types', ['../namespacepqxx_1_1internal.html#a9b4647a83a27f2d3adc9add80c55dec3', 1, 'pqxx::internal']]],\n ['strip_5ftypes_5ft_108', ['strip_types_t', ['../namespacepqxx_1_1internal.html#a8e0a910c85d42eaa8d5948fae092cf16', 1, 'pqxx::internal']]],\n ['subtransaction_109', ['subtransaction', ['../group__transactions.html#abec3848ca61ae755fab531e791ce89d8', 1, 'pqxx::subtransaction::subtransaction(dbtransaction &t, std::string_view tname=""sv)'],\n ['../group__transactions.html#aa351325206ada1be7f3db4fa69145c4d', 1, 'pqxx::subtransaction::subtransaction(subtransaction &t, std::string_view name=""sv)'],\n ['../group__transactions.html#classpqxx_1_1subtransaction', 1, 'pqxx::subtransaction']\n ]],\n ['super_110', ['super', ['../classpqxx_1_1internal_1_1callgate.html#afb620090453fc901f4fa147ee60bde36', 1, 'pqxx::internal::callgate']]],\n- ['supporting_20a_20new_20type_111', ['Supporting a new type', ['../datatypes.html#autotoc_md2', 1, '']]],\n+ ['supporting_20a_20new_20type_111', ['Supporting a new type', ['../datatypes.html#autotoc_md7', 1, '']]],\n ['supporting_20additional_20data_20types_112', ['Supporting additional data types', ['../datatypes.html', 1, '']]],\n ['swap_113', ['swap', ['../classpqxx_1_1result.html#ad1d929a8c555ef0e4e84d4dbcf56c05e', 1, 'pqxx::result::swap()'],\n ['../classpqxx_1_1const__result__iterator.html#a3a7cd99d4e801fca6a538dbad3c7bba6', 1, 'pqxx::const_result_iterator::swap()'],\n ['../group__escaping-functions.html#ad6e5000885dd6f0b7bdf1f5d7f365dd9', 1, 'pqxx::binarystring::swap()']\n ]],\n ['syntax_5ferror_114', ['syntax_error', ['../group__exception.html#structpqxx_1_1syntax__error', 1, 'pqxx']]]\n ];\n"}]}, {"source1": "./usr/share/doc/libpqxx-doc/doxygen-html/search/all_12.js", "source2": "./usr/share/doc/libpqxx-doc/doxygen-html/search/all_12.js", "unified_diff": null, "details": [{"source1": "js-beautify {}", "source2": "js-beautify {}", "unified_diff": "@@ -1,39 +1,39 @@\n var searchData = [\n ['table_0', ['table', ['../classpqxx_1_1field.html#aee9267454dca1a3457fb86e2f0046feb', 1, 'pqxx::field::table()'],\n ['../classpqxx_1_1stream__from.html#a8bd03db93560766414f74258202f86fd', 1, 'pqxx::stream_from::table()'],\n ['../classpqxx_1_1stream__to.html#a34d7ca93963c0b5733a9ebcc10f2429b', 1, 'pqxx::stream_to::table()']\n ]],\n- ['table_20em_1', ['Streaming data <em>into a table</em>', ['../streams.html#autotoc_md26', 1, '']]],\n+ ['table_20em_1', ['Streaming data <em>into a table</em>', ['../streams.html#autotoc_md28', 1, '']]],\n ['table_5fcolumn_2', ['table_column', ['../classpqxx_1_1row.html#add6bd3b28ccb8178a072e8d3d19b9616', 1, 'pqxx::row::table_column(zview col_name) const'],\n ['../classpqxx_1_1row.html#a0cc2133611f007e7390988f6110245c8', 1, 'pqxx::row::table_column(size_type) const'],\n ['../classpqxx_1_1result.html#a22161b4bebb52ef85a51509302b5a8a9', 1, 'pqxx::result::table_column()'],\n ['../classpqxx_1_1field.html#a884880e40a43bad2733a167340896192', 1, 'pqxx::field::table_column()'],\n ['../classpqxx_1_1result.html#ae65c4fb3934978bba367ab61811aabec', 1, 'pqxx::result::table_column()']\n ]],\n ['table_5fpath_3', ['table_path', ['../namespacepqxx.html#a7f913d1e427c805856ac303db75c1e57', 1, 'pqxx']]],\n ['tell_4', ['tell', ['../classpqxx_1_1largeobjectaccess.html#a972d8559cae789984a194c98a88b943b', 1, 'pqxx::largeobjectaccess::tell()'],\n ['../classpqxx_1_1blob.html#a88f116eb30c662386e02a1a47fd859b8', 1, 'pqxx::blob::tell()']\n ]],\n- ['the_20esc_20functions_5', ['Using the esc functions', ['../escaping.html#autotoc_md14', 1, '']]],\n+ ['the_20esc_20functions_5', ['Using the esc functions', ['../escaping.html#autotoc_md5', 1, '']]],\n ['thread_20safety_6', ['Thread safety', ['../thread-safety.html', 1, '']]],\n ['thread_5fsafety_5fmodel_7', ['thread_safety_model', ['../namespacepqxx.html#structpqxx_1_1thread__safety__model', 1, 'pqxx']]],\n ['throw_5fnull_5fconversion_8', ['throw_null_conversion', ['../namespacepqxx_1_1internal.html#a14aec6b418ba2b5867987eb22bd867ce', 1, 'pqxx::internal::throw_null_conversion(std::string const &type)'],\n ['../namespacepqxx_1_1internal.html#ab228c862d33c75405472dccf8a34dfa3', 1, 'pqxx::internal::throw_null_conversion(std::string_view type)']\n ]],\n ['to_9', ['to', ['../classpqxx_1_1field.html#a5c13391d9f288b83419cca7865b5be62', 1, 'pqxx::field::to(T &obj) const -> typename std::enable_if_t<(not std::is_pointer< T >::value or std::is_same< T, char const * >::value), bool >'],\n ['../classpqxx_1_1field.html#a31433b3a426646a23e1d11f3242a3885', 1, 'pqxx::field::to(T &obj, T const &default_value) const -> typename std::enable_if_t<(not std::is_pointer< T >::value or std::is_same< T, char const * >::value), bool >'],\n ['../classpqxx_1_1row.html#ac478a252d2bac75e1fe0d65fd99f9042', 1, 'pqxx::row::to()'],\n ['../classpqxx_1_1field.html#a1e87e9981c60d37516326e7ab6b26da6', 1, 'pqxx::field::to()']\n ]],\n ['to_5fbuf_10', ['to_buf', ['../classpqxx_1_1blob.html#abfc3b8c4faeab1f394422d474114e121', 1, 'pqxx::blob::to_buf()'],\n ['../structpqxx_1_1internal_1_1float__traits.html#ad1728a05cf18dfe9e200b54b9d8fb38d', 1, 'pqxx::internal::float_traits::to_buf()'],\n ['../structpqxx_1_1string__traits.html#a81b2526f70d7191c37e36fb78530b977', 1, 'pqxx::string_traits::to_buf()']\n ]],\n- ['to_5fbuf_20tt_11', ['<tt>to_buf</tt>', ['../datatypes.html#autotoc_md8', 1, '']]],\n+ ['to_5fbuf_20tt_11', ['<tt>to_buf</tt>', ['../datatypes.html#autotoc_md13', 1, '']]],\n ['to_5ffile_12', ['to_file', ['../classpqxx_1_1blob.html#a373c4d3df0068d18e75f8bdbf619ac90', 1, 'pqxx::blob::to_file()'],\n ['../classpqxx_1_1largeobject.html#a4fb862c252771c8ad4449f8badf2b26f', 1, 'pqxx::largeobject::to_file()'],\n ['../classpqxx_1_1largeobjectaccess.html#acdbc859cf3afd0ddcc4aa555ef36c35a', 1, 'pqxx::largeobjectaccess::to_file(std::string_view file) const'],\n ['../classpqxx_1_1largeobjectaccess.html#a4fb862c252771c8ad4449f8badf2b26f', 1, 'pqxx::largeobjectaccess::to_file(dbtransaction &t, std::string_view file) const']\n ]],\n ['to_5fstring_13', ['to_string', ['../namespacepqxx.html#accab0ae142ee4c6789f5252578d0d478', 1, 'pqxx']]],\n ['to_5fstring_5ffloat_14', ['to_string_float', ['../namespacepqxx_1_1internal.html#acc9749f398f41d29c41e5b4475735f3d', 1, 'pqxx::internal::to_string_float(T)'],\n@@ -49,26 +49,26 @@\n ]],\n ['transaction_5fbase_3a_3aquery_5fvalue_3c_20std_3a_3astring_5fview_20_3e_19', ['query_value< std::string_view >', ['../namespacepqxx.html#a8f5d10354025255ae20e29fa024d22b3', 1, 'pqxx']]],\n ['transaction_5ffocus_20', ['transaction_focus', ['../classpqxx_1_1transaction__focus.html', 1, 'pqxx']]],\n ['transaction_5frollback_21', ['transaction_rollback', ['../group__exception.html#structpqxx_1_1transaction__rollback', 1, 'pqxx']]],\n ['transaction_5fsql_5fcursor_22', ['transaction_sql_cursor', ['../classpqxx_1_1internal_1_1gate_1_1transaction__sql__cursor.html', 1, 'pqxx::internal::gate']]],\n ['transaction_5ftransaction_5ffocus_23', ['transaction_transaction_focus', ['../classpqxx_1_1internal_1_1gate_1_1transaction__transaction__focus.html', 1, 'pqxx::internal::gate']]],\n ['transactor_20framework_24', ['Transactor framework', ['../group__transactor.html', 1, '']]],\n- ['tt_20from_5fstring_20tt_25', ['<tt>from_string</tt>', ['../datatypes.html#autotoc_md7', 1, '']]],\n- ['tt_20into_5fbuf_20tt_26', ['<tt>into_buf</tt>', ['../datatypes.html#autotoc_md9', 1, '']]],\n- ['tt_20is_5funquoted_5fsafe_20tt_27', ['Optional: Specialise <tt>is_unquoted_safe</tt>', ['../datatypes.html#autotoc_md11', 1, '']]],\n- ['tt_20nullness_20tt_28', ['Specialise <tt>nullness</tt>', ['../datatypes.html#autotoc_md5', 1, '']]],\n- ['tt_20param_5fformat_20tt_29', ['Optional: Specialise <tt>param_format</tt>', ['../datatypes.html#autotoc_md12', 1, '']]],\n- ['tt_20size_5fbuffer_20tt_30', ['<tt>size_buffer</tt>', ['../datatypes.html#autotoc_md10', 1, '']]],\n- ['tt_20string_5ftraits_20tt_31', ['Specialise <tt>string_traits</tt>', ['../datatypes.html#autotoc_md6', 1, '']]],\n- ['tt_20to_5fbuf_20tt_32', ['<tt>to_buf</tt>', ['../datatypes.html#autotoc_md8', 1, '']]],\n- ['tt_20type_5fname_20tt_33', ['Specialise <tt>type_name</tt>', ['../datatypes.html#autotoc_md4', 1, '']]],\n- ['type_34', ['type', ['../datatypes.html#autotoc_md2', 1, 'Supporting a new type'],\n+ ['tt_20from_5fstring_20tt_25', ['<tt>from_string</tt>', ['../datatypes.html#autotoc_md12', 1, '']]],\n+ ['tt_20into_5fbuf_20tt_26', ['<tt>into_buf</tt>', ['../datatypes.html#autotoc_md14', 1, '']]],\n+ ['tt_20is_5funquoted_5fsafe_20tt_27', ['Optional: Specialise <tt>is_unquoted_safe</tt>', ['../datatypes.html#autotoc_md16', 1, '']]],\n+ ['tt_20nullness_20tt_28', ['Specialise <tt>nullness</tt>', ['../datatypes.html#autotoc_md10', 1, '']]],\n+ ['tt_20param_5fformat_20tt_29', ['Optional: Specialise <tt>param_format</tt>', ['../datatypes.html#autotoc_md17', 1, '']]],\n+ ['tt_20size_5fbuffer_20tt_30', ['<tt>size_buffer</tt>', ['../datatypes.html#autotoc_md15', 1, '']]],\n+ ['tt_20string_5ftraits_20tt_31', ['Specialise <tt>string_traits</tt>', ['../datatypes.html#autotoc_md11', 1, '']]],\n+ ['tt_20to_5fbuf_20tt_32', ['<tt>to_buf</tt>', ['../datatypes.html#autotoc_md13', 1, '']]],\n+ ['tt_20type_5fname_20tt_33', ['Specialise <tt>type_name</tt>', ['../datatypes.html#autotoc_md9', 1, '']]],\n+ ['type_34', ['type', ['../datatypes.html#autotoc_md7', 1, 'Supporting a new type'],\n ['../classpqxx_1_1field.html#ad2da9b613fdf2b38a36e92eafd9b223a', 1, 'pqxx::field::type()'],\n- ['../datatypes.html#autotoc_md3', 1, 'Your type']\n+ ['../datatypes.html#autotoc_md8', 1, 'Your type']\n ]],\n ['type_5fname_35', ['type_name', ['../namespacepqxx.html#a03b51dc175989959be170596670dafa4', 1, 'pqxx']]],\n- ['type_5fname_20tt_36', ['Specialise <tt>type_name</tt>', ['../datatypes.html#autotoc_md4', 1, '']]],\n- ['types_37', ['types', ['../datatypes.html#autotoc_md1', 1, 'Converting types'],\n+ ['type_5fname_20tt_36', ['Specialise <tt>type_name</tt>', ['../datatypes.html#autotoc_md9', 1, '']]],\n+ ['types_37', ['types', ['../datatypes.html#autotoc_md6', 1, 'Converting types'],\n ['../datatypes.html', 1, 'Supporting additional data types']\n ]]\n ];\n"}]}, {"source1": "./usr/share/doc/libpqxx-doc/doxygen-html/search/all_13.js", "source2": "./usr/share/doc/libpqxx-doc/doxygen-html/search/all_13.js", "unified_diff": null, "details": [{"source1": "js-beautify {}", "source2": "js-beautify {}", "unified_diff": "@@ -18,10 +18,10 @@\n ['unexpected_5frows_7', ['unexpected_rows', ['../group__exception.html#structpqxx_1_1unexpected__rows', 1, 'pqxx']]],\n ['unique_5fviolation_8', ['unique_violation', ['../group__exception.html#structpqxx_1_1unique__violation', 1, 'pqxx']]],\n ['unprepare_9', ['unprepare', ['../classpqxx_1_1connection.html#a5cbd8240e3c74b595ccb535c941433ae', 1, 'pqxx::connection']]],\n ['update_10', ['update', ['../classpqxx_1_1cursor__base.html#ace67894e61fba0ce9f9f6e5b9dd33083a12fa229ee3e760f1ca86d66304554b63', 1, 'pqxx::cursor_base']]],\n ['update_5fpolicy_11', ['update_policy', ['../classpqxx_1_1cursor__base.html#ace67894e61fba0ce9f9f6e5b9dd33083', 1, 'pqxx::cursor_base']]],\n ['usage_5ferror_12', ['usage_error', ['../group__exception.html#structpqxx_1_1usage__error', 1, 'pqxx']]],\n ['username_13', ['username', ['../classpqxx_1_1connection.html#a9d7c7ab0c54a258ac4fab0d562fdbacd', 1, 'pqxx::connection']]],\n- ['using_20the_20esc_20functions_14', ['Using the esc functions', ['../escaping.html#autotoc_md14', 1, '']]],\n+ ['using_20the_20esc_20functions_14', ['Using the esc functions', ['../escaping.html#autotoc_md5', 1, '']]],\n ['utility_20functions_15', ['Utility functions', ['../group__utility.html', 1, '']]]\n ];\n"}]}, {"source1": "./usr/share/doc/libpqxx-doc/doxygen-html/search/all_14.js", "source2": "./usr/share/doc/libpqxx-doc/doxygen-html/search/all_14.js", "unified_diff": null, "details": [{"source1": "js-beautify {}", "source2": "js-beautify {}", "unified_diff": "@@ -1,11 +1,11 @@\n var searchData = [\n ['value_0', ['value', ['../classpqxx_1_1range__bound.html#a76d25b17ed6af78070b888f5effe70ba', 1, 'pqxx::range_bound']]],\n ['value_5ftype_1', ['value_type', ['../namespacepqxx.html#a934fca7aa1250b4c488ac2f09ac2bf1b', 1, 'pqxx']]],\n- ['values_2', ['values', ['../streams.html#autotoc_md23', 1, 'Interlude: null values'],\n+ ['values_2', ['values', ['../streams.html#autotoc_md25', 1, 'Interlude: null values'],\n ['../structpqxx_1_1internal_1_1c__params.html#aad4eb2f440fe907fcf11467effbbff15', 1, 'pqxx::internal::c_params::values']\n ]],\n ['variable_5fset_5fto_5fnull_3', ['variable_set_to_null', ['../group__exception.html#structpqxx_1_1variable__set__to__null', 1, 'pqxx']]],\n ['view_4', ['view', ['../group__escaping-functions.html#a882b8988b2b48a9d3d254a25c559871e', 1, 'pqxx::binarystring::view()'],\n ['../classpqxx_1_1field.html#aa05908e8ed320fac8c96b9eb4cf46813', 1, 'pqxx::field::view()'],\n ['../classpqxx_1_1placeholders.html#a92d006575732b3ead81cbaf4892197ae', 1, 'pqxx::placeholders::view()']\n ]]\n"}]}, {"source1": "./usr/share/doc/libpqxx-doc/doxygen-html/search/all_15.js", "source2": "./usr/share/doc/libpqxx-doc/doxygen-html/search/all_15.js", "unified_diff": null, "details": [{"source1": "js-beautify {}", "source2": "js-beautify {}", "unified_diff": "@@ -1,13 +1,13 @@\n var searchData = [\n ['wait_5ffd_0', ['wait_fd', ['../namespacepqxx_1_1internal.html#ae8a3cb88d2e0bc1f1125bee862fe100b', 1, 'pqxx::internal']]],\n ['wait_5ffor_1', ['wait_for', ['../namespacepqxx_1_1internal.html#ae95ba6e41e051ca26d13855aa2b512cb', 1, 'pqxx::internal']]],\n ['wait_5fto_5fread_2', ['wait_to_read', ['../classpqxx_1_1connecting.html#aa60ab98dc5a2702929765f05229bf160', 1, 'pqxx::connecting']]],\n ['wait_5fto_5fwrite_3', ['wait_to_write', ['../classpqxx_1_1connecting.html#a4b39dd46b61ea3e39242213bd4245eb0', 1, 'pqxx::connecting']]],\n- ['with_20metadata_4', ['Results with metadata', ['../accessing-results.html#autotoc_md17', 1, '']]],\n+ ['with_20metadata_4', ['Results with metadata', ['../accessing-results.html#autotoc_md2', 1, '']]],\n ['write_5', ['write', ['../classpqxx_1_1blob.html#a28ff055c22102e0d1bda250d20d265e8', 1, 'pqxx::blob::write()'],\n ['../classpqxx_1_1largeobjectaccess.html#a60ff3072349074e732d0c00e2aefc498', 1, 'pqxx::largeobjectaccess::write(char const buf[], std::size_t len)'],\n ['../classpqxx_1_1largeobjectaccess.html#addc309fe11d4d3e29547b149e4600199', 1, 'pqxx::largeobjectaccess::write(std::string_view buf)']\n ]],\n ['write_5fpolicy_6', ['write_policy', ['../namespacepqxx.html#a3a8103e375bc507b6e9df93e24121912', 1, 'pqxx']]],\n ['write_5frow_7', ['write_row', ['../classpqxx_1_1stream__to.html#ae628c71679b4ec6ebb4378b487e4f543', 1, 'pqxx::stream_to']]],\n ['write_5fvalues_8', ['write_values', ['../classpqxx_1_1stream__to.html#a41ffa59e4f36803f1e9473ed83b3c41d', 1, 'pqxx::stream_to']]]\n"}]}, {"source1": "./usr/share/doc/libpqxx-doc/doxygen-html/search/all_16.js", "source2": "./usr/share/doc/libpqxx-doc/doxygen-html/search/all_16.js", "unified_diff": null, "details": [{"source1": "js-beautify {}", "source2": "js-beautify {}", "unified_diff": "@@ -1,3 +1,3 @@\n var searchData = [\n- ['your_20type_0', ['Your type', ['../datatypes.html#autotoc_md3', 1, '']]]\n+ ['your_20type_0', ['Your type', ['../datatypes.html#autotoc_md8', 1, '']]]\n ];\n"}]}, {"source1": "./usr/share/doc/libpqxx-doc/doxygen-html/search/all_17.js", "source2": "./usr/share/doc/libpqxx-doc/doxygen-html/search/all_17.js", "unified_diff": null, "details": [{"source1": "js-beautify {}", "source2": "js-beautify {}", "unified_diff": "@@ -1,9 +1,9 @@\n var searchData = [\n- ['zero_20bytes_0', ['Zero bytes', ['../prepared.html#autotoc_md22', 1, '']]],\n+ ['zero_20bytes_0', ['Zero bytes', ['../prepared.html#autotoc_md24', 1, '']]],\n ['zview_1', ['zview', ['../classpqxx_1_1zview.html', 1, 'pqxx::zview'],\n ['../classpqxx_1_1zview.html#a766cc45a178d43b1471fdc025f01535d', 1, 'pqxx::zview::zview(char const text[], std::ptrdiff_t len) noexcept(noexcept(std::string_view{text, static_cast< std::size_t >(len)}))'],\n ['../classpqxx_1_1zview.html#a581b8c75e8c2c0de579debfca37cd725', 1, 'pqxx::zview::zview(char text[], std::ptrdiff_t len) noexcept(noexcept(std::string_view{text, static_cast< std::size_t >(len)}))'],\n ['../classpqxx_1_1zview.html#aa713ad5896e247699dcb5be68528b0e8', 1, 'pqxx::zview::zview(std::string_view other) noexcept'],\n ['../classpqxx_1_1zview.html#a3ddf4e0ff127e96f8f68361088f96d2e', 1, 'pqxx::zview::zview(Args &&...args)'],\n ['../classpqxx_1_1zview.html#ad5928543720ef457a1ca229920f33de6', 1, 'pqxx::zview::zview(std::string const &str) noexcept'],\n ['../classpqxx_1_1zview.html#a9297b1b431ea593ea2ec6c8f0beaefa9', 1, 'pqxx::zview::zview(char const str[]) noexcept(noexcept(std::string_view{str}))'],\n"}]}, {"source1": "./usr/share/doc/libpqxx-doc/doxygen-html/search/all_2.js", "source2": "./usr/share/doc/libpqxx-doc/doxygen-html/search/all_2.js", "unified_diff": null, "details": [{"source1": "js-beautify {}", "source2": "js-beautify {}", "unified_diff": "@@ -13,15 +13,15 @@\n ['callgate_3c_20icursor_5fiterator_20_3e_7', ['callgate< icursor_iterator >', ['../classpqxx_1_1internal_1_1callgate.html', 1, 'pqxx::internal']]],\n ['callgate_3c_20icursorstream_20_3e_8', ['callgate< icursorstream >', ['../classpqxx_1_1internal_1_1callgate.html', 1, 'pqxx::internal']]],\n ['callgate_3c_20result_20const_20_3e_9', ['callgate< result const >', ['../classpqxx_1_1internal_1_1callgate.html', 1, 'pqxx::internal']]],\n ['callgate_3c_20transaction_5fbase_20_3e_10', ['callgate< transaction_base >', ['../classpqxx_1_1internal_1_1callgate.html', 1, 'pqxx::internal']]],\n ['cancel_11', ['cancel', ['../classpqxx_1_1pipeline.html#ab375b0b4e02c7f1a48602c4186fbbbd7', 1, 'pqxx::pipeline']]],\n ['cancel_5fquery_12', ['cancel_query', ['../classpqxx_1_1connection.html#ad1719d51a24c5aa6bd58f03a328a3833', 1, 'pqxx::connection']]],\n ['cat2_13', ['cat2', ['../namespacepqxx_1_1internal.html#ae3d8bb14c1d7c63c57c59b61cf63ff09', 1, 'pqxx::internal']]],\n- ['caveats_14', ['Caveats', ['../binary.html#autotoc_md0', 1, '']]],\n+ ['caveats_14', ['Caveats', ['../binary.html#autotoc_md3', 1, '']]],\n ['cbegin_15', ['cbegin', ['../classpqxx_1_1array.html#aa091e8641639a3802f44b565194d1119', 1, 'pqxx::array']]],\n ['cend_16', ['cend', ['../classpqxx_1_1array.html#a14d57111c8af2324a8e9e8e3df162d9d', 1, 'pqxx::array']]],\n ['channel_17', ['channel', ['../classpqxx_1_1notification__receiver.html#a57732bae437844782bdfe6314f829d9a', 1, 'pqxx::notification_receiver']]],\n ['char_5ffinder_5ffunc_18', ['char_finder_func', ['../namespacepqxx_1_1internal.html#a93267405e140acb909fe17d58746f113', 1, 'pqxx::internal']]],\n ['check_5fcast_19', ['check_cast', ['../namespacepqxx.html#af61c9b8bf784c48b540deb2fe1c1f90c', 1, 'pqxx']]],\n ['check_5fpqxx_5fversion_5f7_5f9_20', ['check_pqxx_version_7_9', ['../namespacepqxx_1_1internal.html#acb3b2eaba1387069e7f2903330e4d458', 1, 'pqxx::internal']]],\n ['check_5fsize_21', ['check_size', ['../classpqxx_1_1row.html#ad786992d33d385865dbae17980345704', 1, 'pqxx::row']]],\n@@ -110,15 +110,15 @@\n ['contains_69', ['contains', ['../classpqxx_1_1range.html#a3f5071556ce9c0b77e6e4a006b6c51fe', 1, 'pqxx::range::contains(range< TYPE > const &other) const noexcept(noexcept((*this &other)==other))'],\n ['../classpqxx_1_1range.html#a2fa03d4ad40c545610bdc382e2aff187', 1, 'pqxx::range::contains(TYPE value) const noexcept(noexcept(m_lower.extends_down_to(value)) and noexcept(m_upper.extends_up_to(value)))']\n ]],\n ['conversion_70', ['String conversion', ['../group__stringconversion.html', 1, '']]],\n ['conversion_5ferror_71', ['conversion_error', ['../group__exception.html#structpqxx_1_1conversion__error', 1, 'pqxx']]],\n ['conversion_5foverrun_72', ['conversion_overrun', ['../group__exception.html#structpqxx_1_1conversion__overrun', 1, 'pqxx']]],\n ['convert_73', ['convert', ['../classpqxx_1_1row.html#af81dc44f173ab151bd052f339c10521f', 1, 'pqxx::row']]],\n- ['converting_20types_74', ['Converting types', ['../datatypes.html#autotoc_md1', 1, '']]],\n+ ['converting_20types_74', ['Converting types', ['../datatypes.html#autotoc_md6', 1, '']]],\n ['converts_5ffrom_5fstring_75', ['converts_from_string', ['../structpqxx_1_1string__traits.html#afc7783fd1fd1020f8d400b318f1a0c10', 1, 'pqxx::string_traits']]],\n ['converts_5fto_5fstring_76', ['converts_to_string', ['../structpqxx_1_1string__traits.html#ac537955384e39377e84fd71ad6c80bfd', 1, 'pqxx::string_traits']]],\n ['count_77', ['count', ['../classpqxx_1_1placeholders.html#a254b9519ce26aee58826afcd4dadb778', 1, 'pqxx::placeholders']]],\n ['crbegin_78', ['crbegin', ['../classpqxx_1_1array.html#a2499a20fcc7d9da7e7f303b6e16fb254', 1, 'pqxx::array']]],\n ['cread_79', ['cread', ['../classpqxx_1_1largeobjectaccess.html#ac43433ab08b3ccb34fc72ea4975bcda2', 1, 'pqxx::largeobjectaccess']]],\n ['create_80', ['create', ['../classpqxx_1_1blob.html#a008264c527d6806ea2b190dd8b75dc11', 1, 'pqxx::blob']]],\n ['crend_81', ['crend', ['../classpqxx_1_1array.html#ac2f300e0917b8e0afbc9d77bbc26534a', 1, 'pqxx::array']]],\n"}]}, {"source1": "./usr/share/doc/libpqxx-doc/doxygen-html/search/all_3.js", "source2": "./usr/share/doc/libpqxx-doc/doxygen-html/search/all_3.js", "unified_diff": null, "details": [{"source1": "js-beautify {}", "source2": "js-beautify {}", "unified_diff": "@@ -1,14 +1,14 @@\n var searchData = [\n ['data_0', ['data', ['../binary.html', 1, 'Binary data'],\n ['../group__escaping-functions.html#aa8e2854a33324620fb8ba3bb0176fa51', 1, 'pqxx::binarystring::data()'],\n- ['../accessing-results.html#autotoc_md15', 1, 'Querying rows of data']\n+ ['../accessing-results.html#autotoc_md0', 1, 'Querying rows of data']\n ]],\n- ['data_20em_20from_20a_20query_20em_1', ['Streaming data <em>from a query</em>', ['../streams.html#autotoc_md24', 1, '']]],\n- ['data_20em_20into_20a_20table_20em_2', ['Streaming data <em>into a table</em>', ['../streams.html#autotoc_md26', 1, '']]],\n+ ['data_20em_20from_20a_20query_20em_1', ['Streaming data <em>from a query</em>', ['../streams.html#autotoc_md26', 1, '']]],\n+ ['data_20em_20into_20a_20table_20em_2', ['Streaming data <em>into a table</em>', ['../streams.html#autotoc_md28', 1, '']]],\n ['data_20types_3', ['Supporting additional data types', ['../datatypes.html', 1, '']]],\n ['data_5fexception_4', ['data_exception', ['../group__exception.html#structpqxx_1_1data__exception', 1, 'pqxx']]],\n ['dbname_5', ['dbname', ['../classpqxx_1_1connection.html#a286e275a7701a8ac96f839cbf8205258', 1, 'pqxx::connection']]],\n ['dbtransaction_6', ['dbtransaction', ['../group__transactions.html#classpqxx_1_1dbtransaction', 1, 'pqxx::dbtransaction'],\n ['../group__transactions.html#aaf517316c584ca63213b8b8db06ea2e4', 1, 'pqxx::dbtransaction::dbtransaction(connection &c, std::string_view tname, std::shared_ptr< std::string > rollback_cmd)'],\n ['../group__transactions.html#ad41eb96e0cb743cace7c6420d55fdf0f', 1, 'pqxx::dbtransaction::dbtransaction(connection &c, std::string_view tname)'],\n ['../group__transactions.html#ac7c5607b7503cd50e53c9ff90362013a', 1, 'pqxx::dbtransaction::dbtransaction(connection &c)']\n@@ -29,15 +29,15 @@\n ['disk_5ffull_18', ['disk_full', ['../group__exception.html#structpqxx_1_1disk__full', 1, 'pqxx']]],\n ['do_5fabort_19', ['do_abort', ['../group__transactions.html#a4e7a3dd2de2aa993e8d13fa5e45fa13d', 1, 'pqxx::transaction_base']]],\n ['do_5fcommit_20', ['do_commit', ['../group__transactions.html#a475695c55439007cd2438fb184ed8be3', 1, 'pqxx::transaction_base']]],\n ['done_21', ['done', ['../classpqxx_1_1array__parser.html#a039577d83d313a6daf35fd7c273e189ea6b2ded51d81a4403d8a4bd25fa1e57ee', 1, 'pqxx::array_parser::done'],\n ['../classpqxx_1_1internal_1_1stream__query.html#a173d0e79729e42ccb3841f1e6d556376', 1, 'pqxx::internal::stream_query::done()'],\n ['../classpqxx_1_1connecting.html#a2859ca4422246743c85e4baf2ea00a1e', 1, 'pqxx::connecting::done()']\n ]],\n- ['dynamic_20parameter_20lists_22', ['Dynamic parameter lists', ['../parameters.html#autotoc_md27', 1, '']]],\n+ ['dynamic_20parameter_20lists_22', ['Dynamic parameter lists', ['../parameters.html#autotoc_md18', 1, '']]],\n ['dynamic_5fparams_23', ['dynamic_params', ['../classpqxx_1_1internal_1_1dynamic__params.html#a2135ab029e5235a29612ffdae27e93de', 1, 'pqxx::internal::dynamic_params::dynamic_params(C &container)'],\n ['../classpqxx_1_1internal_1_1dynamic__params.html#a6ee02fae3568c5656cb964f7a6d2a710', 1, 'pqxx::internal::dynamic_params::dynamic_params(C &container, ACCESSOR &acc)'],\n ['../classpqxx_1_1internal_1_1dynamic__params.html#aadfb6e389288cca5a5f5b89cc3a2fdc3', 1, 'pqxx::internal::dynamic_params::dynamic_params(IT begin, IT end, ACCESSOR &acc)'],\n ['../classpqxx_1_1internal_1_1dynamic__params.html#a5b59edc3a62998f76ef9996dda783b81', 1, 'pqxx::internal::dynamic_params::dynamic_params(IT begin, IT end)'],\n ['../classpqxx_1_1internal_1_1dynamic__params.html', 1, 'pqxx::internal::dynamic_params< IT, ACCESSOR >']\n ]]\n ];\n"}]}, {"source1": "./usr/share/doc/libpqxx-doc/doxygen-html/search/all_4.js", "source2": "./usr/share/doc/libpqxx-doc/doxygen-html/search/all_4.js", "unified_diff": null, "details": [{"source1": "js-beautify {}", "source2": "js-beautify {}", "unified_diff": "@@ -1,10 +1,10 @@\n var searchData = [\n- ['em_20from_20a_20query_20em_0', ['Streaming data <em>from a query</em>', ['../streams.html#autotoc_md24', 1, '']]],\n- ['em_20into_20a_20table_20em_1', ['Streaming data <em>into a table</em>', ['../streams.html#autotoc_md26', 1, '']]],\n+ ['em_20from_20a_20query_20em_0', ['Streaming data <em>from a query</em>', ['../streams.html#autotoc_md26', 1, '']]],\n+ ['em_20into_20a_20table_20em_1', ['Streaming data <em>into a table</em>', ['../streams.html#autotoc_md28', 1, '']]],\n ['empty_2', ['empty', ['../classpqxx_1_1range.html#ac91cd0e74ae28042d8f887107f0aef76', 1, 'pqxx::range::empty()'],\n ['../classpqxx_1_1row.html#a05994def0b6c7b426bb13a7a95e9e035', 1, 'pqxx::row::empty()']\n ]],\n ['empty_5fresult_3', ['empty_result', ['../classpqxx_1_1internal_1_1sql__cursor.html#aa081894fff9516d7dc26a8f724db21aa', 1, 'pqxx::internal::sql_cursor']]],\n ['enc_5fgroup_4', ['enc_group', ['../namespacepqxx_1_1internal.html#aef85ea1bf0ba64165cf2719dc25b0424', 1, 'pqxx::internal::enc_group(int)'],\n ['../namespacepqxx_1_1internal.html#a6a4fef10718297b22be8627e18e20fe0', 1, 'pqxx::internal::enc_group(std::string_view encoding_name)']\n ]],\n@@ -29,15 +29,15 @@\n ]],\n ['errorhandler_5fconnection_17', ['errorhandler_connection', ['../classpqxx_1_1internal_1_1gate_1_1errorhandler__connection.html', 1, 'pqxx::internal::gate']]],\n ['esc_18', ['esc', ['../classpqxx_1_1connection.html#aa29f2e36001c4715e898f2c1a2ca9d5a', 1, 'pqxx::connection::esc(char const text[]) const'],\n ['../classpqxx_1_1connection.html#a6e6bc476091af546f880c9c572f05375', 1, 'pqxx::connection::esc(std::string_view text) const'],\n ['../classpqxx_1_1connection.html#ab2fd28a1d384854642cc84dcd54cd450', 1, 'pqxx::connection::esc(char const text[], std::size_t maxlen) const'],\n ['../group__escaping-functions.html#ga6710c7298c40ae41b5d8326cbf2ad20e', 1, 'pqxx::transaction_base::esc()']\n ]],\n- ['esc_20functions_19', ['Using the esc functions', ['../escaping.html#autotoc_md14', 1, '']]],\n+ ['esc_20functions_19', ['Using the esc functions', ['../escaping.html#autotoc_md5', 1, '']]],\n ['esc_5fbin_20', ['esc_bin', ['../namespacepqxx_1_1internal.html#a842929aed32b7ff0f3178a7539b595d9', 1, 'pqxx::internal::esc_bin(bytes_view binary_data)'],\n ['../namespacepqxx_1_1internal.html#a89a78387ec5faabb426e0f519cad2b56', 1, 'pqxx::internal::esc_bin(bytes_view binary_data, char buffer[]) noexcept']\n ]],\n ['esc_5flike_21', ['esc_like', ['../classpqxx_1_1connection.html#a7e8f054f91d4e61879039bfdff9b2889', 1, 'pqxx::connection::esc_like()'],\n ['../group__transactions.html#abb28d39ae66b1f36f7297b1e9d1c4e1a', 1, 'pqxx::transaction_base::esc_like()']\n ]],\n ['esc_5fraw_22', ['esc_raw', ['../classpqxx_1_1connection.html#a22d2c852a4e1c159c021b04efc04f8e1', 1, 'pqxx::connection::esc_raw(unsigned char const bin[], std::size_t len) const'],\n"}]}, {"source1": "./usr/share/doc/libpqxx-doc/doxygen-html/search/all_5.js", "source2": "./usr/share/doc/libpqxx-doc/doxygen-html/search/all_5.js", "unified_diff": null, "details": [{"source1": "js-beautify {}", "source2": "js-beautify {}", "unified_diff": "@@ -15,15 +15,15 @@\n ['find_5fchar_8', ['find_char', ['../namespacepqxx_1_1internal.html#ac7f47e680c4aba12c395e1a854966a8e', 1, 'pqxx::internal']]],\n ['find_5fs_5fascii_5fchar_9', ['find_s_ascii_char', ['../namespacepqxx_1_1internal.html#a47911290f09c40ca080108ea376ffca9', 1, 'pqxx::internal']]],\n ['float_5ftraits_10', ['float_traits', ['../structpqxx_1_1internal_1_1float__traits.html', 1, 'pqxx::internal']]],\n ['float_5ftraits_3c_20double_20_3e_11', ['float_traits< double >', ['../structpqxx_1_1internal_1_1float__traits.html', 1, 'pqxx::internal']]],\n ['float_5ftraits_3c_20float_20_3e_12', ['float_traits< float >', ['../structpqxx_1_1internal_1_1float__traits.html', 1, 'pqxx::internal']]],\n ['float_5ftraits_3c_20long_20double_20_3e_13', ['float_traits< long double >', ['../structpqxx_1_1internal_1_1float__traits.html', 1, 'pqxx::internal']]],\n ['flush_14', ['flush', ['../classpqxx_1_1pipeline.html#a33a890c64efc37d76f3c649f145ff950', 1, 'pqxx::pipeline']]],\n- ['for_20my_20query_15', ['Is streaming right for my query?', ['../streams.html#autotoc_md25', 1, '']]],\n+ ['for_20my_20query_15', ['Is streaming right for my query?', ['../streams.html#autotoc_md27', 1, '']]],\n ['for_5feach_16', ['for_each', ['../classpqxx_1_1result.html#a9302f9b61826f8b7b213f13b30453c0b', 1, 'pqxx::result']]],\n ['for_5fglyphs_17', ['for_glyphs', ['../namespacepqxx_1_1internal.html#a6d813d2723b73f1e674a9aa3229ab060', 1, 'pqxx::internal']]],\n ['for_5fquery_18', ['for_query', ['../group__transactions.html#aed05d9bf4a4d29e8f13ef92174489d86', 1, 'pqxx::transaction_base::for_query(zview query, CALLABLE &&func)'],\n ['../group__transactions.html#a2b72c8c8dec3714ba9bda0c4546e9c2f', 1, 'pqxx::transaction_base::for_query(zview query, CALLABLE &&func, params const &parms)']\n ]],\n ['for_5fstream_19', ['for_stream', ['../group__transactions.html#aaf86f83eff8c7ca945c9921bddb75b14', 1, 'pqxx::transaction_base']]],\n ['forbidden_5fconversion_20', ['forbidden_conversion', ['../structpqxx_1_1forbidden__conversion.html', 1, 'pqxx']]],\n@@ -32,32 +32,32 @@\n ['forbidden_5fconversion_3c_20std_3a_3abyte_20_3e_23', ['forbidden_conversion< std::byte >', ['../structpqxx_1_1forbidden__conversion.html', 1, 'pqxx']]],\n ['forbidden_5fconversion_3c_20unsigned_20char_20_3e_24', ['forbidden_conversion< unsigned char >', ['../structpqxx_1_1forbidden__conversion.html', 1, 'pqxx']]],\n ['foreign_5fkey_5fviolation_25', ['foreign_key_violation', ['../group__exception.html#structpqxx_1_1foreign__key__violation', 1, 'pqxx']]],\n ['format_26', ['format', ['../namespacepqxx.html#afac7ada3a82bcd0e70131f9aede360ce', 1, 'pqxx']]],\n ['formats_27', ['formats', ['../structpqxx_1_1internal_1_1c__params.html#a9a6d51da90f51c90d3044ad9261616b8', 1, 'pqxx::internal::c_params']]],\n ['forward_5fonly_28', ['forward_only', ['../classpqxx_1_1cursor__base.html#ab2dbdc503c97b0200dd3eca6ae22f0a2af440221f717464c87f043899cc117cbf', 1, 'pqxx::cursor_base']]],\n ['framework_29', ['Transactor framework', ['../group__transactor.html', 1, '']]],\n- ['from_20a_20query_20em_30', ['Streaming data <em>from a query</em>', ['../streams.html#autotoc_md24', 1, '']]],\n+ ['from_20a_20query_20em_30', ['Streaming data <em>from a query</em>', ['../streams.html#autotoc_md26', 1, '']]],\n ['from_5fbuf_31', ['from_buf', ['../classpqxx_1_1blob.html#ab1f3e5e083f3c69ecc32cc87aa4d8f90', 1, 'pqxx::blob']]],\n ['from_5ffile_32', ['from_file', ['../classpqxx_1_1blob.html#acd468aa64cdd17c3dec34cb059721842', 1, 'pqxx::blob::from_file(dbtransaction &, char const path[], oid)'],\n ['../classpqxx_1_1blob.html#a41ea99b2f59cf0946986c14371915980', 1, 'pqxx::blob::from_file(dbtransaction &, char const path[])']\n ]],\n ['from_5fquery_33', ['from_query', ['../namespacepqxx.html#a31fff381823ee2bc5af1f47139b3b48c', 1, 'pqxx']]],\n ['from_5fquery_5ft_34', ['from_query_t', ['../namespacepqxx.html#structpqxx_1_1from__query__t', 1, 'pqxx']]],\n ['from_5fstring_35', ['from_string', ['../structpqxx_1_1string__traits.html#a09bce703d8e0234e84605038189381e8', 1, 'pqxx::string_traits::from_string()'],\n ['../structpqxx_1_1string__traits_3_01zview_01_4.html#a3b78a0d0dfbd5bf56c18d02e8a2ae184', 1, 'pqxx::string_traits< zview >::from_string()'],\n ['../namespacepqxx.html#ae3697fd4a0fc1fcdb40937e16e1ec878', 1, 'pqxx::from_string()'],\n ['../structpqxx_1_1string__traits_3_01std_1_1string__view_01_4.html#a98acdd0a20f834be7670763ae0f93bcb', 1, 'pqxx::string_traits< std::string_view >::from_string()'],\n ['../structpqxx_1_1string__traits_3_01char_0fN_0e_4.html#a45384953864d4858e8fa8549e4eeabf7', 1, 'pqxx::string_traits< char[N]>::from_string()'],\n ['../structpqxx_1_1string__traits_3_01char_01_5_01_4.html#af0ea80b9d8301a1a3211a1a5891521ea', 1, 'pqxx::string_traits< char * >::from_string()'],\n ['../structpqxx_1_1string__traits_3_01std_1_1variant_3_01T_8_8_8_01_4_01_4.html#a2672f0ae1c9d445d7c63929d8278b727', 1, 'pqxx::string_traits< std::variant< T... > >::from_string()']\n ]],\n- ['from_5fstring_20tt_36', ['<tt>from_string</tt>', ['../datatypes.html#autotoc_md7', 1, '']]],\n+ ['from_5fstring_20tt_36', ['<tt>from_string</tt>', ['../datatypes.html#autotoc_md12', 1, '']]],\n ['from_5fstring_3c_20std_3a_3anullptr_5ft_20_3e_37', ['from_string< std::nullptr_t >', ['../namespacepqxx.html#ac676a8d392370a92f0a2ef0f0bbf2043', 1, 'pqxx']]],\n ['from_5ftable_38', ['from_table', ['../namespacepqxx.html#a66648ed503eb162846c41247daa32660', 1, 'pqxx']]],\n ['from_5ftable_5ft_39', ['from_table_t', ['../namespacepqxx.html#structpqxx_1_1from__table__t', 1, 'pqxx']]],\n ['front_40', ['front', ['../classpqxx_1_1array.html#af0f6cbf8e3621dc46e59b9563ed436b1', 1, 'pqxx::array']]],\n ['functions_41', ['functions', ['../group__escaping-functions.html', 1, 'String-escaping functions'],\n- ['../escaping.html#autotoc_md14', 1, 'Using the esc functions'],\n+ ['../escaping.html#autotoc_md5', 1, 'Using the esc functions'],\n ['../group__utility.html', 1, 'Utility functions']\n ]]\n ];\n"}]}, {"source1": "./usr/share/doc/libpqxx-doc/doxygen-html/search/all_6.js", "source2": "./usr/share/doc/libpqxx-doc/doxygen-html/search/all_6.js", "unified_diff": null, "details": [{"source1": "js-beautify {}", "source2": "js-beautify {}", "unified_diff": "@@ -1,9 +1,9 @@\n var searchData = [\n- ['generating_20placeholders_0', ['Generating placeholders', ['../parameters.html#autotoc_md28', 1, '']]],\n+ ['generating_20placeholders_0', ['Generating placeholders', ['../parameters.html#autotoc_md19', 1, '']]],\n ['generic_5finto_5fbuf_1', ['generic_into_buf', ['../namespacepqxx_1_1internal.html#ad36377dfe85994d97cb1aaa942100b6b', 1, 'pqxx::internal']]],\n ['get_2', ['get', ['../classpqxx_1_1placeholders.html#a4bdc5f0c544e544a62af6d2fc2309c58', 1, 'pqxx::placeholders::get()'],\n ['../classpqxx_1_1field.html#adb7ec4ecef586ebbab147b5b181dfff3', 1, 'pqxx::field::get()'],\n ['../group__escaping-functions.html#a22a65469db21930a72c82178f37b568a', 1, 'pqxx::binarystring::get()']\n ]],\n ['get_5fchar_5ffinder_3', ['get_char_finder', ['../namespacepqxx_1_1internal.html#a16e6f54fdf88d18355e1a3a570fa175f', 1, 'pqxx::internal']]],\n ['get_5fclient_5fencoding_4', ['get_client_encoding', ['../classpqxx_1_1connection.html#a777daa7f80f3e55df9ee50e236f74653', 1, 'pqxx::connection']]],\n"}]}, {"source1": "./usr/share/doc/libpqxx-doc/doxygen-html/search/all_8.js", "source2": "./usr/share/doc/libpqxx-doc/doxygen-html/search/all_8.js", "unified_diff": null, "details": [{"source1": "js-beautify {}", "source2": "js-beautify {}", "unified_diff": "@@ -3,47 +3,47 @@\n ['icursorstream_5ficursor_5fiterator_1', ['icursorstream_icursor_iterator', ['../classpqxx_1_1internal_1_1gate_1_1icursorstream__icursor__iterator.html', 1, 'pqxx::internal::gate']]],\n ['id_2', ['id', ['../classpqxx_1_1largeobjectaccess.html#af210c3d0b39442a5ce9b3b1508d96c84', 1, 'pqxx::largeobjectaccess::id()'],\n ['../classpqxx_1_1largeobject.html#af210c3d0b39442a5ce9b3b1508d96c84', 1, 'pqxx::largeobject::id()']\n ]],\n ['ignore_5funused_3', ['ignore_unused', ['../namespacepqxx.html#a9dd8124be2fccf97ece84ae958c175a0', 1, 'pqxx']]],\n ['in_5fdoubt_5ferror_4', ['in_doubt_error', ['../group__exception.html#structpqxx_1_1in__doubt__error', 1, 'pqxx']]],\n ['inclusive_5fbound_5', ['inclusive_bound', ['../classpqxx_1_1inclusive__bound.html', 1, 'pqxx']]],\n- ['injection_6', ['SQL injection', ['../escaping.html#autotoc_md13', 1, '']]],\n+ ['injection_6', ['SQL injection', ['../escaping.html#autotoc_md4', 1, '']]],\n ['insert_7', ['insert', ['../classpqxx_1_1pipeline.html#a808f4fc39c77e490171d54a5554b337d', 1, 'pqxx::pipeline']]],\n ['inserted_5foid_8', ['inserted_oid', ['../classpqxx_1_1result.html#a5094a7be5f02f0f4c641fbd5ccb1a4da', 1, 'pqxx::result']]],\n ['insufficient_5fprivilege_9', ['insufficient_privilege', ['../group__exception.html#structpqxx_1_1insufficient__privilege', 1, 'pqxx']]],\n ['insufficient_5fresources_10', ['insufficient_resources', ['../group__exception.html#structpqxx_1_1insufficient__resources', 1, 'pqxx']]],\n ['integral_5ftraits_11', ['integral_traits', ['../structpqxx_1_1internal_1_1integral__traits.html', 1, 'pqxx::internal']]],\n ['integral_5ftraits_3c_20int_20_3e_12', ['integral_traits< int >', ['../structpqxx_1_1internal_1_1integral__traits.html', 1, 'pqxx::internal']]],\n ['integral_5ftraits_3c_20long_20_3e_13', ['integral_traits< long >', ['../structpqxx_1_1internal_1_1integral__traits.html', 1, 'pqxx::internal']]],\n ['integral_5ftraits_3c_20long_20long_20_3e_14', ['integral_traits< long long >', ['../structpqxx_1_1internal_1_1integral__traits.html', 1, 'pqxx::internal']]],\n ['integral_5ftraits_3c_20short_20_3e_15', ['integral_traits< short >', ['../structpqxx_1_1internal_1_1integral__traits.html', 1, 'pqxx::internal']]],\n ['integral_5ftraits_3c_20unsigned_20_3e_16', ['integral_traits< unsigned >', ['../structpqxx_1_1internal_1_1integral__traits.html', 1, 'pqxx::internal']]],\n ['integral_5ftraits_3c_20unsigned_20long_20_3e_17', ['integral_traits< unsigned long >', ['../structpqxx_1_1internal_1_1integral__traits.html', 1, 'pqxx::internal']]],\n ['integral_5ftraits_3c_20unsigned_20long_20long_20_3e_18', ['integral_traits< unsigned long long >', ['../structpqxx_1_1internal_1_1integral__traits.html', 1, 'pqxx::internal']]],\n ['integral_5ftraits_3c_20unsigned_20short_20_3e_19', ['integral_traits< unsigned short >', ['../structpqxx_1_1internal_1_1integral__traits.html', 1, 'pqxx::internal']]],\n ['integrity_5fconstraint_5fviolation_20', ['integrity_constraint_violation', ['../group__exception.html#structpqxx_1_1integrity__constraint__violation', 1, 'pqxx']]],\n- ['interlude_3a_20null_20values_21', ['Interlude: null values', ['../streams.html#autotoc_md23', 1, '']]],\n+ ['interlude_3a_20null_20values_21', ['Interlude: null values', ['../streams.html#autotoc_md25', 1, '']]],\n ['internal_5ferror_22', ['internal_error', ['../group__exception.html#structpqxx_1_1internal__error', 1, 'pqxx']]],\n- ['into_20a_20table_20em_23', ['Streaming data <em>into a table</em>', ['../streams.html#autotoc_md26', 1, '']]],\n+ ['into_20a_20table_20em_23', ['Streaming data <em>into a table</em>', ['../streams.html#autotoc_md28', 1, '']]],\n ['into_5fbuf_24', ['into_buf', ['../structpqxx_1_1string__traits.html#ad0fa1a3d75ba56a58c39822d25c14a0c', 1, 'pqxx::string_traits']]],\n- ['into_5fbuf_20tt_25', ['<tt>into_buf</tt>', ['../datatypes.html#autotoc_md9', 1, '']]],\n+ ['into_5fbuf_20tt_25', ['<tt>into_buf</tt>', ['../datatypes.html#autotoc_md14', 1, '']]],\n ['invalid_5fcursor_5fname_26', ['invalid_cursor_name', ['../group__exception.html#structpqxx_1_1invalid__cursor__name', 1, 'pqxx']]],\n ['invalid_5fcursor_5fstate_27', ['invalid_cursor_state', ['../group__exception.html#structpqxx_1_1invalid__cursor__state', 1, 'pqxx']]],\n ['invalid_5fsql_5fstatement_5fname_28', ['invalid_sql_statement_name', ['../group__exception.html#structpqxx_1_1invalid__sql__statement__name', 1, 'pqxx']]],\n- ['is_20streaming_20right_20for_20my_20query_29', ['Is streaming right for my query?', ['../streams.html#autotoc_md25', 1, '']]],\n+ ['is_20streaming_20right_20for_20my_20query_29', ['Is streaming right for my query?', ['../streams.html#autotoc_md27', 1, '']]],\n ['is_5fdigit_30', ['is_digit', ['../namespacepqxx_1_1internal.html#ace1c90d8dab0dafc4764c89ff09fa938', 1, 'pqxx::internal']]],\n ['is_5fexclusive_31', ['is_exclusive', ['../classpqxx_1_1range__bound.html#a5e36faad60586213187bbe1735f00c5b', 1, 'pqxx::range_bound']]],\n ['is_5ffinished_32', ['is_finished', ['../classpqxx_1_1pipeline.html#adb318eea9147fb82d67c43a430722283', 1, 'pqxx::pipeline']]],\n ['is_5finclusive_33', ['is_inclusive', ['../classpqxx_1_1range__bound.html#abe993384f178fe7ac1143e88a3dbcaeb', 1, 'pqxx::range_bound']]],\n ['is_5flimited_34', ['is_limited', ['../classpqxx_1_1range__bound.html#a62434321bfbc5f66bf3921ea2fb31274', 1, 'pqxx::range_bound']]],\n ['is_5fnull_35', ['is_null', ['../structpqxx_1_1no__null.html#ab53a311556c321a9dd10229b5b64773b', 1, 'pqxx::no_null::is_null()'],\n ['../structpqxx_1_1nullness.html#a309fcad467f815a9fbccbea0c2a6608a', 1, 'pqxx::nullness::is_null()'],\n ['../classpqxx_1_1field.html#ad3f84cc67637ba99b7128db75603d03c', 1, 'pqxx::field::is_null()']\n ]],\n ['is_5fopen_36', ['is_open', ['../classpqxx_1_1connection.html#a1e401dd0dbd1be80176a691a864f652b', 1, 'pqxx::connection']]],\n- ['is_5funquoted_5fsafe_20tt_37', ['Optional: Specialise <tt>is_unquoted_safe</tt>', ['../datatypes.html#autotoc_md11', 1, '']]],\n+ ['is_5funquoted_5fsafe_20tt_37', ['Optional: Specialise <tt>is_unquoted_safe</tt>', ['../datatypes.html#autotoc_md16', 1, '']]],\n ['isolation_5flevel_38', ['isolation_level', ['../namespacepqxx.html#a8f05a60f9e1f7dc4e4af5dce6b987c8c', 1, 'pqxx']]],\n ['iter_39', ['iter', ['../classpqxx_1_1stream__from.html#acb595a8190351f2a8b594518351c40f3', 1, 'pqxx::stream_from::iter()'],\n ['../classpqxx_1_1result.html#afb672c73ca193aaf2fc5ba4d5c8a96f8', 1, 'pqxx::result::iter()']\n ]]\n ];\n"}]}, {"source1": "./usr/share/doc/libpqxx-doc/doxygen-html/search/all_a.js", "source2": "./usr/share/doc/libpqxx-doc/doxygen-html/search/all_a.js", "unified_diff": null, "details": [{"source1": "js-beautify {}", "source2": "js-beautify {}", "unified_diff": "@@ -17,10 +17,10 @@\n ]],\n ['length_5', ['length', ['../group__escaping-functions.html#abac0db9f28acffc553d18002b8df0e6b', 1, 'pqxx::binarystring::length()'],\n ['../structpqxx_1_1byte__char__traits.html#a577df64c0aa007334dfa5ae84acbf153', 1, 'pqxx::byte_char_traits::length()']\n ]],\n ['lengths_6', ['lengths', ['../structpqxx_1_1internal_1_1c__params.html#a7f7597e054124f94dc53c91d1048f0ee', 1, 'pqxx::internal::c_params']]],\n ['libpqxx_7', ['libpqxx', ['../index.html', 1, '']]],\n ['list_8', ['Deprecated List', ['../deprecated.html', 1, '']]],\n- ['lists_9', ['Dynamic parameter lists', ['../parameters.html#autotoc_md27', 1, '']]],\n+ ['lists_9', ['Dynamic parameter lists', ['../parameters.html#autotoc_md18', 1, '']]],\n ['loose_10', ['loose', ['../classpqxx_1_1cursor__base.html#ac06b19ea7f07f4e251560f49bee2e490a4c37408c49492bfe9f012812226dd1fd', 1, 'pqxx::cursor_base']]]\n ];\n"}]}, {"source1": "./usr/share/doc/libpqxx-doc/doxygen-html/search/all_b.js", "source2": "./usr/share/doc/libpqxx-doc/doxygen-html/search/all_b.js", "unified_diff": null, "details": [{"source1": "js-beautify {}", "source2": "js-beautify {}", "unified_diff": "@@ -4,10 +4,10 @@\n ['m_5fend_2', ['m_end', ['../classpqxx_1_1row.html#a0ec7d11b9721ab7bb54ec5df113ab8f5', 1, 'pqxx::row']]],\n ['m_5findex_3', ['m_index', ['../classpqxx_1_1row.html#a859f508b95f424531247427189a529ef', 1, 'pqxx::row']]],\n ['m_5fresult_4', ['m_result', ['../classpqxx_1_1row.html#a83a21b69ee9c581fc449d24dc33d8e65', 1, 'pqxx::row']]],\n ['make_5fc_5fparams_5', ['make_c_params', ['../classpqxx_1_1params.html#a6ecf59a6ac483fe23e051ae654abc2b0', 1, 'pqxx::params']]],\n ['map_5fascii_5fsearch_5fgroup_6', ['map_ascii_search_group', ['../namespacepqxx_1_1internal.html#ae26a85861af19d77bcc12ae448531d32', 1, 'pqxx::internal']]],\n ['max_5fparams_7', ['max_params', ['../classpqxx_1_1placeholders.html#a066068da0d7ca3d0b38ee47ce0098843', 1, 'pqxx::placeholders']]],\n ['member_5fargs_5ff_8', ['member_args_f', ['../namespacepqxx_1_1internal.html#a70ec299b53c60d248d0766cc11faacf1', 1, 'pqxx::internal']]],\n- ['metadata_9', ['Results with metadata', ['../accessing-results.html#autotoc_md17', 1, '']]],\n- ['my_20query_10', ['Is streaming right for my query?', ['../streams.html#autotoc_md25', 1, '']]]\n+ ['metadata_9', ['Results with metadata', ['../accessing-results.html#autotoc_md2', 1, '']]],\n+ ['my_20query_10', ['Is streaming right for my query?', ['../streams.html#autotoc_md27', 1, '']]]\n ];\n"}]}, {"source1": "./usr/share/doc/libpqxx-doc/doxygen-html/search/all_c.js", "source2": "./usr/share/doc/libpqxx-doc/doxygen-html/search/all_c.js", "unified_diff": null, "details": [{"source1": "js-beautify {}", "source2": "js-beautify {}", "unified_diff": "@@ -2,15 +2,15 @@\n ['name_0', ['name', ['../classpqxx_1_1cursor__base.html#a580405381178880d7804180c0c396fe5', 1, 'pqxx::cursor_base::name()'],\n ['../classpqxx_1_1stateless__cursor.html#a0be6e4435c96296ab1f91f4769235dae', 1, 'pqxx::stateless_cursor::name()'],\n ['../classpqxx_1_1field.html#accb1b29590adaf1c265279fc410b2e59', 1, 'pqxx::field::name()'],\n ['../group__transactions.html#ae59455e1e8da50f0cb5901c1f72ff66e', 1, 'pqxx::transaction_base::name()'],\n ['../classpqxx_1_1transaction__focus.html#a4ccffff2688e9e7757acc385be1d781c', 1, 'pqxx::transaction_focus::name()']\n ]],\n ['name_5fencoding_1', ['name_encoding', ['../namespacepqxx_1_1internal.html#a51e0c4e1a45c85a3b625dc3d764684f5', 1, 'pqxx::internal']]],\n- ['new_20type_2', ['Supporting a new type', ['../datatypes.html#autotoc_md2', 1, '']]],\n+ ['new_20type_2', ['Supporting a new type', ['../datatypes.html#autotoc_md7', 1, '']]],\n ['next_3', ['next', ['../classpqxx_1_1cursor__base.html#a8084649c4f6be54a3c688908c1b9edf9', 1, 'pqxx::cursor_base::next()'],\n ['../classpqxx_1_1placeholders.html#aef09cd2fcb858917f33752a85e063bde', 1, 'pqxx::placeholders::next()']\n ]],\n ['no_5fbound_4', ['no_bound', ['../structpqxx_1_1no__bound.html', 1, 'pqxx']]],\n ['no_5fnull_5', ['no_null', ['../structpqxx_1_1no__null.html', 1, 'pqxx']]],\n ['no_5fnull_3c_20binarystring_20_3e_6', ['no_null< binarystring >', ['../structpqxx_1_1no__null.html', 1, 'pqxx']]],\n ['no_5fnull_3c_20bytes_20_3e_7', ['no_null< bytes >', ['../structpqxx_1_1no__null.html', 1, 'pqxx']]],\n@@ -26,28 +26,28 @@\n ['no_5fnull_3c_20t_20_3e_17', ['no_null< T >', ['../structpqxx_1_1no__null.html', 1, 'pqxx']]],\n ['no_5fnull_3c_20zview_20_3e_18', ['no_null< zview >', ['../structpqxx_1_1no__null.html', 1, 'pqxx']]],\n ['nontransaction_19', ['nontransaction', ['../group__transactions.html#classpqxx_1_1nontransaction', 1, 'pqxx::nontransaction'],\n ['../group__transactions.html#a556124900e411a1902b01bc4bb04fb0a', 1, 'pqxx::nontransaction::nontransaction()']\n ]],\n ['not_5feof_20', ['not_eof', ['../structpqxx_1_1byte__char__traits.html#a7c89d44e821a11f8336b70dc7891d7ac', 1, 'pqxx::byte_char_traits']]],\n ['not_5fnull_5fviolation_21', ['not_null_violation', ['../group__exception.html#structpqxx_1_1not__null__violation', 1, 'pqxx']]],\n- ['note_22', ['Performance note', ['../prepared.html#autotoc_md21', 1, '']]],\n+ ['note_22', ['Performance note', ['../prepared.html#autotoc_md23', 1, '']]],\n ['nothing_23', ['nothing', ['../namespacepqxx.html#adabe80e8385e85d663acc6e44332070da867e5843857acbeb150fcaf025825a6f', 1, 'pqxx']]],\n ['notification_5freceiver_24', ['notification_receiver', ['../classpqxx_1_1notification__receiver.html#ab28ec64678ada8dcc4868317b895e3c0', 1, 'pqxx::notification_receiver::notification_receiver()'],\n ['../classpqxx_1_1notification__receiver.html', 1, 'pqxx::notification_receiver'],\n ['../classpqxx_1_1notification__receiver.html#a44ffe1ed8ec8020f4106ef8427e09d17', 1, 'pqxx::notification_receiver::notification_receiver()']\n ]],\n ['notifications_20and_20receivers_25', ['Notifications and Receivers', ['../group__notification.html', 1, '']]],\n ['null_26', ['null', ['../structpqxx_1_1nullness_3_01std_1_1variant_3_01T_8_8_8_01_4_01_4.html#a62b23c197cb393e146d9720ed4aed004', 1, 'pqxx::nullness< std::variant< T... > >::null()'],\n ['../structpqxx_1_1nullness.html#a475f5e490aabd4934aa63a621ecfd0ab', 1, 'pqxx::nullness::null()']\n ]],\n- ['null_20values_27', ['Interlude: null values', ['../streams.html#autotoc_md23', 1, '']]],\n+ ['null_20values_27', ['Interlude: null values', ['../streams.html#autotoc_md25', 1, '']]],\n ['null_5fvalue_28', ['null_value', ['../classpqxx_1_1array__parser.html#a039577d83d313a6daf35fd7c273e189ea9e374dadbd88854fd5b2631a6b83a295', 1, 'pqxx::array_parser']]],\n ['nullness_29', ['nullness', ['../structpqxx_1_1nullness.html', 1, 'pqxx']]],\n- ['nullness_20tt_30', ['Specialise <tt>nullness</tt>', ['../datatypes.html#autotoc_md5', 1, '']]],\n+ ['nullness_20tt_30', ['Specialise <tt>nullness</tt>', ['../datatypes.html#autotoc_md10', 1, '']]],\n ['nullness_3c_20binarystring_20_3e_31', ['nullness< binarystring >', ['../structpqxx_1_1nullness_3_01binarystring_01_4.html', 1, 'pqxx']]],\n ['nullness_3c_20bytes_20_3e_32', ['nullness< bytes >', ['../structpqxx_1_1nullness_3_01bytes_01_4.html', 1, 'pqxx']]],\n ['nullness_3c_20bytes_5fview_20_3e_33', ['nullness< bytes_view >', ['../structpqxx_1_1nullness_3_01bytes__view_01_4.html', 1, 'pqxx']]],\n ['nullness_3c_20char_20_2a_20_3e_34', ['nullness< char * >', ['../structpqxx_1_1nullness_3_01char_01_5_01_4.html', 1, 'pqxx']]],\n ['nullness_3c_20char_20const_20_2a_20_3e_35', ['nullness< char const * >', ['../structpqxx_1_1nullness_3_01char_01const_01_5_01_4.html', 1, 'pqxx']]],\n ['nullness_3c_20char_5bn_5d_3e_36', ['nullness< char[N]>', ['../structpqxx_1_1nullness_3_01char_0fN_0e_4.html', 1, 'pqxx']]],\n ['nullness_3c_20enum_2c_20std_3a_3aenable_5fif_5ft_3c_20std_3a_3ais_5fenum_5fv_3c_20enum_20_3e_20_3e_20_3e_37', ['nullness< ENUM, std::enable_if_t< std::is_enum_v< ENUM > > >', ['../structpqxx_1_1nullness_3_01ENUM_00_01std_1_1enable__if__t_3_01std_1_1is__enum__v_3_01ENUM_01_4_01_4_01_4.html', 1, 'pqxx']]],\n"}]}, {"source1": "./usr/share/doc/libpqxx-doc/doxygen-html/search/all_d.js", "source2": "./usr/share/doc/libpqxx-doc/doxygen-html/search/all_d.js", "unified_diff": null, "details": [{"source1": "js-beautify {}", "source2": "js-beautify {}", "unified_diff": "@@ -1,61 +1,61 @@\n var searchData = [\n- ['of_20data_0', ['Querying rows of data', ['../accessing-results.html#autotoc_md15', 1, '']]],\n+ ['of_20data_0', ['Querying rows of data', ['../accessing-results.html#autotoc_md0', 1, '']]],\n ['oid_1', ['oid', ['../namespacepqxx.html#ac9eb697318d27a5b023609e0160f1ade', 1, 'pqxx']]],\n ['oid_5fnone_2', ['oid_none', ['../namespacepqxx.html#aea8d8e21558dad5b03ac2f73910c93e1', 1, 'pqxx']]],\n ['oops_5fforbidden_5fconversion_3', ['oops_forbidden_conversion', ['../namespacepqxx.html#a807bfd03b5fb6cf1bbcd9d728f2dd4e0', 1, 'pqxx']]],\n ['open_5fr_4', ['open_r', ['../classpqxx_1_1blob.html#a0d4a50c0d8862f98ce728647987f6d51', 1, 'pqxx::blob']]],\n ['openmode_5', ['openmode', ['../classpqxx_1_1largeobjectaccess.html#a6b09598014eca3c4c4b8a0c1495185d3', 1, 'pqxx::largeobjectaccess']]],\n ['openssl_6', ['openssl', ['../namespacepqxx.html#adabe80e8385e85d663acc6e44332070da5d4554eccdc33a1da0f98e9eadee475b', 1, 'pqxx']]],\n ['operator_20bool_7', ['operator bool', ['../classpqxx_1_1stream__to.html#a46f5520a97cc4eecbc75e4fbbfc2e9e3', 1, 'pqxx::stream_to::operator bool()'],\n ['../classpqxx_1_1stream__from.html#a049c94dcc710918f0b5c7416b638aefa', 1, 'pqxx::stream_from::operator bool()']\n ]],\n ['operator_20range_3c_20dest_20_3e_8', ['operator range< DEST >', ['../classpqxx_1_1range.html#a9fd52675604651358ccc941bcf0c63fc', 1, 'pqxx::range']]],\n ['operator_21_9', ['operator!', ['../classpqxx_1_1stream__from.html#afdb9ffc4e6baa48bd6f2169cba7020d0', 1, 'pqxx::stream_from::operator!()'],\n ['../classpqxx_1_1stream__to.html#a12b525e57012cb5c2ba3481c959af914', 1, 'pqxx::stream_to::operator!()']\n ]],\n- ['operator_21_3d_10', ['operator!=', ['../classpqxx_1_1result.html#a4e047a3746e1e9f37efd0cedfc4a891b', 1, 'pqxx::result::operator!=()'],\n+ ['operator_21_3d_10', ['operator!=', ['../classpqxx_1_1largeobject.html#ad326bef1920744c3d450406f43dbc6b5', 1, 'pqxx::largeobject::operator!=()'],\n+ ['../classpqxx_1_1result.html#a4e047a3746e1e9f37efd0cedfc4a891b', 1, 'pqxx::result::operator!=()'],\n ['../classpqxx_1_1largeobjectaccess.html#ad326bef1920744c3d450406f43dbc6b5', 1, 'pqxx::largeobjectaccess::operator!=()'],\n ['../classpqxx_1_1internal_1_1stream__query__input__iterator.html#a207326fe0c7f51eccfa61be42d20188e', 1, 'pqxx::internal::stream_query_input_iterator::operator!=()'],\n ['../classpqxx_1_1internal_1_1stream__from__input__iterator.html#a30bf5388b274d3e8b27568a03f061762', 1, 'pqxx::internal::stream_from_input_iterator::operator!=()'],\n- ['../classpqxx_1_1field.html#a768ec9ffee118b5eb5a4c371afbacc5a', 1, 'pqxx::field::operator!=()'],\n- ['../classpqxx_1_1largeobject.html#ad326bef1920744c3d450406f43dbc6b5', 1, 'pqxx::largeobject::operator!=()']\n+ ['../classpqxx_1_1field.html#a768ec9ffee118b5eb5a4c371afbacc5a', 1, 'pqxx::field::operator!=()']\n ]],\n ['operator_22_22_5fzv_11', ['operator""_zv', ['../namespacepqxx.html#ab7084d1a68918eb90a59bb75cc1b78e6', 1, 'pqxx']]],\n ['operator_26_12', ['operator&', ['../classpqxx_1_1range.html#a2e0b08f5564191f8c0bdc9fbdb273d62', 1, 'pqxx::range']]],\n- ['operator_28_29_13', ['operator()', ['../classpqxx_1_1notification__receiver.html#abb6fd7dd38319fc35e354e23d7f337d0', 1, 'pqxx::notification_receiver::operator()()'],\n+ ['operator_28_29_13', ['operator()', ['../classpqxx_1_1errorhandler.html#a8404c336eaefab488ab326cbcb704993', 1, 'pqxx::errorhandler::operator()()'],\n ['../classpqxx_1_1quiet__errorhandler.html#a051f8a9a1019974daffc47c75addc46e', 1, 'pqxx::quiet_errorhandler::operator()()'],\n- ['../classpqxx_1_1errorhandler.html#a8404c336eaefab488ab326cbcb704993', 1, 'pqxx::errorhandler::operator()()']\n+ ['../classpqxx_1_1notification__receiver.html#abb6fd7dd38319fc35e354e23d7f337d0', 1, 'pqxx::notification_receiver::operator()()']\n ]],\n- ['operator_2a_14', ['operator*', ['../classpqxx_1_1internal_1_1stream__query__input__iterator.html#a9c57abc31dc9b272b395c6b2c216ad7a', 1, 'pqxx::internal::stream_query_input_iterator::operator*()'],\n- ['../classpqxx_1_1const__reverse__result__iterator.html#ae87d3164c4be3ececdde872582aacc61', 1, 'pqxx::const_reverse_result_iterator::operator*()'],\n- ['../classpqxx_1_1const__result__iterator.html#ae87d3164c4be3ececdde872582aacc61', 1, 'pqxx::const_result_iterator::operator*()']\n+ ['operator_2a_14', ['operator*', ['../classpqxx_1_1const__result__iterator.html#ae87d3164c4be3ececdde872582aacc61', 1, 'pqxx::const_result_iterator::operator*()'],\n+ ['../classpqxx_1_1internal_1_1stream__query__input__iterator.html#a9c57abc31dc9b272b395c6b2c216ad7a', 1, 'pqxx::internal::stream_query_input_iterator::operator*()'],\n+ ['../classpqxx_1_1const__reverse__result__iterator.html#ae87d3164c4be3ececdde872582aacc61', 1, 'pqxx::const_reverse_result_iterator::operator*()']\n ]],\n- ['operator_2b_2b_15', ['operator++', ['../classpqxx_1_1internal_1_1stream__query__input__iterator.html#a0c261e07d71c54c3df1873bd7682f141', 1, 'pqxx::internal::stream_query_input_iterator::operator++() &'],\n- ['../classpqxx_1_1internal_1_1stream__query__input__iterator.html#abc1cf24fa7ceff09abe835eeeffdb4e2', 1, 'pqxx::internal::stream_query_input_iterator::operator++(int)']\n+ ['operator_2b_2b_15', ['operator++', ['../classpqxx_1_1internal_1_1stream__query__input__iterator.html#abc1cf24fa7ceff09abe835eeeffdb4e2', 1, 'pqxx::internal::stream_query_input_iterator::operator++(int)'],\n+ ['../classpqxx_1_1internal_1_1stream__query__input__iterator.html#a0c261e07d71c54c3df1873bd7682f141', 1, 'pqxx::internal::stream_query_input_iterator::operator++() &']\n ]],\n- ['operator_2d_16', ['operator-', ['../classpqxx_1_1const__reverse__result__iterator.html#a4ce5bf0280d6dce47212969b614c483a', 1, 'pqxx::const_reverse_result_iterator::operator-(difference_type) const'],\n- ['../classpqxx_1_1const__reverse__result__iterator.html#ab3a7ba13b137fbd1b12748b788c7b3d7', 1, 'pqxx::const_reverse_result_iterator::operator-(const_result_iterator const &) const']\n+ ['operator_2d_16', ['operator-', ['../classpqxx_1_1const__reverse__result__iterator.html#ab3a7ba13b137fbd1b12748b788c7b3d7', 1, 'pqxx::const_reverse_result_iterator::operator-(const_result_iterator const &) const'],\n+ ['../classpqxx_1_1const__reverse__result__iterator.html#a4ce5bf0280d6dce47212969b614c483a', 1, 'pqxx::const_reverse_result_iterator::operator-(difference_type) const']\n ]],\n ['operator_2d_3e_17', ['operator->', ['../classpqxx_1_1const__result__iterator.html#a858d47eebdb1b6055a9f75c32d19d4d2', 1, 'pqxx::const_result_iterator']]],\n ['operator_3c_18', ['operator<', ['../classpqxx_1_1largeobjectaccess.html#a90efd57a423686ee47c4dbb6b5c3b187', 1, 'pqxx::largeobjectaccess::operator<()'],\n ['../classpqxx_1_1largeobject.html#a90efd57a423686ee47c4dbb6b5c3b187', 1, 'pqxx::largeobject::operator<()']\n ]],\n- ['operator_3c_3c_19', ['operator<<', ['../namespacepqxx.html#a2dbd9e7b5cda93feff6cde1629e73ff2', 1, 'pqxx::operator<<()'],\n+ ['operator_3c_3c_19', ['operator<<', ['../classpqxx_1_1stream__to.html#ac25d66567d17ddd648abe02c4583d981', 1, 'pqxx::stream_to::operator<<(Row const &row)'],\n ['../classpqxx_1_1stream__to.html#aa42e3e2ce5942b5d106356fe196a00a0', 1, 'pqxx::stream_to::operator<<(stream_from &)'],\n- ['../classpqxx_1_1stream__to.html#ac25d66567d17ddd648abe02c4583d981', 1, 'pqxx::stream_to::operator<<(Row const &row)']\n+ ['../namespacepqxx.html#a2dbd9e7b5cda93feff6cde1629e73ff2', 1, 'pqxx::operator<<()']\n ]],\n- ['operator_3c_3d_20', ['operator<=', ['../classpqxx_1_1largeobjectaccess.html#a4a7766ea88d7e0aa68ed78e0f4bb8cab', 1, 'pqxx::largeobjectaccess::operator<=()'],\n- ['../classpqxx_1_1largeobject.html#a4a7766ea88d7e0aa68ed78e0f4bb8cab', 1, 'pqxx::largeobject::operator<=()']\n+ ['operator_3c_3d_20', ['operator<=', ['../classpqxx_1_1largeobject.html#a4a7766ea88d7e0aa68ed78e0f4bb8cab', 1, 'pqxx::largeobject::operator<=()'],\n+ ['../classpqxx_1_1largeobjectaccess.html#a4a7766ea88d7e0aa68ed78e0f4bb8cab', 1, 'pqxx::largeobjectaccess::operator<=()']\n ]],\n- ['operator_3d_21', ['operator=', ['../classpqxx_1_1result.html#ada6d82fe35f72cb45623fba4f8066279', 1, 'pqxx::result::operator=(result const &rhs) noexcept=default'],\n+ ['operator_3d_21', ['operator=', ['../classpqxx_1_1blob.html#a95c07a00765b77f9835ca869fe43287a', 1, 'pqxx::blob::operator=()'],\n ['../classpqxx_1_1result.html#a399cde6713d4b415e229d67bfba4eccd', 1, 'pqxx::result::operator=(result &&rhs) noexcept=default'],\n+ ['../classpqxx_1_1result.html#ada6d82fe35f72cb45623fba4f8066279', 1, 'pqxx::result::operator=(result const &rhs) noexcept=default'],\n ['../classpqxx_1_1notification__receiver.html#afcf701e264edd9a14513765f542b446d', 1, 'pqxx::notification_receiver::operator=()'],\n- ['../classpqxx_1_1connection.html#a73e86c75f2d23788c83ce931b74ec108', 1, 'pqxx::connection::operator=()'],\n- ['../classpqxx_1_1blob.html#a95c07a00765b77f9835ca869fe43287a', 1, 'pqxx::blob::operator=()']\n+ ['../classpqxx_1_1connection.html#a73e86c75f2d23788c83ce931b74ec108', 1, 'pqxx::connection::operator=()']\n ]],\n ['operator_3d_3d_22', ['operator==', ['../classpqxx_1_1internal_1_1stream__query__input__iterator.html#a27cb5d24969b0b2102987fb8f3ec3b62', 1, 'pqxx::internal::stream_query_input_iterator::operator==()'],\n ['../classpqxx_1_1field.html#a0724bd55b4cccf26db6960ef27851fe8', 1, 'pqxx::field::operator==()'],\n ['../classpqxx_1_1internal_1_1result__iter.html#ace9b554271a8b57ab7230da00ef319ea', 1, 'pqxx::internal::result_iter::operator==()'],\n ['../classpqxx_1_1internal_1_1stream__from__input__iterator.html#a23573499bd91d017c08dd9438bc49ad4', 1, 'pqxx::internal::stream_from_input_iterator::operator==()'],\n ['../classpqxx_1_1largeobjectaccess.html#a00f0df981995f7ca9991ba7162bdaa16', 1, 'pqxx::largeobjectaccess::operator==()'],\n ['../classpqxx_1_1result.html#a47fef290e0e6db165a4d73b52874fd1c', 1, 'pqxx::result::operator==()'],\n@@ -71,13 +71,13 @@\n ['../classpqxx_1_1stream__from.html#a3694734ee04887d48fa799ab717787dd', 1, 'pqxx::stream_from::operator>>(Tuple &)'],\n ['../classpqxx_1_1stream__from.html#a0ea468c0d02f2a2c9c2c7ff41dbece3c', 1, 'pqxx::stream_from::operator>>(std::variant< Vs... > &)=delete']\n ]],\n ['operator_5b_5d_26', ['operator[]', ['../classpqxx_1_1result.html#a501bfb79335ea4c51bc55f9c0aa6c75f', 1, 'pqxx::result::operator[]()'],\n ['../classpqxx_1_1row.html#aee26781d8c0000bdc1d80c1624b17c81', 1, 'pqxx::row::operator[]()'],\n ['../classpqxx_1_1array.html#a36d27b1f7e366a07944115a382aa4087', 1, 'pqxx::array::operator[]()']\n ]],\n- ['optional_3a_20specialise_20tt_20is_5funquoted_5fsafe_20tt_27', ['Optional: Specialise <tt>is_unquoted_safe</tt>', ['../datatypes.html#autotoc_md11', 1, '']]],\n- ['optional_3a_20specialise_20tt_20param_5fformat_20tt_28', ['Optional: Specialise <tt>param_format</tt>', ['../datatypes.html#autotoc_md12', 1, '']]],\n+ ['optional_3a_20specialise_20tt_20is_5funquoted_5fsafe_20tt_27', ['Optional: Specialise <tt>is_unquoted_safe</tt>', ['../datatypes.html#autotoc_md16', 1, '']]],\n+ ['optional_3a_20specialise_20tt_20param_5fformat_20tt_28', ['Optional: Specialise <tt>param_format</tt>', ['../datatypes.html#autotoc_md17', 1, '']]],\n ['out_5fof_5fmemory_29', ['out_of_memory', ['../group__exception.html#structpqxx_1_1out__of__memory', 1, 'pqxx']]],\n ['owned_30', ['owned', ['../classpqxx_1_1cursor__base.html#ac06b19ea7f07f4e251560f49bee2e490a3ace6a7a5ca4ec3b486f2f35fd2420b0', 1, 'pqxx::cursor_base']]],\n ['ownership_5fpolicy_31', ['ownership_policy', ['../classpqxx_1_1cursor__base.html#ac06b19ea7f07f4e251560f49bee2e490', 1, 'pqxx::cursor_base']]]\n ];\n"}]}, {"source1": "./usr/share/doc/libpqxx-doc/doxygen-html/search/all_e.js", "source2": "./usr/share/doc/libpqxx-doc/doxygen-html/search/all_e.js", "unified_diff": null, "details": [{"source1": "js-beautify {}", "source2": "js-beautify {}", "unified_diff": "@@ -1,62 +1,62 @@\n var searchData = [\n ['param_5fformat_0', ['param_format', ['../namespacepqxx.html#a9a3f3a97fd46497a008aaca323cc1958', 1, 'pqxx::param_format(std::vector< T, Args... > const &)'],\n ['../namespacepqxx.html#a194db2bb59425a2ff10187d2e81189d3', 1, 'pqxx::param_format(std::vector< std::byte, Args... > const &)'],\n ['../namespacepqxx.html#a5a183a730292cabcf9e64fdc6eb0faa5', 1, 'pqxx::param_format(std::array< T, args... > const &)'],\n ['../namespacepqxx.html#a0eaf71a6f4744e3d401d2f179d477e4a', 1, 'pqxx::param_format(std::array< std::byte, args... > const &)']\n ]],\n- ['param_5fformat_20tt_1', ['Optional: Specialise <tt>param_format</tt>', ['../datatypes.html#autotoc_md12', 1, '']]],\n- ['parameter_20lists_2', ['Dynamic parameter lists', ['../parameters.html#autotoc_md27', 1, '']]],\n- ['parameters_3', ['parameters', ['../prepared.html#autotoc_md19', 1, 'Parameters'],\n+ ['param_5fformat_20tt_1', ['Optional: Specialise <tt>param_format</tt>', ['../datatypes.html#autotoc_md17', 1, '']]],\n+ ['parameter_20lists_2', ['Dynamic parameter lists', ['../parameters.html#autotoc_md18', 1, '']]],\n+ ['parameters_3', ['parameters', ['../prepared.html#autotoc_md21', 1, 'Parameters'],\n ['../parameters.html', 1, 'Statement parameters']\n ]],\n ['params_4', ['params', ['../classpqxx_1_1params.html', 1, 'pqxx::params'],\n ['../classpqxx_1_1params.html#ad15fdabb428bc93cdb0a6c4354a9069c', 1, 'pqxx::params::params()']\n ]],\n- ['parse_5fcomposite_5', ['parse_composite', ['../namespacepqxx.html#ac634686eb086118eade113cd71c7d5a4', 1, 'pqxx::parse_composite(pqxx::internal::encoding_group enc, std::string_view text, T &...fields)'],\n- ['../namespacepqxx.html#a0cd702e0c9b6172bf07f0253b238506b', 1, 'pqxx::parse_composite(std::string_view text, T &...fields)']\n+ ['parse_5fcomposite_5', ['parse_composite', ['../namespacepqxx.html#a0cd702e0c9b6172bf07f0253b238506b', 1, 'pqxx::parse_composite(std::string_view text, T &...fields)'],\n+ ['../namespacepqxx.html#ac634686eb086118eade113cd71c7d5a4', 1, 'pqxx::parse_composite(pqxx::internal::encoding_group enc, std::string_view text, T &...fields)']\n ]],\n ['parse_5fcomposite_5ffield_6', ['parse_composite_field', ['../namespacepqxx_1_1internal.html#a1689cd1502106403a998bd0b2a283432', 1, 'pqxx::internal']]],\n ['parse_5fdouble_5fquoted_5fstring_7', ['parse_double_quoted_string', ['../namespacepqxx_1_1internal.html#ad24fb98e5aa3beaecd91d4631321fd4d', 1, 'pqxx::internal']]],\n ['parse_5fline_8', ['parse_line', ['../classpqxx_1_1internal_1_1stream__query.html#aad5061fd7b06c89a98e317ce6901ab58', 1, 'pqxx::internal::stream_query']]],\n ['parse_5funquoted_5fstring_9', ['parse_unquoted_string', ['../namespacepqxx_1_1internal.html#a538df0cc5f9ee6f61c061c72a71e3132', 1, 'pqxx::internal']]],\n ['perform_10', ['perform', ['../namespacepqxx.html#a9c2faadd143f7c48353eb23b2aa24134', 1, 'pqxx']]],\n ['performance_20features_11', ['Performance features', ['../performance.html', 1, '']]],\n- ['performance_20note_12', ['Performance note', ['../prepared.html#autotoc_md21', 1, '']]],\n- ['pipeline_13', ['pipeline', ['../classpqxx_1_1pipeline.html#a0c80a5e68052b2c35089e384e3c842ce', 1, 'pqxx::pipeline::pipeline(transaction_base &t)'],\n- ['../classpqxx_1_1pipeline.html#a92463b4b599f681a372016d5dbbe016d', 1, 'pqxx::pipeline::pipeline(transaction_base &t, std::string_view tname)'],\n- ['../classpqxx_1_1pipeline.html', 1, 'pqxx::pipeline']\n+ ['performance_20note_12', ['Performance note', ['../prepared.html#autotoc_md23', 1, '']]],\n+ ['pipeline_13', ['pipeline', ['../classpqxx_1_1pipeline.html', 1, 'pqxx::pipeline'],\n+ ['../classpqxx_1_1pipeline.html#a0c80a5e68052b2c35089e384e3c842ce', 1, 'pqxx::pipeline::pipeline(transaction_base &t)'],\n+ ['../classpqxx_1_1pipeline.html#a92463b4b599f681a372016d5dbbe016d', 1, 'pqxx::pipeline::pipeline(transaction_base &t, std::string_view tname)']\n ]],\n- ['placeholders_14', ['placeholders', ['../parameters.html#autotoc_md28', 1, 'Generating placeholders'],\n+ ['placeholders_14', ['placeholders', ['../parameters.html#autotoc_md19', 1, 'Generating placeholders'],\n ['../classpqxx_1_1placeholders.html', 1, 'pqxx::placeholders< COUNTER >']\n ]],\n ['plpgsql_5ferror_15', ['plpgsql_error', ['../group__exception.html#structpqxx_1_1plpgsql__error', 1, 'pqxx']]],\n ['plpgsql_5fno_5fdata_5ffound_16', ['plpgsql_no_data_found', ['../group__exception.html#structpqxx_1_1plpgsql__no__data__found', 1, 'pqxx']]],\n ['plpgsql_5fraise_17', ['plpgsql_raise', ['../group__exception.html#structpqxx_1_1plpgsql__raise', 1, 'pqxx']]],\n ['plpgsql_5ftoo_5fmany_5frows_18', ['plpgsql_too_many_rows', ['../group__exception.html#structpqxx_1_1plpgsql__too__many__rows', 1, 'pqxx']]],\n ['port_19', ['port', ['../classpqxx_1_1connection.html#aa517b7352ea7d8aed937281c295d1f8d', 1, 'pqxx::connection']]],\n ['pos_20', ['pos', ['../classpqxx_1_1internal_1_1sql__cursor.html#ac5c2280d1b3dde3922d1502235cfb01f', 1, 'pqxx::internal::sql_cursor']]],\n ['pqfreemem_21', ['pqfreemem', ['../namespacepqxx_1_1internal_1_1pq.html#a801c6ee404adc53ef147e3f4990551d0', 1, 'pqxx::internal::pq']]],\n ['pqxx_22', ['pqxx', ['../namespacepqxx.html', 1, '']]],\n ['pqxx_3a_3ainternal_23', ['internal', ['../namespacepqxx_1_1internal.html', 1, 'pqxx']]],\n ['pqxx_3a_3ainternal_3a_3apq_24', ['pq', ['../namespacepqxx_1_1internal_1_1pq.html', 1, 'pqxx::internal']]],\n ['pqxx_3a_3aprepare_25', ['prepare', ['../namespacepqxx_1_1prepare.html', 1, 'pqxx']]],\n ['prepare_26', ['prepare', ['../classpqxx_1_1connection.html#a140337eada7fe60e15d8b113b8599f0d', 1, 'pqxx::connection::prepare(char const definition[]) &'],\n- ['../classpqxx_1_1connection.html#ac6888103e47fc344e18d17878cdc2bc7', 1, 'pqxx::connection::prepare(char const name[], char const definition[]) &'],\n- ['../classpqxx_1_1connection.html#add8ab06057cfd57e509c1e4e1f26e944', 1, 'pqxx::connection::prepare(zview name, zview definition) &']\n+ ['../classpqxx_1_1connection.html#add8ab06057cfd57e509c1e4e1f26e944', 1, 'pqxx::connection::prepare(zview name, zview definition) &'],\n+ ['../classpqxx_1_1connection.html#ac6888103e47fc344e18d17878cdc2bc7', 1, 'pqxx::connection::prepare(char const name[], char const definition[]) &']\n ]],\n- ['prepared_20statement_27', ['A special prepared statement', ['../prepared.html#autotoc_md20', 1, '']]],\n+ ['prepared_20statement_27', ['A special prepared statement', ['../prepared.html#autotoc_md22', 1, '']]],\n ['prepared_20statements_28', ['Prepared statements', ['../prepared.html', 1, '']]],\n- ['preparing_20a_20statement_29', ['Preparing a statement', ['../prepared.html#autotoc_md18', 1, '']]],\n+ ['preparing_20a_20statement_29', ['Preparing a statement', ['../prepared.html#autotoc_md20', 1, '']]],\n ['prior_30', ['prior', ['../classpqxx_1_1cursor__base.html#a94899901ead639033a816cb4aa0fdcd4', 1, 'pqxx::cursor_base']]],\n ['process_31', ['process', ['../classpqxx_1_1connecting.html#a58084f41892e19eb2a603a95de4f7dd9', 1, 'pqxx::connecting']]],\n- ['process_5fnotice_32', ['process_notice', ['../classpqxx_1_1largeobject__streambuf.html#a9c9d53a14e148dec15f632fcb8f51366', 1, 'pqxx::largeobject_streambuf::process_notice()'],\n+ ['process_5fnotice_32', ['process_notice', ['../classpqxx_1_1connection.html#a279d1096372ef68e4c45ff51a8fe4f8a', 1, 'pqxx::connection::process_notice()'],\n+ ['../group__transactions.html#a319425c4f02975fa2d5807963ba3dc08', 1, 'pqxx::transaction_base::process_notice(zview msg) const'],\n+ ['../group__transactions.html#afecae4ed72e50dd2a14fbc9c7d365297', 1, 'pqxx::transaction_base::process_notice(char const msg[]) const'],\n+ ['../classpqxx_1_1largeobject__streambuf.html#a9c9d53a14e148dec15f632fcb8f51366', 1, 'pqxx::largeobject_streambuf::process_notice()'],\n ['../classpqxx_1_1largeobjectaccess.html#ad539bb1d48ea71532455f56bf118a3ff', 1, 'pqxx::largeobjectaccess::process_notice()'],\n- ['../group__transactions.html#afecae4ed72e50dd2a14fbc9c7d365297', 1, 'pqxx::transaction_base::process_notice()'],\n- ['../classpqxx_1_1connection.html#a4a24a7f9cf8d23f6c660ea1a0fbc3bf2', 1, 'pqxx::connection::process_notice()'],\n- ['../group__transactions.html#a319425c4f02975fa2d5807963ba3dc08', 1, 'pqxx::transaction_base::process_notice()'],\n- ['../classpqxx_1_1connection.html#a279d1096372ef68e4c45ff51a8fe4f8a', 1, 'pqxx::connection::process_notice()']\n+ ['../classpqxx_1_1connection.html#a4a24a7f9cf8d23f6c660ea1a0fbc3bf2', 1, 'pqxx::connection::process_notice()']\n ]],\n ['produce_33', ['produce', ['../classpqxx_1_1connecting.html#af0022f168b3c81c4f1a156a11a2b28ea', 1, 'pqxx::connecting']]],\n ['protocol_5fversion_34', ['protocol_version', ['../classpqxx_1_1connection.html#af0943810c21272c154befe173f2cd535', 1, 'pqxx::connection']]],\n ['protocol_5fviolation_35', ['protocol_violation', ['../group__exception.html#structpqxx_1_1protocol__violation', 1, 'pqxx']]]\n ];\n"}]}, {"source1": "./usr/share/doc/libpqxx-doc/doxygen-html/search/all_f.js", "source2": "./usr/share/doc/libpqxx-doc/doxygen-html/search/all_f.js", "unified_diff": null, "details": [{"source1": "js-beautify {}", "source2": "js-beautify {}", "unified_diff": "@@ -1,16 +1,16 @@\n var searchData = [\n- ['query_0', ['query', ['../streams.html#autotoc_md25', 1, 'Is streaming right for my query?'],\n+ ['query_0', ['query', ['../streams.html#autotoc_md27', 1, 'Is streaming right for my query?'],\n ['../group__exception.html#af011efdf2ba4459774e1e146a50c398d', 1, 'pqxx::sql_error::query()'],\n ['../group__transactions.html#ad765133f6133ea8de8255af804e8f81b', 1, 'pqxx::transaction_base::query(zview query, params const &parms)'],\n ['../group__transactions.html#a2b8b6bcc152f542e8cbe8e227db2ef62', 1, 'pqxx::transaction_base::query(zview query)'],\n ['../classpqxx_1_1result.html#a9d28f84628b9e8a8fecf7849f31bf1a0', 1, 'pqxx::result::query()'],\n ['../classpqxx_1_1stream__from.html#a062c20b73f6c9d019bfc35806c432ec0', 1, 'pqxx::stream_from::query()']\n ]],\n- ['query_20em_1', ['Streaming data <em>from a query</em>', ['../streams.html#autotoc_md24', 1, '']]],\n+ ['query_20em_1', ['Streaming data <em>from a query</em>', ['../streams.html#autotoc_md26', 1, '']]],\n ['query01_2', ['query01', ['../group__transactions.html#aa5929c0f9068f6569c246063a6428c99', 1, 'pqxx::transaction_base::query01(zview query)'],\n ['../group__transactions.html#a40ddd8e96d1dbd58b8e1355d24de5898', 1, 'pqxx::transaction_base::query01(zview query, params const &parms)']\n ]],\n ['query1_3', ['query1', ['../group__transactions.html#ad2e069e118bd8b5332e37fecf6648020', 1, 'pqxx::transaction_base::query1(zview query)'],\n ['../group__transactions.html#a551bbeaed97a9c3797257dc127e2c3ab', 1, 'pqxx::transaction_base::query1(zview query, params const &parms)']\n ]],\n ['query_5fid_4', ['query_id', ['../classpqxx_1_1pipeline.html#af21cf61fd1c13a6729f48a241cbeba37', 1, 'pqxx::pipeline']]],\n@@ -18,15 +18,15 @@\n ['../group__transactions.html#acfde62bb97de6c6112624acc7880b0e2', 1, 'pqxx::transaction_base::query_n(result::size_type rows, zview query, params const &parms)']\n ]],\n ['query_5fvalue_6', ['query_value', ['../group__transactions.html#a4a7e907112201a77641d775fcbe49153', 1, 'pqxx::transaction_base::query_value(zview query, std::string_view desc)'],\n ['../group__transactions.html#a7167da8b1ac61caa7e2caa0a9b0244c8', 1, 'pqxx::transaction_base::query_value(zview query)'],\n ['../group__transactions.html#a2f2f530ab83df00027ad7b09716b3bac', 1, 'pqxx::transaction_base::query_value(zview query, params const &parms)'],\n ['../group__transactions.html#a9088693e2337da4d75f8f624ac4fb9bc', 1, 'pqxx::transaction_base::query_value(zview query, std::string_view desc)=delete']\n ]],\n- ['querying_20rows_20of_20data_7', ['Querying rows of data', ['../accessing-results.html#autotoc_md15', 1, '']]],\n+ ['querying_20rows_20of_20data_7', ['Querying rows of data', ['../accessing-results.html#autotoc_md0', 1, '']]],\n ['quiet_5ferrorhandler_8', ['quiet_errorhandler', ['../classpqxx_1_1quiet__errorhandler.html', 1, 'pqxx::quiet_errorhandler'],\n ['../classpqxx_1_1quiet__errorhandler.html#a0cbea9b3c07e0bc115df209d34aa762d', 1, 'pqxx::quiet_errorhandler::quiet_errorhandler()']\n ]],\n ['quote_9', ['quote', ['../group__transactions.html#a6476b6d27bb27a6eb8767080cc3e6a49', 1, 'pqxx::transaction_base::quote()'],\n ['../classpqxx_1_1connection.html#aa8dd0b5e748b96a2c82152b8001bdc69', 1, 'pqxx::connection::quote(bytes_view bytes) const'],\n ['../classpqxx_1_1connection.html#ae871e3c436af0ed50e1373d9157e7340', 1, 'pqxx::connection::quote(T const &t) const']\n ]],\n"}]}, {"source1": "./usr/share/doc/libpqxx-doc/doxygen-html/streams.html", "source2": "./usr/share/doc/libpqxx-doc/doxygen-html/streams.html", "unified_diff": "@@ -92,48 +92,48 @@\n
\n
\n
Most of the time it's fine to retrieve data from the database using SELECT
queries, and store data using INSERT
. But for those cases where efficiency matters, there are two data streaming mechanisms to help you do this more efficiently: \"streaming queries,\" for reading query results from the database; and the pqxx::stream_to class, for writing data from the client into a table.
\n
These are less flexible than SQL queries. Also, depending on your needs, it may be a problem to lose your connection while you're in mid-stream, not knowing that the query may not complete. But, you get some scalability and memory efficiencies in return.
\n
Just like regular querying, these streaming mechanisms do data conversion for you. You deal with the C++ data types, and the database deals with the SQL data types.
\n-
\n+\n Interlude: null values
\n
So how do you deal with nulls? It depends on the C++ type you're using. Some types may have a built-in null value. For instance, if you have a char const *
value and you convert it to an SQL string, then converting a nullptr
will produce a NULL SQL value.
\n
But what do you do about C++ types which don't have a built-in null value, such as int
? The trick is to wrap it in std::optional
. The difference between int
and std::optional<int>
is that the former always has an int
value, and the latter doesn't have to.
\n
Actually it's not just std::optional
. You can do the same thing with std::unique_ptr
or std::shared_ptr
. A smart pointer is less efficient than std::optional
in most situations because they allocate their value on the heap, but sometimes that's what you want in order to save moving or copying large values around.
\n
This part is not generic though. It won't work with just any smart-pointer type, just the ones which are explicitly supported: shared_ptr
and unique_ptr
. If you really need to, you can build support for additional wrappers and smart pointers by copying the implementation patterns from the existing smart-pointer support.
\n-
\n+\n Streaming data <em>from a query</em>
\n
Use transaction_base::stream to read large amounts of data directly from the database. In terms of API it works just like transaction_base::query, but it's faster than the exec
and query
functions For larger data sets. Also, you won't need to keep your full result set in memory. That can really matter with larger data sets.
\n
Another performance advantage is that with a streaming query, you can start processing your data right after the first row of data comes in from the server. With exec()
or query()
you need to wait to receive all data, and only then can you begin processing. With streaming queries you can be processing data on the client side while the server is still sending you the rest.
\n
Not all kinds of queries will work in a stream. Internally the streams make use of PostgreSQL's COPY
command, so see the PostgreSQL documentation for COPY
for the exact limitations. Basic SELECT
and UPDATE ... RETURNING
queries will just work, but fancier constructs may not.
\n
As you read a row, the stream converts its fields to a tuple type containing the value types you ask for:
\n
for (auto [name, score] :
\n
tx.stream<std::string_view, int>("SELECT name, points FROM score")
\n
)
\n
process(name, score);
\n
On each iteration, the stream gives you a std::tuple
of the column types you specify. It converts the row's fields (which internally arrive at the client in text format) to your chosen types.
\n
The auto [name, score]
in the example is a structured binding which unpacks the tuple's fields into separate variables. If you prefer, you can choose to receive the tuple instead: for (std::tuple<int, std::string_view> :
.
\n-
\n+\n Is streaming right for my query?
\n
Here are the things you need to be aware of when deciding whether to stream a query, or just execute it normally.
\n
First, when you stream a query, there is no metadata describing how many rows it returned, what the columns are called, and so on. With a regular query you get a result object which contains this metadata as well as the data itself. If you absolutely need this metadata for a particular query, then that means you can't stream the query.
\n
Second, under the bonnet, streaming from a query uses a PostgreSQL-specific SQL command COPY (...) TO STDOUT
. There are some limitations on what kinds of queries this command can handle. These limitations may change over time, so I won't describe them here. Instead, see PostgreSQL's COPY documentation for the details. (Look for the TO
variant, with a query as the data source.)
\n
Third: when you stream a query, you start receiving and processing data before you even know whether you will receive all of the data. If you lose your connection to the database halfway through, you will have processed half your data, unaware that the query may never execute to completion. If this is a problem for your application, don't stream that query!
\n
The fourth and final factor is performance. If you're interested in streaming, obviously you care about this one.
\n
I can't tell you a priori whether streaming will make your query faster. It depends on how many rows you're retrieving, how much data there is in those rows, the speed of your network connection to the database, your client encoding, how much processing you do per row, and the details of the client-side system: hardware speed, CPU load, and available memory.
\n
Ultimately, no amount of theory beats real-world measurement for your specific situation so... if it really matters, measure. (And as per Knuth's Law: if it doesn't really matter, don't optimise.)
\n
That said, here are a few data points from some toy benchmarks:
\n
If your query returns e.g. a hundred small rows, it's not likely to make up a significant portion of your application's run time. Streaming is likely to be slower than regular querying, but most likely the difference just won't amtter.
\n
If your query returns a thousand small rows, streaming is probably still going to be a bit slower than regular querying, though \"your mileage may vary.\"
\n
If you're querying ten thousand small rows, however, it becomes more likely that streaming will speed it up. The advantage increases as the number of rows increases.
\n
That's for small rows, based on a test where each row consisted of just one integer number. If your query returns larger rows, with more columns, I find that streaming seems to become more attractive. In a simple test with 4 columns (two integers and two strings), streaming even just a thousand rows was considerably faster than a regular query.
\n
If your network connection to the database is slow, however, that may make streaming a bit less effcient. There is a bit more communication back and forth between the client and the database to set up a stream. This overhead takes a more or less constant amount of time, so for larger data sets it will tend to become insignificant compared to the other performance costs.
\n-
\n+\n Streaming data <em>into a table</em>
\n
Use stream_to
to write data directly to a database table. This saves you having to perform an INSERT
for every row, and so it can be significantly faster if you want to insert more than just one or two rows at a time.
\n
As with stream_from
, you can specify the table and the columns, and not much else. You insert tuple-like objects of your choice:
\n
\n
tx,
\n
"score",
\n
std::vector<std::string>{"name", "points"}};
\n"}]}]}]}]}