I am trying to do parameterized TRUNCATE of tables for my yesod-test tests.
Prelude> runTestDB $ P.rawExecute "TRUNCATE table ? CASCADE" [P.PersistText "teachers"]
06/Jan/2015:12:34:10 -0600 [Debug#SQL] "TRUNCATE table ? CASCADE" [PersistText "teachers"] @(persistent-2.1.1.3:Database.Persist.Sql.Raw ./Database/Persist/Sql/Raw.hs:64:18)
*** Exception: SqlError {sqlState = "42601", sqlExecStatus = FatalError, sqlErrorMsg = "syntax error at or near \"'teachers'\"", sqlErrorDetail = "", sqlErrorHint = ""}
Prelude> runTestDB $ P.rawExecute "TRUNCATE table '?' CASCADE" [P.PersistText "teachers"]
06/Jan/2015:12:34:16 -0600 [Debug#SQL] "TRUNCATE table '?' CASCADE" [PersistText "teachers"] @(persistent-2.1.1.3:Database.Persist.Sql.Raw ./Database/Persist/Sql/Raw.hs:64:18)
*** Exception: SqlError {sqlState = "42601", sqlExecStatus = FatalError, sqlErrorMsg = "syntax error at or near \"''\"", sqlErrorDetail = "", sqlErrorHint = ""}
Prelude> runTestDB $ P.rawExecute "TRUNCATE table \"?\" CASCADE" [P.PersistText "teachers"]
06/Jan/2015:12:34:23 -0600 [Debug#SQL] "TRUNCATE table \"?\" CASCADE" [PersistText "teachers"] @(persistent-2.1.1.3:Database.Persist.Sql.Raw ./Database/Persist/Sql/Raw.hs:64:18)
*** Exception: SqlError {sqlState = "42P01", sqlExecStatus = FatalError, sqlErrorMsg = "relation \"'teachers'\" does not exist", sqlErrorDetail = "", sqlErrorHint = ""}
Prelude> runTestDB $ P.rawExecute "TRUNCATE table \"?\" CASCADE;" [P.PersistText "teachers"]
06/Jan/2015:12:34:25 -0600 [Debug#SQL] "TRUNCATE table \"?\" CASCADE;" [PersistText "teachers"] @(persistent-2.1.1.3:Database.Persist.Sql.Raw ./Database/Persist/Sql/Raw.hs:64:18)
*** Exception: SqlError {sqlState = "42P01", sqlExecStatus = FatalError, sqlErrorMsg = "relation \"'teachers'\" does not exist", sqlErrorDetail = "", sqlErrorHint = ""}
Prelude> runTestDB $ P.rawExecute "TRUNCATE table '?' CASCADE;" [P.PersistText "teachers"]
06/Jan/2015:12:34:29 -0600 [Debug#SQL] "TRUNCATE table '?' CASCADE;" [PersistText "teachers"] @(persistent-2.1.1.3:Database.Persist.Sql.Raw ./Database/Persist/Sql/Raw.hs:64:18)
*** Exception: SqlError {sqlState = "42601", sqlExecStatus = FatalError, sqlErrorMsg = "syntax error at or near \"''\"", sqlErrorDetail = "", sqlErrorHint = ""}
Prelude> runTestDB $ P.rawExecute "TRUNCATE table ? CASCADE;" [P.PersistText "teachers"]
06/Jan/2015:12:34:34 -0600 [Debug#SQL] "TRUNCATE table ? CASCADE;" [PersistText "teachers"] @(persistent-2.1.1.3:Database.Persist.Sql.Raw ./Database/Persist/Sql/Raw.hs:64:18)
*** Exception: SqlError {sqlState = "42601", sqlExecStatus = FatalError, sqlErrorMsg = "syntax error at or near \"'teachers'\"", sqlErrorDetail = "", sqlErrorHint = ""}
The most interesting error being:
*** Exception: SqlError {sqlState = "42P01", sqlExecStatus = FatalError, sqlErrorMsg = "relation \"'teachers'\" does not exist", sqlErrorDetail = "", sqlErrorHint = ""}
runTestDB $ P.rawExecute "TRUNCATE table teachers CASCADE;" [] works fine
I gathered from the documentation that this is a value parameter, should I be using ?? and some kind of value witness to the Teacher entity type instead? I took a few stabs at that and that didn't work either. I'd rather not do it that way anyway as my data is coming to me via text.
Any help is appreciated, thank you.
--- Chris Allen