[dev] Re: [kronolith] calendar not displaying events - sql syntax
error
Eric Rostetter
eric.rostetter at physics.utexas.edu
Fri Jun 20 20:05:57 PDT 2003
Quoting Brian Bonnough <brian.bonnough at ce.gatech.edu>:
> The following error message occurs in the log file associated with
> kronolith, mnemo, and nag:
>
> Jun 20 10:34:54 HORDE [error] [kronolith] DB Error: syntax error: SELECT
> DISTINCT a.category_id, c.category_name FROM horde_category_attributes a
> LEFT JOIN horde_categories c ON a.category_id = c.category_id WHERE
> c.group_uid = 'horde.shares.kronolith' AND ((attribute_name = 'owner' AND
> attribute_value = 'bb198') OR (attribute_name = 'perm_users' AND
> attribute_key = 'bb198' AND CASE WHEN CAST(attribute_value AS VARCHAR)
> SIMILAR TO '(-[0-9]+|[0-9]+)' THEN (CAST(attribute_value AS INTEGER) & 8)
> <> 0 ELSE FALSE END) OR (attribute_name = 'perm_default' AND CASE WHEN
> CAST(attribute_value AS VARCHAR) SIMILAR TO '(-[0-9]+|[0-9]+)' THEN
> (CAST(attribute_value AS INTEGER) & 8) <> 0 ELSE FALSE END))
> [nativecode=ERROR: parser: parse error at or near "similar"
>
> Any help tracking the cause of this problem down is greatly appreciated.
Yeah, I had this too. The SQL should work, but doesn't for some reason.
It doesn't like the "SIMILAR TO" but it should. If you edit
horde/lib/SQL.php and change the "SIMILAR TO" to "~" it will work. Patch is:
Index: SQL.php
===================================================================
RCS file: /usr/repository/horde/lib/SQL.php,v
retrieving revision 1.15
diff -u -r1.15 SQL.php
--- SQL.php 19 Jun 2003 18:47:44 -0000 1.15
+++ SQL.php 21 Jun 2003 03:05:22 -0000
@@ -37,7 +37,7 @@
switch ($dbh->phptype) {
case 'pgsql':
// This should conform completely to SQL99.
- return sprintf('CASE WHEN CAST(%s AS VARCHAR) SIMILAR TO
\'(-[0-9]+|[0-9]+)\' THEN (CAST(%s AS INTEGER) %s %d) <> 0 ELSE FALSE END',
$lhs, $lhs, $op, (int)$rhs);
+ return sprintf('CASE WHEN CAST(%s AS VARCHAR) ~
\'(-[0-9]+|[0-9]+)\' THEN (CAST(%s AS INTEGER) %s %d) <> 0 ELSE FALSE END',
$lhs, $lhs, $op, (int)$rhs);
default:
return sprintf('%s %s %d', $lhs, $op, (int)$rhs);
--
Eric Rostetter
The Department of Physics
The University of Texas at Austin
Why get even? Get odd!
More information about the dev
mailing list