[Koha-devel] kohastructure.sql

Simon Mitchell simon at jseb.com
Wed Sep 16 08:26:51 CEST 2009


Hi guy, am having a play with a script to convert the current mysql
kohastructure.sql to postgresql etc.
My thinking is that any updates to the mysql kohastructure.sql could be
handled by automatically by a script.

Firstly I have noticed that some table name and columns names are not
quoted.
Could some one fix that the next time an edit is done.

Example

DROP TABLE IF EXISTS `branch_transfer_limits`;
CREATE TABLE branch_transfer_limits (
    limitId int(8) NOT NULL auto_increment,
    toBranch varchar(10) NOT NULL,
    fromBranch varchar(10) NOT NULL,
    itemtype varchar(10) NULL,
    ccode varchar(10) NULL,
    PRIMARY KEY  (limitId)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

And

My postgresql database complains that there is no unique key on aqbookfund
bookfundid
My thinking is this is cause by *REFERENCES `aqbookfund`
(`bookfundid`)*which should be
*REFERENCES `aqbookfund` (`bookfundid`,`branchcode`)*
in table aqorderbreakdown.

Does this need to be fixed or is bookfundid unique and justs needs a unique
key?

DROP TABLE IF EXISTS `aqbookfund`;
CREATE TABLE `aqbookfund` (
  `bookfundid` varchar(10) NOT NULL default '',
  `bookfundname` mediumtext,
  `bookfundgroup` varchar(5) default NULL,
  `branchcode` varchar(10) NOT NULL default '',
  PRIMARY KEY  (`bookfundid`,`branchcode`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

DROP TABLE IF EXISTS `aqorderbreakdown`;
CREATE TABLE `aqorderbreakdown` (
  `ordernumber` int(11) default NULL,
  `linenumber` int(11) default NULL,
  `branchcode` varchar(10) default NULL,
  `bookfundid` varchar(10) NOT NULL default '',
  `allocation` smallint(6) default NULL,
  KEY `ordernumber` (`ordernumber`),
  KEY `bookfundid` (`bookfundid`),
  CONSTRAINT `aqorderbreakdown_ibfk_1` FOREIGN KEY (`ordernumber`)
REFERENCES `aqorders` (`ordernumber`) ON DELETE CASCADE ON UPDATE CASCADE,
  CONSTRAINT `aqorderbreakdown_ibfk_2` FOREIGN KEY (`bookfundid`) REFERENCES
`aqbookfund` (`bookfundid`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

++++++++++++++++++++++++++++++++++++++++

some more ramblings follows

I have been look at
http://en.wikibooks.org/w/index.php?title=Programming:Converting_MySQL_to_PostgreSQL#Syntax
and like the idea of using *SET sql_mode='ANSI_QUOTES' * at the top of the
mysql sql files to get rid of the ` qoute and use ".*
*

The later versions of Postgresql has introduce new features that may make it
possible koha to run on postgresql.

Enum example -

Mysql -
CREATE TABLE `import_items` (
  `import_items_id` int(11) NOT NULL auto_increment,
  `import_record_id` int(11) NOT NULL,
  `itemnumber` int(11) default NULL,
  `branchcode` varchar(10) default NULL,
  `status` enum('error', 'staged', 'imported', 'reverted', 'ignored') NOT
NULL default 'staged',
  `marcxml` longtext NOT NULL,
  `import_error` mediumtext,
  PRIMARY KEY (`import_items_id`),
  CONSTRAINT `import_items_ibfk_1` FOREIGN KEY (`import_record_id`)
             REFERENCES `import_records` (`import_record_id`) ON DELETE
CASCADE ON UPDATE CASCADE,
  KEY `itemnumber` (`itemnumber`),
  KEY `branchcode` (`branchcode`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

Postgresql

CREATE TYPE *enum_import_items_status* AS ENUM ('error', 'staged',
'imported', 'reverted', 'ignored');


DROP TABLE IF EXISTS "import_items";
CREATE TABLE "import_items" (
  "import_items_id" serial,
  "import_record_id" integer NOT NULL,
  "itemnumber" integer default NULL,
  "branchcode" varchar(10) default NULL,
"status" *enum_import_items_status*  NOT NULL default 'staged',
  "marcxml" text  NOT NULL,
  "import_error" text ,
 PRIMARY KEY ("import_items_id")
);
ALTER TABLE import_items ADD   CONSTRAINT "import_items_ibfk_1" FOREIGN KEY
("import_record_id")
REFERENCES "import_records" ("import_record_id") ON DELETE CASCADE ON UPDATE
CASCADE;

CREATE INDEX import_items_itemnumber_idx ON import_items ("itemnumber");
CREATE INDEX import_items_branchcode_idx ON import_items ("branchcode");
++++++++++++++++++++++++++++

Regards

Simon
Sydney, Australia
-------------- next part --------------
An HTML attachment was scrubbed...
URL: </pipermail/koha-devel/attachments/20090916/70c7613b/attachment-0003.htm>


More information about the Koha-devel mailing list