Changeset 14760 for release/4/postgresql/trunk/postgresql.scm
- Timestamp:
- 05/24/09 21:58:38 (16 months ago)
- Files:
-
- 1 modified
-
release/4/postgresql/trunk/postgresql.scm (modified) (12 diffs)
Legend:
- Unmodified
- Added
- Removed
-
release/4/postgresql/trunk/postgresql.scm
r14759 r14760 30 30 31 31 result? clear-result! result-row-count result-column-count 32 result-column-index result-column result-column-format33 result-column- type result-column-type-modifier result-columns32 result-column-index result-column-name result-column-names 33 result-column-format result-column-type result-column-type-modifier 34 34 result-table-oid result-table-column-index 35 result-value result-values result-alist result-affected-rows 36 result-inserted-oid invalid-oid 35 result-value result-row result-row-alist result-column 36 result-affected-rows result-inserted-oid 37 38 invalid-oid 37 39 38 40 escape-string escape-bytea unescape-bytea … … 389 391 location (sprintf "Result row ~A out of bounds" index) result index))) 390 392 391 (define (result-column result index)393 (define (result-column-name result index) 392 394 (check-result-column-index! result index 'result-column) 393 395 (string->symbol (PQfname (pg-result-ptr result) index))) 394 396 395 (define (result-column s result)397 (define (result-column-names result) 396 398 (let loop ((ptr (pg-result-ptr result)) 397 399 (row '()) … … 470 472 (result-value* result row column raw: raw)) 471 473 472 (define (result- valuesresult row #!key raw)474 (define (result-row result row #!key raw) 473 475 (check-result-row-index! result row 'result-list) 474 476 (let loop ((list '()) … … 479 481 (sub1 column))))) 480 482 483 (define (result-column result column #!key raw) 484 (check-result-column-index! result column 'result-list) 485 (let loop ((list '()) 486 (row (result-row-count result))) 487 (if (= row 0) 488 list 489 (loop (cons (result-value* result (sub1 row) column raw: raw) list) 490 (sub1 row))))) 491 481 492 ;; (define (result-alist result row) 482 ;; (map cons (result-columns result row) (result- valuesresult row)))483 (define (result- alist result row)493 ;; (map cons (result-columns result row) (result-row result row))) 494 (define (result-row-alist result row) 484 495 (check-result-row-index! result row 'result-alist) 485 496 (let loop ((alist '()) … … 542 553 ((member (PQresultStatus result) (list PGRES_BAD_RESPONSE 543 554 PGRES_FATAL_ERROR)) 544 (let* ((msg (string-trim-right (PQresultErrorMessage result))) 545 (get-error-field (lambda (diag) 546 (PQresultErrorField result diag))) 555 (let* ((get-error-field (lambda (d) (PQresultErrorField result d))) 547 556 (sqlstate (get-error-field PG_DIAG_SQLSTATE)) 548 557 (maybe-severity (get-error-field PG_DIAG_SEVERITY)) … … 552 561 (make-pg-condition 553 562 'collect-results 554 (conc "PQgetResult: " msg) 555 args: (list conn) 563 (PQresultErrorMessage result) 556 564 severity: (and maybe-severity 557 565 (string->symbol … … 684 692 " C_return(NULL);" 685 693 "}" 686 "C_return(to);" 687 )) 694 "C_return(to);")) 688 695 (or (%escape-string-conn conn str (string-length str)) 689 696 (postgresql-error 'escape-string … … 706 713 "res = C_string(&fin, tolen - 1, (char *)esc);" 707 714 "PQfreemem(esc);" 708 "C_return(res);" 709 )) 715 "C_return(res);")) 710 716 (or (%escape-bytea-conn conn str (string-length str)) 711 717 (postgresql-error 'escape-bytea … … 735 741 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 736 742 737 (define ( query-fold kons knil conn query #!optional (params '()))743 (define (%query-fold kons knil conn query params) 738 744 (let* ((result (exec-query conn query params)) 739 745 (rows (result-row-count result))) … … 742 748 (if (= row rows) 743 749 seed 744 (loop (kons (result- valuesresult row) seed) (add1 row))))))745 746 (define ( query-fold-right kons knil conn query #!optional (params '()))750 (loop (kons (result-row result row) seed) (add1 row)))))) 751 752 (define (%query-fold-right kons knil conn query params) 747 753 (let* ((result (exec-query conn query params)) 748 754 (rows (result-row-count result))) … … 751 757 (if (= row rows) 752 758 seed 753 (kons (result-values result row) (loop seed (add1 row))))))) 754 755 (define (query-fold* kons knil conn query #!optional (params '())) 756 (query-fold (lambda (values seed) (apply kons (append values (list seed)))) 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)) 761 762 (define (query-for-each proc conn query #!optional (params '())) 763 (query-fold (lambda (values seed) (proc values)) #f conn query params) 759 (kons (result-row result row) (loop seed (add1 row))))))) 760 761 (define (query-fold kons knil conn query . params) 762 (%query-fold kons knil conn query params)) 763 (define (query-fold* kons knil conn query . params) 764 (%query-fold (lambda (values seed) (apply kons (append values (list seed)))) 765 knil conn query params)) 766 (define (query-fold-right kons knil conn query . params) 767 (%query-fold-right kons knil conn query params)) 768 (define (query-fold-right* kons knil conn query . params) 769 (%query-fold-right (lambda (val seed) (apply kons (append val (list seed)))) 770 knil conn query params)) 771 772 (define (query-for-each proc conn query . params) 773 (%query-fold (lambda (values seed) (proc values)) #f conn query params) 764 774 (void)) 765 775 766 (define (query-for-each* proc conn query #!optional (params '()))767 ( query-fold (lambda (values seed) (apply proc values)) #f conn query params)776 (define (query-for-each* proc conn query . params) 777 (%query-fold (lambda (values seed) (apply proc values)) #f conn query params) 768 778 (void)) 769 779 … … 771 781 ;; undefined. We make good use of that by traversing the resultset from 772 782 ;; the end back to the beginning, thereby avoiding a reverse! on the result. 773 (define ( query-map proc conn query #!optional (params '()))783 (define (%query-map proc conn query params) 774 784 (let ((result (exec-query conn query params))) 775 (let loop (( output'())785 (let loop ((ans '()) 776 786 (row (result-row-count result))) 777 787 (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)) 788 ans 789 (loop (cons (proc (result-row result (sub1 row))) ans) (sub1 row)))))) 790 (define (query-map proc conn query . params) 791 (%query-map proc conn query params)) 792 793 (define (query-map* proc conn query . params) 794 (%query-map (lambda (values seed) (apply proc values)) conn query params)) 784 795 785 796 )
