Merge branch 'master' of git://factorcode.org/git/factor
commit
bb32cc3eff
|
@ -96,9 +96,9 @@ M: ppc %epilogue ( n -- )
|
||||||
1 1 rot ADDI
|
1 1 rot ADDI
|
||||||
0 MTLR ;
|
0 MTLR ;
|
||||||
|
|
||||||
: (%call) ( -- ) 11 MTLR BLRL ;
|
: (%call) ( reg -- ) MTLR BLRL ;
|
||||||
|
|
||||||
: (%jump) ( -- ) 11 MTCTR BCTR ;
|
: (%jump) ( reg -- ) MTCTR BCTR ;
|
||||||
|
|
||||||
: %load-dlsym ( symbol dll register -- )
|
: %load-dlsym ( symbol dll register -- )
|
||||||
0 swap LOAD32 rc-absolute-ppc-2/2 rel-dlsym ;
|
0 swap LOAD32 rc-absolute-ppc-2/2 rel-dlsym ;
|
||||||
|
@ -117,7 +117,7 @@ M: ppc %dispatch ( -- )
|
||||||
"offset" operand "n" operand 1 SRAWI
|
"offset" operand "n" operand 1 SRAWI
|
||||||
11 11 "offset" operand ADD
|
11 11 "offset" operand ADD
|
||||||
11 dup 6 cells LWZ
|
11 dup 6 cells LWZ
|
||||||
(%jump)
|
11 (%jump)
|
||||||
] H{
|
] H{
|
||||||
{ +input+ { { f "n" } } }
|
{ +input+ { { f "n" } } }
|
||||||
{ +scratch+ { { f "offset" } } }
|
{ +scratch+ { { f "offset" } } }
|
||||||
|
@ -244,17 +244,17 @@ M: ppc %prepare-alien-invoke
|
||||||
rs-reg 11 12 STW ;
|
rs-reg 11 12 STW ;
|
||||||
|
|
||||||
M: ppc %alien-invoke ( symbol dll -- )
|
M: ppc %alien-invoke ( symbol dll -- )
|
||||||
11 %load-dlsym (%call) ;
|
11 %load-dlsym 11 (%call) ;
|
||||||
|
|
||||||
M: ppc %alien-callback ( quot -- )
|
M: ppc %alien-callback ( quot -- )
|
||||||
3 load-indirect "c_to_factor" f %alien-invoke ;
|
3 load-indirect "c_to_factor" f %alien-invoke ;
|
||||||
|
|
||||||
M: ppc %prepare-alien-indirect ( -- )
|
M: ppc %prepare-alien-indirect ( -- )
|
||||||
"unbox_alien" f %alien-invoke
|
"unbox_alien" f %alien-invoke
|
||||||
3 11 MR ;
|
13 3 MR ;
|
||||||
|
|
||||||
M: ppc %alien-indirect ( -- )
|
M: ppc %alien-indirect ( -- )
|
||||||
(%call) ;
|
13 (%call) ;
|
||||||
|
|
||||||
M: ppc %callback-value ( ctype -- )
|
M: ppc %callback-value ( ctype -- )
|
||||||
! Save top of data stack
|
! Save top of data stack
|
||||||
|
|
|
@ -285,7 +285,7 @@ ARTICLE: "db-custom-database-combinators" "Custom database combinators"
|
||||||
{ $code <"
|
{ $code <"
|
||||||
USING: db.sqlite db io.files ;
|
USING: db.sqlite db io.files ;
|
||||||
: with-sqlite-db ( quot -- )
|
: with-sqlite-db ( quot -- )
|
||||||
"my-database.db" temp-file <sqlite-db> swap with-db ;"> }
|
"my-database.db" temp-file <sqlite-db> swap with-db ; inline"> }
|
||||||
|
|
||||||
"PostgreSQL example combinator:"
|
"PostgreSQL example combinator:"
|
||||||
{ $code <" USING: db.postgresql db ;
|
{ $code <" USING: db.postgresql db ;
|
||||||
|
@ -296,7 +296,7 @@ USING: db.sqlite db io.files ;
|
||||||
"erg" >>username
|
"erg" >>username
|
||||||
"secrets?" >>password
|
"secrets?" >>password
|
||||||
"factor-test" >>database
|
"factor-test" >>database
|
||||||
swap with-db ;">
|
swap with-db ; inline">
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
ABOUT: "db"
|
ABOUT: "db"
|
||||||
|
|
|
@ -22,14 +22,13 @@ HOOK: db-close db ( handle -- )
|
||||||
|
|
||||||
: dispose-statements ( assoc -- ) values dispose-each ;
|
: dispose-statements ( assoc -- ) values dispose-each ;
|
||||||
|
|
||||||
: db-dispose ( db -- )
|
M: db dispose ( db -- )
|
||||||
dup db [
|
dup db [
|
||||||
{
|
[ dispose-statements H{ } clone ] change-insert-statements
|
||||||
[ insert-statements>> dispose-statements ]
|
[ dispose-statements H{ } clone ] change-update-statements
|
||||||
[ update-statements>> dispose-statements ]
|
[ dispose-statements H{ } clone ] change-delete-statements
|
||||||
[ delete-statements>> dispose-statements ]
|
[ db-close f ] change-handle
|
||||||
[ handle>> db-close ]
|
drop
|
||||||
} cleave
|
|
||||||
] with-variable ;
|
] with-variable ;
|
||||||
|
|
||||||
TUPLE: result-set sql in-params out-params handle n max ;
|
TUPLE: result-set sql in-params out-params handle n max ;
|
||||||
|
|
|
@ -30,8 +30,8 @@ M: postgresql-db db-open ( db -- db )
|
||||||
[ password>> ]
|
[ password>> ]
|
||||||
} cleave connect-postgres >>handle ;
|
} cleave connect-postgres >>handle ;
|
||||||
|
|
||||||
M: postgresql-db dispose ( db -- )
|
M: postgresql-db db-close ( handle -- )
|
||||||
handle>> PQfinish ;
|
PQfinish ;
|
||||||
|
|
||||||
M: postgresql-statement bind-statement* ( statement -- ) drop ;
|
M: postgresql-statement bind-statement* ( statement -- ) drop ;
|
||||||
|
|
||||||
|
|
|
@ -19,7 +19,6 @@ M: sqlite-db db-open ( db -- db )
|
||||||
dup path>> sqlite-open >>handle ;
|
dup path>> sqlite-open >>handle ;
|
||||||
|
|
||||||
M: sqlite-db db-close ( handle -- ) sqlite-close ;
|
M: sqlite-db db-close ( handle -- ) sqlite-close ;
|
||||||
M: sqlite-db dispose ( db -- ) db-dispose ;
|
|
||||||
|
|
||||||
TUPLE: sqlite-statement < statement ;
|
TUPLE: sqlite-statement < statement ;
|
||||||
|
|
||||||
|
@ -87,9 +86,11 @@ M: sqlite-statement bind-tuple ( tuple statement -- )
|
||||||
in-params>> [ sqlite-bind-conversion ] with map
|
in-params>> [ sqlite-bind-conversion ] with map
|
||||||
] keep bind-statement ;
|
] keep bind-statement ;
|
||||||
|
|
||||||
|
ERROR: sqlite-last-id-fail ;
|
||||||
|
|
||||||
: last-insert-id ( -- id )
|
: last-insert-id ( -- id )
|
||||||
db get handle>> sqlite3_last_insert_rowid
|
db get handle>> sqlite3_last_insert_rowid
|
||||||
dup zero? [ "last-id failed" throw ] when ;
|
dup zero? [ sqlite-last-id-fail ] when ;
|
||||||
|
|
||||||
M: sqlite-db insert-tuple-set-key ( tuple statement -- )
|
M: sqlite-db insert-tuple-set-key ( tuple statement -- )
|
||||||
execute-statement last-insert-id swap set-primary-key ;
|
execute-statement last-insert-id swap set-primary-key ;
|
||||||
|
|
Loading…
Reference in New Issue