projects
/
clsql.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
r9438: avoid making new pointers
[clsql.git]
/
sql
/
operations.lisp
diff --git
a/sql/operations.lisp
b/sql/operations.lisp
index 9d8ef8d0b8ca4a4ce1f2be31b88b7f52e8ed1854..b4d3eab8db559a4848640a754e8e4882e36f093b 100644
(file)
--- a/
sql/operations.lisp
+++ b/
sql/operations.lisp
@@
-37,16
+37,16
@@
(apply #'make-query args))
(defsql sql-any (:symbol "any") (&rest rest)
(apply #'make-query args))
(defsql sql-any (:symbol "any") (&rest rest)
- (make-instance 'sql-
value
-exp
- :
modifier 'any :component
s rest))
+ (make-instance 'sql-
function
-exp
+ :
name 'any :arg
s rest))
(defsql sql-some (:symbol "some") (&rest rest)
(defsql sql-some (:symbol "some") (&rest rest)
- (make-instance 'sql-
value
-exp
- :
modifier 'some :component
s rest))
+ (make-instance 'sql-
function
-exp
+ :
name 'some :arg
s rest))
(defsql sql-all (:symbol "all") (&rest rest)
(defsql sql-all (:symbol "all") (&rest rest)
- (make-instance 'sql-
value
-exp
- :
modifier 'all :component
s rest))
+ (make-instance 'sql-
function
-exp
+ :
name 'all :arg
s rest))
(defsql sql-not (:symbol "not") (&rest rest)
(make-instance 'sql-value-exp
(defsql sql-not (:symbol "not") (&rest rest)
(make-instance 'sql-value-exp
@@
-65,8
+65,8
@@
:operator 'except :sub-expressions rest))
(defsql sql-minus (:symbol "minus") (&rest rest)
:operator 'except :sub-expressions rest))
(defsql sql-minus (:symbol "minus") (&rest rest)
- (make-instance 'sql-
value-exp
- :
modifier 'minus :component
s rest))
+ (make-instance 'sql-
set-exp
+ :
operator 'except :sub-expression
s rest))
(defsql sql-limit (:symbol "limit") (&rest rest)
(make-instance 'sql-query-modifier-exp
(defsql sql-limit (:symbol "limit") (&rest rest)
(make-instance 'sql-query-modifier-exp
@@
-95,8
+95,8
@@
:components '|NOT NULL|))
(defsql sql-exists (:symbol "exists") (&rest rest)
:components '|NOT NULL|))
(defsql sql-exists (:symbol "exists") (&rest rest)
- (make-instance 'sql-
value
-exp
- :
modifier 'exists :component
s rest))
+ (make-instance 'sql-
function
-exp
+ :
name 'exists :arg
s rest))
(defsql sql-* (:symbol "*") (&rest rest)
(if (zerop (length rest))
(defsql sql-* (:symbol "*") (&rest rest)
(if (zerop (length rest))
@@
-137,9
+137,9
@@
(defsql sql-in (:symbol "in") (&rest rest)
(make-instance 'sql-relational-exp
(defsql sql-in (:symbol "in") (&rest rest)
(make-instance 'sql-relational-exp
- :operator 'in :sub-expressions rest))
+
:operator 'in :sub-expressions rest))
-(defsql sql-concat (:symbol "
||
") (&rest rest)
+(defsql sql-concat (:symbol "
concat
") (&rest rest)
(make-instance 'sql-relational-exp
:operator '\|\| :sub-expressions rest))
(make-instance 'sql-relational-exp
:operator '\|\| :sub-expressions rest))
@@
-147,7
+147,7
@@
(if (= (length rest) 3)
(make-instance 'sql-function-exp
:name 'substring :args rest)
(if (= (length rest) 3)
(make-instance 'sql-function-exp
:name 'substring :args rest)
- (error '
clsql-sql-syntax-error
"SUBSTR must have 3 arguments.")))
+ (error '
sql-user-error :message
"SUBSTR must have 3 arguments.")))
(defsql sql-is (:symbol "is") (&rest rest)
(make-instance 'sql-relational-exp
(defsql sql-is (:symbol "is") (&rest rest)
(make-instance 'sql-relational-exp
@@
-213,9
+213,16
@@
(defsql sql-between (:symbol "between") (&rest rest)
(if (= (length rest) 3)
(make-instance 'sql-between-exp :name 'between :args rest)
(defsql sql-between (:symbol "between") (&rest rest)
(if (= (length rest) 3)
(make-instance 'sql-between-exp :name 'between :args rest)
- (error '
clsql-sql-syntax-error
"BETWEEN must have 3 arguments.")))
+ (error '
sql-user-error :message
"BETWEEN must have 3 arguments.")))
(defsql sql-distinct (:symbol "distinct") (&rest rest)
(make-instance 'sql-query-modifier-exp :modifier 'distinct
:components rest))
(defsql sql-distinct (:symbol "distinct") (&rest rest)
(make-instance 'sql-query-modifier-exp :modifier 'distinct
:components rest))
+(defsql sql-coalesce (:symbol "coalesce") (&rest rest)
+ (make-instance 'sql-function-exp
+ :name 'coalesce :args rest))
+
+(defsql sql-nvl (:symbol "nvl") (&rest rest)
+ (make-instance 'sql-function-exp
+ :name 'coalesce :args rest))