Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions clojure/src/pgloader/load_file/ast.clj
Original file line number Diff line number Diff line change
Expand Up @@ -360,6 +360,8 @@
:multiple-readers [:multiple-readers true]
:single-reader [:multiple-readers false]
:identifier-case (first (second inner))
:create-no-indexes [:create-indexes false]
:no-foreign-keys [:foreign-keys false]
:no-reset-sequences [:reset-sequences false]
:drop-schema [:drop-schema true]
:reindex [:reindex true]
Expand Down
6 changes: 4 additions & 2 deletions clojure/src/pgloader/load_file/grammar.clj
Original file line number Diff line number Diff line change
Expand Up @@ -191,19 +191,20 @@
quoted-char = <'\\''> #\"[^']+\" <'\\''>

with-db-clause = <'WITH'> <ws> db-option (<opt-ws> <','> <opt-ws> db-option)*
db-option = include-drop | create-tables | create-indexes | create-no-tables
db-option = include-drop | create-tables | create-indexes | create-no-indexes | create-no-tables
| workers | concurrency | batch-rows | batch-size | prefetch-rows | batch-concurrency
| on-error-stop | on-error-resume | identifier-case
| multiple-readers | single-reader | rows-per-range | chunk-size
| include-no-drop | truncate | disable-triggers
| data-only | schema-only | foreign-keys | reset-sequences | no-reset-sequences
| data-only | schema-only | foreign-keys | no-foreign-keys | reset-sequences | no-reset-sequences
| max-parallel-create-index
| drop-schema | reindex | preserve-index-names | uniquify-index-names
include-drop = <'include'> <ws> <'drop'>
include-no-drop = <'include'> <ws> <'no'> <ws> <'drop'>
create-tables = <'create'> <ws> <'tables'>
create-no-tables = <'create'> <ws> <'no'> <ws> <'tables'>
create-indexes = <'create'> <ws> <'indexes'>
create-no-indexes = <'create'> <ws> <'no'> <ws> <'indexes'>
on-error-stop = <'on'> <ws> <'error'> <ws> <'stop'>
on-error-resume = <'on'> <ws> <'error'> <ws> <'resume'> <ws> <'next'>
multiple-readers = <'multiple'> <ws> <'readers'> <ws> <'per'> <ws> <'thread'>
Expand All @@ -220,6 +221,7 @@
data-only = <'data'> <ws> <'only'>
schema-only = <'schema'> <ws> <'only'>
foreign-keys = <'foreign'> <ws> <'keys'>
no-foreign-keys = <'no'> <ws> <'foreign'> <ws> <'keys'>
reset-sequences = <'reset'> <ws> <'sequences'>
no-reset-sequences = <'reset'> <ws> <'no'> <ws> <'sequences'>
drop-schema = <'drop'> <ws> <'schema'>
Expand Down
14 changes: 14 additions & 0 deletions clojure/test/pgloader/load_file/parser_test.clj
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,20 @@
(is (:create-indexes (:with-options cmd)))
(is (:include-drop (:with-options cmd))))))

(deftest test-parse-database-index-and-foreign-key-options
(doseq [[options expected]
[["create indexes, foreign keys" {:create-indexes true :foreign-keys true}]
["create no indexes" {:create-indexes false}]
["no foreign keys" {:foreign-keys false}]
["create no indexes, no foreign keys"
{:create-indexes false :foreign-keys false}]]]
(testing options
(let [result (parser/parse-string
(str "LOAD DATABASE FROM sqlite:///tiny.db "
"INTO postgresql:///target WITH " options ";"))]
(is (:ok result))
(is (= expected (:with-options (:ok result))))))))

(deftest test-parse-mysql-with-cast
(let [result (parser/parse-string
"LOAD DATABASE FROM mysql://user@localhost/mydb
Expand Down