X-Git-Url: http://git.kpe.io/?p=clsql.git;a=blobdiff_plain;f=doc%2Fref-fdml.xml;h=c512cdb020f9d0829e16bfe5396a1d7a26f52e51;hp=ca725bdd492e25973f4169adadabcb56f9f57bd1;hb=55f590bf6f5298e59aae30f02c958388f483da02;hpb=4413405fd38eaba7ba6d6d8b844fef118e326c9a diff --git a/doc/ref-fdml.xml b/doc/ref-fdml.xml index ca725bd..c512cdb 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") @@ -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 order-by set-operation where result-types field-names flatp refresh caching database => result Arguments and Values @@ -1164,6 +1280,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 @@ -1252,7 +1397,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 +1406,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"] @@ -1309,7 +1454,7 @@ ID FORENAME SURNAME EMAIL :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 +1465,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 +1825,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 +2033,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]])