Package: lxr-cvs
Version: 0.9.4.0.20061001-2
Severity: normal
Tags: patch

Hello,

MySQL schema uses reserved word 'release' as field name (table
lxr_releases). To be handled correctly, it should be quoted in schema
initialization script (initdb-mysql) and MySQL access module (Mysql.pm). 

MySQL error message:

/usr/share/doc/lxr-cvs/examples# cat initdb-mysql | mysql
ERROR 1064 (42000) at line 35: You have an error in your SQL syntax; 
check the manual that corresponds to your MySQL server version for the
right syntax to use near 'release)
)' at line 4

Patch which fix this in attachment.

-- System Information:
Debian Release: 4.0
  APT prefers stable
  APT policy: (500, 'stable')
Architecture: i386 (i686)
Shell:  /bin/sh linked to /bin/bash
Kernel: Linux 2.6.18-4-686
Locale: LANG=ru_RU.UTF-8, LC_CTYPE=ru_RU.UTF-8 (charmap=UTF-8)

Versions of packages lxr-cvs depends on:
ii  apache [httpd-cgi]            1.3.34-4.1 versatile, high-performance HTTP s
ii  exuberant-ctags               1:5.6-1    build tag file indexes of source c
ii  libfile-mmagic-perl           1.27-1     Perl module to guess file type
ii  perl [perl5]                  5.8.8-7    Larry Wall's Practical Extraction 

Versions of packages lxr-cvs recommends:
ii  libdbd-mysql-perl          3.0008-1      A Perl5 database interface to the 
ii  mysql-server               5.0.32-7etch1 mysql database server (meta packag
ii  mysql-server-5.0 [mysql-se 5.0.32-7etch1 mysql database server binaries

-- no debconf information
diff -Nru lxr/initdb-mysql new/lxr/initdb-mysql
--- lxr/initdb-mysql    2006-10-03 10:18:37.000000000 +0400
+++ new/lxr/initdb-mysql        2007-06-25 13:57:27.000000000 +0400
@@ -35,7 +35,7 @@
 create table lxr_releases 
         (fileid         int not null references lxr_files,
         `release`         char(255) binary not null,
-        primary key     (fileid,release)
+        primary key     (fileid,`release`)
 );
 
 create table lxr_useage
diff -Nru lxr/lib/LXR/Index/Mysql.pm new/lxr/lib/LXR/Index/Mysql.pm
--- lxr/lib/LXR/Index/Mysql.pm  2006-10-03 10:18:37.000000000 +0400
+++ new/lxr/lib/LXR/Index/Mysql.pm      2007-06-25 14:00:07.000000000 +0400
@@ -71,16 +71,16 @@
                  . "where s.symid = i.symid and i.fileid = f.fileid "
                  . "and f.fileid = r.fileid "
                  . "and i.langid = d.langid and i.type = d.declid "
-                 . "and  s.symname = ? and  r.release = ?");
+                 . "and  s.symname = ? and  r.`release` = ?");
        $self->{indexes_insert} =
          $self->{dbh}->prepare(
                "insert into ${prefix}indexes (symid, fileid, line, langid, 
type, relsym) values (?, ?, ?, ?, ?, ?)"
          );
 
        $self->{releases_select} =
-         $self->{dbh}->prepare("select * from ${prefix}releases where fileid = 
? and  release = ?");
+         $self->{dbh}->prepare("select * from ${prefix}releases where fileid = 
? and  `release` = ?");
        $self->{releases_insert} =
-         $self->{dbh}->prepare("insert into ${prefix}releases (fileid, 
release) values (?, ?)");
+         $self->{dbh}->prepare("insert into ${prefix}releases (fileid, 
`release`) values (?, ?)");
 
        $self->{status_get} =
          $self->{dbh}->prepare("select status from ${prefix}status where 
fileid = ?");
@@ -102,7 +102,7 @@
                  . "where s.symid = u.symid "
                  . "and f.fileid = u.fileid "
                  . "and u.fileid = r.fileid "
-                 . "and s.symname = ? and  r.release = ? "
+                 . "and s.symname = ? and  r.`release` = ? "
                  . "order by f.filename");
        $self->{decl_select} =
          $self->{dbh}->prepare(
@@ -115,24 +115,24 @@
          $self->{dbh}->prepare("delete from ${prefix}indexes "
                  . "using ${prefix}indexes i, ${prefix}releases r "
                  . "where i.fileid = r.fileid "
-                 . "and r.release = ?");
+                 . "and r.`release` = ?");
        $self->{delete_useage} =
          $self->{dbh}->prepare("delete from ${prefix}useage "
                  . "using ${prefix}useage u, ${prefix}releases r "
                  . "where u.fileid = r.fileid "
-                 . "and r.release = ?");
+                 . "and r.`release` = ?");
        $self->{delete_status} =
          $self->{dbh}->prepare("delete from ${prefix}status "
                  . "using ${prefix}status s, ${prefix}releases r "
                  . "where s.fileid = r.fileid "
-                 . "and r.release = ?");
+                 . "and r.`release` = ?");
        $self->{delete_releases} =
-         $self->{dbh}->prepare("delete from ${prefix}releases " . "where 
release = ?");
+         $self->{dbh}->prepare("delete from ${prefix}releases " . "where 
`release` = ?");
        $self->{delete_files} =
          $self->{dbh}->prepare("delete from ${prefix}files "
                  . "using ${prefix}files f, ${prefix}releases r "
                  . "where f.fileid = r.fileid "
-                 . "and r.release = ?");
+                 . "and r.`release` = ?");
 
        return $self;
 }

Reply via email to