summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGuillaume (ioguix) de Rorthais2010-11-17 00:21:18 +0000
committerGuillaume (ioguix) de Rorthais2010-11-17 00:21:18 +0000
commit1f8f1d5d61c06c0021468d476d0cf3c44203bfee (patch)
tree214943711ae3385c607f3cf47ea99502c4aa93b4
parent987fba72b004322175c4566d45a13a0c2fd14ac2 (diff)
Fix operator properties page
The pg_operator table changed in 8.3. I hadn't found an appropriate has*() method to reflect this change and its point :(
-rwxr-xr-xclasses/database/Postgres.php5
-rw-r--r--classes/database/Postgres82.php35
-rw-r--r--operators.php32
3 files changed, 56 insertions, 16 deletions
diff --git a/classes/database/Postgres.php b/classes/database/Postgres.php
index 5e4dba0b..80167f64 100755
--- a/classes/database/Postgres.php
+++ b/classes/database/Postgres.php
@@ -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
diff --git a/classes/database/Postgres82.php b/classes/database/Postgres82.php
index c7cf58c1..19e5fd37 100644
--- a/classes/database/Postgres82.php
+++ b/classes/database/Postgres82.php
@@ -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
/**
diff --git a/operators.php b/operators.php
index 555ba0ac..14475199 100644
--- a/operators.php
+++ b/operators.php
@@ -42,18 +42,26 @@
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";