From aa1bed7249e2d04beb5e05806420c3d3c4f0236f Mon Sep 17 00:00:00 2001 From: Jakub Vrana Date: Sun, 24 Oct 2010 00:24:32 +0200 Subject: [PATCH] Parse PostgreSQL multiline strings --- adminer/sql.inc.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/adminer/sql.inc.php b/adminer/sql.inc.php index 5dbb44f4..b194b3f3 100644 --- a/adminer/sql.inc.php +++ b/adminer/sql.inc.php @@ -46,7 +46,7 @@ if (!$error && $_POST) { $delimiter = $match[1]; $query = substr($query, strlen($match[0])); } else { - preg_match('(' . preg_quote($delimiter) . '|[\'`"]|/\\*|-- |#|$)', $query, $match, PREG_OFFSET_CAPTURE, $offset); // should always match + preg_match('(' . preg_quote($delimiter) . '|[\'`"]' . ($jush == "pgsql" ? '|\\$.*\\$' : '') . '|/\\*|-- |#|$)', $query, $match, PREG_OFFSET_CAPTURE, $offset); // should always match $found = $match[0][0]; $offset = $match[0][1] + strlen($found); if (!$found && $fp && !feof($fp)) { @@ -56,7 +56,7 @@ if (!$error && $_POST) { break; } if ($found && $found != $delimiter) { // find matching quote or comment end - while (preg_match('~' . ($found == '/*' ? '\\*/' : (ereg('-- |#', $found) ? "\n" : "$found|\\\\.")) . '|$~s', $query, $match, PREG_OFFSET_CAPTURE, $offset)) { //! respect sql_mode NO_BACKSLASH_ESCAPES + while (preg_match('(' . ($found == '/*' ? '\\*/' : (ereg('-- |#', $found) ? "\n" : preg_quote($found) . "|\\\\.")) . '|$)s', $query, $match, PREG_OFFSET_CAPTURE, $offset)) { //! respect sql_mode NO_BACKSLASH_ESCAPES $s = $match[0][0]; $offset = $match[0][1] + strlen($s); if (!$s && $fp && !feof($fp)) {