Check-in [538cf8286e]
Not logged in

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

Overview
Comment:add sql field to sqlite3 statement
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA1: 538cf8286e5c52ed750f925af26c246346f21a95
User & Date: aldo 2019-04-11 18:15:56
Context
2024-09-27
18:19
updated irregex check-in: a8011c42a0 user: aldo tags: trunk
2019-04-11
18:15
add sql field to sqlite3 statement check-in: 538cf8286e user: aldo tags: trunk
2018-12-09
17:58
added library qrencode check-in: 7182389a97 user: aldo tags: trunk
Changes
Hide Diffs Unified Diffs Ignore Whitespace Patch

Changes to sqlite3.sls.

153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169

170
171
172
173
174
175
176
...
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
...
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
...
828
829
830
831
832
833
834









835
836
837
   (fields
    (mutable ptr)
    (mutable busy-handler)))

 (define-record-type statement
   (fields
    (mutable ptr)
    (mutable database)))

                                        ;(record-writer
                                        ; (type-descriptor statement)
                                        ; (lambda (r p wr)
                                        ;   (wr
                                        ;    (if (statement-ptr r)
                                        ;        (format "#<sqlite3:statement sql=~s>" (source-sql r))
                                        ;        "#<sqlite3:statement zombie>")
                                        ;    p)))


                                        ;(define-check+error-type statement)

;;; Helpers

 ;; Conditions
 (define rtd (record-type-descriptor &sqlite3))
................................................................................
     n))

 (define (sqlite3-next-stmt db)
   (check-database 'sqlite3-next-stmt db)
   (let* ([f (foreign-procedure "sqlite3_next_stmt" (sqlite3:database*) sqlite3:statement*)]
          [stmt* (f (database-addr db))])
     (make-statement (make-ftype-pointer sqlite3:statement* stmt*)
                     db)))

 (define finalize!
   (case-lambda
    [(x)
     (finalize! x #f)]
    [(x finalize-statements?)
     (define sqlite3_finalize (foreign-procedure "sqlite3_finalize" (sqlite3:statement*) int))
................................................................................
   (assert (and prepare (string? sql)))
   (let retry ([retries 0])
     (let* ([ptr (alloc-statement*)]
            [zSql (string->utf8 sql)]
            [nByte (bytevector-length zSql)]
            [e (sqlite3_prepare_v2 (database-addr db) zSql nByte (ftype-pointer-address ptr) #f)])
       (cond [(equal? e 0)
              (make-statement (ftype-&ref sqlite3:statement** (*) ptr) db)]
             [else
              (case (number->sqlite3:status e)
                #;[(busy)
                 (let ([h (database-busy-handler db)])
                   (cond
                    [(and h (h db retries))
                     (retry (fx+ retries 1))]
................................................................................
  (type-descriptor database)
  (lambda (r p wr)
    (wr
     (if (database-ptr r)
         "#<sqlite3:database>"
         "#<sqlite3:database zombie>")
     p)))










 ) ; library sqlite3








|
<
<
<
<
<
<
<
<
<
>







 







|







 







|







 







>
>
>
>
>
>
>
>
>



153
154
155
156
157
158
159
160









161
162
163
164
165
166
167
168
...
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
...
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
...
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
   (fields
    (mutable ptr)
    (mutable busy-handler)))

 (define-record-type statement
   (fields
    (mutable ptr)
    (mutable database)









    (mutable sql)))

                                        ;(define-check+error-type statement)

;;; Helpers

 ;; Conditions
 (define rtd (record-type-descriptor &sqlite3))
................................................................................
     n))

 (define (sqlite3-next-stmt db)
   (check-database 'sqlite3-next-stmt db)
   (let* ([f (foreign-procedure "sqlite3_next_stmt" (sqlite3:database*) sqlite3:statement*)]
          [stmt* (f (database-addr db))])
     (make-statement (make-ftype-pointer sqlite3:statement* stmt*)
                     db "")))

 (define finalize!
   (case-lambda
    [(x)
     (finalize! x #f)]
    [(x finalize-statements?)
     (define sqlite3_finalize (foreign-procedure "sqlite3_finalize" (sqlite3:statement*) int))
................................................................................
   (assert (and prepare (string? sql)))
   (let retry ([retries 0])
     (let* ([ptr (alloc-statement*)]
            [zSql (string->utf8 sql)]
            [nByte (bytevector-length zSql)]
            [e (sqlite3_prepare_v2 (database-addr db) zSql nByte (ftype-pointer-address ptr) #f)])
       (cond [(equal? e 0)
              (make-statement (ftype-&ref sqlite3:statement** (*) ptr) db sql)]
             [else
              (case (number->sqlite3:status e)
                #;[(busy)
                 (let ([h (database-busy-handler db)])
                   (cond
                    [(and h (h db retries))
                     (retry (fx+ retries 1))]
................................................................................
  (type-descriptor database)
  (lambda (r p wr)
    (wr
     (if (database-ptr r)
         "#<sqlite3:database>"
         "#<sqlite3:database zombie>")
     p)))
 (record-writer
  (type-descriptor statement)
  (lambda (r p wr)
    (wr
     (if (statement-ptr r)
         (format "#<sqlite3:statement sql=~s>" (statement-sql r))
         "#<sqlite3:statement zombie>")
     p)))


 ) ; library sqlite3