- DB2 bugfix: Blob class now converted to string where appropriate
authorLeons Petrazickis <leonsp@users.mediawiki.org>
Mon, 26 Oct 2009 16:32:31 +0000 (16:32 +0000)
committerLeons Petrazickis <leonsp@users.mediawiki.org>
Mon, 26 Oct 2009 16:32:31 +0000 (16:32 +0000)
- DB2 bugfix: Integer types enlarged to match MySQL (primarily, MySQL INT UNSIGNED now mapped to DB2 BIGINT)

includes/db/DatabaseIbm_db2.php
maintenance/ibm_db2/tables.sql

index b6866c5..5163f25 100644 (file)
@@ -85,13 +85,18 @@ END;
 class IBM_DB2Blob {
        private $mData;
 
-       function __construct($data) {
+       public function __construct($data) {
                $this->mData = $data;
        }
 
-       function getData() {
+       public function getData() {
                return $this->mData;
        }
+       
+       public function __toString()
+    {
+        return $this->mData;
+    }
 }
 
 /**
@@ -770,6 +775,8 @@ EOF;
                        return "NULL";
                } else if ($s instanceof Blob) {
                        return "'".$s->fetch($s)."'";
+               } else if ($s instanceof IBM_DB2Blob) {
+                       return "'".$this->decodeBlob($s)."'";
                }
                $s = $this->strencode($s);
                if ( is_numeric($s) ) {
index 659453c..c203104 100644 (file)
@@ -8,14 +8,14 @@
 
 
 CREATE TABLE user (
-  user_id                                      INTEGER PRIMARY KEY GENERATED BY DEFAULT AS IDENTITY (START WITH 0),
+  user_id                                      BIGINT PRIMARY KEY GENERATED BY DEFAULT AS IDENTITY (START WITH 0),
   user_name                 VARCHAR(255)     NOT NULL  UNIQUE,
   user_real_name            VARCHAR(255),
   user_password             VARCHAR(1024),
   user_newpassword          VARCHAR(1024),
   user_newpass_time         TIMESTAMP(3),
   user_token                VARCHAR(255),
-  user_email                VARCHAR(255),
+  user_email                VARCHAR(1024),
   user_email_token          VARCHAR(255),
   user_email_token_expires  TIMESTAMP(3),
   user_email_authenticated  TIMESTAMP(3),
@@ -43,7 +43,7 @@ NULL,                 NULL,                                                   NULL,                   NULL,                           CURRENT_timestamp,      0);
 
 
 CREATE TABLE user_groups (
-  ug_user   INTEGER NOT NULL DEFAULT 0,
+  ug_user   BIGINT NOT NULL DEFAULT 0,
   --    REFERENCES user(user_id) ON DELETE CASCADE,
   ug_group  VARCHAR(255)     NOT NULL
 );
@@ -56,7 +56,7 @@ CREATE UNIQUE INDEX user_groups_include_idx
 
 CREATE TABLE user_newtalk (
   -- registered users key
-  user_id              INTEGER      NOT NULL DEFAULT 0,
+  user_id              BIGINT      NOT NULL DEFAULT 0,
   --  REFERENCES user(user_id) ON DELETE CASCADE,
   -- anonymous users key
   user_ip              VARCHAR(40),
@@ -71,7 +71,7 @@ CREATE UNIQUE INDEX user_newtalk_include_idx
 
 
 CREATE TABLE page (
-  page_id                      INTEGER PRIMARY KEY GENERATED BY DEFAULT AS IDENTITY (START WITH 0),
+  page_id                       BIGINT PRIMARY KEY GENERATED BY DEFAULT AS IDENTITY (START WITH 0),
   page_namespace     SMALLINT       NOT NULL,
   page_title         VARCHAR(255)   NOT NULL,
   page_restrictions  VARCHAR(1024),
@@ -80,8 +80,8 @@ CREATE TABLE page (
   page_is_new        SMALLINT       NOT NULL  DEFAULT 0,
   page_random        NUMERIC(15,14) NOT NULL,
   page_touched       TIMESTAMP(3),
-  page_latest        INTEGER        NOT NULL, -- FK?
-  page_len           INTEGER        NOT NULL
+  page_latest        BIGINT            NOT NULL, -- FK?
+  page_len           BIGINT        NOT NULL
 );
 CREATE UNIQUE INDEX page_unique_name ON page (page_namespace, page_title);
 CREATE INDEX page_random_idx         ON page (page_random);
@@ -96,19 +96,19 @@ CREATE UNIQUE INDEX page_name_include
 
 
 CREATE TABLE revision (
-  rev_id               INTEGER PRIMARY KEY GENERATED BY DEFAULT AS IDENTITY (START WITH 0),
-  rev_page        INTEGER NOT NULL DEFAULT 0,
+  rev_id                       BIGINT PRIMARY KEY GENERATED BY DEFAULT AS IDENTITY (START WITH 0),
+  rev_page             BIGINT NOT NULL DEFAULT 0,
   --      REFERENCES page (page_id) ON DELETE CASCADE,
-  rev_text_id     INTEGER, -- FK
-  rev_comment     VARCHAR(1024),
-  rev_user        INTEGER      NOT NULL DEFAULT 0,
+  rev_text_id          BIGINT, -- FK
+  rev_comment          VARCHAR(1024),
+  rev_user             BIGINT      NOT NULL DEFAULT 0,
   --  REFERENCES user(user_id) ON DELETE RESTRICT,
-  rev_user_text   VARCHAR(255) NOT NULL,
-  rev_timestamp   TIMESTAMP(3)    NOT NULL,
-  rev_minor_edit  SMALLINT     NOT NULL  DEFAULT 0,
-  rev_deleted     SMALLINT     NOT NULL  DEFAULT 0,
-  rev_len         INTEGER,
-  rev_parent_id   INTEGER
+  rev_user_text        VARCHAR(255) NOT NULL,
+  rev_timestamp        TIMESTAMP(3)    NOT NULL,
+  rev_minor_edit       SMALLINT     NOT NULL  DEFAULT 0,
+  rev_deleted          SMALLINT     NOT NULL  DEFAULT 0,
+  rev_len              BIGINT,
+  rev_parent_id        BIGINT                                  DEFAULT NULL
 );
 CREATE UNIQUE INDEX revision_unique ON revision (rev_page, rev_id);
 CREATE INDEX rev_text_id_idx        ON revision (rev_text_id);
@@ -130,7 +130,7 @@ CREATE TABLE text ( -- replaces reserved word 'text'
 CREATE TABLE page_restrictions (
   --pr_id      INTEGER      NOT NULL  UNIQUE, --DEFAULT nextval('pr_id_val'),
   --pr_id      INTEGER PRIMARY KEY GENERATED BY DEFAULT AS IDENTITY (START WITH 0),
-  pr_id                INTEGER PRIMARY KEY GENERATED BY DEFAULT AS IDENTITY (START WITH 0),
+  pr_id                BIGINT PRIMARY KEY GENERATED BY DEFAULT AS IDENTITY (START WITH 0),
   pr_page    INTEGER              NOT NULL DEFAULT 0,
   --(used to be nullable)
   --  REFERENCES page (page_id) ON DELETE CASCADE,
@@ -164,7 +164,7 @@ CREATE TABLE archive (
   ar_title       VARCHAR(255)         NOT NULL,
   ar_text        CLOB(16M) INLINE LENGTH 4096,
   ar_comment     VARCHAR(1024),
-  ar_user        INTEGER NOT NULL,
+  ar_user        BIGINT NOT NULL,
   -- no foreign keys in MySQL
   -- REFERENCES user(user_id) ON DELETE SET NULL,
   ar_user_text   VARCHAR(255)         NOT NULL,
@@ -184,7 +184,7 @@ CREATE INDEX archive_user_text            ON archive (ar_user_text);
 
 
 CREATE TABLE redirect (
-  rd_from       INTEGER  NOT NULL  PRIMARY KEY,
+  rd_from       BIGINT  NOT NULL  PRIMARY KEY,
   --REFERENCES page(page_id) ON DELETE CASCADE,
   rd_namespace  SMALLINT NOT NULL  DEFAULT 0,
   rd_title      VARCHAR(255)     NOT NULL DEFAULT '',
@@ -195,7 +195,7 @@ CREATE INDEX redirect_ns_title ON redirect (rd_namespace,rd_title,rd_from);
 
 
 CREATE TABLE pagelinks (
-  pl_from       INTEGER   NOT NULL DEFAULT 0,
+  pl_from       BIGINT   NOT NULL DEFAULT 0,
   -- REFERENCES page(page_id) ON DELETE CASCADE,
   pl_namespace  SMALLINT  NOT NULL,
   pl_title      VARCHAR(255)      NOT NULL
@@ -203,7 +203,7 @@ CREATE TABLE pagelinks (
 CREATE UNIQUE INDEX pagelink_unique ON pagelinks (pl_from,pl_namespace,pl_title);
 
 CREATE TABLE templatelinks (
-  tl_from       INTEGER  NOT NULL DEFAULT 0,
+  tl_from       BIGINT  NOT NULL DEFAULT 0,
   --  REFERENCES page(page_id) ON DELETE CASCADE,
   tl_namespace  SMALLINT NOT NULL,
   tl_title      VARCHAR(255)     NOT NULL
@@ -212,7 +212,7 @@ CREATE UNIQUE INDEX templatelinks_unique ON templatelinks (tl_namespace,tl_title
 CREATE UNIQUE INDEX tl_from_idx ON templatelinks (tl_from,tl_namespace,tl_title);
 
 CREATE TABLE imagelinks (
-  il_from  INTEGER  NOT NULL  DEFAULT 0,
+  il_from  BIGINT  NOT NULL  DEFAULT 0,
   -- REFERENCES page(page_id) ON DELETE CASCADE,
   il_to    VARCHAR(255)     NOT NULL
 );
@@ -220,10 +220,12 @@ CREATE UNIQUE INDEX il_from_idx ON imagelinks (il_to,il_from);
 CREATE UNIQUE INDEX il_to_idx ON imagelinks (il_from,il_to);
 
 CREATE TABLE categorylinks (
-  cl_from       INTEGER      NOT NULL  DEFAULT 0,
+  cl_from       BIGINT      NOT NULL  DEFAULT 0,
   -- REFERENCES page(page_id) ON DELETE CASCADE,
   cl_to         VARCHAR(255)         NOT NULL,
-  cl_sortkey    VARCHAR(70),
+  -- cl_sortkey has to be at least 86 wide 
+  -- in order to be compatible with the old MySQL schema from MW 1.10
+  cl_sortkey    VARCHAR(86),
   cl_timestamp  TIMESTAMP(3)  NOT NULL
 );
 CREATE UNIQUE INDEX cl_from ON categorylinks (cl_from, cl_to);
@@ -232,7 +234,7 @@ CREATE INDEX cl_sortkey     ON categorylinks (cl_to, cl_sortkey, cl_from);
 
 
 CREATE TABLE externallinks (
-  el_from   INTEGER  NOT NULL DEFAULT 0,
+  el_from   BIGINT  NOT NULL DEFAULT 0,
   -- REFERENCES page(page_id) ON DELETE CASCADE,
   el_to     VARCHAR(1024)     NOT NULL,
   el_index  VARCHAR(1024)     NOT NULL
@@ -246,7 +248,7 @@ CREATE INDEX externallinks_index   ON externallinks (el_index);
 --
 CREATE TABLE external_user (
   -- Foreign key to user_id
-  eu_wiki_id                   INTEGER NOT NULL PRIMARY KEY,
+  eu_wiki_id                   BIGINT NOT NULL PRIMARY KEY,
 
   -- Some opaque identifier provided by the external database
   eu_external_id               VARCHAR(255) NOT NULL
@@ -261,7 +263,7 @@ CREATE UNIQUE INDEX eu_wiki_id_idx
 
 
 CREATE TABLE langlinks (
-  ll_from    INTEGER  NOT NULL DEFAULT 0,
+  ll_from    BIGINT  NOT NULL DEFAULT 0,
   -- REFERENCES page (page_id) ON DELETE CASCADE,
   ll_lang    VARCHAR(20),
   ll_title   VARCHAR(255)
@@ -271,10 +273,10 @@ CREATE INDEX langlinks_lang_title    ON langlinks (ll_lang,ll_title);
 
 
 CREATE TABLE site_stats (
-  ss_row_id         INTEGER  NOT NULL  UNIQUE,
-  ss_total_views    INTEGER            DEFAULT 0,
-  ss_total_edits    INTEGER            DEFAULT 0,
-  ss_good_articles  INTEGER             DEFAULT 0,
+  ss_row_id         BIGINT       NOT NULL  UNIQUE,
+  ss_total_views    BIGINT            DEFAULT 0,
+  ss_total_edits    BIGINT            DEFAULT 0,
+  ss_good_articles  BIGINT             DEFAULT 0,
   ss_total_pages    INTEGER            DEFAULT -1,
   ss_users          INTEGER            DEFAULT -1,
   ss_active_users   INTEGER            DEFAULT -1,
@@ -290,9 +292,9 @@ CREATE TABLE ipblocks (
   ipb_id                INTEGER      NOT NULL  PRIMARY KEY,
   --DEFAULT nextval('ipblocks_ipb_id_val'),
   ipb_address           VARCHAR(1024),
-  ipb_user              INTEGER NOT NULL DEFAULT 0,
+  ipb_user              BIGINT NOT NULL DEFAULT 0,
   --           REFERENCES user(user_id) ON DELETE SET NULL,
-  ipb_by                INTEGER      NOT NULL DEFAULT 0,
+  ipb_by                BIGINT      NOT NULL DEFAULT 0,
   --  REFERENCES user(user_id) ON DELETE CASCADE,
   ipb_by_text           VARCHAR(255)         NOT NULL  DEFAULT '',
   ipb_reason            VARCHAR(1024)         NOT NULL,
@@ -317,7 +319,7 @@ CREATE INDEX ipb_range   ON ipblocks (ipb_range_start,ipb_range_end);
 
 CREATE TABLE image (
   img_name         VARCHAR(255)      NOT NULL  PRIMARY KEY,
-  img_size         INTEGER   NOT NULL,
+  img_size         BIGINT   NOT NULL,
   img_width        INTEGER   NOT NULL,
   img_height       INTEGER   NOT NULL,
   img_metadata     CLOB(16M) INLINE LENGTH 4096     NOT NULL  DEFAULT '',
@@ -326,7 +328,7 @@ CREATE TABLE image (
   img_major_mime   VARCHAR(255)                DEFAULT 'unknown',
   img_minor_mime   VARCHAR(32)                DEFAULT 'unknown',
   img_description  VARCHAR(1024)      NOT NULL DEFAULT '',
-  img_user         INTEGER NOT NULL DEFAULT 0,
+  img_user         BIGINT NOT NULL DEFAULT 0,
   --         REFERENCES user(user_id) ON DELETE SET NULL,
   img_user_text    VARCHAR(255)      NOT NULL DEFAULT '',
   img_timestamp    TIMESTAMP(3),
@@ -339,12 +341,12 @@ CREATE INDEX img_sha1          ON image (img_sha1);
 CREATE TABLE oldimage (
   oi_name          VARCHAR(255)         NOT NULL DEFAULT '',
   oi_archive_name  VARCHAR(255)         NOT NULL,
-  oi_size          INTEGER      NOT NULL,
+  oi_size          BIGINT      NOT NULL,
   oi_width         INTEGER      NOT NULL,
   oi_height        INTEGER      NOT NULL,
   oi_bits          SMALLINT     NOT NULL,
   oi_description   VARCHAR(1024),
-  oi_user          INTEGER NOT NULL DEFAULT 0,
+  oi_user          BIGINT NOT NULL DEFAULT 0,
   --            REFERENCES user(user_id) ON DELETE SET NULL,
   oi_user_text     VARCHAR(255)         NOT NULL,
   oi_timestamp     TIMESTAMP(3)  NOT NULL,
@@ -369,12 +371,12 @@ CREATE TABLE filearchive (
   fa_name               VARCHAR(255)         NOT NULL,
   fa_archive_name       VARCHAR(255),
   fa_storage_group      VARCHAR(255),
-  fa_storage_key        VARCHAR(32),
-  fa_deleted_user       INTEGER NOT NULL DEFAULT 0,
+  fa_storage_key        VARCHAR(64)                    DEFAULT '',
+  fa_deleted_user       BIGINT NOT NULL        DEFAULT 0,
   --            REFERENCES user(user_id) ON DELETE SET NULL,
   fa_deleted_timestamp  TIMESTAMP(3)  NOT NULL,
   fa_deleted_reason     VARCHAR(255),
-  fa_size               INTEGER      NOT NULL,
+  fa_size               BIGINT      NOT NULL,
   fa_width              INTEGER      NOT NULL,
   fa_height             INTEGER      NOT NULL,
   fa_metadata           CLOB(16M) INLINE LENGTH 4096        NOT NULL  DEFAULT '',
@@ -383,7 +385,7 @@ CREATE TABLE filearchive (
   fa_major_mime         VARCHAR(255)                   DEFAULT 'unknown',
   fa_minor_mime         VARCHAR(255)                   DEFAULT 'unknown',
   fa_description        VARCHAR(1024)         NOT NULL,
-  fa_user               INTEGER NOT NULL DEFAULT 0,
+  fa_user               BIGINT NOT NULL DEFAULT 0,
   --            REFERENCES user(user_id) ON DELETE SET NULL,
   fa_user_text          VARCHAR(255)         NOT NULL,
   fa_timestamp          TIMESTAMP(3),
@@ -400,7 +402,7 @@ CREATE TABLE recentchanges (
   --PRIMARY KEY DEFAULT nextval('rc_rc_id_seq'),
   rc_timestamp       TIMESTAMP(3)  NOT NULL,
   rc_cur_time        TIMESTAMP(3)  NOT NULL,
-  rc_user            INTEGER NOT NULL DEFAULT 0,
+  rc_user            BIGINT NOT NULL DEFAULT 0,
   --        REFERENCES user(user_id) ON DELETE SET NULL,
   rc_user_text       VARCHAR(255)         NOT NULL,
   rc_namespace       SMALLINT     NOT NULL,
@@ -409,10 +411,10 @@ CREATE TABLE recentchanges (
   rc_minor           SMALLINT     NOT NULL  DEFAULT 0,
   rc_bot             SMALLINT     NOT NULL  DEFAULT 0,
   rc_new             SMALLINT     NOT NULL  DEFAULT 0,
-  rc_cur_id          INTEGER NOT NULL DEFAULT 0,
+  rc_cur_id          BIGINT NOT NULL DEFAULT 0,
   --            REFERENCES page(page_id) ON DELETE SET NULL,
-  rc_this_oldid      INTEGER      NOT NULL,
-  rc_last_oldid      INTEGER      NOT NULL,
+  rc_this_oldid      BIGINT      NOT NULL,
+  rc_last_oldid      BIGINT      NOT NULL,
   rc_type            SMALLINT     NOT NULL  DEFAULT 0,
   rc_moved_to_ns     SMALLINT,
   rc_moved_to_title  VARCHAR(255),
@@ -421,7 +423,7 @@ CREATE TABLE recentchanges (
   rc_old_len         INTEGER,
   rc_new_len         INTEGER,
   rc_deleted         SMALLINT     NOT NULL  DEFAULT 0,
-  rc_logid           INTEGER      NOT NULL  DEFAULT 0,
+  rc_logid           BIGINT      NOT NULL  DEFAULT 0,
   rc_log_type        VARCHAR(255),
   rc_log_action      VARCHAR(255),
   rc_params          CLOB(64K) INLINE LENGTH 4096
@@ -436,7 +438,7 @@ CREATE INDEX rc_ip              ON recentchanges (rc_ip);
 
 
 CREATE TABLE watchlist (
-  wl_user                   INTEGER     NOT NULL DEFAULT 0,
+  wl_user                   BIGINT     NOT NULL DEFAULT 0,
   --  REFERENCES user(user_id) ON DELETE CASCADE,
   wl_namespace              SMALLINT    NOT NULL  DEFAULT 0,
   wl_title                  VARCHAR(255)        NOT NULL,
@@ -464,8 +466,8 @@ CREATE TABLE interwiki (
 
 CREATE TABLE querycache (
   qc_type       VARCHAR(255)      NOT NULL,
-  qc_value      INTEGER   NOT NULL,
-  qc_namespace  SMALLINT  NOT NULL,
+  qc_value      BIGINT   NOT NULL,
+  qc_namespace  INTEGER  NOT NULL,
   qc_title      VARCHAR(255)      NOT NULL
 );
 CREATE INDEX querycache_type_value ON querycache (qc_type, qc_value);
@@ -480,7 +482,7 @@ CREATE  TABLE querycache_info (
 
 CREATE TABLE querycachetwo (
   qcc_type           VARCHAR(255)     NOT NULL,
-  qcc_value         INTEGER  NOT NULL  DEFAULT 0,
+  qcc_value         BIGINT  NOT NULL  DEFAULT 0,
   qcc_namespace     INTEGER  NOT NULL  DEFAULT 0,
   qcc_title          VARCHAR(255)     NOT NULL  DEFAULT '',
   qcc_namespacetwo  INTEGER  NOT NULL  DEFAULT 0,
@@ -501,24 +503,24 @@ CREATE INDEX objectcacache_exptime ON objectcache (exptime);
 
 CREATE TABLE transcache (
   tc_url       VARCHAR(255)         NOT NULL  UNIQUE,
-  tc_contents  VARCHAR(255)         NOT NULL,
+  tc_contents  CLOB(64K) INLINE LENGTH 4096         NOT NULL,
   tc_time      TIMESTAMP(3)  NOT NULL
 );
 
 
 CREATE TABLE logging (
-  log_id                       INTEGER      NOT NULL PRIMARY KEY,
+  log_id                       BIGINT      NOT NULL PRIMARY KEY,
   --PRIMARY KEY DEFAULT nextval('log_log_id_seq'),
   log_type                     VARCHAR(32)         NOT NULL,
   log_action           VARCHAR(32)         NOT NULL,
   log_timestamp                TIMESTAMP(3)  NOT NULL,
-  log_user                     INTEGER NOT NULL DEFAULT 0,
+  log_user                     BIGINT NOT NULL DEFAULT 0,
   --                REFERENCES user(user_id) ON DELETE SET NULL,
   -- Name of the user who performed this action
   log_user_text                VARCHAR(255) NOT NULL default '',
   log_namespace                SMALLINT     NOT NULL,
   log_title                    VARCHAR(255)         NOT NULL,
-  log_page                     INTEGER,
+  log_page                     BIGINT,
   log_comment          VARCHAR(255),
   log_params           CLOB(64K) INLINE LENGTH 4096,
   log_deleted          SMALLINT     NOT NULL DEFAULT 0
@@ -546,7 +548,7 @@ CREATE INDEX trackback_page ON trackbacks (tb_page);
 
 
 CREATE TABLE job (
-  job_id         INTEGER   NOT NULL PRIMARY KEY,
+  job_id         BIGINT   NOT NULL PRIMARY KEY,
   --PRIMARY KEY DEFAULT nextval('job_job_id_seq'),
   job_cmd        VARCHAR(255)      NOT NULL,
   job_namespace  SMALLINT  NOT NULL,
@@ -607,7 +609,7 @@ CREATE INDEX job_cmd_namespace_title ON job (job_cmd, job_namespace, job_title);
 -- hack implementation
 -- should be replaced with OmniFind, Contains(), etc
 CREATE TABLE searchindex (
-  si_page int NOT NULL,
+  si_page BIGINT NOT NULL,
   si_title varchar(255) NOT NULL default '',
   si_text clob NOT NULL
 );
@@ -623,9 +625,9 @@ CREATE TABLE profiling (
 CREATE UNIQUE INDEX pf_name_server ON profiling (pf_name, pf_server);
 
 CREATE TABLE protected_titles (
-  pt_namespace   SMALLINT    NOT NULL,
+  pt_namespace   INTEGER    NOT NULL,
   pt_title       VARCHAR(255)        NOT NULL,
-  pt_user        INTEGER NOT NULL DEFAULT 0,
+  pt_user        BIGINT NOT NULL DEFAULT 0,
   --       REFERENCES user(user_id) ON DELETE SET NULL,
   pt_reason      VARCHAR(1024),
   pt_timestamp   TIMESTAMP(3) NOT NULL,
@@ -697,7 +699,7 @@ CREATE TABLE valid_tag (
 --
 CREATE TABLE user_properties (
   -- Foreign key to user.user_id
-  up_user INTEGER NOT NULL,
+  up_user BIGINT NOT NULL,
   
   -- Name of the option being saved. This is indexed for bulk lookup.
   up_property VARCHAR(32) FOR BIT DATA NOT NULL,
@@ -714,7 +716,7 @@ CREATE TABLE log_search (
   -- The value of the ID
   ls_value varchar(255) NOT NULL,
   -- Key to log_id
-  ls_log_id INTEGER NOT NULL default 0
+  ls_log_id BIGINT NOT NULL default 0
 );
 CREATE UNIQUE INDEX ls_field_val ON log_search (ls_field,ls_value,ls_log_id);
 CREATE INDEX ls_log_id ON log_search (ls_log_id);