;;;; -*- Mode: LISP; Syntax: ANSI-Common-Lisp; Base: 10 -*-
;;;; *************************************************************************
-;;;; $Id: $
+;;;;
+;;;; $Id$
+;;;;
+;;;; Base SQL functions
+;;;;
+;;;; This file is part of CLSQL.
+;;;;
+;;;; CLSQL users are granted the rights to distribute and use this software
+;;;; as governed by the terms of the Lisp Lesser GNU Public License
+;;;; (http://opensource.franz.com/preamble.html), also known as the LLGPL.
+;;;; *************************************************************************
-(in-package #:clsql-base-sys)
+(in-package #:clsql-base)
;;; Query
that expression and a list of field names selected in sql-exp."))
(defmethod query ((query-expression string) &key (database *default-database*)
- (result-types nil) (flatp nil))
- (record-sql-command query-expression database)
- (let* ((res (database-query query-expression database result-types))
- (res (if (and flatp (= (length
- (slot-value query-expression 'selections))
- 1))
- (mapcar #'car res)
- res)))
- (record-sql-result res database)
- res))
+ (result-types :auto) (flatp nil) (field-names t))
+ (record-sql-action query-expression :query database)
+ (multiple-value-bind (rows names) (database-query query-expression database result-types
+ field-names)
+ (let ((result (if (and flatp (= 1 (length (car rows))))
+ (mapcar #'car rows)
+ rows)))
+ (record-sql-action result :result database)
+ (if field-names
+ (values result names)
+ result))))
;;; Execute
(defmethod execute-command ((sql-expression string)
&key (database *default-database*))
- (record-sql-command sql-expression database)
+ (record-sql-action sql-expression :command database)
(let ((res (database-execute-command sql-expression database)))
- (record-sql-result res database))
+ (record-sql-action res :result database))
(values))
+;;; Large objects support
+
+(defun create-large-object (&key (database *default-database*))
+ "Creates a new large object in the database and returns the object identifier"
+ (database-create-large-object database))
+
+(defun write-large-object (object-id data &key (database *default-database*))
+ "Writes data to the large object"
+ (database-write-large-object object-id data database))
+
+(defun read-large-object (object-id &key (database *default-database*))
+ "Reads the large object content"
+ (database-read-large-object object-id database))
+
+(defun delete-large-object (object-id &key (database *default-database*))
+ "Deletes the large object in the database"
+ (database-delete-large-object object-id database))