Mark,

Mark Martinec schrieb:

>> ERROR 1506 (HY000): Foreign key clause is not yet supported in
>> conjunction with partitioning
>>
>> Even this the table schema without (see above) it does not work:
>> ERROR 1005 (HY000): Can't create table 'amavisd_log.msgs' (errno: 150)
>>
>> shell> perror 150
>> MySQL error code 150: Foreign key constraint is incorrectly formed
>>
>> How can I use all the tables above with partitioning or is this not
>> recommended?
> 
> Try removing all FOREIGN KEY constraints, these are not essential.
Just for the record, here is the complete SQL set for MySQL 5.1:

CREATE TABLE maddr (
    id int(10) unsigned NOT NULL AUTO_INCREMENT,
    partition_tag int(11) NOT NULL DEFAULT '0',
    email varbinary(255) NOT NULL,
    domain varchar(255) NOT NULL,
    PRIMARY KEY (id, partition_tag),
    UNIQUE KEY email_key (partition_tag, email)
) ENGINE=InnoDB PARTITION BY LIST (partition_tag) (
    PARTITION p0 VALUES IN (0,1,2,3,4,5),
    PARTITION p1 VALUES IN (6,7,8,9,10,11),
    PARTITION p2 VALUES IN (12,13,14,15,16,17),
    PARTITION p3 VALUES IN (18,19,20,21,22,23),
    PARTITION p4 VALUES IN (24,25,26,27,28,29),
    PARTITION p5 VALUES IN (30,31,32,33,34,35),
    PARTITION p6 VALUES IN (36,37,38,39,40,41),
    PARTITION p7 VALUES IN (42,43,44,45,46,47),
    PARTITION p8 VALUES IN (48,49,50,51,52,53)
);

CREATE TABLE msgs (
   partition_tag integer    DEFAULT 0,   -- see $sql_partition_tag
   mail_id    varbinary(12) NOT NULL,  -- long-term unique mail id
   secret_id  varbinary(12)   DEFAULT '',  -- authorizes release of mail_id
   am_id      varchar(20)   NOT NULL,    -- id used in the log
   time_num   integer unsigned NOT NULL, -- rx_time: seconds since Unix 
epoch
   time_iso TIMESTAMP NOT NULL DEFAULT 0,
   sid        bigint unsigned NOT NULL, -- sender: maddr.id
   policy     varchar(255)  DEFAULT '',  -- policy bank path (like macro %p)
   client_addr varchar(255) DEFAULT '',  -- SMTP client IP address (IPv4 
or v6)
   size       integer unsigned NOT NULL, -- message size in bytes
   content    binary(1),                 -- content type: V/B/S/s/M/H/O/C:
     -- 
virus/banned/spam(kill)/spammy(tag2)/bad-mime/bad-header/oversized/clean
     -- is NULL on partially processed mail
     -- use binary instead of char for case sensitivity ('S' != 's')
   quar_type  binary(1),                 -- quarantined as: ' '/F/Z/B/Q/M/L
                                         --  none/file/zipfile/bsmtp/sql/
                                         --  /mailbox(smtp)/mailbox(lmtp)
   quar_loc   varbinary(255) DEFAULT '', -- quarantine location (e.g. file)
   dsn_sent   char(1),                   -- was DSN sent? Y/N/q (q=quenched)
   spam_level float,                     -- SA spam level (no boosts)
   message_id varchar(255)  DEFAULT '',  -- mail Message-ID header field
   from_addr  varchar(255)  DEFAULT '',  -- mail From header field,    UTF8
   subject    varchar(255)  DEFAULT '',  -- mail Subject header field, UTF8
   host       varchar(255)  NOT NULL,
   PRIMARY KEY (mail_id, partition_tag)
) ENGINE=InnoDB PARTITION BY LIST (partition_tag) (
    PARTITION p0 VALUES IN (0,1,2,3,4,5),
    PARTITION p1 VALUES IN (6,7,8,9,10,11),
    PARTITION p2 VALUES IN (12,13,14,15,16,17),
    PARTITION p3 VALUES IN (18,19,20,21,22,23),
    PARTITION p4 VALUES IN (24,25,26,27,28,29),
    PARTITION p5 VALUES IN (30,31,32,33,34,35),
    PARTITION p6 VALUES IN (36,37,38,39,40,41),
    PARTITION p7 VALUES IN (42,43,44,45,46,47),
    PARTITION p8 VALUES IN (48,49,50,51,52,53)
);



CREATE INDEX msgs_idx_sid      ON msgs (sid);
CREATE INDEX msgs_idx_mess_id  ON msgs (message_id); -- useful with pen pals
CREATE INDEX msgs_idx_time_num ON msgs (time_num);
CREATE INDEX msgs_idx_time_iso ON msgs (time_iso);

CREATE TABLE msgrcpt (
   partition_tag integer    DEFAULT 0,    -- see $sql_partition_tag
   mail_id    varbinary(12) NOT NULL,     -- (must allow duplicates)
   rid        bigint unsigned NOT NULL,   -- recipient: maddr.id (dupl. 
allowed)
   ds         char(1)       NOT NULL,     -- delivery status: P/R/B/D/T
                                          -- 
pass/reject/bounce/discard/tempfail
   rs         char(1)       NOT NULL,     -- release status: initialized 
to ' '
   bl         char(1)       DEFAULT ' ',  -- sender blacklisted by this 
recip
   wl         char(1)       DEFAULT ' ',  -- sender whitelisted by this 
recip
   bspam_level float,                     -- spam level + per-recip boost
   smtp_resp  varchar(255)  DEFAULT '',   -- SMTP response given to MTA
   PRIMARY KEY (partition_tag)
) ENGINE=InnoDB PARTITION BY LIST (partition_tag) (
    PARTITION p0 VALUES IN (0,1,2,3,4,5),
    PARTITION p1 VALUES IN (6,7,8,9,10,11),
    PARTITION p2 VALUES IN (12,13,14,15,16,17),
    PARTITION p3 VALUES IN (18,19,20,21,22,23),
    PARTITION p4 VALUES IN (24,25,26,27,28,29),
    PARTITION p5 VALUES IN (30,31,32,33,34,35),
    PARTITION p6 VALUES IN (36,37,38,39,40,41),
    PARTITION p7 VALUES IN (42,43,44,45,46,47),
    PARTITION p8 VALUES IN (48,49,50,51,52,53)
);

CREATE INDEX msgrcpt_idx_mail_id  ON msgrcpt (mail_id);
CREATE INDEX msgrcpt_idx_rid      ON msgrcpt (rid);

CREATE TABLE quarantine (
   partition_tag integer    DEFAULT 0,    -- see $sql_partition_tag
   mail_id    varbinary(12) NOT NULL,     -- long-term unique mail id
   chunk_ind  integer unsigned NOT NULL,  -- chunk number, starting with 1
   mail_text  blob          NOT NULL,     -- store mail as chunks of octets
   PRIMARY KEY (mail_id,chunk_ind,partition_tag)
) ENGINE=InnoDB  PARTITION BY LIST (partition_tag) (
    PARTITION p0 VALUES IN (0,1,2,3,4,5),
    PARTITION p1 VALUES IN (6,7,8,9,10,11),
    PARTITION p2 VALUES IN (12,13,14,15,16,17),
    PARTITION p3 VALUES IN (18,19,20,21,22,23),
    PARTITION p4 VALUES IN (24,25,26,27,28,29),
    PARTITION p5 VALUES IN (30,31,32,33,34,35),
    PARTITION p6 VALUES IN (36,37,38,39,40,41),
    PARTITION p7 VALUES IN (42,43,44,45,46,47),
    PARTITION p8 VALUES IN (48,49,50,51,52,53)
);




Marc

------------------------------------------------------------------------------
Download Intel® Parallel Studio Eval
Try the new software tools for yourself. Speed compiling, find bugs
proactively, and fine-tune applications for parallel performance.
See why Intel Parallel Studio got high marks during beta.
http://p.sf.net/sfu/intel-sw-dev
_______________________________________________
AMaViS-user mailing list
AMaViS-user@lists.sourceforge.net 
https://lists.sourceforge.net/lists/listinfo/amavis-user 
 AMaViS-FAQ:http://www.amavis.org/amavis-faq.php3 
 AMaViS-HowTos:http://www.amavis.org/howto/ 

Reply via email to