utilities for enabling and disabling the square bracket reader
syntax and for constructing symbolic SQL expressions.
</para>
+ <tip>
+ <title>Tip: just want it on</title>
+ <simpara>
+ <link linkend="file-enable-sql-reader-syntax"><function>file-enable-sql-reader-syntax</function></link> at the top of each file is easiest.
+ </simpara>
+ </tip>
</partintro>
<refentry id="enable-sql-reader-syntax">
<refentrytitle>ENABLE-SQL-READER-SYNTAX</refentrytitle>
</refmeta>
<refnamediv>
- <refname><emphasis>Macro</emphasis> <emphasis role="bold">ENABLE-SQL-READER-SYNTAX</emphasis></refname>
+ <refname>ENABLE-SQL-READER-SYNTAX</refname>
<refpurpose>Globally enable square bracket reader syntax.</refpurpose>
<refclass>Macro</refclass>
</refnamediv>
<para>
Modifies the default readtable.
</para>
+ <warning>
+ <para>
+ &clsql; tries to keep track of whether the syntax has already been enabled. This can be problematic if the syntax is somehow disabled externally to &clsql; as future attempts to enable the syntax will do nothing--the system thinks it is already enabled. This may happen if there is an enable, but no disable, in a file that is processed with load or compile-file as the lisp implementation will restore the readtable on completion. Or, even if there is a disable but a compiler-error is encountered before running the disable. If you encounter this try running <link linkend="disable-sql-reader-syntax"><function>disable-sql-reader-syntax</function></link> a couple times in the REPL.
+ </para>
+ <para>See <link linkend="file-enable-sql-reader-syntax"><function>file-enable-sql-reader-syntax</function></link> for an alternative.</para>
+ </warning>
</refsect1>
<refsect1>
<title>Affected by</title>
<member><link linkend="locally-enable-sql-reader-syntax"><function>locally-enable-sql-reader-syntax</function></link></member>
<member><link linkend="locally-disable-sql-reader-syntax"><function>locally-disable-sql-reader-syntax</function></link></member>
<member><link linkend="restore-sql-reader-syntax-state"><function>restore-sql-reader-syntax-state</function></link></member>
+ <member><link linkend="file-enable-sql-reader-syntax"><function>file-enable-sql-reader-syntax</function></link></member>
</simplelist>
</refsect1>
<refsect1>
<refentrytitle>DISABLE-SQL-READER-SYNTAX</refentrytitle>
</refmeta>
<refnamediv>
- <refname><emphasis>Macro</emphasis> <emphasis role="bold">DISABLE-SQL-READER-SYNTAX</emphasis></refname>
+ <refname>DISABLE-SQL-READER-SYNTAX</refname>
<refpurpose>Globally disable square bracket reader syntax.</refpurpose>
<refclass>Macro</refclass>
</refnamediv>
<member><link linkend="locally-enable-sql-reader-syntax"><function>locally-enable-sql-reader-syntax</function></link></member>
<member><link linkend="locally-disable-sql-reader-syntax"><function>locally-disable-sql-reader-syntax</function></link></member>
<member><link linkend="restore-sql-reader-syntax-state"><function>restore-sql-reader-syntax-state</function></link></member>
+ <member><link linkend="file-enable-sql-reader-syntax"><function>file-enable-sql-reader-syntax</function></link></member>
</simplelist>
</refsect1>
<refsect1>
<refentrytitle>LOCALLY-ENABLE-SQL-READER-SYNTAX</refentrytitle>
</refmeta>
<refnamediv>
- <refname><emphasis>Macro</emphasis> <emphasis role="bold">LOCALLY-ENABLE-SQL-READER-SYNTAX</emphasis></refname>
- <refpurpose>Globally enable square bracket reader syntax.</refpurpose>
+ <refname>LOCALLY-ENABLE-SQL-READER-SYNTAX</refname>
+ <refpurpose>Locally enable square bracket reader syntax.</refpurpose>
<refclass>Macro</refclass>
</refnamediv>
<refsect1>
<para>
Modifies the default readtable.
</para>
+ <warning>
+ <para>
+ &clsql; tries to keep track of whether the syntax has already been enabled. This can be problematic if the syntax is somehow disabled externally to &clsql; as future attempts to enable the syntax will do nothing--the system thinks it is already enabled. This may happen if there is an enable, but no disable, in a file that is processed with load or compile-file as the lisp implementation will restore the readtable on completion. Or, even if there is a disable but a compiler-error is encountered before running the disable. If you encounter this try running <link linkend="disable-sql-reader-syntax"><function>disable-sql-reader-syntax</function></link> a couple times in the REPL.
+ </para>
+ <para>See <link linkend="file-enable-sql-reader-syntax"><function>file-enable-sql-reader-syntax</function></link> for an alternative.</para>
+ </warning>
</refsect1>
<refsect1>
<title>Affected by</title>
<member><link linkend="disable-sql-reader-syntax"><function>disable-sql-reader-syntax</function></link></member>
<member><link linkend="locally-disable-sql-reader-syntax"><function>locally-disable-sql-reader-syntax</function></link></member>
<member><link linkend="restore-sql-reader-syntax-state"><function>restore-sql-reader-syntax-state</function></link></member>
+ <member><link linkend="file-enable-sql-reader-syntax"><function>file-enable-sql-reader-syntax</function></link></member>
</simplelist>
</refsect1>
<refsect1>
<refentrytitle>LOCALLY-DISABLE-SQL-READER-SYNTAX</refentrytitle>
</refmeta>
<refnamediv>
- <refname><emphasis>Macro</emphasis> <emphasis role="bold">LOCALLY-DISABLE-SQL-READER-SYNTAX</emphasis></refname>
+ <refname>LOCALLY-DISABLE-SQL-READER-SYNTAX</refname>
<refpurpose>Locally disable square bracket reader syntax.</refpurpose>
<refclass>Macro</refclass>
</refnamediv>
<member><link linkend="disable-sql-reader-syntax"><function>disable-sql-reader-syntax</function></link></member>
<member><link linkend="locally-enable-sql-reader-syntax"><function>locally-enable-sql-reader-syntax</function></link></member>
<member><link linkend="restore-sql-reader-syntax-state"><function>restore-sql-reader-syntax-state</function></link></member>
+ <member><link linkend="file-enable-sql-reader-syntax"><function>file-enable-sql-reader-syntax</function></link></member>
</simplelist>
</refsect1>
<refsect1>
<refentrytitle>RESTORE-SQL-READER-SYNTAX-STATE</refentrytitle>
</refmeta>
<refnamediv>
- <refname><emphasis>Macro</emphasis> <emphasis role="bold">RESTORE-SQL-READER-SYNTAX-STATE</emphasis></refname>
+ <refname>RESTORE-SQL-READER-SYNTAX-STATE</refname>
<refpurpose>
Restore square bracket reader syntax to its previous state.
</refpurpose>
<member><link linkend="disable-sql-reader-syntax"><function>disable-sql-reader-syntax</function></link></member>
<member><link linkend="locally-enable-sql-reader-syntax"><function>locally-enable-sql-reader-syntax</function></link></member>
<member><link linkend="locally-disable-sql-reader-syntax"><function>locally-disable-sql-reader-syntax</function></link></member>
+ <member><link linkend="file-enable-sql-reader-syntax"><function>file-enable-sql-reader-syntax</function></link></member>
</simplelist>
</refsect1>
<refsect1>
</refsect1>
</refentry>
+ <refentry id="file-enable-sql-reader-syntax">
+ <refmeta>
+ <refentrytitle>FILE-ENABLE-SQL-READER-SYNTAX</refentrytitle>
+ </refmeta>
+ <refnamediv>
+ <refname>FILE-ENABLE-SQL-READER-SYNTAX</refname>
+ <refpurpose>
+ Enable the square bracket reader syntax for the duration of the file.
+ </refpurpose>
+ <refclass>Macro</refclass>
+ </refnamediv>
+ <refsect1>
+ <title>Syntax</title>
+ <synopsis>
+ <function>file-enable-sql-reader-syntax</function> => <returnvalue></returnvalue></synopsis>
+ </refsect1>
+ <refsect1>
+ <title>Arguments and Values</title>
+ <para>None.</para>
+ </refsect1>
+ <refsect1>
+ <title>Description</title>
+ <para>Uncoditionally enables the SQL reader syntax. Unlike <link
+ linkend="enable-sql-reader-syntax">
+ <function>enable-sql-reader-syntax</function></link> and <link
+ linkend="disable-sql-reader-syntax">
+ <function>disable-sql-reader-syntax</function></link> which try to keep track of whether
+ the syntax has been enabled or disabled and keep track of the old read-table for restoration this function just enables it unconditionally.
+ </para>
+ <para>Once enabled this way there is no corresponding disable function but instead relies on being used in a file context. The spec for <ulink url="http://www.lispworks.com/documentation/lw51/CLHS/Body/f_load.htm">load</ulink> and <ulink url="http://www.lispworks.com/documentation/lw51/CLHS/Body/f_cmp_fi.htm">compile-file</ulink> states that the *readtable* will be restored after processing the file.</para>
+ </refsect1>
+ <refsect1>
+ <title>Examples</title>
+ <para>Intended to be used at the top of a file that contains sql reader syntax.</para>
+ <screen>
+ (in-package :my-package)
+ (clsql:file-enable-sql-reader-syntax)
+ ...
+ ;;functions that use the square bracket syntax.
+ </screen>
+ </refsect1>
+ <refsect1>
+ <title>Side Effects</title>
+ <para>
+ Modifies the readtable for #\[ and #\]
+ </para>
+ </refsect1>
+ <refsect1>
+ <title>Affected by</title>
+ <para>None.</para>
+ </refsect1>
+ <refsect1>
+ <title>Exceptional Situations</title>
+ <para>
+ None.
+ </para>
+ </refsect1>
+ <refsect1>
+ <title>See Also</title>
+ <simplelist>
+ <member><link linkend="enable-sql-reader-syntax"><function>enable-sql-reader-syntax</function></link></member>
+ <member><link linkend="disable-sql-reader-syntax"><function>disable-sql-reader-syntax</function></link></member>
+ <member><link linkend="locally-enable-sql-reader-syntax"><function>locally-enable-sql-reader-syntax</function></link></member>
+ <member><link linkend="locally-disable-sql-reader-syntax"><function>locally-disable-sql-reader-syntax</function></link></member>
+ </simplelist>
+ </refsect1>
+ <refsect1>
+ <title>Notes</title>
+ <para>
+ Unique to &clsql;, not present in &commonsql;.
+ </para>
+ </refsect1>
+ </refentry>
+
<refentry id="sql">
<refmeta>
<refentrytitle>SQL</refentrytitle>
</refmeta>
<refnamediv>
- <refname><emphasis>Function</emphasis> <emphasis role="bold">SQL</emphasis></refname>
+ <refname>SQL</refname>
<refpurpose>Construct an SQL string from supplied expressions.</refpurpose>
<refclass>Function</refclass>
</refnamediv>
<refentrytitle>SQL-EXPRESSION</refentrytitle>
</refmeta>
<refnamediv>
- <refname><emphasis>Function</emphasis> <emphasis role="bold">SQL-EXPRESSION</emphasis></refname>
+ <refname>SQL-EXPRESSION</refname>
<refpurpose>Constructs an SQL expression from supplied keyword arguments.</refpurpose>
<refclass>Function</refclass>
</refnamediv>
<refentrytitle>SQL-OPERATION</refentrytitle>
</refmeta>
<refnamediv>
- <refname><emphasis>Function</emphasis> <emphasis role="bold">SQL-OPERATION</emphasis></refname>
+ <refname>SQL-OPERATION</refname>
<refpurpose>Constructs an SQL expression from a supplied operator and arguments.</refpurpose>
<refclass>Function</refclass>
</refnamediv>
<refentrytitle>SQL-OPERATOR</refentrytitle>
</refmeta>
<refnamediv>
- <refname><emphasis>Function</emphasis> <emphasis role="bold">SQL-OPERATOR</emphasis></refname>
+ <refname>SQL-OPERATOR</refname>
<refpurpose>Returns the symbol for the supplied SQL operator.</refpurpose>
<refclass>Function</refclass>
</refnamediv>
</para>
<simplelist>
<!-- CommonSQL Compatible -->
- <member><function>any
- </function></member>,
- <member><function>some
- </function></member>,
- <member><function>all
- </function></member>,
- <member><function>not
- </function></member>,
- <member><function>union
- </function></member>,
- <member><function>intersect
- </function></member>,
- <member><function>minus
- </function></member>,
+ <member><function>any</function></member>
+ <member><function>some</function></member>
+ <member><function>all</function></member>
+ <member><function>not</function></member>
+ <member><function>union</function></member>
+ <member><function>intersect</function></member>
+ <member><function>minus</function></member>
<member><function>except
- </function></member>,
+ </function></member>
<member><function>order-by
- </function></member>,
+ </function></member>
<member><function>null
- </function></member>,
+ </function></member>
<member><function>*
- </function></member>,
+ </function></member>
<member><function>+
- </function></member>,
+ </function></member>
<member><function>/
- </function></member>,
+ </function></member>
<member><function>-
- </function></member>,
+ </function></member>
<member><function>like
- </function></member>,
+ </function></member>
<member><function>and
- </function></member>,
+ </function></member>
<member><function>or
- </function></member>,
+ </function></member>
<member><function>in
- </function></member>,
+ </function></member>
<member><function>substr
- </function></member>,
+ </function></member>
<member><function>||
- </function></member>,
+ </function></member>
<member><function>=
- </function></member>,
+ </function></member>
<member><function><
- </function></member>,
+ </function></member>
<member><function>>
- </function></member>,
+ </function></member>
<member><function>>=
- </function></member>,
+ </function></member>
<member><function><=
- </function></member>,
+ </function></member>
<member><function><>
- </function></member>,
+ </function></member>
<member><function>count
- </function></member>,
+ </function></member>
<member><function>max
- </function></member>,
+ </function></member>
<member><function>min
- </function></member>,
+ </function></member>
<member><function>avg
- </function></member>,
+ </function></member>
<member><function>sum
- </function></member>,
+ </function></member>
<member><function>function
- </function></member>,
+ </function></member>
<member><function>between
- </function></member>,
+ </function></member>
<member><function>distinct
- </function></member>,
+ </function></member>
<member><function>nvl
- </function></member>,
+ </function></member>
<member><function>slot-value
- </function></member>,
+ </function></member>
<member><function>userenv
- </function></member>,
+ </function></member>
</simplelist>
<para>
as well as the pseudo-operator <function>function</function>.
<simplelist>
<!-- CLSQL Extensions -->
<member><function>concat
- </function></member>,
+ </function></member>
<member><function>substring
- </function></member>,
+ </function></member>
<member><function>limit
- </function></member>,
+ </function></member>
<member><function>group-by
- </function></member>,
+ </function></member>
<member><function>having
- </function></member>,
+ </function></member>
<member><function>not-null
- </function></member>,
+ </function></member>
<member><function>exists
- </function></member>,
+ </function></member>
<member><function>uplike
- </function></member>,
+ </function></member>
<member><function>is
- </function></member>,
+ </function></member>
<member><function>==
- </function></member>,
+ </function></member>
<member><function>the
- </function></member>,
+ </function></member>
<member><function>coalesce
- </function></member>,
- <member><function>view-class.
+ </function></member>
+ <member><function>view-class
</function></member>
</simplelist>
</para>