diff --git a/pg4wp/driver_pgsql.php b/pg4wp/driver_pgsql.php index 785fdb7..43b67db 100644 --- a/pg4wp/driver_pgsql.php +++ b/pg4wp/driver_pgsql.php @@ -198,6 +198,20 @@ function wpsql_insert_id($lnk = NULL) return $data; } + // Convert MySQL FIELD function to CASE statement + // https://dev.mysql.com/doc/refman/5.7/en/string-functions.html#function_field + // Other implementations: https://stackoverflow.com/q/1309624 + function pg4wp_rewrite_field($matches) + { + $case = 'CASE ' . trim($matches[1]); + $comparands = explode(',', $matches[2]); + foreach($comparands as $i => $comparand) { + $case .= ' WHEN ' . trim($comparand) . ' THEN ' . ($i + 1); + } + $case .= ' ELSE 0 END'; + return $case; + } + function pg4wp_rewrite( $sql) { // Note: Can be called from constructor before $wpdb is set @@ -281,19 +295,6 @@ function pg4wp_rewrite( $sql) $pattern = '/DATE_ADD[ ]*\(([^,]+),([^\)]+)\)/'; $sql = preg_replace( $pattern, '($1 + $2)', $sql); - // Convert MySQL FIELD function to CASE statement - // https://dev.mysql.com/doc/refman/5.7/en/string-functions.html#function_field - // Other implementations: https://stackoverflow.com/q/1309624 - function pg4wp_rewrite_field($matches) - { - $case = 'CASE ' . trim($matches[1]); - $comparands = explode(',', $matches[2]); - foreach($comparands as $i => $comparand) { - $case .= ' WHEN ' . trim($comparand) . ' THEN ' . ($i + 1); - } - $case .= ' ELSE 0 END'; - return $case; - } $pattern = '/FIELD[ ]*\(([^\),]+),([^\)]+)\)/'; $sql = preg_replace_callback( $pattern, 'pg4wp_rewrite_field', $sql);