diff --git a/src/parser.lisp b/src/parser.lisp index d8e4609..c670923 100644 --- a/src/parser.lisp +++ b/src/parser.lisp @@ -924,12 +924,12 @@ (state-idx (pgloader.utils:make-pgstate)) (state-after (pgloader.utils:make-pgstate)) (pgloader.mysql:*cast-rules* ',casts) - (*myconn-host* ,myhost) + (*myconn-host* ',myhost) (*myconn-port* ,myport) (*myconn-user* ,myuser) (*myconn-pass* ,mypass) (*my-dbname* ,mydb) - (*pgconn-host* ,pghost) + (*pgconn-host* ',pghost) (*pgconn-port* ,pgport) (*pgconn-user* ,pguser) (*pgconn-pass* ,pgpass) @@ -1032,7 +1032,7 @@ load database `(lambda () (let* ((state-before (pgloader.utils:make-pgstate)) (*state* (pgloader.utils:make-pgstate)) - (*pgconn-host* ,host) + (*pgconn-host* ',host) (*pgconn-port* ,port) (*pgconn-user* ,user) (*pgconn-pass* ,password) @@ -1263,7 +1263,7 @@ load database `(lambda () (let* ((state-before (pgloader.utils:make-pgstate)) (*state* (pgloader.utils:make-pgstate)) - (*pgconn-host* ,host) + (*pgconn-host* ',host) (*pgconn-port* ,port) (*pgconn-user* ,user) (*pgconn-pass* ,password) @@ -1808,7 +1808,7 @@ load database (summary (null *state*)) (*state* (or *state* (pgloader.utils:make-pgstate))) (state-after ,(when after `(pgloader.utils:make-pgstate))) - (*pgconn-host* ,host) + (*pgconn-host* ',host) (*pgconn-port* ,port) (*pgconn-user* ,user) (*pgconn-pass* ,password) @@ -1880,7 +1880,7 @@ load database `(lambda () (let* ((state-before (pgloader.utils:make-pgstate)) (*state* (pgloader.utils:make-pgstate)) - (*pgconn-host* ,host) + (*pgconn-host* ',host) (*pgconn-port* ,port) (*pgconn-user* ,user) (*pgconn-pass* ,password) @@ -2051,7 +2051,7 @@ load database (parse 'db-connection-uri database-uri) (ecase type (:mysql - `(let* ((*myconn-host* ,host) + `(let* ((*myconn-host* ,(if (consp host) (list 'quote host) host)) (*myconn-port* ,port) (*myconn-user* ,user) (*myconn-pass* ,password) diff --git a/src/sources/mysql-schema.lisp b/src/sources/mysql-schema.lisp index 1a8ec82..cd39f4d 100644 --- a/src/sources/mysql-schema.lisp +++ b/src/sources/mysql-schema.lisp @@ -67,11 +67,16 @@ *myconn-pass*." `(let* ((dbname (or ,dbname *my-dbname*)) (*connection* - (qmynd:mysql-connect :host *myconn-host* - :port *myconn-port* - :username *myconn-user* - :password *myconn-pass* - :database dbname))) + (if (and (consp *myconn-host*) (eq :unix (car *myconn-host*))) + (qmynd:mysql-local-connect :path (cdr *myconn-host*) + :username *myconn-user* + :password *myconn-pass* + :database dbname) + (qmynd:mysql-connect :host *myconn-host* + :port *myconn-port* + :username *myconn-user* + :password *myconn-pass* + :database dbname)))) (unwind-protect (progn ,@forms) (qmynd:mysql-disconnect *connection*)))) diff --git a/src/utils.lisp b/src/utils.lisp index 427bcfe..878b4f4 100644 --- a/src/utils.lisp +++ b/src/utils.lisp @@ -328,7 +328,7 @@ (*pgconn-user* . ,*pgconn-user*) (*pgconn-pass* . ,*pgconn-pass*) (*pg-settings* . ',*pg-settings*) - (*myconn-host* . ,*myconn-host*) + (*myconn-host* . ',*myconn-host*) (*myconn-port* . ,*myconn-port*) (*myconn-user* . ,*myconn-user*) (*myconn-pass* . ,*myconn-pass*) diff --git a/test/parse/hans.goeuro.load b/test/parse/hans.goeuro.load index 6f85fb4..5f4992c 100644 --- a/test/parse/hans.goeuro.load +++ b/test/parse/hans.goeuro.load @@ -1,6 +1,6 @@ LOAD DATABASE - FROM mysql://root@localhost:3306/goeuro - INTO postgresql://dim@localhost:54393/godollar + FROM mysql://root@unix:/tmp/mysql.sock:/goeuro + INTO postgresql://dim@unix:/tmp:/godollar WITH include drop, create tables, create indexes, reset sequences