Some corrections and additions in readyness for 1.0 release.

git-svn-id: https://svn.php.net/repository/phpdoc/en/trunk@132738 c90b9560-bf6c-de11-be94-00142212c4b1
This commit is contained in:
Wez Furlong 2003-06-21 13:24:58 +00:00
parent 5ceab02627
commit 6564dbbe4a
8 changed files with 217 additions and 22 deletions

View file

@ -1,13 +1,14 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- $Revision: 1.3 $ -->
<refentry id="function.sqlite-register-aggregate">
<!-- $Revision: 1.1 $ -->
<refentry id="function.sqlite-create-aggregate">
<refnamediv>
<refname>sqlite_register_aggregate</refname>
<refpurpose>Register an aggregating UDF for use in SQL statements</refpurpose></refnamediv>
<refname>sqlite_create_aggregate</refname>
<refpurpose>Register an aggregating UDF for use in SQL statements</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<methodsynopsis>
<type>bool</type><methodname>sqlite_register_aggregate</methodname>
<type>bool</type><methodname>sqlite_create_aggregate</methodname>
<methodparam><type>resource</type><parameter>db</parameter></methodparam>
<methodparam><type>string</type><parameter>function_name</parameter></methodparam>
<methodparam><type>mixed</type><parameter>step_func</parameter></methodparam>
@ -15,7 +16,7 @@
<methodparam choice="opt"><type>int</type><parameter>num_args</parameter></methodparam>
</methodsynopsis>
<para>
<function>sqlite_register_aggregate</function> is similar to
<function>sqlite_create_aggregate</function> is similar to
<function>sqlite_create_function</function> except that it registers
functions that can be used to calculate a result aggregated across all the
rows of a query.
@ -92,6 +93,14 @@ var_dump(sqlite_array_query($db, 'SELECT max_len(a) from strings'));
though, we have been calculating the result as the query progressed, so we
simply need to return the context value.
</para>
<note>
<para>
The example above will not work correctly if the column contains binary
data. Take a look at the manual page for
<function>sqlite_udf_decode_binary</function> for an explanation of why
this is so, and an example of how to make it respect the binary encoding.
</para>
</note>
<tip>
<para>
It is NOT recommended for you to store a copy of the values in the context
@ -101,8 +110,17 @@ var_dump(sqlite_array_query($db, 'SELECT max_len(a) from strings'));
in length.
</para>
</tip>
<tip>
<para>
You can use <function>sqlite_create_function</function> and
<function>sqlite_create_aggregate</function> to override SQLite native
SQL functions.
</para>
</tip>
<para>
See also <function>sqlite_create_function</function>.
See also <function>sqlite_create_function</function>,
<function>sqlite_udf_encode_binary</function> and
<function>sqlite_udf_decode_binary</function>.
</para>
</refsect1>
</refentry>

View file

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- $Revision: 1.3 $ -->
<!-- $Revision: 1.4 $ -->
<refentry id="function.sqlite-create-function">
<refnamediv>
<refname>sqlite_create_function</refname>
@ -90,7 +90,8 @@ $rows = sqlite_array_query($db, "SELECT php('md5', filename) from files");
For performance reasons, PHP will not automatically encode/decode binary
data passed to and from your UDF's. You need to manually encode/decode
the parameters and return values if you need to process binary data in
this way.
this way. Take a look at <function>sqlite_udf_encode_binary</function>
and <function>sqlite_udf_decode_binary</function> for more details.
</para>
</note>
<tip>
@ -100,8 +101,15 @@ $rows = sqlite_array_query($db, "SELECT php('md5', filename) from files");
application.
</para>
</tip>
<tip>
<para>
You can use <function>sqlite_create_function</function> and
<function>sqlite_create_aggregate</function> to override SQLite native
SQL functions.
</para>
</tip>
<para>
See also <function>sqlite_register_aggregate</function>.
See also <function>sqlite_create_aggregate</function>.
</para>
</refsect1>
</refentry>

View file

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- $Revision: 1.3 $ -->
<!-- $Revision: 1.4 $ -->
<refentry id="function.sqlite-escape-string">
<refnamediv>
<refname>sqlite_escape_string</refname>
@ -39,6 +39,14 @@
when retrieving your data.
</simpara>
</warning>
<note>
<simpara>
Do not use this function to encode the return values from UDF's created
using <function>sqlite_create_function</function> or
<function>sqlite_create_aggregate</function> - use
<function>sqlite_udf_encode_binary</function> instead.
</simpara>
</note>
</refsect1>
</refentry>
<!-- Keep this comment at the end of the file

View file

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- $Revision: 1.3 $ -->
<!-- $Revision: 1.4 $ -->
<refentry id="function.sqlite-libencoding">
<refnamediv>
<refname>sqlite_libencoding</refname>
@ -32,12 +32,14 @@
example), and some comparison operations may still not be carried out
correctly.
</para>
<para>
It is not recommended that you use PHP in a web-server configuration
with a version of the SQLite library compiled with UTF-8 support, since
libsqlite will abort the process if it detects a problem with the
UTF-8 encoding.
</para>
<warning>
<para>
It is not recommended that you use PHP in a web-server configuration
with a version of the SQLite library compiled with UTF-8 support, since
libsqlite will abort the process if it detects a problem with the
UTF-8 encoding.
</para>
</warning>
<para>
See also <function>sqlite_libversion</function>.
</para>

View file

@ -0,0 +1,98 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- $Revision: 1.1 $ -->
<refentry id="function.sqlite-udf-decode-binary">
<refnamediv>
<refname>sqlite_udf_decode_binary</refname>
<refpurpose>Decode binary data passed as parameters to an UDF</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<methodsynopsis>
<type>string</type><methodname>sqlite_udf_decode_binary</methodname>
<methodparam><type>string</type><parameter>data</parameter></methodparam>
</methodsynopsis>
<para>
<function>sqlite_udf_decode_binary</function> decodes the binary encoding
that was applied to the parameter by either
<function>sqlite_udf_encode_binary</function> or
<function>sqlite_escape_string</function>.
</para>
<para>
You must call this function on parameters passed to your UDF if you need
them to handle binary data, as the binary encoding employed by PHP will
obscure the content and of the parameter in its natural, non-coded form.
</para>
<para>
PHP does not perform this encode/decode operation automatically as it would
severely impact performance if it did.
</para>
<para>
<example>
<title>binary-safe max_length aggregation function example</title>
<programlisting role="php">
<![CDATA[
<?php
$data = array(
'one',
'two',
'three',
'four'
'five'
'six',
'seven',
'eight',
'nine'
'ten'
);
$db = sqlite_open(':memory:');
sqlite_query($db, "CREATE TABLE strings(a)");
foreach ($data as $str) {
sqlite_query($db, "INSERT INTO strings VALUES('" .
sqlite_escape_string($str) . "')");
}
function max_len_step(&$context, $string) {
$string = sqlite_udf_decode_binary($string);
if (strlen($string) > $context) {
$context = strlen($string);
}
}
function max_len_finalize(&$context) {
return $context;
}
sqlite_create_aggregate($db, 'max_len', 'max_len_step', 'max_len_finalize');
var_dump(sqlite_array_query($db, 'SELECT max_len(a) from strings'));
?>]]>
</programlisting>
</example>
</para>
<para>
See also <function>sqlite_udf_encode_binary</function>,
<function>sqlite_create_function</function> and
<function>sqlite_create_aggregate</function>.
</para>
</refsect1>
</refentry>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
sgml-parent-document:nil
sgml-default-dtd-file:"../../manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->

View file

@ -0,0 +1,62 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- $Revision: 1.1 $ -->
<refentry id="function.sqlite-udf-encode-binary">
<refnamediv>
<refname>sqlite_udf_encode_binary</refname>
<refpurpose>Encode binary data before returning it from an UDF</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<methodsynopsis>
<type>string</type><methodname>sqlite_udf_encode_binary</methodname>
<methodparam><type>string</type><parameter>data</parameter></methodparam>
</methodsynopsis>
<para>
<function>sqlite_udf_encode_binary</function> applies a binary encoding
to the <parameter>data</parameter> so that it can be safely returned from
queries (since the underlying libsqlite API is not binary safe).
</para>
<para>
If there is a chance that your data might be binary unsafe (eg: it
contains a NUL byte in the middle rather than at the end, or if it has and
<literal>0x01</literal> byte as the first character) then you must
call this function to encode the return value from your UDF.
</para>
<para>
PHP does not perform this encode/decode operation automatically as it would
severely impact performance if it did.
</para>
<note>
<para>
Do not use <function>sqlite_escape_string</function> to quote strings
returned from UDF's as it will lead to double-quoting of the data. Use
this function instead!
</para>
</note>
<para>
See also <function>sqlite_udf_decode_binary</function>,
<function>sqlite_escape_string</function>,
<function>sqlite_create_function</function> and
<function>sqlite_create_aggregate</function>.
</para>
</refsect1>
</refentry>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
sgml-parent-document:nil
sgml-default-dtd-file:"../../manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->

View file

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- $Revision: 1.2 $ -->
<!-- $Revision: 1.3 $ -->
<section id="sqlite.configuration">
&reftitle.runtime;
&extension.runtime;
@ -18,7 +18,7 @@
<row>
<entry>sqlite.assoc_case</entry>
<entry>0</entry>
<entry>PHP_INI_SYSTEM</entry>
<entry>PHP_INI_ALL</entry>
</row>
</tbody>
</tgroup>

View file

@ -1,11 +1,10 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- $Revision: 1.5 $ -->
<!-- $Revision: 1.6 $ -->
<reference id="ref.sqlite">
<title>SQLite</title>
<titleabbrev>SQLite</titleabbrev>
<partintro>
&warn.experimental;
<section id="sqlite.intro">
&reftitle.intro;
<para>