Bugzilla – Attachment 8915 Details for
Bug 7902
Adding Function to Check for Existence of Tables
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Patch to add feature
0001-Bug-7902-Adding-Function-to-Check-for-Existence-of-T.patch (text/plain), 3.84 KB, created by
Chris Nighswonger
on 2012-04-05 13:41:07 UTC
(
hide
)
Description:
Patch to add feature
Filename:
MIME Type:
Creator:
Chris Nighswonger
Created:
2012-04-05 13:41:07 UTC
Size:
3.84 KB
patch
obsolete
>From 28ec11354491b6859372a85e21627adfd2da2194 Mon Sep 17 00:00:00 2001 >From: Chris Nighswonger <cnighswonger@foundations.edu> >Date: Thu, 5 Apr 2012 09:38:52 -0400 >Subject: [PATCH] Bug 7902 - Adding Function to Check for Existence of Tables >Content-Type: text/plain; charset="utf-8" > >This patch adds a function TableExists which checks for the existence >of a given table and returns 1 or 0 accordingly. This allows us to >check for the existence of a given table when doing operations on >tables which may not exist in a given database which, in turn, will >reduce the number of red errors which show up after an upgrade. > >An example of its use is included in this patch. >--- > installer/data/mysql/updatedatabase.pl | 45 ++++++++++++++++++++++---------- > 1 files changed, 31 insertions(+), 14 deletions(-) > >diff --git a/installer/data/mysql/updatedatabase.pl b/installer/data/mysql/updatedatabase.pl >index 503c8ee..0b1c16e 100755 >--- a/installer/data/mysql/updatedatabase.pl >+++ b/installer/data/mysql/updatedatabase.pl >@@ -4893,19 +4893,21 @@ if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) { > > $DBversion = "3.07.00.025"; > if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) { >- $dbh->do( q|DROP TABLE bibliocoverimage;| ); >- $dbh->do( >- q|CREATE TABLE biblioimages ( >- imagenumber int(11) NOT NULL AUTO_INCREMENT, >- biblionumber int(11) NOT NULL, >- mimetype varchar(15) NOT NULL, >- imagefile mediumblob NOT NULL, >- thumbnail mediumblob NOT NULL, >- PRIMARY KEY (imagenumber), >- CONSTRAINT bibliocoverimage_fk1 FOREIGN KEY (biblionumber) REFERENCES biblio (biblionumber) ON DELETE CASCADE ON UPDATE CASCADE >- ) ENGINE=InnoDB DEFAULT CHARSET=utf8;| >- ); >- print "Upgrade to $DBversion done (Correct table name for local cover images [please disregard the following error messages: \"Unknown table 'bibliocoverimage'...\" and \"Table 'biblioimages' already exists...\"])\n"; >+ if (TableExists('bibliocoverimage')) { >+ $dbh->do( q|DROP TABLE bibliocoverimage;| ); >+ $dbh->do( >+ q|CREATE TABLE biblioimages ( >+ imagenumber int(11) NOT NULL AUTO_INCREMENT, >+ biblionumber int(11) NOT NULL, >+ mimetype varchar(15) NOT NULL, >+ imagefile mediumblob NOT NULL, >+ thumbnail mediumblob NOT NULL, >+ PRIMARY KEY (imagenumber), >+ CONSTRAINT bibliocoverimage_fk1 FOREIGN KEY (biblionumber) REFERENCES biblio (biblionumber) ON DELETE CASCADE ON UPDATE CASCADE >+ ) ENGINE=InnoDB DEFAULT CHARSET=utf8;| >+ ); >+ } >+ print "Upgrade to $DBversion done (Correct table name for local cover images if needed. )\n"; > SetVersion($DBversion); > } > >@@ -5135,7 +5137,7 @@ if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) { > $dbh->do("UPDATE systempreferences SET type='Free', value=\"$valueOPACXSLTDetailsDisplay\" WHERE variable='OPACXSLTDetailsDisplay'"); > $dbh->do("UPDATE systempreferences SET type='Free', value=\"$valueOPACXSLTResultsDisplay\" WHERE variable='OPACXSLTResultsDisplay'"); > } >- print "XSLT systempreference takes a path to file rather than YesNo\n"; >+ print "Upgrade to $DBversion done (XSLT systempreference takes a path to file rather than YesNo)\n"; > SetVersion($DBversion); > } > >@@ -5148,6 +5150,21 @@ if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) { > > =head1 FUNCTIONS > >+=head2 TableExists($table) >+ >+=cut >+ >+sub TableExists { >+ my $table = shift; >+ eval { >+ local $dbh->{PrintError} = 0; >+ local $dbh->{RaiseError} = 1; >+ $dbh->do(qq{SELECT * FROM $table WHERE 1 = 0 }); >+ }; >+ return 1 unless $@; >+ return 0; >+} >+ > =head2 DropAllForeignKeys($table) > > Drop all foreign keys of the table $table >-- >1.7.0.4 >
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
|
Splinter Review
Attachments on
bug 7902
:
8915
|
8921