Changeset 14759 for release/4/postgresql/trunk/postgresql.scm
- Timestamp:
- 05/24/09 20:58:12 (16 months ago)
- Files:
-
- 1 modified
-
release/4/postgresql/trunk/postgresql.scm (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
release/4/postgresql/trunk/postgresql.scm
r14758 r14759 38 38 escape-string escape-bytea unescape-bytea 39 39 40 query-fold query-fold* query-for-each query-for-each*) 40 query-fold query-fold* query-fold-right query-fold-right* 41 query-for-each query-for-each* query-map query-map*) 41 42 42 43 (import chicken scheme foreign) … … 743 744 (loop (kons (result-values result row) seed) (add1 row)))))) 744 745 746 (define (query-fold-right kons knil conn query #!optional (params '())) 747 (let* ((result (exec-query conn query params)) 748 (rows (result-row-count result))) 749 (let loop ((seed knil) 750 (row 0)) 751 (if (= row rows) 752 seed 753 (kons (result-values result row) (loop seed (add1 row))))))) 754 745 755 (define (query-fold* kons knil conn query #!optional (params '())) 746 756 (query-fold (lambda (values seed) (apply kons (append values (list seed)))) 747 757 knil conn query params)) 758 (define (query-fold-right* kons knil conn query #!optional (params '())) 759 (query-fold-right (lambda (val seed) (apply kons (append val (list seed)))) 760 knil conn query params)) 748 761 749 762 (define (query-for-each proc conn query #!optional (params '())) … … 755 768 (void)) 756 769 770 ;; Like regular Scheme map, the order in which the procedure is applied is 771 ;; undefined. We make good use of that by traversing the resultset from 772 ;; the end back to the beginning, thereby avoiding a reverse! on the result. 773 (define (query-map proc conn query #!optional (params '())) 774 (let ((result (exec-query conn query params))) 775 (let loop ((output '()) 776 (row (result-row-count result))) 777 (if (= row 0) 778 output 779 (loop (cons (proc (result-values result (sub1 row))) output) 780 (sub1 row)))))) 781 782 (define (query-map* proc conn query #!optional (params '())) 783 (query-map (lambda (values seed) (apply proc values)) #f conn query params)) 784 757 785 )
