autodoc.git / modref.xml

version» Context lines:

autodoc.git/modref.xml:1:   <?xml version='1.0' encoding='utf-8'?> - <manual time-stamp='2017-03-04' version='Pike v8.1.9'> + <manual time-stamp='2017-03-09' version='Pike v8.1.9'>    <dir name='./ignored'>    <file name='./ignored/ignored'>    <chapter number='1' title='ignored'>    <autodoc>   <namespace name=''>   <doc><text><p>Symbols implicitly inherited from the virtual base class.</p>   <p> These symbols exist mainly to simplify implementation of    the corresponding lfuns.</p>   </text><group><seealso/><text><p><ref resolved='lfun::'>lfun::</ref></p>   </text></group></doc>
autodoc.git/modref.xml:1891:   <variable name='rsa'><type><object resolved='7.8::Crypto.RSA'>Crypto.RSA</object></type></variable>   </docgroup>   <docgroup homogen-name='set_cipher_suite' homogen-type='method'><doc><text><p>Sets the proper authentication method and cipher specification    for the given cipher <ref resolved='7.8::SSL.session.set_cipher_suite.suite'>suite</ref> and <ref>verison</ref>.</p>   </text></doc>   <method name='set_cipher_suite'>   <arguments><argument name='suite'><type><int/></type></argument><argument name='version'><type><or><object resolved='7.8::SSL.Constants.ProtocolVersion'>ProtocolVersion</object><int/></or></type></argument></arguments>   <returntype><void/></returntype>   </method>   </docgroup> - <docgroup homogen-name='set_compression_method' homogen-type='method'><doc><text><p>Sets the compression method. Currently only <ref resolved='predef::SSL.Constants.CompressionType.COMPRESSION_null'>COMPRESSION_null</ref> is + <docgroup homogen-name='set_compression_method' homogen-type='method'><doc><text><p>Sets the compression method. Currently only <ref resolved='7.8::SSL.Constants.CompressionType.COMPRESSION_null'>COMPRESSION_null</ref> is    supported.</p>   </text></doc>   <method name='set_compression_method'>   <arguments><argument name='compr'><type><int/></type></argument></arguments>   <returntype><void/></returntype>   </method>   </docgroup>   </class>   <class name='sslfile'>   <doc><text><p>Interface similar to <ref resolved='7.8::Stdio.File'>Stdio.File</ref>.</p>
autodoc.git/modref.xml:4131:   </text><group><param name='min_keylength'/><text><p>Minimum acceptable key length in bits.</p>   </text></group><group><seealso/><text><p><ref resolved='8.0::SSL.Context.dhe_dss_mode'>dhe_dss_mode()</ref>, <ref resolved='predef::SSL.Context.filter_weak_suites'>filter_weak_suites()</ref></p>   </text></group><group><deprecated><name><ref resolved='predef::SSL.Context.get_suites'>get_suites</ref></name></deprecated></group></doc>   <method name='rsa_mode'>   <arguments><argument name='min_keylength'><type><or><int><min>0</min><max/></int><void/></or></type></argument></arguments>   <returntype><void/></returntype>   </method>   </docgroup>   </class>   </module> + <module name='Sql'> + <class name='Sql'> + <doc><text><p>This class encapsulates a connection to an SQL server. It is a +  generic interface on top of the DB server specific +  implementations. That doesn't mean that there aren't plenty of +  server specific characteristics that still shine through, though.</p> + <p> This class also serves as an interface guideline for the DB server +  specific connection classes.</p> + <section title='Untyped and typed mode'><text><p>The query results are returned in different ways depending on the +  query functions used: The <tt>..typed_query</tt> functions select +  typed mode, while the other query functions uses the older untyped +  mode.</p> + <p> In untyped mode, all values except SQL NULL are returned as +  strings in their display representation, and SQL NULL is returned +  as zero.</p> + <p> In typed mode, values are returned in pike native form where it +  works well. That means at least that SQL integer fields are +  returned as pike integers, floats as floats, SQL NULL as +  <ref resolved='predef::Val.null'>Val.null</ref>, and of course strings still as strings. The +  representation of other SQL types depend on the capabilities of +  the server specific backends. It's also possible that floats in +  some cases are represented in other ways if too much precision is +  lost in the conversion to pike floats.</p> + </text></section> + </text><group><note/><text><p>For historical reasons, there may be server specific backends that +  operate differently from what is described here, e.g. some that +  return a bit of typed data in untyped mode.</p> + </text></group><group><note/><text><p>Typed operation was not supported at all prior to Pike 7.8.363, +  and may not be supported for all databases.</p> + </text></group></doc> + <docgroup homogen-name='big_query' homogen-type='method'><doc><text><p>Sends an SQL query synchronously to the underlying SQL-server and +  returns the results in untyped mode.</p> + <p> For the arguments, please see the <ref resolved='8.0::Sql.Sql.query'>query()</ref> function.</p> + <p> The result is returned as an <ref resolved='predef::Sql.sql_result'>Sql.sql_result</ref> object in untyped +  mode. This allows for having some more info about the result as +  well as processing the result in a streaming fashion, although the +  result itself wasn't obtained streamingly from the server. Returns +  <expr>0</expr> if the query didn't return any result (e.g. <tt>INSERT</tt> +  or similar).</p> + </text><group><note/><text><p>Despite the name, this function is not only useful for "big" +  queries. It typically has less overhead than <ref resolved='8.0::Sql.Sql.query'>query</ref> also for +  ones that return only a few rows.</p> + </text></group><group><seealso/><text><p><ref resolved='8.0::Sql.Sql.query'>query</ref>, <ref resolved='8.0::Sql.Sql.streaming_query'>streaming_query</ref></p> + </text></group></doc> + <method name='big_query'> + <arguments><argument name='q'><type><or><object resolved='8.0::Sql.Sql.big_query'/><string/></or></type></argument><argument name='extraargs'><type><varargs><mixed/></varargs></type></argument></arguments> + <returntype><or><int/><object resolved='8.0::Sql.Sql.big_query'/></or></returntype> + </method> + </docgroup> + <docgroup homogen-name='big_typed_query' homogen-type='method'><doc><text><p>Sends an SQL query synchronously to the underlying SQL-server and +  returns the results in typed mode.</p> + <p> For the arguments, please see the <ref resolved='8.0::Sql.Sql.query'>query()</ref> function.</p> + <p> The result is returned as an <ref resolved='predef::Sql.sql_result'>Sql.sql_result</ref> object in typed +  mode. This allows for having some more info about the result as +  well as processing the result in a streaming fashion, although the +  result itself wasn't obtained streamingly from the server. Returns +  <expr>0</expr> if the query didn't return any result (e.g. <tt>INSERT</tt> +  or similar).</p> + </text><group><note/><text><p>Typed mode is not supported by all sql databases. If not +  supported, an error is thrown.</p> + </text></group><group><note/><text><p>Despite the name, this function is not only useful for "big" +  queries. It typically has less overhead than <ref resolved='8.0::Sql.Sql.typed_query'>typed_query</ref> also +  for ones that return only a few rows.</p> + </text></group><group><seealso/><text><p><ref resolved='8.0::Sql.Sql.query'>query</ref>, <ref resolved='8.0::Sql.Sql.typed_query'>typed_query</ref>, <ref resolved='8.0::Sql.Sql.big_query'>big_query</ref>, <ref resolved='8.0::Sql.Sql.streaming_query'>streaming_query</ref></p> + </text></group></doc> + <method name='big_typed_query'> + <arguments><argument name='q'><type><or><object resolved='8.0::Sql.Sql.big_typed_query'/><string/></or></type></argument><argument name='extraargs'><type><varargs><mixed/></varargs></type></argument></arguments> + <returntype><or><int/><object resolved='8.0::Sql.Sql.big_typed_query'/></or></returntype> + </method> + </docgroup> + <docgroup homogen-name='case_convert' homogen-type='variable'><doc><text><p>Convert all field names in mappings to lower_case. +  Only relevant to databases which only implement big_query(), +  and use upper/mixed-case fieldnames (eg Oracle).</p> + <int><group><value>0</value><text><p>No (default)</p> + </text></group><group><value>1</value><text><p>Yes</p> + </text></group></int> + </text></doc> + <variable name='case_convert'><type><int><min>0</min><max>1</max></int></type></variable> + </docgroup> + <docgroup homogen-name='compile_query' homogen-type='method'><doc><text><p>Compiles the query (if possible). Otherwise returns it as is. +  The resulting object can be used multiple times to the query +  functions.</p> + </text><group><param name='q'/><text><p>SQL-query to compile.</p> + </text></group><group><seealso/><text><p><ref resolved='8.0::Sql.Sql.query'>query</ref>, <ref resolved='8.0::Sql.Sql.typed_query'>typed_query</ref>, <ref resolved='8.0::Sql.Sql.big_query'>big_query</ref>, <ref resolved='8.0::Sql.Sql.big_typed_query'>big_typed_query</ref>, +  <ref resolved='8.0::Sql.Sql.streaming_query'>streaming_query</ref>, <ref resolved='8.0::Sql.Sql.streaming_typed_query'>streaming_typed_query</ref></p> + </text></group></doc> + <method name='compile_query'> + <arguments><argument name='q'><type><string/></type></argument></arguments> + <returntype><or><string/><object resolved='8.0::Sql.Sql.compile_query'/></or></returntype> + </method> + </docgroup> + <docgroup homogen-name='create' homogen-type='method'><doc><text><p>Create a new generic SQL object.</p> + </text><group><param name='host'/><text><mixed><group><type><object resolved='8.0::Sql.Sql.create'/></type><text><p>Use this object to access the SQL-database.</p> + </text></group><group><type><string/></type><text><p>Connect to the server specified. The string should be on the +  format: +  <tt>dbtype://[user[:password]@]hostname[:port][/database]</tt> +  Use the <i>dbtype</i> protocol to connect to the database +  server on the specified host. If the hostname is <expr>""</expr> +  then the port can be a file name to access through a +  UNIX-domain socket or similar, e g +  <expr>"mysql://root@:/tmp/mysql.sock/"</expr>.</p> + <p> There is a special dbtype <expr>"mysqls"</expr> which works like +  <expr>"mysql"</expr> but sets the <tt>CLIENT_SSL</tt> option and +  loads the <tt>/etc/my.cnf</tt> config file to find the SSL +  parameters. The same function can be achieved using the +  <expr>"mysql"</expr> dbtype.</p> + </text></group><group><type><int><min>0</min><max>0</max></int></type><text><p>Access through a UNIX-domain socket or similar.</p> + </text></group></mixed> + </text></group><group><param name='db'/><text><p>Select this database.</p> + </text></group><group><param name='user'/><text><p>User name to access the database as.</p> + </text></group><group><param name='password'/><text><p>Password to access the database.</p> + </text></group><group><param name='options'/><text><p>Optional mapping of options. +  See the SQL-database documentation for the supported options. +  (eg <ref resolved='predef::Mysql.mysql.create'>Mysql.mysql()-&gt;create()</ref>).</p> + </text></group><group><note/><text><p>In versions of Pike prior to 7.2 it was possible to leave out the +  dbtype, but that has been deprecated, since it never worked well.</p> + </text></group><group><note/><text><p>Exactly which databases are supported by pike depends on the +  installed set of client libraries when pike was compiled.</p> + <p> The possible ones are</p> + <dl><group><item name='mysql'/><text><p>libmysql based mysql connection</p> + </text></group><group><item name='mysqls'/><text><p>libmysql based mysql connection, using SSL</p> + </text></group><group><item name='dsn'/><text><p><ref>ODBC</ref> based connection</p> + </text></group><group><item name='msql'/><text><p><ref resolved='predef::Msql'>Msql</ref></p> + </text></group><group><item name='odbc'/><text><p><ref>ODBC</ref> based connection</p> + </text></group><group><item name='oracle'/><text><p><ref resolved='predef::Oracle'>Oracle</ref> using oracle libraries</p> + </text></group><group><item name='pgsql'/><text><p>PostgreSQL direct network access. +  This module is independent of any external libraries.</p> + </text></group><group><item name='postgres'/><text><p>PostgreSQL libray access. Uses the <ref resolved='predef::Postgres'>Postgres</ref> module.</p> + </text></group><group><item name='rsql'/><text><p>Remote SQL api, requires a rsql server running on another host. +  This is an API that uses sockets to communicate with a remote pike +  running pike -x rsqld on another host.</p> + </text></group><group><item name='sqlite'/><text><p>In-process SQLite database, uses the <ref resolved='predef::SQLite'>SQLite</ref> module</p> + </text></group><group><item name='sybase'/><text><p>Uses the <ref>sybase</ref> module to access sybase</p> + </text></group><group><item name='tds'/><text><p>Sybase and Microsoft SQL direct network access using the TDS protocol. +  This module is independent of any external libraries.</p> + </text></group></dl> + </text></group><group><note/><text><p>Support for <ref resolved='8.0::Sql.Sql.create.options'>options</ref> was added in Pike 7.3.</p> + </text></group></doc> + <method name='create'> + <arguments><argument name='host'><type><string/></type></argument></arguments> + <returntype><void/></returntype> + </method> + <method name='create'> + <arguments><argument name='host'><type><string/></type></argument><argument name='db'><type><string/></type></argument></arguments> + <returntype><void/></returntype> + </method> + <method name='create'> + <arguments><argument name='host'><type><string/></type></argument><argument name='options'><type><mapping><indextype><string/></indextype><valuetype><or><int/><string/></or></valuetype></mapping></type></argument></arguments> + <returntype><void/></returntype> + </method> + <method name='create'> + <arguments><argument name='host'><type><string/></type></argument><argument name='db'><type><string/></type></argument><argument name='user'><type><string/></type></argument></arguments> + <returntype><void/></returntype> + </method> + <method name='create'> + <arguments><argument name='host'><type><string/></type></argument><argument name='db'><type><string/></type></argument><argument name='user'><type><string/></type></argument><argument name='password'><type><string/></type></argument></arguments> + <returntype><void/></returntype> + </method> + <method name='create'> + <arguments><argument name='host'><type><string/></type></argument><argument name='db'><type><string/></type></argument><argument name='user'><type><string/></type></argument><argument name='password'><type><string/></type></argument><argument name='options'><type><mapping><indextype><string/></indextype><valuetype><or><int/><string/></or></valuetype></mapping></type></argument></arguments> + <returntype><void/></returntype> + </method> + <method name='create'> + <arguments><argument name='host'><type><object resolved='8.0::Sql.Sql.create'/></type></argument></arguments> + <returntype><void/></returntype> + </method> + <method name='create'> + <arguments><argument name='host'><type><object resolved='8.0::Sql.Sql.create'/></type></argument><argument name='db'><type><string/></type></argument></arguments> + <returntype><void/></returntype> + </method> + </docgroup> + <docgroup homogen-name='create_db' homogen-type='method'><doc><text><p>Create a new database.</p> + </text><group><param name='db'/><text><p>Name of database to create.</p> + </text></group></doc> + <method name='create_db'> + <arguments><argument name='db'><type><string/></type></argument></arguments> + <returntype><void/></returntype> + </method> + </docgroup> + <docgroup homogen-name='decode_date' homogen-type='method'><doc><text><p>Converts a database date-only spec to a system time value.</p> + </text><group><param name='d'/><text><p>Date spec to decode.</p> + </text></group></doc> + <method name='decode_date'> + <arguments><argument name='d'><type><string/></type></argument></arguments> + <returntype><int/></returntype> + </method> + </docgroup> + <docgroup homogen-name='decode_datetime' homogen-type='method'><doc><text><p>Converts a database date and time spec to a system time value.</p> + </text><group><param name='datetime'/><text><p>Date and time spec to decode.</p> + </text></group></doc> + <method name='decode_datetime'> + <arguments><argument name='datetime'><type><string/></type></argument></arguments> + <returntype><int/></returntype> + </method> + </docgroup> + <docgroup homogen-name='decode_time' homogen-type='method'><doc><text><p>Converts a database time spec to a system time value.</p> + </text><group><param name='t'/><text><p>Time spec to decode.</p> + </text></group><group><param name='want_utc'/><text><p>Take the date part from this system time value. If zero, a +  seconds-since-midnight value is returned.</p> + </text></group></doc> + <method name='decode_time'> + <arguments><argument name='t'><type><string/></type></argument><argument name='want_utc'><type><or><int/><void/></or></type></argument></arguments> + <returntype><int/></returntype> + </method> + </docgroup> + <docgroup homogen-name='drop_db' homogen-type='method'><doc><text><p>Drop database</p> + </text><group><param name='db'/><text><p>Name of database to drop.</p> + </text></group></doc> + <method name='drop_db'> + <arguments><argument name='db'><type><string/></type></argument></arguments> + <returntype><void/></returntype> + </method> + </docgroup> + <docgroup homogen-name='encode_date' homogen-type='method'><doc><text><p>Converts a system time value to an appropriately formatted +  date-only spec for the database.</p> + </text><group><param name='t'/><text><p>Time to encode.</p> + </text></group></doc> + <method name='encode_date'> + <arguments><argument name='t'><type><int/></type></argument></arguments> + <returntype><string/></returntype> + </method> + </docgroup> + <docgroup homogen-name='encode_datetime' homogen-type='method'><doc><text><p>Converts a system time value to an appropriately formatted +  date and time spec for the database.</p> + </text><group><param name='t'/><text><p>Time to encode.</p> + </text></group></doc> + <method name='encode_datetime'> + <arguments><argument name='t'><type><int/></type></argument></arguments> + <returntype><string/></returntype> + </method> + </docgroup> + <docgroup homogen-name='encode_time' homogen-type='method'><doc><text><p>Converts a system time value to an appropriately formatted time +  spec for the database.</p> + </text><group><param name='t'/><text><p>Time to encode.</p> + </text></group><group><param name='is_utc'/><text><p>If nonzero then time is taken as a "full" unix time spec +  (where the date part is ignored), otherwise it's converted as a +  seconds-since-midnight value.</p> + </text></group></doc> + <method name='encode_time'> + <arguments><argument name='t'><type><int/></type></argument><argument name='is_utc'><type><or><int/><void/></or></type></argument></arguments> + <returntype><string/></returntype> + </method> + </docgroup> + <docgroup homogen-name='error' homogen-type='method'><doc><text><p>Return last error message.</p> + </text></doc> + <method name='error'> + <arguments/> + <returntype><or><int/><string/></or></returntype> + </method> + </docgroup> + <docgroup homogen-name='get_charset' homogen-type='method'><doc><text><p>Returns the (database dependent) name of the charset used for (at +  least) query strings. Returns zero if the connection doesn't +  support charsets this way (typically means that a call to +  <ref resolved='8.0::Sql.Sql.set_charset'>set_charset</ref> will throw an error).</p> + </text><group><seealso/><text><p><ref resolved='8.0::Sql.Sql.set_charset'>set_charset</ref>, <ref resolved='predef::Sql.mysql.get_charset'>Sql.mysql.get_charset</ref></p> + </text></group></doc> + <method name='get_charset'> + <arguments/> + <returntype><string/></returntype> + </method> + </docgroup> + <docgroup homogen-name='host_info' homogen-type='method'><doc><text><p>Return info about the connection to the SQL-server.</p> + </text></doc> + <method name='host_info'> + <arguments/> + <returntype><string/></returntype> + </method> + </docgroup> + <docgroup homogen-name='' homogen-type='import'> + <import name=''><classname resolved='predef::'>8.1::</classname></import> + </docgroup> + <docgroup homogen-name='is_open' homogen-type='method'><doc><text><p>Returns true if the connection seems to be open.</p> + </text><group><note/><text><p>This function only checks that there's an open connection, +  and that the other end hasn't closed it yet. No data is +  sent over the connection.</p> + <p> For a more reliable check of whether the connection +  is alive, please use <ref resolved='8.0::Sql.Sql.ping'>ping()</ref>.</p> + </text></group><group><seealso/><text><p><ref resolved='8.0::Sql.Sql.ping'>ping()</ref></p> + </text></group></doc> + <method name='is_open'> + <arguments/> + <returntype><int/></returntype> + </method> + </docgroup> + <docgroup homogen-name='list_dbs' homogen-type='method'><doc><text><p>List available databases on this SQL-server.</p> + </text><group><param name='wild'/><text><p>Optional wildcard to match against.</p> + </text></group></doc> + <method name='list_dbs'> + <arguments><argument name='wild'><type><or><string/><void/></or></type></argument></arguments> + <returntype><array><valuetype><string/></valuetype></array></returntype> + </method> + </docgroup> + <docgroup homogen-name='list_fields' homogen-type='method'><doc><text><p>List fields available in the specified table</p> + </text><group><param name='table'/><text><p>Table to list the fields of.</p> + </text></group><group><param name='wild'/><text><p>Optional wildcard to match against.</p> + </text></group></doc> + <method name='list_fields'> + <arguments><argument name='table'><type><string/></type></argument><argument name='wild'><type><or><string/><void/></or></type></argument></arguments> + <returntype><array><valuetype><mapping><indextype><string/></indextype><valuetype><mixed/></valuetype></mapping></valuetype></array></returntype> + </method> + </docgroup> + <docgroup homogen-name='list_tables' homogen-type='method'><doc><text><p>List tables available in the current database.</p> + </text><group><param name='wild'/><text><p>Optional wildcard to match against.</p> + </text></group></doc> + <method name='list_tables'> + <arguments><argument name='wild'><type><or><string/><void/></or></type></argument></arguments> + <returntype><array><valuetype><string/></valuetype></array></returntype> + </method> + </docgroup> + <docgroup homogen-name='master_sql' homogen-type='variable'><doc><text><p>Server specific connection object used for the actual SQL queries.</p> + </text></doc> + <variable name='master_sql'><type><object resolved='8.0::Sql.Sql'/></type></variable> + </docgroup> + <docgroup homogen-name='ping' homogen-type='method'><doc><text><p>Check whether the connection is alive.</p> + </text><group><returns/><text><p>Returns one of the following:</p> + <int><group><value>0</value><text><p>Everything ok.</p> + </text></group><group><value>1</value><text><p>The connection reconnected automatically.</p> + </text></group><group><value>-1</value><text><p>The server has gone away, and the connection is dead.</p> + </text></group></int> + </text></group><group><seealso/><text><p><ref resolved='8.0::Sql.Sql.is_open'>is_open()</ref></p> + </text></group></doc> + <method name='ping'> + <arguments/> + <returntype><int/></returntype> + </method> + </docgroup> + <docgroup homogen-name='query' homogen-type='method'><doc><text><p>Sends an SQL query synchronously to the underlying SQL-server and +  returns the results in untyped mode.</p> + </text><group><param name='q'/><text><p>Query to send to the SQL-server. This can either be a string with the +  query, or a previously compiled query (see <ref resolved='8.0::Sql.Sql.compile_query'>compile_query()</ref>).</p> + </text></group><group><param name='extraargs'/><text><p>This parameter, if specified, can be in two forms:</p> + <ol><group><item/><text><p>A mapping containing bindings of variables used in the query. +  A variable is identified by a colon (:) followed by a name or number. +  Each index in the mapping corresponds to one such variable, and the +  value for that index is substituted (quoted) into the query wherever +  the variable is used.</p> + <code><text><p>res = query("SELECT foo FROM bar WHERE gazonk=:baz", +  ([":baz":"value"]));</p> + </text></code><p>Binary values (BLOBs) may need to be placed in multisets.</p> + </text></group><group><item/><text><p>Arguments as you would use in sprintf. They are automatically +  quoted.</p> + <code><text><p>res = query("select foo from bar where gazonk=%s","value");</p> + </text></code></text></group></ol> + </text></group><group><returns/><text><p>Returns one of the following on success:</p> + <mixed><group><type><array><valuetype><mapping><indextype><string/></indextype><valuetype><string/></valuetype></mapping></valuetype></array></type><text><p>The result as an array of mappings indexed on the name of +  the columns. The values are either strings with the display +  representations or zero for the SQL NULL value.</p> + </text></group><group><type><zero/></type><text><p>The value <expr>0</expr> (zero) if the query didn't return any +  result (eg <tt>INSERT</tt> or similar).</p> + </text></group></mixed> + </text></group><group><throws/><text><p>Throws an exception if the query fails.</p> + </text></group><group><seealso/><text><p><ref resolved='8.0::Sql.Sql.typed_query'>typed_query</ref>, <ref resolved='8.0::Sql.Sql.big_query'>big_query</ref>, <ref resolved='8.0::Sql.Sql.streaming_query'>streaming_query</ref></p> + </text></group></doc> + <method name='query'> + <arguments><argument name='q'><type><or><object resolved='8.0::Sql.Sql.query'/><string/></or></type></argument><argument name='extraargs'><type><varargs><mixed/></varargs></type></argument></arguments> + <returntype><array><valuetype><mapping><indextype><string/></indextype><valuetype><string/></valuetype></mapping></valuetype></array></returntype> + </method> + </docgroup> + <docgroup homogen-name='quote' homogen-type='method'><doc><text><p>Quote a string <ref resolved='8.0::Sql.Sql.quote.s'>s</ref> so that it can safely be put in a query.</p> + <p> All input that is used in SQL-querys should be quoted to prevent +  SQL injections.</p> + <p> Consider this harmfull code:</p> + <code><text><p>string my_input = "rob' OR name!='rob"; +  string my_query = "DELETE FROM tblUsers WHERE name='"+my_input+"'"; +  my_db-&gt;query(my_query);</p> + </text></code><p>This type of problems can be avoided by quoting <tt>my_input</tt>. +  <tt>my_input</tt> would then probably read something like +  <i>rob\' OR name!=\'rob</i></p> + <p> Usually this is done - not by calling quote explicitly - but through +  using a <ref resolved='predef::sprintf'>sprintf</ref> like syntax</p> + <code><text><p>string my_input = "rob' OR name!='rob"; +  my_db-&gt;query("DELETE FROM tblUsers WHERE name=%s",my_input);</p> + </text></code> + </text></doc> + <method name='quote'> + <arguments><argument name='s'><type><string/></type></argument></arguments> + <returntype><string/></returntype> + </method> + </docgroup> + <docgroup homogen-name='reload' homogen-type='method'><doc><text><p>Reload the tables.</p> + </text></doc> + <method name='reload'> + <arguments/> + <returntype><void/></returntype> + </method> + </docgroup> + <docgroup homogen-name='select_db' homogen-type='method'><doc><text><p>Select database to access.</p> + </text></doc> + <method name='select_db'> + <arguments><argument name='db'><type><string/></type></argument></arguments> + <returntype><void/></returntype> + </method> + </docgroup> + <docgroup homogen-name='server_info' homogen-type='method'><doc><text><p>Return info about the current SQL-server.</p> + </text></doc> + <method name='server_info'> + <arguments/> + <returntype><string/></returntype> + </method> + </docgroup> + <docgroup homogen-name='set_charset' homogen-type='method'><doc><text><p>Changes the charset that the connection uses for queries and +  returned text strings.</p> + </text><group><param name='charset'/><text><p>The charset to use. The valid values and their meanings depends +  on the database brand. However, the special value +  <expr>"unicode"</expr> (if supported) selects a mode where the query +  and result strings are unencoded (and possibly wide) unicode +  strings.</p> + </text></group><group><throws/><text><p>An error is thrown if the connection doesn't support the +  specified charset, or doesn't support charsets being set this +  way at all.</p> + </text></group><group><note/><text><p>See the <expr>set_charset</expr> functions for each database +  connection type for further details about the effects on the +  connection.</p> + </text></group><group><seealso/><text><p><ref resolved='8.0::Sql.Sql.get_charset'>get_charset</ref>, <ref resolved='predef::Sql.mysql.set_charset'>Sql.mysql.set_charset</ref></p> + </text></group></doc> + <method name='set_charset'> + <arguments><argument name='charset'><type><string/></type></argument></arguments> + <returntype><void/></returntype> + </method> + </docgroup> + <docgroup homogen-name='shutdown' homogen-type='method'><doc><text><p>Shutdown a database server.</p> + </text></doc> + <method name='shutdown'> + <arguments/> + <returntype><void/></returntype> + </method> + </docgroup> + <docgroup homogen-name='sqlstate' homogen-type='method'><doc><text><p>Return last SQLSTATE.</p> + <p> The SQLSTATE error codes are specified in ANSI SQL.</p> + </text></doc> + <method name='sqlstate'> + <arguments/> + <returntype><string/></returntype> + </method> + </docgroup> + <docgroup homogen-name='streaming_query' homogen-type='method'><doc><text><p>Sends an SQL query synchronously to the underlying SQL-server and +  returns the results streaming in untyped mode.</p> + <p> For the arguments, please see the <ref resolved='8.0::Sql.Sql.query'>query()</ref> function.</p> + <p> The result is returned as a streaming <ref resolved='predef::Sql.sql_result'>Sql.sql_result</ref> object in +  untyped mode. This allows for having results larger than the +  available memory, and returning some more info about the result. +  Returns <expr>0</expr> if the query didn't return any result (e.g. +  INSERT or similar). For the other arguments, they are the same as +  for the <ref resolved='8.0::Sql.Sql.query'>query()</ref> function.</p> + </text><group><note/><text><p>Streaming operation is not supported by all sql databases. +  If not supported, this function will fall back to calling +  <ref resolved='8.0::Sql.Sql.big_query'>big_query()</ref>.</p> + </text></group><group><seealso/><text><p><ref resolved='8.0::Sql.Sql.big_query'>big_query</ref>, <ref resolved='8.0::Sql.Sql.streaming_typed_query'>streaming_typed_query</ref></p> + </text></group></doc> + <method name='streaming_query'> + <arguments><argument name='q'><type><or><object resolved='8.0::Sql.Sql.streaming_query'/><string/></or></type></argument><argument name='extraargs'><type><varargs><mixed/></varargs></type></argument></arguments> + <returntype><or><int/><object resolved='8.0::Sql.Sql.streaming_query'/></or></returntype> + </method> + </docgroup> + <docgroup homogen-name='streaming_typed_query' homogen-type='method'><doc><text><p>Sends an SQL query synchronously to the underlying SQL-server and +  returns the results streaming in typed mode.</p> + <p> For the arguments, please see the <ref resolved='8.0::Sql.Sql.query'>query()</ref> function.</p> + <p> The result is returned as a streaming <ref resolved='predef::Sql.sql_result'>Sql.sql_result</ref> object in +  typed mode. This allows for having results larger than the +  available memory, and returning some more info about the result. +  Returns <expr>0</expr> if the query didn't return any result (e.g. +  INSERT or similar).</p> + </text><group><note/><text><p>Neither streaming operation nor typed results are supported +  by all sql databases. If not supported, this function will +  fall back to calling <ref resolved='8.0::Sql.Sql.big_typed_query'>big_typed_query()</ref>.</p> + </text></group><group><seealso/><text><p><ref resolved='8.0::Sql.Sql.streaming_query'>streaming_query</ref>, <ref resolved='8.0::Sql.Sql.big_typed_query'>big_typed_query</ref></p> + </text></group></doc> + <method name='streaming_typed_query'> + <arguments><argument name='q'><type><or><object resolved='8.0::Sql.Sql.streaming_typed_query'/><string/></or></type></argument><argument name='extraargs'><type><varargs><mixed/></varargs></type></argument></arguments> + <returntype><or><int/><object resolved='8.0::Sql.Sql.streaming_typed_query'/></or></returntype> + </method> + </docgroup> + <docgroup homogen-name='typed_query' homogen-type='method'><doc><text><p>Sends an SQL query synchronously to the underlying SQL-server and +  returns the results in typed mode.</p> + <p> For the arguments, please see the <ref resolved='8.0::Sql.Sql.query'>query()</ref> function.</p> + </text><group><returns/><text><p>Returns one of the following on success:</p> + <mixed><group><type><array><valuetype><mapping><indextype><string/></indextype><valuetype><mixed/></valuetype></mapping></valuetype></array></type><text><p>The result as an array of mappings indexed on the name of +  the columns. The values have the appropriate native pike +  types where they fit the SQL data types - see the class doc +  for details on typed mode.</p> + </text></group><group><type><zero/></type><text><p>The value <expr>0</expr> (zero) if the query didn't return any +  result (eg <tt>INSERT</tt> or similar).</p> + </text></group></mixed> + </text></group><group><note/><text><p>Typed mode is not supported by all sql databases. If not +  supported, an error is thrown.</p> + </text></group><group><seealso/><text><p><ref resolved='8.0::Sql.Sql.query'>query</ref>, <ref resolved='8.0::Sql.Sql.big_typed_query'>big_typed_query</ref></p> + </text></group></doc> + <method name='typed_query'> + <arguments><argument name='q'><type><or><object resolved='8.0::Sql.Sql.typed_query'/><string/></or></type></argument><argument name='extraargs'><type><varargs><mixed/></varargs></type></argument></arguments> + <returntype><array><valuetype><mapping><indextype><string/></indextype><valuetype><mixed/></valuetype></mapping></valuetype></array></returntype> + </method> + </docgroup> + </class> + </module>   <module name='Standards'>   <module name='ASN1'>   <module name='Types'>   <docgroup homogen-name='' homogen-type='import'>   <import name=''><classname resolved='predef::'>8.1::</classname></import>   </docgroup>   <docgroup homogen-name='pre' homogen-type='inherit'>   <inherit name='pre'><classname resolved='predef::Standards.ASN1.Types'>Standards.ASN1.Types</classname></inherit>   </docgroup>   <class name='TeletexString'>
autodoc.git/modref.xml:86369:   </text></group><group><seealso/><text><p><ref resolved='predef::Mysql.SqlTable.get'>get</ref>, <ref resolved='predef::Mysql.SqlTable.select'>select</ref>, <ref resolved='predef::Mysql.SqlTable.select1'>select1</ref></p>   </text></group></doc>   <method name='get_multi'>   <arguments><argument name='ids'><type><array><valuetype><mixed/></valuetype></array></type></argument><argument name='fields'><type><or><void/><array><valuetype><string/></valuetype></array></or></type></argument></arguments>   <returntype><object resolved='predef::Mysql.SqlTable.Result'>Result</object></returntype>   </method>   </docgroup>   <docgroup homogen-name='handle_argspec' homogen-type='method'><doc><text><p>Helper function for use with array style arguments.</p>   <p> Many functions in this class can take WHERE expressions etc either    as plain strings or as arrays. In array form, they work like when -  <ref resolved='predef::Sql.Sql.query'>Sql.Sql.query</ref> is called with more than one argument:</p> +  <ref>Sql.Sql.query</ref> is called with more than one argument:</p>   <p> The first element in the array is a string containing the SQL    snippet. If the second element is a mapping, it's taken as a    bindings mapping, otherwise the remaining elements are formatted -  using the first in <expr>sprintf</expr> fashion. See <ref resolved='predef::Sql.Sql.query'>Sql.Sql.query</ref> +  using the first in <expr>sprintf</expr> fashion. See <ref>Sql.Sql.query</ref>    for further details.</p>   <p> This function reduces an argument on array form to a simple    string, combined with bindings. <ref resolved='predef::Mysql.SqlTable.handle_argspec.bindings'>bindings</ref> is a mapping that is    modified to contain the new bindings.</p>   </text><group><note/><text><p>The <ref resolved='predef::Mysql.SqlTable.quote'>quote</ref> function can be used to quote string literals in the    query, to avoid the array format.</p>   </text></group><group><returns/><text><p>Return the SQL snippet in string form, possibly with variable    bindings referring to <ref resolved='predef::Mysql.SqlTable.handle_argspec.bindings'>bindings</ref>.</p>   </text></group></doc>   <method name='handle_argspec'><modifiers><local/></modifiers>
autodoc.git/modref.xml:109726:   <variable name='wm_available'><type><int/></type></variable>   </docgroup>   </class>   </module>   <class name='SQLite'>   <doc><text><p>Low-level interface to SQLite3 databases.</p>   <p> This class should typically not be accessed directly, but instead    via <ref resolved='predef::Sql.Sql'>Sql.Sql()</ref> with the scheme <expr>"sqlite://"</expr>.</p>   </text></doc>   <docgroup homogen-name='big_query' homogen-type='method'><doc><text><p>Perform a streaming query against a SQLite database.</p> - </text><group><seealso/><text><p><ref resolved='predef::Sql.Sql.big_query'>Sql.Sql()-&gt;big_query()</ref></p> + </text><group><seealso/><text><p><ref>Sql.Sql()-&gt;big_query()</ref></p>   </text></group></doc>   <method name='big_query'>   <arguments><argument name='query'><type><string/></type></argument><argument name='bindings'><type><or><mapping><indextype><or><string/><int/></or></indextype><valuetype><mixed/></valuetype></mapping><void/></or></type></argument></arguments>   <returntype><object resolved='predef::SQLite.ResObj'>ResObj</object></returntype>   </method>   </docgroup>   <docgroup homogen-name='changes' homogen-type='method'><doc><text><p>Get the number of changes.</p>   </text><group><fixme/><text><p>Document this function properly.</p>   </text></group></doc>   <method name='changes'>
autodoc.git/modref.xml:109749:   </method>   </docgroup>   <docgroup homogen-name='create' homogen-type='method'><doc><text><p>Open the SQLite database stored at <ref resolved='predef::SQLite.create.path'>path</ref>.</p>   </text></doc>   <method name='create'>   <arguments><argument name='path'><type><string/></type></argument><argument name='ignored'><type><varargs><mixed/></varargs></type></argument></arguments>   <returntype><void/></returntype>   </method>   </docgroup>   <docgroup homogen-name='create_db' homogen-type='method'><doc><group><note/><text><p>This operation is not supported for SQLite.</p> - </text></group><group><seealso/><text><p><ref resolved='predef::Sql.Sql.create_db'>Sql.Sql()-&gt;create_db()</ref></p> + </text></group><group><seealso/><text><p><ref>Sql.Sql()-&gt;create_db()</ref></p>   </text></group></doc>   <method name='create_db'>   <arguments><argument name='db'><type><string/></type></argument></arguments>   <returntype><void/></returntype>   </method>   </docgroup>   <docgroup homogen-name='drop_db' homogen-type='method'><doc><group><note/><text><p>This operation is not supported for SQLite.</p> - </text></group><group><seealso/><text><p><ref resolved='predef::Sql.Sql.drop_db'>Sql.Sql()-&gt;drop_db()</ref></p> + </text></group><group><seealso/><text><p><ref>Sql.Sql()-&gt;drop_db()</ref></p>   </text></group></doc>   <method name='drop_db'>   <arguments><argument name='db'><type><string/></type></argument></arguments>   <returntype><void/></returntype>   </method>   </docgroup>   <docgroup homogen-name='error' homogen-type='method'><doc><text><p>Get the latest error message.</p> - </text><group><seealso/><text><p><ref resolved='predef::Sql.Sql.error'>Sql.Sql()-&gt;error()</ref></p> + </text><group><seealso/><text><p><ref>Sql.Sql()-&gt;error()</ref></p>   </text></group></doc>   <method name='error'>   <arguments/>   <returntype><string/></returntype>   </method>   </docgroup>   <docgroup homogen-name='Connection' homogen-type='inherit'>   <inherit name='Connection'><classname resolved='predef::__builtin.Sql.Connection'>__builtin.Sql.Connection</classname></inherit>   </docgroup>   <docgroup homogen-name='insert_id' homogen-type='method'><doc><text><p>Returns the value of the <tt>ROWID</tt> (aka <tt>OID</tt>, aka <tt>_ROWID_</tt>,
autodoc.git/modref.xml:109793:   </method>   </docgroup>   <docgroup homogen-name='interrupt' homogen-type='method'><doc><group><fixme/><text><p>Document this function.</p>   </text></group></doc>   <method name='interrupt'>   <arguments/>   <returntype><void/></returntype>   </method>   </docgroup>   <docgroup homogen-name='list_dbs' homogen-type='method'><doc><group><note/><text><p>This operation is not supported for SQLite.</p> - </text></group><group><seealso/><text><p><ref resolved='predef::Sql.Sql.list_dbs'>Sql.Sql()-&gt;list_dbs()</ref></p> + </text></group><group><seealso/><text><p><ref>Sql.Sql()-&gt;list_dbs()</ref></p>   </text></group></doc>   <method name='list_dbs'>   <arguments/>   <returntype><array><valuetype><string/></valuetype></array></returntype>   </method>   </docgroup>   <docgroup homogen-name='query' homogen-type='method'><doc><text><p>Perform a query against a SQLite database.</p> - </text><group><seealso/><text><p><ref resolved='predef::Sql.Sql.query'>Sql.Sql()-&gt;query()</ref></p> + </text><group><seealso/><text><p><ref>Sql.Sql()-&gt;query()</ref></p>   </text></group></doc>   <method name='query'>   <arguments><argument name='query'><type><string/></type></argument><argument name='bindings'><type><or><mapping><indextype><or><string/><int/></or></indextype><valuetype><mixed/></valuetype></mapping><void/></or></type></argument></arguments>   <returntype><or><array/><int/></or></returntype>   </method>   </docgroup>   <docgroup homogen-name='select_db' homogen-type='method'><doc><group><note/><text><p>This operation is not supported for SQLite.</p> - </text></group><group><seealso/><text><p><ref resolved='predef::Sql.Sql.select_db'>Sql.Sql()-&gt;select_db()</ref></p> + </text></group><group><seealso/><text><p><ref>Sql.Sql()-&gt;select_db()</ref></p>   </text></group></doc>   <method name='select_db'>   <arguments><argument name='db'><type><string/></type></argument></arguments>   <returntype><void/></returntype>   </method>   </docgroup>   <docgroup homogen-name='server_info' homogen-type='method'><doc><text><p>Get information about the SQLite library version.</p> - </text><group><seealso/><text><p><ref resolved='predef::Sql.Sql.server_info'>Sql.Sql()-&gt;server_info()</ref></p> + </text><group><seealso/><text><p><ref>Sql.Sql()-&gt;server_info()</ref></p>   </text></group></doc>   <method name='server_info'>   <arguments/>   <returntype><string/></returntype>   </method>   </docgroup>   <docgroup homogen-name='total_changes' homogen-type='method'><doc><text><p>Get the total number of changes for this session.</p>   </text><group><fixme/><text><p>Document this function properly.</p>   </text></group></doc>   <method name='total_changes'>
autodoc.git/modref.xml:114672:    Sql.Sql db = Sql.Sql("mysql://localhost/testdb");    return db-&gt;query("SELECT name FROM users WHERE "    "group=%s", group)-&gt;name * ",";    }</p>   </text></group></doc>   <docgroup homogen-name='NULL' homogen-type='variable'><doc><text><p>The SQL NULL value.</p>   </text><group><deprecated><name><ref resolved='predef::Val.null'>Val.null</ref></name></deprecated></group><group><seealso/><text><p><ref resolved='predef::Val.null'>Val.null</ref></p>   </text></group></doc>   <variable name='NULL'><type><object resolved='predef::Val.Null'>Val.Null</object></type></variable>   </docgroup> - <docgroup homogen-name='censor_sql_url' homogen-type='method'><doc><text><p>Redact the password (if any) from an Sql-url.</p> - </text><group><param name='sql_url'/><text><p>Sql-url possibly containing an unredacted password.</p> - </text></group><group><returns/><text><p>Returns the same Sql-url but with the password (if any) -  replaced by the string <expr>"CENSORED"</expr>.</p> + <docgroup homogen-name='Sql' homogen-type='method'><doc><text><p>Create a new generic SQL connection (DEPRECATED).</p> + </text><group><param name='con'/><text><p>Use this connection to access the SQL-database.</p> + </text></group><group><param name='db'/><text><p>Select this database.</p> + </text></group><group><note/><text><p>In Pike 8.1 and later this function is essentially a noop; +  if you actually need it, you may want to use <ref resolved='8.0::Sql.Sql'>8.0::Sql.Sql</ref>.</p> + </text></group><group><returns/><text><p>Returns <ref resolved='predef::Sql.Sql.con'>con</ref>.</p> + </text></group><group><seealso/><text><p><ref resolved='8.0::Sql.Sql'>8.0::Sql.Sql</ref>, <ref resolved='predef::Sql.Connection'>Connection</ref></p>   </text></group></doc> - <method name='censor_sql_url'> - <arguments><argument name='sql_url'><type><string/></type></argument></arguments> - <returntype><string/></returntype> + <method name='Sql'> + <arguments><argument name='con'><type><attribute><attribute>"deprecated"</attribute><subtype><object resolved='predef::Sql.Connection'>Connection</object></subtype></attribute></type></argument></arguments> + <returntype><object resolved='predef::Sql.Connection'>Connection</object></returntype>   </method> - </docgroup> - <docgroup homogen-name='' homogen-type='import'> - <import name=''><classname resolved='predef::'>predef::</classname></import> - </docgroup> - <class name='Connection'> - <doc><text><p>Base class for a connection to an SQL database.</p> - </text></doc> - <docgroup homogen-name='Connection' homogen-type='inherit'> - <inherit name='Connection'><classname resolved='predef::__builtin.Sql.Connection'>__builtin.Sql.Connection</classname></inherit> - </docgroup> - </class> - <class name='Null'> - <doc><text><p>Class used to implement the SQL NULL value.</p> - </text><group><deprecated><name><ref resolved='predef::Val.Null'>Val.Null</ref></name></deprecated></group><group><seealso/><text><p><ref resolved='predef::Val.Null'>Val.Null</ref>, <ref resolved='predef::Val.null'>Val.null</ref></p> - </text></group></doc> - </class> - <class name='Result'> - <doc><text><p>Base class for the result from <ref resolved='predef::__builtin.Sql.Connection.big_query'>Connection()-&gt;big_query()</ref> et al.</p> - </text></doc> - <docgroup homogen-name='Result' homogen-type='inherit'> - <inherit name='Result'><classname resolved='predef::__builtin.Sql.Result'>__builtin.Sql.Result</classname></inherit> - </docgroup> - </class> - <class name='Sql'> - <doc><text><p>This class encapsulates a connection to an SQL server. It is a -  generic interface on top of the DB server specific -  implementations. That doesn't mean that there aren't plenty of -  server specific characteristics that still shine through, though.</p> - <p> This class also serves as an interface guideline for the DB server -  specific connection classes.</p> - <section title='Untyped and typed mode'><text><p>The query results are returned in different ways depending on the -  query functions used: The <tt>..typed_query</tt> functions select -  typed mode, while the other query functions uses the older untyped -  mode.</p> - <p> In untyped mode, all values except SQL NULL are returned as -  strings in their display representation, and SQL NULL is returned -  as zero.</p> - <p> In typed mode, values are returned in pike native form where it -  works well. That means at least that SQL integer fields are -  returned as pike integers, floats as floats, SQL NULL as -  <ref resolved='predef::Val.null'>Val.null</ref>, and of course strings still as strings. The -  representation of other SQL types depend on the capabilities of -  the server specific backends. It's also possible that floats in -  some cases are represented in other ways if too much precision is -  lost in the conversion to pike floats.</p> - </text></section> - </text><group><note/><text><p>For historical reasons, there may be server specific backends that -  operate differently from what is described here, e.g. some that -  return a bit of typed data in untyped mode.</p> - </text></group><group><note/><text><p>Typed operation was not supported at all prior to Pike 7.8.363, -  and may not be supported for all databases.</p> - </text></group></doc> - <docgroup homogen-name='big_query' homogen-type='method'><doc><text><p>Sends an SQL query synchronously to the underlying SQL-server and -  returns the results in untyped mode.</p> - <p> For the arguments, please see the <ref resolved='predef::Sql.Sql.query'>query()</ref> function.</p> - <p> The result is returned as an <ref resolved='predef::Sql.sql_result'>Sql.sql_result</ref> object in untyped -  mode. This allows for having some more info about the result as -  well as processing the result in a streaming fashion, although the -  result itself wasn't obtained streamingly from the server. Returns -  <expr>0</expr> if the query didn't return any result (e.g. <tt>INSERT</tt> -  or similar).</p> - </text><group><note/><text><p>Despite the name, this function is not only useful for "big" -  queries. It typically has less overhead than <ref resolved='predef::Sql.Sql.query'>query</ref> also for -  ones that return only a few rows.</p> - </text></group><group><seealso/><text><p><ref resolved='predef::Sql.Sql.query'>query</ref>, <ref resolved='predef::Sql.Sql.streaming_query'>streaming_query</ref></p> - </text></group></doc> - <method name='big_query'> - <arguments><argument name='q'><type><or><object resolved='predef::Sql.Sql.big_query'/><string/></or></type></argument><argument name='extraargs'><type><varargs><mixed/></varargs></type></argument></arguments> - <returntype><or><int/><object resolved='predef::Sql.Sql.big_query'/></or></returntype> + <method name='Sql'> + <arguments><argument name='con'><type><attribute><attribute>"deprecated"</attribute><subtype><object resolved='predef::Sql.Connection'>Connection</object></subtype></attribute></type></argument><argument name='db'><type><string/></type></argument></arguments> + <returntype><object resolved='predef::Sql.Connection'>Connection</object></returntype>   </method>   </docgroup> - <docgroup homogen-name='big_typed_query' homogen-type='method'><doc><text><p>Sends an SQL query synchronously to the underlying SQL-server and -  returns the results in typed mode.</p> - <p> For the arguments, please see the <ref resolved='predef::Sql.Sql.query'>query()</ref> function.</p> - <p> The result is returned as an <ref resolved='predef::Sql.sql_result'>Sql.sql_result</ref> object in typed -  mode. This allows for having some more info about the result as -  well as processing the result in a streaming fashion, although the -  result itself wasn't obtained streamingly from the server. Returns -  <expr>0</expr> if the query didn't return any result (e.g. <tt>INSERT</tt> -  or similar).</p> - </text><group><note/><text><p>Typed mode is not supported by all sql databases. If not -  supported, an error is thrown.</p> - </text></group><group><note/><text><p>Despite the name, this function is not only useful for "big" -  queries. It typically has less overhead than <ref resolved='predef::Sql.Sql.typed_query'>typed_query</ref> also -  for ones that return only a few rows.</p> - </text></group><group><seealso/><text><p><ref resolved='predef::Sql.Sql.query'>query</ref>, <ref resolved='predef::Sql.Sql.typed_query'>typed_query</ref>, <ref resolved='predef::Sql.Sql.big_query'>big_query</ref>, <ref resolved='predef::Sql.Sql.streaming_query'>streaming_query</ref></p> - </text></group></doc> - <method name='big_typed_query'> - <arguments><argument name='q'><type><or><object resolved='predef::Sql.Sql.big_typed_query'/><string/></or></type></argument><argument name='extraargs'><type><varargs><mixed/></varargs></type></argument></arguments> - <returntype><or><int/><object resolved='predef::Sql.Sql.big_typed_query'/></or></returntype> - </method> - </docgroup> - <docgroup homogen-name='case_convert' homogen-type='variable'><doc><text><p>Convert all field names in mappings to lower_case. -  Only relevant to databases which only implement big_query(), -  and use upper/mixed-case fieldnames (eg Oracle).</p> - <int><group><value>0</value><text><p>No (default)</p> - </text></group><group><value>1</value><text><p>Yes</p> - </text></group></int> - </text></doc> - <variable name='case_convert'><type><int><min>0</min><max>1</max></int></type></variable> - </docgroup> - <docgroup homogen-name='compile_query' homogen-type='method'><doc><text><p>Compiles the query (if possible). Otherwise returns it as is. -  The resulting object can be used multiple times to the query -  functions.</p> - </text><group><param name='q'/><text><p>SQL-query to compile.</p> - </text></group><group><seealso/><text><p><ref resolved='predef::Sql.Sql.query'>query</ref>, <ref resolved='predef::Sql.Sql.typed_query'>typed_query</ref>, <ref resolved='predef::Sql.Sql.big_query'>big_query</ref>, <ref resolved='predef::Sql.Sql.big_typed_query'>big_typed_query</ref>, -  <ref resolved='predef::Sql.Sql.streaming_query'>streaming_query</ref>, <ref resolved='predef::Sql.Sql.streaming_typed_query'>streaming_typed_query</ref></p> - </text></group></doc> - <method name='compile_query'> - <arguments><argument name='q'><type><string/></type></argument></arguments> - <returntype><or><string/><object resolved='predef::Sql.Sql.compile_query'/></or></returntype> - </method> - </docgroup> - <docgroup homogen-name='create' homogen-type='method'><doc><text><p>Create a new generic SQL object.</p> - </text><group><param name='host'/><text><mixed><group><type><object resolved='predef::Sql.Sql.create'/></type><text><p>Use this object to access the SQL-database.</p> - </text></group><group><type><string/></type><text><p>Connect to the server specified. The string should be on the + <docgroup homogen-name='Sql' homogen-type='method'><doc><text><p>Create a new generic SQL connection.</p> + </text><group><param name='host'/><text><mixed><group><type><string/></type><text><p>Connect to the server specified. The string should be on the    format:    <tt>dbtype://[user[:password]@]hostname[:port][/database]</tt>    Use the <i>dbtype</i> protocol to connect to the database    server on the specified host. If the hostname is <expr>""</expr>    then the port can be a file name to access through a    UNIX-domain socket or similar, e g    <expr>"mysql://root@:/tmp/mysql.sock/"</expr>.</p>   <p> There is a special dbtype <expr>"mysqls"</expr> which works like    <expr>"mysql"</expr> but sets the <tt>CLIENT_SSL</tt> option and    loads the <tt>/etc/my.cnf</tt> config file to find the SSL
autodoc.git/modref.xml:114839:    This module is independent of any external libraries.</p>   </text></group><group><item name='postgres'/><text><p>PostgreSQL libray access. Uses the <ref resolved='predef::Postgres'>Postgres</ref> module.</p>   </text></group><group><item name='rsql'/><text><p>Remote SQL api, requires a rsql server running on another host.    This is an API that uses sockets to communicate with a remote pike    running pike -x rsqld on another host.</p>   </text></group><group><item name='sqlite'/><text><p>In-process SQLite database, uses the <ref resolved='predef::SQLite'>SQLite</ref> module</p>   </text></group><group><item name='sybase'/><text><p>Uses the <ref>sybase</ref> module to access sybase</p>   </text></group><group><item name='tds'/><text><p>Sybase and Microsoft SQL direct network access using the TDS protocol.    This module is independent of any external libraries.</p>   </text></group></dl> - </text></group><group><note/><text><p>Support for <ref resolved='predef::Sql.Sql.create.options'>options</ref> was added in Pike 7.3.</p> + </text></group><group><note/><text><p>Support for <ref resolved='predef::Sql.Sql.options'>options</ref> was added in Pike 7.3.</p> + </text></group><group><note/><text><p>Use of an object <ref resolved='predef::Sql.Sql.host'>host</ref> was deprecated in Pike 8.1.</p> + </text></group><group><note/><text><p>Prior to Pike 8.1 this was a wrapper class.</p> + </text></group><group><seealso/><text><p><ref resolved='8.0::Sql.Sql'>8.0::Sql.Sql</ref>, <ref resolved='predef::Sql.Connection'>Connection</ref></p>   </text></group></doc> - <method name='create'> + <method name='Sql'>   <arguments><argument name='host'><type><string/></type></argument></arguments> - <returntype><void/></returntype> + <returntype><object resolved='predef::Sql.Connection'>Connection</object></returntype>   </method> - <method name='create'> + <method name='Sql'>   <arguments><argument name='host'><type><string/></type></argument><argument name='db'><type><string/></type></argument></arguments> - <returntype><void/></returntype> + <returntype><object resolved='predef::Sql.Connection'>Connection</object></returntype>   </method> - <method name='create'> + <method name='Sql'>   <arguments><argument name='host'><type><string/></type></argument><argument name='options'><type><mapping><indextype><string/></indextype><valuetype><or><int/><string/></or></valuetype></mapping></type></argument></arguments> - <returntype><void/></returntype> + <returntype><object resolved='predef::Sql.Connection'>Connection</object></returntype>   </method> - <method name='create'> + <method name='Sql'>   <arguments><argument name='host'><type><string/></type></argument><argument name='db'><type><string/></type></argument><argument name='user'><type><string/></type></argument></arguments> - <returntype><void/></returntype> + <returntype><object resolved='predef::Sql.Connection'>Connection</object></returntype>   </method> - <method name='create'> + <method name='Sql'>   <arguments><argument name='host'><type><string/></type></argument><argument name='db'><type><string/></type></argument><argument name='user'><type><string/></type></argument><argument name='password'><type><string/></type></argument></arguments> - <returntype><void/></returntype> + <returntype><object resolved='predef::Sql.Connection'>Connection</object></returntype>   </method> - <method name='create'> + <method name='Sql'>   <arguments><argument name='host'><type><string/></type></argument><argument name='db'><type><string/></type></argument><argument name='user'><type><string/></type></argument><argument name='password'><type><string/></type></argument><argument name='options'><type><mapping><indextype><string/></indextype><valuetype><or><int/><string/></or></valuetype></mapping></type></argument></arguments> - <returntype><void/></returntype> + <returntype><object resolved='predef::Sql.Connection'>Connection</object></returntype>   </method> - <method name='create'> - <arguments><argument name='host'><type><object resolved='predef::Sql.Sql.create'/></type></argument></arguments> - <returntype><void/></returntype> - </method> - <method name='create'> - <arguments><argument name='host'><type><object resolved='predef::Sql.Sql.create'/></type></argument><argument name='db'><type><string/></type></argument></arguments> - <returntype><void/></returntype> - </method> +    </docgroup> - <docgroup homogen-name='create_db' homogen-type='method'><doc><text><p>Create a new database.</p> - </text><group><param name='db'/><text><p>Name of database to create.</p> + <docgroup homogen-name='censor_sql_url' homogen-type='method'><doc><text><p>Redact the password (if any) from an Sql-url.</p> + </text><group><param name='sql_url'/><text><p>Sql-url possibly containing an unredacted password.</p> + </text></group><group><returns/><text><p>Returns the same Sql-url but with the password (if any) +  replaced by the string <expr>"CENSORED"</expr>.</p>   </text></group></doc> - <method name='create_db'> - <arguments><argument name='db'><type><string/></type></argument></arguments> - <returntype><void/></returntype> - </method> - </docgroup> - <docgroup homogen-name='decode_date' homogen-type='method'><doc><text><p>Converts a database date-only spec to a system time value.</p> - </text><group><param name='d'/><text><p>Date spec to decode.</p> - </text></group></doc> - <method name='decode_date'> - <arguments><argument name='d'><type><string/></type></argument></arguments> - <returntype><int/></returntype> - </method> - </docgroup> - <docgroup homogen-name='decode_datetime' homogen-type='method'><doc><text><p>Converts a database date and time spec to a system time value.</p> - </text><group><param name='datetime'/><text><p>Date and time spec to decode.</p> - </text></group></doc> - <method name='decode_datetime'> - <arguments><argument name='datetime'><type><string/></type></argument></arguments> - <returntype><int/></returntype> - </method> - </docgroup> - <docgroup homogen-name='decode_time' homogen-type='method'><doc><text><p>Converts a database time spec to a system time value.</p> - </text><group><param name='t'/><text><p>Time spec to decode.</p> - </text></group><group><param name='want_utc'/><text><p>Take the date part from this system time value. If zero, a -  seconds-since-midnight value is returned.</p> - </text></group></doc> - <method name='decode_time'> - <arguments><argument name='t'><type><string/></type></argument><argument name='want_utc'><type><or><int/><void/></or></type></argument></arguments> - <returntype><int/></returntype> - </method> - </docgroup> - <docgroup homogen-name='drop_db' homogen-type='method'><doc><text><p>Drop database</p> - </text><group><param name='db'/><text><p>Name of database to drop.</p> - </text></group></doc> - <method name='drop_db'> - <arguments><argument name='db'><type><string/></type></argument></arguments> - <returntype><void/></returntype> - </method> - </docgroup> - <docgroup homogen-name='encode_date' homogen-type='method'><doc><text><p>Converts a system time value to an appropriately formatted -  date-only spec for the database.</p> - </text><group><param name='t'/><text><p>Time to encode.</p> - </text></group></doc> - <method name='encode_date'> - <arguments><argument name='t'><type><int/></type></argument></arguments> + <method name='censor_sql_url'> + <arguments><argument name='sql_url'><type><string/></type></argument></arguments>   <returntype><string/></returntype>   </method>   </docgroup> - <docgroup homogen-name='encode_datetime' homogen-type='method'><doc><text><p>Converts a system time value to an appropriately formatted -  date and time spec for the database.</p> - </text><group><param name='t'/><text><p>Time to encode.</p> - </text></group></doc> - <method name='encode_datetime'> - <arguments><argument name='t'><type><int/></type></argument></arguments> - <returntype><string/></returntype> - </method> - </docgroup> - <docgroup homogen-name='encode_time' homogen-type='method'><doc><text><p>Converts a system time value to an appropriately formatted time -  spec for the database.</p> - </text><group><param name='t'/><text><p>Time to encode.</p> - </text></group><group><param name='is_utc'/><text><p>If nonzero then time is taken as a "full" unix time spec -  (where the date part is ignored), otherwise it's converted as a -  seconds-since-midnight value.</p> - </text></group></doc> - <method name='encode_time'> - <arguments><argument name='t'><type><int/></type></argument><argument name='is_utc'><type><or><int/><void/></or></type></argument></arguments> - <returntype><string/></returntype> - </method> - </docgroup> - <docgroup homogen-name='error' homogen-type='method'><doc><text><p>Return last error message.</p> - </text></doc> - <method name='error'> - <arguments/> - <returntype><or><int/><string/></or></returntype> - </method> - </docgroup> - <docgroup homogen-name='get_charset' homogen-type='method'><doc><text><p>Returns the (database dependent) name of the charset used for (at -  least) query strings. Returns zero if the connection doesn't -  support charsets this way (typically means that a call to -  <ref resolved='predef::Sql.Sql.set_charset'>set_charset</ref> will throw an error).</p> - </text><group><seealso/><text><p><ref resolved='predef::Sql.Sql.set_charset'>set_charset</ref>, <ref resolved='predef::Sql.mysql.get_charset'>Sql.mysql.get_charset</ref></p> - </text></group></doc> - <method name='get_charset'> - <arguments/> - <returntype><string/></returntype> - </method> - </docgroup> - <docgroup homogen-name='host_info' homogen-type='method'><doc><text><p>Return info about the connection to the SQL-server.</p> - </text></doc> - <method name='host_info'> - <arguments/> - <returntype><string/></returntype> - </method> - </docgroup> +    <docgroup homogen-name='' homogen-type='import'>   <import name=''><classname resolved='predef::'>predef::</classname></import>   </docgroup> - <docgroup homogen-name='is_open' homogen-type='method'><doc><text><p>Returns true if the connection seems to be open.</p> - </text><group><note/><text><p>This function only checks that there's an open connection, -  and that the other end hasn't closed it yet. No data is -  sent over the connection.</p> - <p> For a more reliable check of whether the connection -  is alive, please use <ref resolved='predef::Sql.Sql.ping'>ping()</ref>.</p> - </text></group><group><seealso/><text><p><ref resolved='predef::Sql.Sql.ping'>ping()</ref></p> - </text></group></doc> - <method name='is_open'> - <arguments/> - <returntype><int/></returntype> - </method> - </docgroup> - <docgroup homogen-name='list_dbs' homogen-type='method'><doc><text><p>List available databases on this SQL-server.</p> - </text><group><param name='wild'/><text><p>Optional wildcard to match against.</p> - </text></group></doc> - <method name='list_dbs'> - <arguments><argument name='wild'><type><or><string/><void/></or></type></argument></arguments> - <returntype><array><valuetype><string/></valuetype></array></returntype> - </method> - </docgroup> - <docgroup homogen-name='list_fields' homogen-type='method'><doc><text><p>List fields available in the specified table</p> - </text><group><param name='table'/><text><p>Table to list the fields of.</p> - </text></group><group><param name='wild'/><text><p>Optional wildcard to match against.</p> - </text></group></doc> - <method name='list_fields'> - <arguments><argument name='table'><type><string/></type></argument><argument name='wild'><type><or><string/><void/></or></type></argument></arguments> - <returntype><array><valuetype><mapping><indextype><string/></indextype><valuetype><mixed/></valuetype></mapping></valuetype></array></returntype> - </method> - </docgroup> - <docgroup homogen-name='list_tables' homogen-type='method'><doc><text><p>List tables available in the current database.</p> - </text><group><param name='wild'/><text><p>Optional wildcard to match against.</p> - </text></group></doc> - <method name='list_tables'> - <arguments><argument name='wild'><type><or><string/><void/></or></type></argument></arguments> - <returntype><array><valuetype><string/></valuetype></array></returntype> - </method> - </docgroup> - <docgroup homogen-name='master_sql' homogen-type='variable'><doc><text><p>Server specific connection object used for the actual SQL queries.</p> + <class name='Connection'> + <doc><text><p>Base class for a connection to an SQL database.</p>   </text></doc> - <variable name='master_sql'><type><object resolved='predef::Sql.Sql'/></type></variable> + <docgroup homogen-name='Connection' homogen-type='inherit'> + <inherit name='Connection'><classname resolved='predef::__builtin.Sql.Connection'>__builtin.Sql.Connection</classname></inherit>   </docgroup> - <docgroup homogen-name='ping' homogen-type='method'><doc><text><p>Check whether the connection is alive.</p> - </text><group><returns/><text><p>Returns one of the following:</p> - <int><group><value>0</value><text><p>Everything ok.</p> - </text></group><group><value>1</value><text><p>The connection reconnected automatically.</p> - </text></group><group><value>-1</value><text><p>The server has gone away, and the connection is dead.</p> - </text></group></int> - </text></group><group><seealso/><text><p><ref resolved='predef::Sql.Sql.is_open'>is_open()</ref></p> + </class> + <class name='Null'> + <doc><text><p>Class used to implement the SQL NULL value.</p> + </text><group><deprecated><name><ref resolved='predef::Val.Null'>Val.Null</ref></name></deprecated></group><group><seealso/><text><p><ref resolved='predef::Val.Null'>Val.Null</ref>, <ref resolved='predef::Val.null'>Val.null</ref></p>   </text></group></doc> - <method name='ping'> - <arguments/> - <returntype><int/></returntype> - </method> - </docgroup> - <docgroup homogen-name='query' homogen-type='method'><doc><text><p>Sends an SQL query synchronously to the underlying SQL-server and -  returns the results in untyped mode.</p> - </text><group><param name='q'/><text><p>Query to send to the SQL-server. This can either be a string with the -  query, or a previously compiled query (see <ref resolved='predef::Sql.Sql.compile_query'>compile_query()</ref>).</p> - </text></group><group><param name='extraargs'/><text><p>This parameter, if specified, can be in two forms:</p> - <ol><group><item/><text><p>A mapping containing bindings of variables used in the query. -  A variable is identified by a colon (:) followed by a name or number. -  Each index in the mapping corresponds to one such variable, and the -  value for that index is substituted (quoted) into the query wherever -  the variable is used.</p> - <code><text><p>res = query("SELECT foo FROM bar WHERE gazonk=:baz", -  ([":baz":"value"]));</p> - </text></code><p>Binary values (BLOBs) may need to be placed in multisets.</p> - </text></group><group><item/><text><p>Arguments as you would use in sprintf. They are automatically -  quoted.</p> - <code><text><p>res = query("select foo from bar where gazonk=%s","value");</p> - </text></code></text></group></ol> - </text></group><group><returns/><text><p>Returns one of the following on success:</p> - <mixed><group><type><array><valuetype><mapping><indextype><string/></indextype><valuetype><string/></valuetype></mapping></valuetype></array></type><text><p>The result as an array of mappings indexed on the name of -  the columns. The values are either strings with the display -  representations or zero for the SQL NULL value.</p> - </text></group><group><type><zero/></type><text><p>The value <expr>0</expr> (zero) if the query didn't return any -  result (eg <tt>INSERT</tt> or similar).</p> - </text></group></mixed> - </text></group><group><throws/><text><p>Throws an exception if the query fails.</p> - </text></group><group><seealso/><text><p><ref resolved='predef::Sql.Sql.typed_query'>typed_query</ref>, <ref resolved='predef::Sql.Sql.big_query'>big_query</ref>, <ref resolved='predef::Sql.Sql.streaming_query'>streaming_query</ref></p> - </text></group></doc> - <method name='query'> - <arguments><argument name='q'><type><or><object resolved='predef::Sql.Sql.query'/><string/></or></type></argument><argument name='extraargs'><type><varargs><mixed/></varargs></type></argument></arguments> - <returntype><array><valuetype><mapping><indextype><string/></indextype><valuetype><string/></valuetype></mapping></valuetype></array></returntype> - </method> - </docgroup> - <docgroup homogen-name='quote' homogen-type='method'><doc><text><p>Quote a string <ref resolved='predef::Sql.Sql.quote.s'>s</ref> so that it can safely be put in a query.</p> - <p> All input that is used in SQL-querys should be quoted to prevent -  SQL injections.</p> - <p> Consider this harmfull code:</p> - <code><text><p>string my_input = "rob' OR name!='rob"; -  string my_query = "DELETE FROM tblUsers WHERE name='"+my_input+"'"; -  my_db-&gt;query(my_query);</p> - </text></code><p>This type of problems can be avoided by quoting <tt>my_input</tt>. -  <tt>my_input</tt> would then probably read something like -  <i>rob\' OR name!=\'rob</i></p> - <p> Usually this is done - not by calling quote explicitly - but through -  using a <ref resolved='predef::sprintf'>sprintf</ref> like syntax</p> - <code><text><p>string my_input = "rob' OR name!='rob"; -  my_db-&gt;query("DELETE FROM tblUsers WHERE name=%s",my_input);</p> - </text></code> + </class> + <class name='Result'> + <doc><text><p>Base class for the result from <ref resolved='predef::__builtin.Sql.Connection.big_query'>Connection()-&gt;big_query()</ref> et al.</p>   </text></doc> - <method name='quote'> - <arguments><argument name='s'><type><string/></type></argument></arguments> - <returntype><string/></returntype> - </method> + <docgroup homogen-name='Result' homogen-type='inherit'> + <inherit name='Result'><classname resolved='predef::__builtin.Sql.Result'>__builtin.Sql.Result</classname></inherit>   </docgroup> - <docgroup homogen-name='reload' homogen-type='method'><doc><text><p>Reload the tables.</p> - </text></doc> - <method name='reload'> - <arguments/> - <returntype><void/></returntype> - </method> - </docgroup> - <docgroup homogen-name='select_db' homogen-type='method'><doc><text><p>Select database to access.</p> - </text></doc> - <method name='select_db'> - <arguments><argument name='db'><type><string/></type></argument></arguments> - <returntype><void/></returntype> - </method> - </docgroup> - <docgroup homogen-name='server_info' homogen-type='method'><doc><text><p>Return info about the current SQL-server.</p> - </text></doc> - <method name='server_info'> - <arguments/> - <returntype><string/></returntype> - </method> - </docgroup> - <docgroup homogen-name='set_charset' homogen-type='method'><doc><text><p>Changes the charset that the connection uses for queries and -  returned text strings.</p> - </text><group><param name='charset'/><text><p>The charset to use. The valid values and their meanings depends -  on the database brand. However, the special value -  <expr>"unicode"</expr> (if supported) selects a mode where the query -  and result strings are unencoded (and possibly wide) unicode -  strings.</p> - </text></group><group><throws/><text><p>An error is thrown if the connection doesn't support the -  specified charset, or doesn't support charsets being set this -  way at all.</p> - </text></group><group><note/><text><p>See the <expr>set_charset</expr> functions for each database -  connection type for further details about the effects on the -  connection.</p> - </text></group><group><seealso/><text><p><ref resolved='predef::Sql.Sql.get_charset'>get_charset</ref>, <ref resolved='predef::Sql.mysql.set_charset'>Sql.mysql.set_charset</ref></p> - </text></group></doc> - <method name='set_charset'> - <arguments><argument name='charset'><type><string/></type></argument></arguments> - <returntype><void/></returntype> - </method> - </docgroup> - <docgroup homogen-name='shutdown' homogen-type='method'><doc><text><p>Shutdown a database server.</p> - </text></doc> - <method name='shutdown'> - <arguments/> - <returntype><void/></returntype> - </method> - </docgroup> - <docgroup homogen-name='sqlstate' homogen-type='method'><doc><text><p>Return last SQLSTATE.</p> - <p> The SQLSTATE error codes are specified in ANSI SQL.</p> - </text></doc> - <method name='sqlstate'> - <arguments/> - <returntype><string/></returntype> - </method> - </docgroup> - <docgroup homogen-name='streaming_query' homogen-type='method'><doc><text><p>Sends an SQL query synchronously to the underlying SQL-server and -  returns the results streaming in untyped mode.</p> - <p> For the arguments, please see the <ref resolved='predef::Sql.Sql.query'>query()</ref> function.</p> - <p> The result is returned as a streaming <ref resolved='predef::Sql.sql_result'>Sql.sql_result</ref> object in -  untyped mode. This allows for having results larger than the -  available memory, and returning some more info about the result. -  Returns <expr>0</expr> if the query didn't return any result (e.g. -  INSERT or similar). For the other arguments, they are the same as -  for the <ref resolved='predef::Sql.Sql.query'>query()</ref> function.</p> - </text><group><note/><text><p>Streaming operation is not supported by all sql databases. -  If not supported, this function will fall back to calling -  <ref resolved='predef::Sql.Sql.big_query'>big_query()</ref>.</p> - </text></group><group><seealso/><text><p><ref resolved='predef::Sql.Sql.big_query'>big_query</ref>, <ref resolved='predef::Sql.Sql.streaming_typed_query'>streaming_typed_query</ref></p> - </text></group></doc> - <method name='streaming_query'> - <arguments><argument name='q'><type><or><object resolved='predef::Sql.Sql.streaming_query'/><string/></or></type></argument><argument name='extraargs'><type><varargs><mixed/></varargs></type></argument></arguments> - <returntype><or><int/><object resolved='predef::Sql.Sql.streaming_query'/></or></returntype> - </method> - </docgroup> - <docgroup homogen-name='streaming_typed_query' homogen-type='method'><doc><text><p>Sends an SQL query synchronously to the underlying SQL-server and -  returns the results streaming in typed mode.</p> - <p> For the arguments, please see the <ref resolved='predef::Sql.Sql.query'>query()</ref> function.</p> - <p> The result is returned as a streaming <ref resolved='predef::Sql.sql_result'>Sql.sql_result</ref> object in -  typed mode. This allows for having results larger than the -  available memory, and returning some more info about the result. -  Returns <expr>0</expr> if the query didn't return any result (e.g. -  INSERT or similar).</p> - </text><group><note/><text><p>Neither streaming operation nor typed results are supported -  by all sql databases. If not supported, this function will -  fall back to calling <ref resolved='predef::Sql.Sql.big_typed_query'>big_typed_query()</ref>.</p> - </text></group><group><seealso/><text><p><ref resolved='predef::Sql.Sql.streaming_query'>streaming_query</ref>, <ref resolved='predef::Sql.Sql.big_typed_query'>big_typed_query</ref></p> - </text></group></doc> - <method name='streaming_typed_query'> - <arguments><argument name='q'><type><or><object resolved='predef::Sql.Sql.streaming_typed_query'/><string/></or></type></argument><argument name='extraargs'><type><varargs><mixed/></varargs></type></argument></arguments> - <returntype><or><int/><object resolved='predef::Sql.Sql.streaming_typed_query'/></or></returntype> - </method> - </docgroup> - <docgroup homogen-name='typed_query' homogen-type='method'><doc><text><p>Sends an SQL query synchronously to the underlying SQL-server and -  returns the results in typed mode.</p> - <p> For the arguments, please see the <ref resolved='predef::Sql.Sql.query'>query()</ref> function.</p> - </text><group><returns/><text><p>Returns one of the following on success:</p> - <mixed><group><type><array><valuetype><mapping><indextype><string/></indextype><valuetype><mixed/></valuetype></mapping></valuetype></array></type><text><p>The result as an array of mappings indexed on the name of -  the columns. The values have the appropriate native pike -  types where they fit the SQL data types - see the class doc -  for details on typed mode.</p> - </text></group><group><type><zero/></type><text><p>The value <expr>0</expr> (zero) if the query didn't return any -  result (eg <tt>INSERT</tt> or similar).</p> - </text></group></mixed> - </text></group><group><note/><text><p>Typed mode is not supported by all sql databases. If not -  supported, an error is thrown.</p> - </text></group><group><seealso/><text><p><ref resolved='predef::Sql.Sql.query'>query</ref>, <ref resolved='predef::Sql.Sql.big_typed_query'>big_typed_query</ref></p> - </text></group></doc> - <method name='typed_query'> - <arguments><argument name='q'><type><or><object resolved='predef::Sql.Sql.typed_query'/><string/></or></type></argument><argument name='extraargs'><type><varargs><mixed/></varargs></type></argument></arguments> - <returntype><array><valuetype><mapping><indextype><string/></indextype><valuetype><mixed/></valuetype></mapping></valuetype></array></returntype> - </method> - </docgroup> +    </class>   <class name='msql'>   <doc><text><p>Implements the glue needed to access the Msql-module from the generic    SQL module.</p>   </text></doc>   <docgroup homogen-name='' homogen-type='import'>   <import name=''><classname resolved='predef::'>predef::</classname></import>   </docgroup>   <docgroup homogen-name='msql' homogen-type='inherit'>   <inherit name='msql'><classname resolved='predef::Msql.msql'>Msql.msql</classname></inherit>
autodoc.git/modref.xml:115237:    <tt>UNIX_TIMESTAMP</tt> function in the queries to retrieve them as    unix timestamps on integer form.</p>   </text></group><group><item name='String types'/><text><p>All string types are returned as pike strings. The MySQL glue    can handle charset conversions for text strings - see    <ref resolved='predef::Sql.mysql.set_charset'>set_charset</ref> and <ref resolved='predef::Sql.mysql.set_unicode_decode_mode'>set_unicode_decode_mode</ref>.</p>   </text></group></dl>   </text></section>   </text></doc>   <docgroup homogen-name='big_query' homogen-type='method'><doc><text><p>Sends a query to the server.</p>   </text><group><param name='query'/><text><p>The SQL query.</p> - </text></group><group><param name='bindings'/><text><p>An optional bindings mapping. See <ref resolved='predef::Sql.Sql.query'>Sql.query</ref> for details about + </text></group><group><param name='bindings'/><text><p>An optional bindings mapping. See <ref>Sql.query</ref> for details about    this.</p>   </text></group><group><param name='charset'/><text><p>An optional charset that will be used temporarily while sending    <ref resolved='predef::Sql.mysql.big_query.query'>query</ref> to the server. If necessary, a query</p>   <code><text><p>SET character_set_client=<ref resolved='predef::Sql.mysql.big_query.charset'>charset</ref></p>   </text></code><p>is sent to the server first, then <ref resolved='predef::Sql.mysql.big_query.query'>query</ref> is sent as-is, and then    the connection charset is restored again (if necessary).</p>   <p> Primarily useful with <ref resolved='predef::Sql.mysql.big_query.charset'>charset</ref> set to <expr>"latin1"</expr> if    unicode encode mode (see <ref resolved='predef::Sql.mysql.set_unicode_encode_mode'>set_unicode_encode_mode</ref>) is enabled    (the default) and you have some large queries (typically blob    inserts) where you want to avoid the query parsing overhead.</p>   </text></group><group><returns/><text><p>A <ref resolved='predef::Mysql.mysql.Result'>Result</ref> object is returned if the query is of a    kind that returns a result. Zero is returned otherwise.</p>   <p> The individual fields are returned as strings except for <tt>NULL</tt>,    which is returned as <ref resolved='predef::.UNDEFINED'>UNDEFINED</ref>.</p> - </text></group><group><seealso/><text><p><ref resolved='predef::Sql.Sql.big_query'>Sql.big_query()</ref>, <ref resolved='predef::Sql.mysql.big_typed_query'>big_typed_query()</ref>, <ref resolved='predef::Sql.mysql.streaming_query'>streaming_query()</ref></p> + </text></group><group><seealso/><text><p><ref>Sql.big_query()</ref>, <ref resolved='predef::Sql.mysql.big_typed_query'>big_typed_query()</ref>, <ref resolved='predef::Sql.mysql.streaming_query'>streaming_query()</ref></p>   </text></group></doc>   <method name='big_query'>   <arguments><argument name='query'><type><string/></type></argument><argument name='bindings'><type><or><mapping><indextype><or><string/><int/></or></indextype><valuetype><mixed/></valuetype></mapping><void/></or></type></argument><argument name='charset'><type><or><void/><string/></or></type></argument></arguments>   <returntype><object resolved='predef::Mysql.mysql.Result'>Result</object></returntype>   </method>   </docgroup>   <docgroup homogen-name='big_typed_query' homogen-type='method'><doc><text><p>Makes a typed SQL query.</p>   <p> This function sends the SQL query <ref resolved='predef::Sql.mysql.big_typed_query.query'>query</ref> to the MySQL server and    returns a result object in typed mode, which means that the types    of the result fields depend on the corresponding SQL types. See
autodoc.git/modref.xml:115746:   </text></group><group><item/><text><p>Event driven NOTIFY.</p>   </text></group><group><item/><text><p>SSL encrypted connections (optional or forced).</p>   </text></group></ul><p>Check the PostgreSQL documentation for further details.</p>   </text><group><note/><text><p>Multiple simultaneous queries on the same database connection is a    feature that none of the other database drivers for Pike support.    So, although it's efficient, its use will make switching database drivers    difficult.</p>   </text></group><group><seealso/><text><p><ref resolved='predef::Sql.Sql'>Sql.Sql</ref>, <ref resolved='predef::Sql.postgres'>Sql.postgres</ref>, <url>http://www.postgresql.org/docs/</url></p>   </text></group></doc>   <docgroup homogen-name='big_query' homogen-type='method'><doc><text><p>This is the only provided interface which allows you to query the -  database. If you wish to use the simpler <ref resolved='predef::Sql.Sql.query'>Sql.Sql()-&gt;query()</ref> function, +  database. If you wish to use the simpler <ref>Sql.Sql()-&gt;query()</ref> function,    you need to use the <ref resolved='predef::Sql.Sql'>Sql.Sql</ref> generic SQL-object.</p>   <p> Bindings are supported natively straight across the network.    Special bindings supported are:</p>   <mapping><group><member><type><int/></type><index>":_cache"</index></member><text><p>Forces caching on or off for the query at hand.</p>   </text></group><group><member><type><int/></type><index>":_text"</index></member><text><p>Forces text mode in communication with the database for queries on or off    for the query at hand. Potentially more efficient than the default    binary method for simple queries with small or no result sets.    Note that this mode causes all but the first query result of a list    of semicolon separated statements to be discarded.</p>   </text></group><group><member><type><int/></type><index>":_sync"</index></member><text><p>Forces synchronous parsing on or off for statements.
autodoc.git/modref.xml:115770:    statement),    but it can speed up parsing due to increased parallelism.</p>   </text></group></mapping>   </text><group><note/><text><p>The bindings-parameter passed to this function must remain unaltered    until the parameters have been sent to the database. The driver    currently does not expose this moment, but to avoid a race condition    it is sufficient to keep them unaltered until the first resultrow    has been fetched (or EOF is reached, in case of no resultrows).</p>   </text></group><group><returns/><text><p>A <ref resolved='predef::Sql.pgsql_util.sql_result'>Sql.pgsql_util.sql_result</ref> object (which conforms to the    <ref resolved='predef::Sql.sql_result'>Sql.sql_result</ref> standard interface for accessing data). It is -  recommended to use <ref resolved='predef::Sql.Sql.query'>Sql.Sql()-&gt;query()</ref> for simpler queries (because +  recommended to use <ref>Sql.Sql()-&gt;query()</ref> for simpler queries (because    it is easier to handle, but stores all the result in memory), and -  <ref resolved='predef::Sql.Sql.big_query'>Sql.Sql()-&gt;big_query()</ref> for queries you expect to return huge amounts of +  <ref>Sql.Sql()-&gt;big_query()</ref> for queries you expect to return huge amounts of    data (it's harder to handle, but fetches results on demand).</p>   </text></group><group><note/><text><p>This function <b>can</b> raise exceptions.</p>   </text></group><group><note/><text><p>This function supports multiple simultaneous queries (portals) on a single    database connection. This is a feature not commonly supported by other    database backends.</p>   </text></group><group><note/><text><p>This function, by default, does not support multiple queries in one    querystring.    I.e. it allows for but does not require a trailing semicolon, but it    simply ignores any commands after the first unquoted semicolon. This can    be viewed as a limited protection against SQL-injection attacks.    To make it support multiple queries in one querystring, use the    <ref resolved='predef::Sql.pgsql.big_query'>:_text</ref> option.</p>   </text></group><group><seealso/><text><p><ref resolved='predef::Sql.pgsql.big_typed_query'>big_typed_query()</ref>, <ref resolved='predef::Sql.Sql'>Sql.Sql</ref>, <ref resolved='predef::Sql.sql_result'>Sql.sql_result</ref>, -  <ref resolved='predef::Sql.Sql.query'>Sql.Sql()-&gt;query()</ref>, <ref resolved='predef::Sql.pgsql_util.sql_result'>Sql.pgsql_util.sql_result</ref></p> +  <ref>Sql.Sql()-&gt;query()</ref>, <ref resolved='predef::Sql.pgsql_util.sql_result'>Sql.pgsql_util.sql_result</ref></p>   </text></group></doc>   <method name='big_query'><modifiers><final/></modifiers>   <arguments><argument name='q'><type><string/></type></argument><argument name='bindings'><type><or><void/><mapping><indextype><or><string/><int/></or></indextype><valuetype><mixed/></valuetype></mapping></or></type></argument><argument name='_alltyped'><type><or><void/><int/></or></type></argument></arguments>   <returntype><object resolved='predef::Sql.pgsql_util.sql_result'>.pgsql_util.sql_result</object></returntype>   </method>   </docgroup>   <docgroup homogen-name='big_typed_query' homogen-type='method'><doc><text><p>This function returns an object that allows streaming and typed    results.</p>   </text><group><seealso/><text><p><ref resolved='predef::Sql.pgsql.big_query'>big_query()</ref>, <ref resolved='predef::Sql.Sql'>Sql.Sql</ref>, <ref resolved='predef::Sql.sql_result'>Sql.sql_result</ref></p>   </text></group></doc>
autodoc.git/modref.xml:116458:    Do not use, unless you're sure of what you're doing.    This variable is ignored in recent versions of PostgreSQL.</p>   </text></group></string><p>Refer to the Postgres documentation for further details.</p>   </text></group><group><seealso/><text><p><ref resolved='predef::Sql.pgsql'>Sql.pgsql</ref>, <ref resolved='predef::Sql.Sql'>Sql.Sql</ref>, <ref resolved='predef::Postgres.postgres'>Postgres.postgres</ref>, <ref resolved='predef::Sql.postgres_result'>Sql.postgres_result</ref></p>   </text></group></doc>   <docgroup homogen-name='big_query' homogen-type='method'><doc><text><p>This is the only provided interface which allows you to query the    database. If you wish to use the simpler "query" function, you need to    use the <ref resolved='predef::Sql.Sql'>Sql.Sql</ref> generic SQL-object.</p>   <p> It returns a postgres_result object (which conforms to the    <ref resolved='predef::Sql.sql_result'>Sql.sql_result</ref> standard interface for accessing data). I -  recommend using <ref resolved='predef::Sql.Sql.query'>Sql.Sql()-&gt;query()</ref> for simpler queries (because it is +  recommend using <ref>Sql.Sql()-&gt;query()</ref> for simpler queries (because it is    easier to handle, but stores all the result in memory), and    <ref resolved='predef::Sql.postgres.big_query'>big_query()</ref> for queries you expect to return huge amounts of    data (it's harder to handle, but fetches results on demand).</p>   </text><group><note/><text><p>This function <b>can</b> raise exceptions.</p>   </text></group><group><seealso/><text><p><ref resolved='predef::Sql.Sql'>Sql.Sql</ref>, <ref resolved='predef::Sql.sql_result'>Sql.sql_result</ref></p>   </text></group></doc>   <method name='big_query'>   <arguments><argument name='q'><type><or><object resolved='predef::Sql.postgres.big_query'/><string/></or></type></argument><argument name='bindings'><type><or><mapping><indextype><or><string/><int/></or></indextype><valuetype><mixed/></valuetype></mapping><void/></or></type></argument></arguments>   <returntype><or><int/><object resolved='predef::Sql.postgres.big_query'/></or></returntype>   </method>
autodoc.git/modref.xml:116753:   <docgroup homogen-name='master_res' homogen-type='variable'><doc><text><p>The actual result.</p>   </text></doc>   <variable name='master_res'><type><mixed/></type></variable>   </docgroup>   <docgroup homogen-name='next_result' homogen-type='method'><doc><text><p>Switch to the next set of results.</p>   <p> Some databases support returning more than one set of results.    This function terminates the current result and switches to    the next (if any).</p>   </text><group><returns/><text><p>Returns the <ref resolved='predef::Sql.sql_result'>sql_result</ref> object if there were more results,    and <expr>0</expr> (zero) otherwise.</p> - </text></group><group><throws/><text><p>May throw the same errors as <ref resolved='predef::Sql.Sql.big_query'>Sql.Sql()-&gt;big_query()</ref> et al.</p> + </text></group><group><throws/><text><p>May throw the same errors as <ref>Sql.Sql()-&gt;big_query()</ref> et al.</p>   </text></group></doc>   <method name='next_result'>   <arguments/>   <returntype><object resolved='predef::Sql.sql_result'>this_program</object></returntype>   </method>   </docgroup>   <docgroup homogen-name='num_fields' homogen-type='method'><doc><text><p>Returns the number of fields in the result.</p>   </text></doc>   <method name='num_fields'>   <arguments/>
autodoc.git/modref.xml:119177:    public keys must be set.</p>   </text></group><group><param name='name'/><text><p>The distinguished name for the certificate.</p>   </text></group><group><param name='attributes'/><text><p>Attributes from PKCS #9 to add to the certificate.</p>   </text></group><group><param name='hash'/><text><p>Hash algoritm to use for the CSR signature.    Defaults to <ref resolved='predef::Crypto.SHA256'>Crypto.SHA256</ref>.</p>   </text></group><group><note/><text><p>Prior to Pike 8.0 this function only supported signing    with <ref resolved='predef::Crypto.RSA'>Crypto.RSA</ref> and the default (and only) hash was    <ref resolved='predef::Crypto.MD5'>Crypto.MD5</ref>.</p>   </text></group></doc>   <method name='build_csr'> - <arguments><argument name='sign'><type><object resolved='predef::Crypto.Sign'>Crypto.Sign</object></type></argument><argument name='name'><type><object resolved='predef::Standards.ASN1.Types.Sequence'>Sequence</object></type></argument><argument name='attributes'><type><mapping><indextype><string/></indextype><valuetype><array><valuetype><object resolved='predef::Standards.ASN1.Types.Object'>Object</object></valuetype></array></valuetype></mapping></type></argument><argument name='hash'><type><or><object resolved='predef::Crypto.Hash'>Crypto.Hash</object><void/></or></type></argument></arguments> + <arguments><argument name='sign'><type><object resolved='predef::Crypto.Sign'>Crypto.Sign</object></type></argument><argument name='name'><type><object resolved='predef::Standards.ASN1.Types.Sequence'>Sequence</object></type></argument><argument name='attributes'><type><mapping><indextype><string/></indextype><valuetype><array><valuetype><object resolved='predef::Object'>Object</object></valuetype></array></valuetype></mapping></type></argument><argument name='hash'><type><or><object resolved='predef::Crypto.Hash'>Crypto.Hash</object><void/></or></type></argument></arguments>   <returntype><object resolved='predef::Standards.ASN1.Types.Sequence'>Sequence</object></returntype>   </method>   </docgroup>   <docgroup homogen-name='' homogen-type='import'>   <import name=''><classname resolved='predef::'>predef::</classname></import>   </docgroup>   <docgroup homogen-name='Types' homogen-type='import'>   <import name='Types'><classname resolved='predef::Standards.ASN1.Types'>Standards.ASN1.Types</classname></import>   </docgroup>   <docgroup homogen-name='sign_cri' homogen-type='method'><doc><text><p>Sign a <ref resolved='predef::Standards.PKCS.CSR.CRI'>CRI</ref> to generate a Certificate Signing Request.</p>
autodoc.git/modref.xml:119609:   <p>Setting</p>   <p> The signature.</p>   </text></doc>   <variable name='signature'><type><object resolved='predef::Standards.ASN1.Types.BitString'>BitString</object></type></variable>   </docgroup>   <docgroup homogen-name='tbs' homogen-type='variable'><doc><text><p>Getting</p>   <p> ASN.1 structure that has been signed.</p>   <p>Setting</p>   <p> ASN.1 structure that has been signed.</p>   </text></doc> - <variable name='tbs'><type><object resolved='predef::Standards.ASN1.Types.Object'>Object</object></type></variable> + <variable name='tbs'><type><object resolved='predef::Object'>Object</object></type></variable>   </docgroup>   </class>   </module>   </module>   <module name='TLD'>   <docgroup homogen-name='cc' homogen-type='constant'><doc><text><p>A mapping between country TLDs and the name of the country.</p>   </text></doc>   <constant name='cc'/>   </docgroup>   <docgroup homogen-name='generic' homogen-type='variable'><doc><text><p>A multiset containing the generic TLDs, such as "com" and "info".</p>
autodoc.git/modref.xml:120120:   <method name='load_authorities'>   <arguments><argument name='root_cert_dirs'><type><or><string/><array><valuetype><string/></valuetype></array><void/></or></type></argument><argument name='cache'><type><or><int><min>0</min><max>1</max></int><void/></or></type></argument></arguments>   <returntype><mapping><indextype><string/></indextype><valuetype><array><valuetype><object resolved='predef::Standards.X509.Verifier'>Verifier</object></valuetype></array></valuetype></mapping></returntype>   </method>   </docgroup>   <docgroup homogen-name='make_extension' homogen-type='method'><doc><text><p>Creates a certificate extension with the <ref resolved='predef::Standards.X509.make_extension.id'>id</ref> as identifier and    <ref resolved='predef::Standards.X509.make_extension.ext'>ext</ref> as the extension payload. If the <ref resolved='predef::Standards.X509.make_extension.critical'>critical</ref> flag is set    the extension will be marked as critical.</p>   </text></doc>   <method name='make_extension'> - <arguments><argument name='id'><type><object resolved='predef::Standards.ASN1.Types.Identifier'>Identifier</object></type></argument><argument name='ext'><type><object resolved='predef::Standards.ASN1.Types.Object'>Object</object></type></argument><argument name='critical'><type><or><void/><int/></or></type></argument></arguments> + <arguments><argument name='id'><type><object resolved='predef::Standards.ASN1.Types.Identifier'>Identifier</object></type></argument><argument name='ext'><type><object resolved='predef::Object'>Object</object></type></argument><argument name='critical'><type><or><void/><int/></or></type></argument></arguments>   <returntype><object resolved='predef::Standards.ASN1.Types.Sequence'>Sequence</object></returntype>   </method>   </docgroup>   <docgroup homogen-name='make_selfsigned_certificate' homogen-type='method'><doc><text><p>Creates a selfsigned certificate, i.e. where issuer and subject    are the same entity. This entity is derived from the list of pairs    in <ref resolved='predef::Standards.X509.make_selfsigned_certificate.name'>name</ref>, which is encoded into an distinguished_name by    <ref resolved='predef::Standards.PKCS.Certificate.build_distinguished_name'>Standards.PKCS.Certificate.build_distinguished_name</ref>.</p>   </text><group><param name='c'/><text><p>The public key cipher used for the certificate, <ref resolved='predef::Crypto.RSA'>Crypto.RSA</ref>,    <ref resolved='predef::Crypto.DSA'>Crypto.DSA</ref> or <ref resolved='predef::Crypto.ECC.Curve.ECDSA'>Crypto.ECC.Curve.ECDSA</ref>. The object should be    initialized with both public and private keys.</p>
autodoc.git/modref.xml:120404:   </docgroup>   <docgroup homogen-name='ext_subjectKeyIdentifier' homogen-type='variable'><doc><text><p>Set to the value of the SubjectKeyIdentifier if the certificate    contains the subjectKeyIdentifier    extension. <rfc>3280:4.2.1.2</rfc>.</p>   </text></doc>   <variable name='ext_subjectKeyIdentifier'><type><string/></type></variable>   </docgroup>   <docgroup homogen-name='extensions' homogen-type='variable'><doc><group><note/><text><p>optional</p>   </text></group><group><note/><text><p>Read only</p>   </text></group></doc> - <variable name='extensions'><type><mapping><indextype><object resolved='predef::Standards.ASN1.Types.Identifier'>Identifier</object></indextype><valuetype><object resolved='predef::Standards.ASN1.Types.Object'>Object</object></valuetype></mapping></type></variable> + <variable name='extensions'><type><mapping><indextype><object resolved='predef::Standards.ASN1.Types.Identifier'>Identifier</object></indextype><valuetype><object resolved='predef::Object'>Object</object></valuetype></mapping></type></variable>   </docgroup>   <docgroup homogen-name='hash' homogen-type='variable'><doc><text><p>Algorithm hash if known and supported.    Otherwise <ref resolved='predef::.UNDEFINED'>UNDEFINED</ref>.</p>   </text><group><note/><text><p>Read only</p>   </text></group></doc>   <variable name='hash'><type><object resolved='predef::Crypto.Hash'>Crypto.Hash</object></type></variable>   </docgroup>   <docgroup homogen-name='Sequence' homogen-type='inherit'>   <inherit name='Sequence'><classname resolved='predef::Standards.ASN1.Types.Sequence'>Sequence</classname></inherit>   </docgroup>   <docgroup homogen-name='init' homogen-type='method'><doc><text><p>Populates the object from a certificate decoded into an ASN.1    Object. Returns the object on success, otherwise <expr>0</expr>. You    probably want to call <ref resolved='predef::Standards.X509.decode_certificate'>decode_certificate</ref> or even    <ref resolved='predef::Standards.X509.verify_certificate'>verify_certificate</ref>.</p>   </text></doc>   <method name='init'> - <arguments><argument name='asn1'><type><or><array/><object resolved='predef::Standards.ASN1.Types.Object'>Object</object></or></type></argument></arguments> + <arguments><argument name='asn1'><type><or><array/><object resolved='predef::Object'>Object</object></or></type></argument></arguments>   <returntype><object resolved='predef::Standards.X509.TBSCertificate'>this_program</object></returntype>   </method>   </docgroup>   <docgroup homogen-name='internal_critical' homogen-type='variable'><doc><group><note/><text><p>optional</p>   </text></group></doc>   <variable name='internal_critical'><modifiers><protected/></modifiers><type><multiset/></type></variable>   </docgroup>   <docgroup homogen-name='internal_extensions' homogen-type='variable'><doc><group><note/><text><p>optional</p>   </text></group></doc> - <variable name='internal_extensions'><modifiers><protected/></modifiers><type><mapping><indextype><object resolved='predef::Standards.ASN1.Types.Identifier'>Identifier</object></indextype><valuetype><object resolved='predef::Standards.ASN1.Types.Object'>Object</object></valuetype></mapping></type></variable> + <variable name='internal_extensions'><modifiers><protected/></modifiers><type><mapping><indextype><object resolved='predef::Standards.ASN1.Types.Identifier'>Identifier</object></indextype><valuetype><object resolved='predef::Object'>Object</object></valuetype></mapping></type></variable>   </docgroup>   <docgroup homogen-name='issuer' homogen-type='variable'><doc><text><p>Certificate issuer.</p>   </text></doc>   <variable name='issuer'><type><void/></type></variable>   </docgroup>   <docgroup homogen-name='issuer_id' homogen-type='variable'><doc><group><note/><text><p>optional</p>   </text></group></doc>   <variable name='issuer_id'><type><void/></type></variable>   </docgroup>   <docgroup homogen-name='keyinfo' homogen-type='variable'>
autodoc.git/modref.xml:138653:    the server specific backends. It's also possible that floats in    some cases are represented in other ways if too much precision is    lost in the conversion to pike floats.</p>   </text></group></ul>   </text></section>   </text><group><note/><text><p>For historical reasons, there may be server specific backends that    operate differently from what is described here, e.g. some that    return a bit of typed data in untyped mode.</p>   </text></group><group><note/><text><p>Typed operation was not supported at all prior to Pike 7.8.363,    and may not be supported for all databases.</p> + </text></group><group><seealso/><text><p><ref resolved='predef::Sql.Connection'>Sql.Connection</ref>, <ref resolved='predef::Sql.Sql'>Sql.Sql()</ref>, <ref resolved='predef::__builtin.Sql.Result'>Result</ref></p>   </text></group></doc>   <docgroup homogen-name='big_query' homogen-type='method'><doc><text><p>Send an SQL query synchronously to the SQL-server and return    the results in untyped mode.</p>   </text><group><param name='q'/><text><p>Query to send to the SQL-server. This can either be a string with the    query, or a previously compiled query (see <ref resolved='predef::__builtin.Sql.Connection.compile_query'>compile_query()</ref>).</p>   </text></group><group><returns/><text><p>The result is returned as an <ref resolved='predef::Sql.sql_result'>Sql.sql_result</ref> object in untyped    mode. This allows for having some more info about the result as    well as processing the result in a streaming fashion, although the    result itself wasn't obtained streamingly from the server.</p>   <p> Returns <expr>0</expr> if the query didn't return any result
autodoc.git/modref.xml:138836:   <docgroup homogen-name='create' homogen-type='method'><doc><text><p>Create a new SQL connection.</p>   </text><group><param name='host'/><text><mixed><group><type><string/></type><text><p>Connect to the server specified.</p>   </text></group><group><type><int><min>0</min><max>0</max></int></type><text><p>Access through a UNIX-domain socket or similar.</p>   </text></group></mixed>   </text></group><group><param name='db'/><text><p>Select this database.</p>   </text></group><group><param name='user'/><text><p>User name to access the database as.</p>   </text></group><group><param name='password'/><text><p>Password to access the database.</p>   </text></group><group><param name='options'/><text><p>Optional mapping of options.    See the SQL-database documentation for the supported options.    (eg <ref resolved='predef::Mysql.mysql.create'>Mysql.mysql()-&gt;create()</ref>).</p> + </text></group><group><note/><text><p>This function is typically called via <ref resolved='predef::Sql.Sql'>Sql.Sql()</ref>.</p>   </text></group><group><note/><text><p>Support for <ref resolved='predef::__builtin.Sql.Connection.create.options'>options</ref> was added in Pike 7.3.</p>   </text></group><group><note/><text><p>The base class (<ref resolved='predef::__builtin.Sql.Connection'>__builtin.Sql.Connection</ref>) only has a prototype.</p> -  + </text></group><group><seealso/><text><p><ref resolved='predef::Sql.Sql'>Sql.Sql()</ref></p>   </text></group></doc>   <method name='create'>   <arguments><argument name='host'><type><string/></type></argument></arguments>   <returntype><void/></returntype>   </method>   <method name='create'>   <arguments><argument name='host'><type><string/></type></argument><argument name='db'><type><string/></type></argument></arguments>   <returntype><void/></returntype>   </method>   <method name='create'>
autodoc.git/modref.xml:139412:    differs between different databases.</p>   </text></doc>   <variable name='index'><type><int/></type></variable>   </docgroup>   <docgroup homogen-name='next_result' homogen-type='method'><doc><text><p>Switch to the next set of results.</p>   <p> Some databases support returning more than one set of results.    This function terminates the current result and switches to    the next (if any).</p>   </text><group><returns/><text><p>Returns the <ref>sql_result</ref> object if there were more results,    and <expr>0</expr> (zero) otherwise.</p> - </text></group><group><throws/><text><p>May throw the same errors as <ref resolved='predef::Sql.Sql.big_query'>Sql.Sql()-&gt;big_query()</ref> et al.</p> + </text></group><group><throws/><text><p>May throw the same errors as <ref>Sql.Sql()-&gt;big_query()</ref> et al.</p>   </text></group></doc>   <method name='next_result'>   <arguments/>   <returntype><object resolved='predef::__builtin.Sql.Result'>this_program</object></returntype>   </method>   </docgroup>   <docgroup homogen-name='num_fields' homogen-type='method'><doc><text><p>Returns the number of fields in the result.</p>   </text></doc>   <method name='num_fields'>   <arguments/>