Fix operator properties page
authorGuillaume (ioguix) de Rorthais <ioguix@free.fr>
Wed, 17 Nov 2010 00:21:18 +0000 (01:21 +0100)
committerGuillaume (ioguix) de Rorthais <ioguix@free.fr>
Wed, 17 Nov 2010 00:21:18 +0000 (01:21 +0100)
The pg_operator table changed in 8.3. I hadn't found an appropriate
has*() method to reflect this change and its point :(

classes/database/Postgres.php
classes/database/Postgres82.php
operators.php

index 5e4dba0bbf0581950c3debda1f670c90655ac1d9..80167f64d9bd19775a726be87a0797aa7950e6ac 100755 (executable)
@@ -5148,12 +5148,9 @@ class Postgres extends ADODB_base {
                                oprright::pg_catalog.regtype AS oprrightname,
                                oprresult::pg_catalog.regtype AS resultname,
                                po.oprcanhash,
+                               oprcanmerge,
                                oprcom::pg_catalog.regoperator AS oprcom,
                                oprnegate::pg_catalog.regoperator AS oprnegate,
-                               oprlsortop::pg_catalog.regoperator AS oprlsortop,
-                               oprrsortop::pg_catalog.regoperator AS oprrsortop,
-                               oprltcmpop::pg_catalog.regoperator AS oprltcmpop,
-                               oprgtcmpop::pg_catalog.regoperator AS oprgtcmpop,
                                po.oprcode::pg_catalog.regproc AS oprcode,
                                po.oprrest::pg_catalog.regproc AS oprrest,
                                po.oprjoin::pg_catalog.regproc AS oprjoin
index c7cf58c13558ea398735952d8ce828af648dcb59..19e5fd37c9eadebd455e71bf28fc10c526bfaee6 100644 (file)
@@ -282,6 +282,41 @@ class Postgres82 extends Postgres83 {
                return $this->execute($sql);
        }
 
+       // Operator functions
+
+       /**
+        * Returns all details for a particular operator
+        * @param $operator_oid The oid of the operator
+        * @return Function info
+        */
+       function getOperator($operator_oid) {
+               $this->clean($operator_oid);
+
+               $sql = "
+                       SELECT
+                               po.oid, po.oprname,
+                               oprleft::pg_catalog.regtype AS oprleftname,
+                               oprright::pg_catalog.regtype AS oprrightname,
+                               oprresult::pg_catalog.regtype AS resultname,
+                               po.oprcanhash,
+                               oprcom::pg_catalog.regoperator AS oprcom,
+                               oprnegate::pg_catalog.regoperator AS oprnegate,
+                               oprlsortop::pg_catalog.regoperator AS oprlsortop,
+                               oprrsortop::pg_catalog.regoperator AS oprrsortop,
+                               oprltcmpop::pg_catalog.regoperator AS oprltcmpop,
+                               oprgtcmpop::pg_catalog.regoperator AS oprgtcmpop,
+                               po.oprcode::pg_catalog.regproc AS oprcode,
+                               po.oprrest::pg_catalog.regproc AS oprrest,
+                               po.oprjoin::pg_catalog.regproc AS oprjoin
+                       FROM
+                               pg_catalog.pg_operator po
+                       WHERE
+                               po.oid='{$operator_oid}'
+               ";
+
+               return $this->selectSet($sql);
+       }
+
        // Operator Class functions
 
        /**
index 555ba0acafdf5592ba385974e08b5f63fdbbacae..1447519901e7b8517b665272a5e057aee3dc5035 100644 (file)
                        echo "<td class=\"data1\">", $misc->printVal($oprdata->fields['oprjoin']), "</td></tr>\n";
                        echo "<tr><th class=\"data left\">{$lang['strhashes']}</th>\n";
                        echo "<td class=\"data1\">", ($oprdata->fields['oprcanhash']) ? $lang['stryes'] : $lang['strno'], "</td></tr>\n";
-                       echo "<tr><th class=\"data left\">{$lang['strmerges']}</th>\n";
-                       echo "<td class=\"data1\">", ($oprdata->fields['oprlsortop'] !== '0' && $oprdata->fields['oprrsortop'] !== '0') ? $lang['stryes'] : $lang['strno'], "</td></tr>\n";
-                       echo "<tr><th class=\"data left\">{$lang['strrestrict']}</th>\n";
-                       echo "<td class=\"data1\">", $misc->printVal($oprdata->fields['oprrest']), "</td></tr>\n";
-                       echo "<tr><th class=\"data left\">{$lang['strleftsort']}</th>\n";
-                       echo "<td class=\"data1\">", $misc->printVal($oprdata->fields['oprlsortop']), "</td></tr>\n";
-                       echo "<tr><th class=\"data left\">{$lang['strrightsort']}</th>\n";
-                       echo "<td class=\"data1\">", $misc->printVal($oprdata->fields['oprrsortop']), "</td></tr>\n";
-                       echo "<tr><th class=\"data left\">{$lang['strlessthan']}</th>\n";
-                       echo "<td class=\"data1\">", $misc->printVal($oprdata->fields['oprltcmpop']), "</td></tr>\n";
-                       echo "<tr><th class=\"data left\">{$lang['strgreaterthan']}</th>\n";
-                       echo "<td class=\"data1\">", $misc->printVal($oprdata->fields['oprgtcmpop']), "</td></tr>\n";
+
+                       /* these field only exists in 8.2 and before in pg_catalog */
+                       if (isset($oprdata->fields['oprlsortop'])) {
+                               echo "<tr><th class=\"data left\">{$lang['strmerges']}</th>\n";
+                               echo "<td class=\"data1\">", ($oprdata->fields['oprlsortop'] !== '0' && $oprdata->fields['oprrsortop'] !== '0') ? $lang['stryes'] : $lang['strno'], "</td></tr>\n";
+                               echo "<tr><th class=\"data left\">{$lang['strrestrict']}</th>\n";
+                               echo "<td class=\"data1\">", $misc->printVal($oprdata->fields['oprrest']), "</td></tr>\n";
+                               echo "<tr><th class=\"data left\">{$lang['strleftsort']}</th>\n";
+                               echo "<td class=\"data1\">", $misc->printVal($oprdata->fields['oprlsortop']), "</td></tr>\n";
+                               echo "<tr><th class=\"data left\">{$lang['strrightsort']}</th>\n";
+                               echo "<td class=\"data1\">", $misc->printVal($oprdata->fields['oprrsortop']), "</td></tr>\n";
+                               echo "<tr><th class=\"data left\">{$lang['strlessthan']}</th>\n";
+                               echo "<td class=\"data1\">", $misc->printVal($oprdata->fields['oprltcmpop']), "</td></tr>\n";
+                               echo "<tr><th class=\"data left\">{$lang['strgreaterthan']}</th>\n";
+                               echo "<td class=\"data1\">", $misc->printVal($oprdata->fields['oprgtcmpop']), "</td></tr>\n";
+                       }
+                       else {
+                               echo "<tr><th class=\"data left\">{$lang['strmerges']}</th>\n";
+                               echo "<td class=\"data1\">", $data->phpBool($oprdata->fields['oprcanmerge']) ? $lang['stryes'] : $lang['strno'], "</td></tr>\n";
+                       }
                        echo "</table>\n";
 
                        echo "<p><a class=\"navlink\" href=\"operators.php?{$misc->href}\">{$lang['strshowalloperators']}</a></p>\n";