diff options
author | Andrey Andreev <narf@devilix.net> | 2013-07-17 19:28:48 +0200 |
---|---|---|
committer | Andrey Andreev <narf@devilix.net> | 2013-07-17 19:28:48 +0200 |
commit | d5ab75e7d6636ce324416c4b3856bc552c9028d1 (patch) | |
tree | 961e221ae8cf19d12211b77a94c3f9ecadc62a99 /system | |
parent | c5a7c5fd34e5446251d466c46425e129886da52b (diff) |
Fix #2490 (an improved version of PR #2534)
Diffstat (limited to 'system')
-rw-r--r-- | system/database/drivers/pdo/subdrivers/pdo_pgsql_driver.php | 13 | ||||
-rw-r--r-- | system/database/drivers/postgre/postgre_driver.php | 13 |
2 files changed, 26 insertions, 0 deletions
diff --git a/system/database/drivers/pdo/subdrivers/pdo_pgsql_driver.php b/system/database/drivers/pdo/subdrivers/pdo_pgsql_driver.php index fdeefc9c5..d0cdde2e2 100644 --- a/system/database/drivers/pdo/subdrivers/pdo_pgsql_driver.php +++ b/system/database/drivers/pdo/subdrivers/pdo_pgsql_driver.php @@ -130,6 +130,19 @@ class CI_DB_pdo_pgsql_driver extends CI_DB_pdo_driver { // -------------------------------------------------------------------- /** + * Determines if a query is a "write" type. + * + * @param string An SQL query string + * @return bool + */ + public function is_write_type($sql) + { + return (bool) preg_match('/^\s*"?(SET|INSERT(?![^\)]+\)\s+RETURNING)|UPDATE|DELETE|REPLACE|CREATE|DROP|TRUNCATE|LOAD|COPY|ALTER|RENAME|GRANT|REVOKE|LOCK|UNLOCK|REINDEX)\s+/i', $sql); + } + + // -------------------------------------------------------------------- + + /** * "Smart" Escape String * * Escapes data based on type diff --git a/system/database/drivers/postgre/postgre_driver.php b/system/database/drivers/postgre/postgre_driver.php index d35e351fc..ac7345ad6 100644 --- a/system/database/drivers/postgre/postgre_driver.php +++ b/system/database/drivers/postgre/postgre_driver.php @@ -311,6 +311,19 @@ class CI_DB_postgre_driver extends CI_DB { // -------------------------------------------------------------------- /** + * Determines if a query is a "write" type. + * + * @param string An SQL query string + * @return bool + */ + public function is_write_type($sql) + { + return (bool) preg_match('/^\s*"?(SET|INSERT(?![^\)]+\)\s+RETURNING)|UPDATE|DELETE|REPLACE|CREATE|DROP|TRUNCATE|LOAD|COPY|ALTER|RENAME|GRANT|REVOKE|LOCK|UNLOCK|REINDEX)\s+/i', $sql); + } + + // -------------------------------------------------------------------- + + /** * Platform-dependant string escape * * @param string |