Changeset 21512 in project


Ignore:
Timestamp:
11/17/10 17:10:12 (10 years ago)
Author:
sjamaan
Message:

postgresql: Fix problem with reading of composite values with trailing NULLs

Location:
release/4/postgresql/trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • release/4/postgresql/trunk/postgresql.scm

    r21492 r21512  
    232232  (lambda (str)
    233233    (let loop ((chars (cdr (string->list (string-trim str)))) ; skip leading (
     234               (maybe-null? #f)
    234235               (result (list))
    235236               (parsers element-parsers))
    236237      (case (car chars)
    237         ((#\)) (reverse! result))                ; Done
     238        ((#\)) (reverse! (if maybe-null?
     239                             (cons (sql-null) result)
     240                             result)))
    238241        ((#\") (let consume-string ((chars (cdr chars))
    239242                                    (consumed (list)))
     
    250253                                  ((#\,)
    251254                                   (loop (cdr chars)
     255                                         #t
    252256                                         (cons ((car parsers)
    253257                                                (reverse-list->string consumed))
     
    255259                                         (cdr parsers)))
    256260                                  ((#\)) (loop chars
     261                                               #f
    257262                                               (cons ((car parsers)
    258263                                                      (reverse-list->string consumed))
     
    269274                (case (car chars)
    270275                  ((#\,) (loop (cdr chars)
     276                               #t
    271277                               (cons (parse (reverse-list->string consumed)
    272278                                            (car parsers))
     
    275281                  ;; Nothing should precede this one
    276282                  ((#\)) (loop chars
     283                               #f
    277284                               (cons (parse (reverse-list->string consumed)
    278285                                            (car parsers))
  • release/4/postgresql/trunk/tests/run.scm

    r21490 r21512  
    305305  (test "anonymous composite type ('record')"
    306306        '("one" "two")
    307         (value-at (query conn "SELECT ROW('one', 'two')"))))
     307        (value-at (query conn "SELECT ROW('one', 'two')")))
     308
     309  (test "anonymous composite type ('record') with NULL"
     310        `("one" ,(sql-null))
     311        (value-at (query conn "SELECT ROW('one', NULL)"))))
    308312
    309313(test-group "value escaping"
Note: See TracChangeset for help on using the changeset viewer.