5 Utilities
The bindings described in this section are provided by the specific modules below, not by db or db/base.
5.1 Datetime Type Utilities
(require db/util/datetime) | package: db-lib |
procedure
(sql-datetime->srfi-date t) → srfi:date?
t : (or/c sql-date? sql-time? sql-timestamp?)
procedure
(srfi-date->sql-date d) → sql-date?
d : srfi:date?
procedure
(srfi-date->sql-time d) → sql-time?
d : srfi:date?
procedure
d : srfi:date?
procedure
d : srfi:date?
procedure
d : srfi:date?
> (sql-datetime->srfi-date (query-value pgc "select time '7:30'")) date-year-day: TIME-ERROR type invalid-month-specification:
0
> (sql-datetime->srfi-date (query-value pgc "select date '25-dec-1980'")) eval: unable to replay evaluation of
(sql-datetime->srfi-date (query-value pgc "select date
'25-dec-1980'"))
> (sql-datetime->srfi-date (query-value pgc "select timestamp 'epoch'")) eval: unable to replay evaluation of
(sql-datetime->srfi-date (query-value pgc "select timestamp
'epoch'"))
procedure
(sql-day-time-interval->seconds interval) → rational?
interval : sql-day-time-interval?
5.2 Geometric Types
(require db/util/geometry) | package: db-lib |
The following structures and functions deal with geometric values based on the OpenGIS (ISO 19125) model.
Note: Geometric columns defined using the PostGIS extension to PostgreSQL are not directly supported. Instead, data should be exchanged in the Well-Known Binary format; conversion of the following structures to and from WKB format is supported by the wkb->geometry and geometry->wkb functions.
struct
(struct line-string (points))
points : (listof point?)
struct
exterior : linear-ring? interiors : (listof linear-ring?)
struct
(struct multi-point (elements))
elements : (listof point?)
struct
(struct multi-line-string (elements))
elements : (listof line-string?)
struct
(struct multi-polygon (elements))
elements : (listof polygon?)
struct
(struct geometry-collection (elements))
elements : (listof geometry2d?)
procedure
(geometry2d? x) → boolean?
x : any/c
procedure
(linear-ring? x) → boolean?
x : any/c
procedure
(geometry->wkb g #:big-endian? big-endian?) → bytes?
g : geometry2d? big-endian? : (system-big-endian?)
procedure
(wkb->geometry b) → geometry2d?
b : bytes?
5.3 PostgreSQL-specific Types
(require db/util/postgresql) | package: db-lib |
struct
(struct pg-array ( dimensions dimension-lengths dimension-lower-bounds contents)) dimensions : exact-nonnegative-integer? dimension-lengths : (listof exact-positive-integer?) dimension-lower-bounds : (listof exact-integer?) contents : vector?
procedure
(pg-array-ref arr index ...+) → any/c
arr : pg-array? index : exact-integer?
procedure
(pg-array->list arr) → list?
arr : pg-array?
procedure
(list->pg-array lst) → pg-array?
lst : list?
struct
(struct pg-empty-range ())
The lb and ub fields must have the same type; the permissible types are exact integers, real numbers, and sql-timestamps. Either or both bounds may also be #f, which indicates the range is unbounded on that end.
procedure
(pg-range-or-empty? v) → boolean?
v : any/c
| ‹uuid› | ::= | ‹digit16›{8,8} - ‹digit16›{4,4} - ‹digit16›{4,4} - ‹digit16›{4,4} - ‹digit16›{12,12} |
The digits themselves are case-insensitive, accepting both uppercase and lowercase characters. Otherwise, if v is not a string matching the above pattern, this function returns #f.
Added in version 1.1 of package db-lib.
struct
ne : point? sw : point?
struct
closed? : boolean? points : (listof point?)
struct
center : point? radius : real?
Note: PostgreSQL’s built-in geometric types are distinct from those provided by the PostGIS extension library (see Geometric Types).
5.4 Cassandra-Specific Functionality
(require db/util/cassandra) | package: db-lib |
parameter
→
(or/c 'any 'one 'two 'three 'quorum 'all 'local-quorum 'each-quorum 'serial 'local-serial 'local-one) (cassandra-consistency consistency) → void?
consistency :
(or/c 'any 'one 'two 'three 'quorum 'all 'local-quorum 'each-quorum 'serial 'local-serial 'local-one)
The default consistency level is 'one.
5.5 Testing Database Programs
(require db/util/testing) | package: db-lib |
This module provides utilities for testing programs that use database connections.
procedure
(high-latency-connection connection latency [ #:sleep-atomic? sleep-atomic?]) → connection? connection : connection? latency : (>=/c 0) sleep-atomic? : any/c = #f
Use this function in performance testing to roughly simulate environments with high-latency communication with a database back end.
If sleep-atomic? is true, then the proxy enters atomic mode before sleeping, to better simulate the effect of a long-running FFI call (see FFI-Based Connections and Concurrency). Even so, it may not accurately simulate an ODBC connection that internally uses cursors to fetch data on demand, as each fetch would introduce additional latency.