Package: mysql-server-5.0

The debian-start script (that supposedly checks for table errors) has
critical errors if the database name contains a character that needs to be
quoted in SQL, e.g. somedb-dev doesn't work, while `somedb-dev` does.

The resulting errors look like this (one for *each* table in databases with
such names):

  /etc/mysql/debian-start[2715]: ERROR 1064 (42000) at line 1: 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 '-dev.news' at line 1

You may agree this is pretty critical for a server.

This is the version I'm using:

  $ dpkg -l mysql-server-5.0 |grep ^ii
  ii  mysql-server-5.0   5.0.51a-5     MySQL database server binaries

The fix would be to escape the name appropriately. The attached patch fixes
the issue.

  mvrgr, Wouter

-- 
:wq                                                       mail [EMAIL PROTECTED]
                                                      web http://uwstopia.nl
--- /usr/share/mysql/debian-start.inc.sh.orig	2008-05-13 10:26:59.000000000 +0200
+++ /usr/share/mysql/debian-start.inc.sh	2008-05-13 10:26:52.000000000 +0200
@@ -16,8 +16,8 @@
   # Checking for $? is unreliable so the size of the output is checked.
   # Some table handlers like HEAP do not support CHECK TABLE.
   tempfile=`tempfile`
-  LC_ALL=C $MYSQL -N -b -e 'select concat("select count(*) from ",TABLE_SCHEMA, 
-    ".", TABLE_NAME) from information_schema.TABLES where ENGINE="MyISAM"' | \
+  LC_ALL=C $MYSQL -N -b -e 'select concat("select count(*) from `",TABLE_SCHEMA, 
+    "`.", TABLE_NAME) from information_schema.TABLES where ENGINE="MyISAM"' | \
     xargs -i $MYSQL -N -q -e "{}" 2>&1 \
     | perl -e '$_=join("", <>); s/^[^\n]+\n(error|note)\s+: The (handler|storage engine) for the table doesn.t support check\n//smg;print;' \
     > $tempfile

Attachment: signature.asc
Description: Digital signature

Reply via email to