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