X-Git-Url: http://git.kpe.io/?a=blobdiff_plain;ds=sidebyside;f=doc%2Fref-fdml.xml;h=7113b6a98e3022056dcf050ecdc53a25520f44ab;hb=refs%2Ftags%2Fv4.3.2;hp=ca725bdd492e25973f4169adadabcb56f9f57bd1;hpb=4413405fd38eaba7ba6d6d8b844fef118e326c9a;p=clsql.git
diff --git a/doc/ref-fdml.xml b/doc/ref-fdml.xml
index ca725bd..7113b6a 100644
--- a/doc/ref-fdml.xml
+++ b/doc/ref-fdml.xml
@@ -96,10 +96,126 @@
CACHE-TABLE-QUERIES
Control the caching of table attribute types.
+ Function
Syntax
+
+ cache-table-queries table &key action database =>
+
+
+ Arguments and Values
+
+
+ table
+
+
+ A string representing a database table, &t; or
+ :default.
+
+
+
+
+ action
+
+
+ &t;, &nil; or :flush.
+
+
+
+
+ database
+
+ A
+ database
+ object. This will default to the value
+ of *default-database*.
+
+
+
+
+
+ Description
+ Controls the caching of attribute type information on the
+ table specified by table in
+ database which defaults to
+ *default-database*. action
+ specifies the caching behaviour to adopt. If its value is &t;
+ then attribute type information is cached whereas if its value
+ is &nil; then attribute type information is not cached. If
+ action is :flush then
+ all existing type information in the cache for
+ table is removed, but caching is still
+ enabled. table may be a string
+ representing a table for which the caching action is to be taken
+ while the caching action is applied to all tables if
+ table is &t;. Alternatively, when
+ table is :default, the
+ default caching action specified by
+ *cache-table-queries-default* is applied to all
+ tables for which a caching action has not been explicitly set.
+
+
+
+ Examples
+
+(setf *cache-table-queries-default* t)
+=> T
+(create-table [foo]
+ '(([id] integer)
+ ([height] float)
+ ([name] (string 24))
+ ([comments] varchar)))
+=>
+(cache-table-queries "foo")
+=>
+(list-attribute-types "foo")
+=> (("id" :INT4 4 NIL 1) ("height" :FLOAT8 8 NIL 1) ("name" :BPCHAR 24 NIL 1)
+ ("comments" :VARCHAR 255 NIL 1))
+(drop-table "foo")
+=>
+(create-table [foo]
+ '(([id] integer)
+ ([height] float)
+ ([name] (string 36))
+ ([comments] (string 100))))
+=>
+(cache-table-queries "foo" :action :flush)
+=>
+(list-attribute-types "foo")
+=> (("id" :INT4 4 NIL 1) ("height" :FLOAT8 8 NIL 1) ("name" :BPCHAR 36 NIL 1)
+ ("comments" :BPCHAR 100 NIL 1))
+
+
+
+ Side Effects
+
+ The internal attribute cache for
+ database is modified.
+
+
+
+ Affected by
+
+ *cache-table-queries-default*
+
+
+
+ Exceptional Situations
+ None.
+
+
+
+ See Also
+
+ *cache-table-queries-default*
+
+
+
+ Notes
+
+ None.
@@ -370,7 +486,7 @@
:from [employee]
:where [= [emplid] 1]
:field-names nil)
-=> (("Vladamir" "Lenin" "lenin@soviet.org"))
+=> (("Vladimir" "Lenin" "lenin@soviet.org"))
(update-records [employee]
:av-pairs'((first_name "Yuri")
(last_name "Gagarin")
@@ -692,7 +808,7 @@
A
field type
- specifier. The default is &nil;.
+ specifier. The default is :auto;.
The purpose of this argument is cause &clsql; to
@@ -788,22 +904,22 @@
Examples
(query "select emplid,first_name,last_name,height from employee where emplid = 1")
-=> ((1 "Vladamir" "Lenin" 1.5564661d0)),
+=> ((1 "Vladimir" "Lenin" 1.5564661d0)),
("emplid" "first_name" "last_name" "height")
(query "select emplid,first_name,last_name,height from employee where emplid = 1"
:field-names nil)
-=> ((1 "Vladamir" "Lenin" 1.5564661d0))
+=> ((1 "Vladimir" "Lenin" 1.5564661d0))
(query "select emplid,first_name,last_name,height from employee where emplid = 1"
:field-names nil
:result-types nil)
-=> (("1" "Vladamir" "Lenin" "1.5564661"))
+=> (("1" "Vladimir" "Lenin" "1.5564661"))
(query "select emplid,first_name,last_name,height from employee where emplid = 1"
:field-names nil
:result-types '(:int t t :double))
-=> ((1 "Vladamir" "Lenin" 1.5564661))
+=> ((1 "Vladimir" "Lenin" 1.5564661))
(query "select last_name from employee where emplid > 5" :flatp t)
=> ("Andropov" "Chernenko" "Gorbachev" "Yeltsin" "Putin"),
@@ -949,7 +1065,7 @@
:where [< [emplid] 5]]
:titles '("ID" "FORENAME" "SURNAME" "EMAIL"))
ID FORENAME SURNAME EMAIL
-1 Vladamir Lenin lenin@soviet.org
+1 Vladimir Lenin lenin@soviet.org
2 Josef Stalin stalin@soviet.org
3 Leon Trotsky trotsky@soviet.org
4 Nikita Kruschev kruschev@soviet.org
@@ -963,7 +1079,7 @@ ID FORENAME SURNAME EMAIL
7 Konstantin Chernenko chernenko@soviet.org
8 Mikhail Gorbachev gorbachev@soviet.org
9 Boris Yeltsin yeltsin@soviet.org
-10 Vladamir Putin putin@soviet.org
+10 Vladimir Putin putin@soviet.org
=>
@@ -1017,7 +1133,7 @@ ID FORENAME SURNAME EMAIL
Syntax
- select &rest identifiers &key all distinct from group-by having order-by set-operation where result-types field-names flatp refresh database => result
+ select &rest identifiers &key all distinct from group-by having limit offset order-by set-operation where result-types field-names flatp refresh caching database => result
Arguments and Values
@@ -1072,6 +1188,22 @@ ID FORENAME SURNAME EMAIL
+
+ limit
+
+
+ A non-negative integer.
+
+
+
+
+ offset
+
+
+ A non-negative integer.
+
+
+
order-by
@@ -1116,7 +1248,7 @@ ID FORENAME SURNAME EMAIL
A
field type
- specifier. The default is &nil;.
+ specifier. The default is :auto.
The purpose of this argument is cause &clsql; to
@@ -1164,6 +1296,35 @@ ID FORENAME SURNAME EMAIL
+
+ refresh
+
+
+ This value is only considered when CLOS objects are being
+ selected. A boolean with a default value of &nil;. When
+ the value of the caching keyword is
+ &t;, a second equivalent select call
+ will return the same view class instance objects. When
+ refresh is &t;, then slots of the
+ existing instances are updated as necessary. In such
+ cases, you may wish to override the hook
+ instance-refresh.
+
+
+
+
+ caching
+
+
+ This value is only considered when CLOS objects are being
+ selected. A boolean with a default value of
+ *default-caching*. &clsql; caches
+ objects in accordance with the &commonsql; interface: a
+ second equivalent select call will
+ return the same view class instance objects.
+
+
+
result
@@ -1196,8 +1357,8 @@ ID FORENAME SURNAME EMAIL
specified lisp type. The keyword arguments
all, distinct,
from, group-by,
- having,
- order-by,
+ having, limit,
+ offset, order-by,
set-operation and
where are used to specify, using the
symbolic SQL syntax, the corresponding components of the SQL
@@ -1252,7 +1413,7 @@ ID FORENAME SURNAME EMAIL
:field-names nil
:result-types nil
:order-by [first-name])
-=> ("Boris" "Josef" "Konstantin" "Leon" "Leonid" "Mikhail" "Nikita" "Vladamir"
+=> ("Boris" "Josef" "Konstantin" "Leon" "Leonid" "Mikhail" "Nikita" "Vladimir"
"Yuri")
(select [first-name] [count [*]] :from [employee]
@@ -1261,7 +1422,7 @@ ID FORENAME SURNAME EMAIL
:order-by [first-name]
:field-names nil)
=> (("Boris" "1") ("Josef" "1") ("Konstantin" "1") ("Leon" "1") ("Leonid" "1")
- ("Mikhail" "1") ("Nikita" "1") ("Vladamir" "2") ("Yuri" "1"))
+ ("Mikhail" "1") ("Nikita" "1") ("Vladimir" "2") ("Yuri" "1"))
(select [last-name] :from [employee]
:where [like [email] "%org"]
@@ -1278,7 +1439,7 @@ ID FORENAME SURNAME EMAIL
:result-types :auto)
=> (10)
-(clsql:select [avg [height]] :from [employee] :flatp t :field-names nil)
+(select [avg [height]] :from [employee] :flatp t :field-names nil)
=> (1.58999584d0)
(select [emplid] [last-name] :from [employee] :where [= [emplid] 1])
@@ -1297,19 +1458,27 @@ ID FORENAME SURNAME EMAIL
:flatp t)
=> (1 2 3 4)
-(clsql:select [emplid] :from [employee]
- :where [in [emplid] '(1 2 3 4)]
- :flatp t
- :order-by [emplid]
- :field-names nil)
+(select [emplid] :from [employee]
+ :where [in [emplid] '(1 2 3 4)]
+ :flatp t
+ :order-by [emplid]
+ :field-names nil)
=> (1 2 3 4)
+(select [emplid] :from [employee]
+ :order-by [emplid]
+ :limit 5
+ :offset 3
+ :field-names nil
+ :flatp t)
+=> (4 5 6 7 8)
+
(select [first-name] [last-name] :from [employee]
:field-names nil
:order-by '(([first-name] :asc) ([last-name] :desc)))
=> (("Boris" "Yeltsin") ("Josef" "Stalin") ("Konstantin" "Chernenko")
("Leon" "Trotsky") ("Leonid" "Brezhnev") ("Mikhail" "Gorbachev")
- ("Nikita" "Kruschev") ("Vladamir" "Putin") ("Vladamir" "Lenin")
+ ("Nikita" "Kruschev") ("Vladimir" "Putin") ("Vladimir" "Lenin")
("Yuri" "Andropov"))
(select [last-name] :from [employee]
@@ -1320,7 +1489,7 @@ ID FORENAME SURNAME EMAIL
:field-names nil)
=> ("Andropov" "Boris" "Brezhnev" "Chernenko" "Gorbachev" "Josef" "Konstantin"
"Kruschev" "Lenin" "Leon" "Leonid" "Mikhail" "Nikita" "Putin" "Stalin"
- "Trotsky" "Vladamir" "Yeltsin" "Yuri")
+ "Trotsky" "Vladimir" "Yeltsin" "Yuri")
@@ -1680,7 +1849,7 @@ ID FORENAME SURNAME EMAIL
:order-by [last-name]]
collect (concatenate 'string forename " " surname))
=> ("Yuri Andropov" "Leonid Brezhnev" "Konstantin Chernenko" "Mikhail Gorbachev"
- "Nikita Kruschev" "Vladamir Lenin" "Vladamir Putin" "Josef Stalin"
+ "Nikita Kruschev" "Vladimir Lenin" "Vladimir Putin" "Josef Stalin"
"Leon Trotsky" "Boris Yeltsin")
(loop for (e) being the records in
@@ -1888,8 +2057,8 @@ ID FORENAME SURNAME EMAIL
[select [first-name] [last-name] :from [employee]
:order-by [last-name]])
=> (("Yuri" "Andropov") ("Leonid" "Brezhnev") ("Konstantin" "Chernenko")
- ("Mikhail" "Gorbachev") ("Nikita" "Kruschev") ("Vladamir" "Lenin")
- ("Vladamir" "Putin") ("Josef" "Stalin") ("Leon" "Trotsky")
+ ("Mikhail" "Gorbachev") ("Nikita" "Kruschev") ("Vladimir" "Lenin")
+ ("Vladimir" "Putin") ("Josef" "Stalin") ("Leon" "Trotsky")
("Boris" "Yeltsin"))
(map-query 'list #'last-name [select 'employee :order-by [emplid]])