summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Adam Chlipala <adam@chlipala.net>2018-12-17 17:05:22 -0500
committerGravatar Adam Chlipala <adam@chlipala.net>2018-12-17 17:05:22 -0500
commitc88aa571002f0dd713158f8b80bfeacbd0a69569 (patch)
tree507937107d84d7bff716d0a7a329734101cba009
parent7578916b630bd84ec3f8e7d97aaaa1cc7828e5ef (diff)
When using a file cache, add plugin-loading code (for SHA512) to tops of .sql files
-rw-r--r--src/cjr_print.sml8
-rw-r--r--src/mysql.sml2
-rw-r--r--src/postgres.sml2
-rw-r--r--src/settings.sig4
-rw-r--r--src/settings.sml7
-rw-r--r--src/sqlite.sml2
6 files changed, 17 insertions, 8 deletions
diff --git a/src/cjr_print.sml b/src/cjr_print.sml
index 87d2576c..e0153944 100644
--- a/src/cjr_print.sml
+++ b/src/cjr_print.sml
@@ -3783,7 +3783,13 @@ fun p_sql env (ds, _) =
end)
env ds
in
- box (string (#sqlPrefix (Settings.currentDbms ())) :: pps)
+ box ((case Settings.getFileCache () of
+ NONE => []
+ | SOME _ => case #supportsSHA512 (Settings.currentDbms ()) of
+ NONE => (ErrorMsg.error "Using file cache with database that doesn't support SHA512";
+ [])
+ | SOME line => [string line, newline, newline])
+ @ string (#sqlPrefix (Settings.currentDbms ())) :: pps)
end
end
diff --git a/src/mysql.sml b/src/mysql.sml
index e7cad84e..768c5441 100644
--- a/src/mysql.sml
+++ b/src/mysql.sml
@@ -1610,6 +1610,6 @@ val () = addDbms {name = "mysql",
nestedRelops = false,
windowFunctions = false,
supportsIsDistinctFrom = true,
- supportsSHA512 = false}
+ supportsSHA512 = NONE}
end
diff --git a/src/postgres.sml b/src/postgres.sml
index 2b6bee8c..a33a1de4 100644
--- a/src/postgres.sml
+++ b/src/postgres.sml
@@ -1154,7 +1154,7 @@ val () = addDbms {name = "postgres",
nestedRelops = true,
windowFunctions = true,
supportsIsDistinctFrom = true,
- supportsSHA512 = true}
+ supportsSHA512 = SOME "CREATE EXTENSION pgcrypto;"}
val () = setDbms "postgres"
diff --git a/src/settings.sig b/src/settings.sig
index 6ba7e96a..f94525bb 100644
--- a/src/settings.sig
+++ b/src/settings.sig
@@ -220,7 +220,9 @@ signature SETTINGS = sig
nestedRelops : bool,
windowFunctions : bool,
supportsIsDistinctFrom : bool,
- supportsSHA512 : bool
+ supportsSHA512 : string option (* If supported, give the SQL code to
+ * enable the feature in a particular
+ * database. *)
}
val addDbms : dbms -> unit
diff --git a/src/settings.sml b/src/settings.sml
index 3772fc04..6499da67 100644
--- a/src/settings.sml
+++ b/src/settings.sml
@@ -647,7 +647,7 @@ type dbms = {
nestedRelops : bool,
windowFunctions: bool,
supportsIsDistinctFrom : bool,
- supportsSHA512 : bool
+ supportsSHA512 : string option
}
val dbmses = ref ([] : dbms list)
@@ -681,7 +681,7 @@ val curDb = ref ({name = "",
nestedRelops = false,
windowFunctions = false,
supportsIsDistinctFrom = false,
- supportsSHA512 = false} : dbms)
+ supportsSHA512 = NONE} : dbms)
fun addDbms v = dbmses := v :: !dbmses
fun setDbms s =
@@ -728,7 +728,8 @@ fun getSigFile () = !sigFile
val fileCache = ref (NONE : string option)
fun setFileCache v =
- (if Option.isSome v andalso not (#supportsSHA512 (currentDbms ())) then
+ (if Option.isSome v andalso (case #supportsSHA512 (currentDbms ()) of NONE => true
+ | SOME _ => false) then
ErrorMsg.error "The selected database engine is incompatible with file caching."
else
();
diff --git a/src/sqlite.sml b/src/sqlite.sml
index db7052d1..0a3ae4ea 100644
--- a/src/sqlite.sml
+++ b/src/sqlite.sml
@@ -856,6 +856,6 @@ val () = addDbms {name = "sqlite",
nestedRelops = false,
windowFunctions = false,
supportsIsDistinctFrom = false,
- supportsSHA512 = false}
+ supportsSHA512 = NONE}
end