Hi Andrew, On Thursday 05 March 2015 06:08 AM, Andrew Stuart wrote: > Hi Abhilash, > > Sorry I should add that I am wondering if the presence of “acceptable > aliases” in the list configuration is causing a problem deleting the list > that has those aliases. Is that a possibility? The sqlalchemy error mentions > acceptable aliases and also my database state contains acceptable aliases > records for the list in question.
Actually you have suspected right. Before removing the mailing_list record, we need to remove all records from `acceptablealias` table. We can either use a `MailingListDeleteEvent` event or a new `__delete__` method in `MailingList` model. The error is caused because deleting domains deletes all the mailing list associated with it, and since acceptablealias.mailing_list_id is set to `nullable=False` the deletion of a list is not possible. @barry: this looks like a bug to me, what do you say? > thanks > > Andrew > > On 5 Mar 2015, at 11:16 am, Andrew Stuart <andrew.stu...@supercoders.com.au> > wrote: > > Hi Abhilash > > Requesting your help - do you have some time to help me with this one please? > You seem to know a fair bit about the database and sqlalchemy. > > Do you have any guesses as to what is going on here? It’s becoming quite a > problem for me because the database in its stuck state won’t complete my test > suite. > > thanks > > Andrew > > > > On 2 Mar 2015, at 7:41 am, Andrew Stuart <andrew.stu...@supercoders.com.au> > wrote: > > After I run my tests, the Mailman database seems to get into a state in which > it is not possible to delete my test mailing list and test domain. > > I figure it is something to do with the database state but I can’t see what > at this stage. > > > ######################################################################################################### > ###################################Attempting to delete a domain gives > sqlalchemy error > ######################################################################################################### > > curl -X DELETE --verbose --header "authorization: Basic > cmVzdGFkbWluOnJlc3RwYXNz" http://localhost:8001/3.0/domains/mail.example.org > > Traceback (most recent call last): > File > "/home/ubuntu/venv3.4/lib/python3.4/site-packages/SQLAlchemy-0.9.8-py3.4.egg/sqlalchemy/engine/base.py", > line 951, in _execute_context > context) > File > "/home/ubuntu/venv3.4/lib/python3.4/site-packages/SQLAlchemy-0.9.8-py3.4.egg/sqlalchemy/engine/default.py", > line 436, in do_execute > cursor.execute(statement, parameters) > sqlite3.IntegrityError: NOT NULL constraint failed: > acceptablealias.mailing_list_id > > The above exception was the direct cause of the following exception: > > Traceback (most recent call last): > File "/usr/lib/python3.4/wsgiref/handlers.py", line 137, in run > self.result = application(self.environ, self.start_response) > File "/home/ubuntu/mailman/src/mailman/database/transaction.py", line 57, in > wrapper > config.db.commit() > File "/home/ubuntu/mailman/src/mailman/database/base.py", line 56, in commit > self.store.commit() > File > "/home/ubuntu/venv3.4/lib/python3.4/site-packages/SQLAlchemy-0.9.8-py3.4.egg/sqlalchemy/orm/session.py", > line 776, in commit > self.transaction.commit() > File > "/home/ubuntu/venv3.4/lib/python3.4/site-packages/SQLAlchemy-0.9.8-py3.4.egg/sqlalchemy/orm/session.py", > line 377, in commit > self._prepare_impl() > File > "/home/ubuntu/venv3.4/lib/python3.4/site-packages/SQLAlchemy-0.9.8-py3.4.egg/sqlalchemy/orm/session.py", > line 357, in _prepare_impl > self.session.flush() > File > "/home/ubuntu/venv3.4/lib/python3.4/site-packages/SQLAlchemy-0.9.8-py3.4.egg/sqlalchemy/orm/session.py", > line 1919, in flush > self._flush(objects) > File > "/home/ubuntu/venv3.4/lib/python3.4/site-packages/SQLAlchemy-0.9.8-py3.4.egg/sqlalchemy/orm/session.py", > line 2037, in _flush > transaction.rollback(_capture_exception=True) > File > "/home/ubuntu/venv3.4/lib/python3.4/site-packages/SQLAlchemy-0.9.8-py3.4.egg/sqlalchemy/util/langhelpers.py", > line 60, in __exit__ > compat.reraise(exc_type, exc_value, exc_tb) > File > "/home/ubuntu/venv3.4/lib/python3.4/site-packages/SQLAlchemy-0.9.8-py3.4.egg/sqlalchemy/util/compat.py", > line 182, in reraise > raise value > File > "/home/ubuntu/venv3.4/lib/python3.4/site-packages/SQLAlchemy-0.9.8-py3.4.egg/sqlalchemy/orm/session.py", > line 2001, in _flush > flush_context.execute() > File > "/home/ubuntu/venv3.4/lib/python3.4/site-packages/SQLAlchemy-0.9.8-py3.4.egg/sqlalchemy/orm/unitofwork.py", > line 372, in execute > rec.execute(self) > File > "/home/ubuntu/venv3.4/lib/python3.4/site-packages/SQLAlchemy-0.9.8-py3.4.egg/sqlalchemy/orm/unitofwork.py", > line 526, in execute > uow > File > "/home/ubuntu/venv3.4/lib/python3.4/site-packages/SQLAlchemy-0.9.8-py3.4.egg/sqlalchemy/orm/persistence.py", > line 60, in save_obj > mapper, table, update) > File > "/home/ubuntu/venv3.4/lib/python3.4/site-packages/SQLAlchemy-0.9.8-py3.4.egg/sqlalchemy/orm/persistence.py", > line 518, in _emit_update_statements > execute(statement, params) > File > "/home/ubuntu/venv3.4/lib/python3.4/site-packages/SQLAlchemy-0.9.8-py3.4.egg/sqlalchemy/engine/base.py", > line 729, in execute > return meth(self, multiparams, params) > File > "/home/ubuntu/venv3.4/lib/python3.4/site-packages/SQLAlchemy-0.9.8-py3.4.egg/sqlalchemy/sql/elements.py", > line 322, in _execute_on_connection > return connection._execute_clauseelement(self, multiparams, params) > File > "/home/ubuntu/venv3.4/lib/python3.4/site-packages/SQLAlchemy-0.9.8-py3.4.egg/sqlalchemy/engine/base.py", > line 826, in _execute_clauseelement > compiled_sql, distilled_params > File > "/home/ubuntu/venv3.4/lib/python3.4/site-packages/SQLAlchemy-0.9.8-py3.4.egg/sqlalchemy/engine/base.py", > line 958, in _execute_context > context) > File > "/home/ubuntu/venv3.4/lib/python3.4/site-packages/SQLAlchemy-0.9.8-py3.4.egg/sqlalchemy/engine/base.py", > line 1159, in _handle_dbapi_exception > exc_info > File > "/home/ubuntu/venv3.4/lib/python3.4/site-packages/SQLAlchemy-0.9.8-py3.4.egg/sqlalchemy/util/compat.py", > line 188, in raise_from_cause > reraise(type(exception), exception, tb=exc_tb, cause=exc_value) > File > "/home/ubuntu/venv3.4/lib/python3.4/site-packages/SQLAlchemy-0.9.8-py3.4.egg/sqlalchemy/util/compat.py", > line 181, in reraise > raise value.with_traceback(tb) > File > "/home/ubuntu/venv3.4/lib/python3.4/site-packages/SQLAlchemy-0.9.8-py3.4.egg/sqlalchemy/engine/base.py", > line 951, in _execute_context > context) > File > "/home/ubuntu/venv3.4/lib/python3.4/site-packages/SQLAlchemy-0.9.8-py3.4.egg/sqlalchemy/engine/default.py", > line 436, in do_execute > cursor.execute(statement, parameters) > sqlalchemy.exc.IntegrityError: (IntegrityError) NOT NULL constraint failed: > acceptablealias.mailing_list_id 'UPDATE acceptablealias SET mailing_list_id=? > WHERE acceptablealias.id = ?' (None, 1) > > > > ######################################################################################################### > ###################################Attempting to delete a mailing list gives > sqlalchemy error > ######################################################################################################### > > curl -X DELETE --verbose --header "authorization: Basic > cmVzdGFkbWluOnJlc3RwYXNz" > http://localhost:8001/3.0/lists/testlist1.mail.example.org > > Traceback (most recent call last): > File "/usr/lib/python3.4/wsgiref/handlers.py", line 137, in run > self.result = application(self.environ, self.start_response) > File "/home/ubuntu/mailman/src/mailman/database/transaction.py", line 56, in > wrapper > rtn = function(*args, **kws) > File "/home/ubuntu/mailman/src/mailman/rest/wsgiapp.py", line 62, in __call__ > environ, start_response) > File "/home/ubuntu/venv3.4/lib/python3.4/site-packages/falcon/api.py", line > 175, in __call__ > responder(req, resp, **params) > File "/home/ubuntu/mailman/src/mailman/rest/lists.py", line 145, in on_delete > remove_list(self._mlist) > File "/home/ubuntu/mailman/src/mailman/app/lifecycle.py", line 101, in > remove_list > call_name(config.mta.incoming).delete(mlist) > File "/home/ubuntu/mailman/src/mailman/mta/postfix.py", line 69, in create > self.regenerate() > File "/home/ubuntu/mailman/src/mailman/mta/postfix.py", line 83, in regenerate > self._generate_lmtp_file(fp) > File "/home/ubuntu/mailman/src/mailman/mta/postfix.py", line 116, in > _generate_lmtp_file > for list_name, mail_host in list_manager.name_components: > File "/home/ubuntu/mailman/src/mailman/model/listmanager.py", line 119, in > name_components > MailingList.list_name): > File > "/home/ubuntu/venv3.4/lib/python3.4/site-packages/SQLAlchemy-0.9.8-py3.4.egg/sqlalchemy/orm/query.py", > line 1011, in values > return iter(q) > File > "/home/ubuntu/venv3.4/lib/python3.4/site-packages/SQLAlchemy-0.9.8-py3.4.egg/sqlalchemy/orm/query.py", > line 2437, in __iter__ > self.session._autoflush() > File > "/home/ubuntu/venv3.4/lib/python3.4/site-packages/SQLAlchemy-0.9.8-py3.4.egg/sqlalchemy/orm/session.py", > line 1208, in _autoflush > util.raise_from_cause(e) > File > "/home/ubuntu/venv3.4/lib/python3.4/site-packages/SQLAlchemy-0.9.8-py3.4.egg/sqlalchemy/util/compat.py", > line 188, in raise_from_cause > reraise(type(exception), exception, tb=exc_tb, cause=exc_value) > File > "/home/ubuntu/venv3.4/lib/python3.4/site-packages/SQLAlchemy-0.9.8-py3.4.egg/sqlalchemy/util/compat.py", > line 182, in reraise > raise value > File > "/home/ubuntu/venv3.4/lib/python3.4/site-packages/SQLAlchemy-0.9.8-py3.4.egg/sqlalchemy/orm/session.py", > line 1198, in _autoflush > self.flush() > File > "/home/ubuntu/venv3.4/lib/python3.4/site-packages/SQLAlchemy-0.9.8-py3.4.egg/sqlalchemy/orm/session.py", > line 1919, in flush > self._flush(objects) > File > "/home/ubuntu/venv3.4/lib/python3.4/site-packages/SQLAlchemy-0.9.8-py3.4.egg/sqlalchemy/orm/session.py", > line 2037, in _flush > transaction.rollback(_capture_exception=True) > File > "/home/ubuntu/venv3.4/lib/python3.4/site-packages/SQLAlchemy-0.9.8-py3.4.egg/sqlalchemy/util/langhelpers.py", > line 60, in __exit__ > compat.reraise(exc_type, exc_value, exc_tb) > File > "/home/ubuntu/venv3.4/lib/python3.4/site-packages/SQLAlchemy-0.9.8-py3.4.egg/sqlalchemy/util/compat.py", > line 182, in reraise > raise value > File > "/home/ubuntu/venv3.4/lib/python3.4/site-packages/SQLAlchemy-0.9.8-py3.4.egg/sqlalchemy/orm/session.py", > line 2001, in _flush > flush_context.execute() > File > "/home/ubuntu/venv3.4/lib/python3.4/site-packages/SQLAlchemy-0.9.8-py3.4.egg/sqlalchemy/orm/unitofwork.py", > line 372, in execute > rec.execute(self) > File > "/home/ubuntu/venv3.4/lib/python3.4/site-packages/SQLAlchemy-0.9.8-py3.4.egg/sqlalchemy/orm/unitofwork.py", > line 526, in execute > uow > File > "/home/ubuntu/venv3.4/lib/python3.4/site-packages/SQLAlchemy-0.9.8-py3.4.egg/sqlalchemy/orm/persistence.py", > line 60, in save_obj > mapper, table, update) > File > "/home/ubuntu/venv3.4/lib/python3.4/site-packages/SQLAlchemy-0.9.8-py3.4.egg/sqlalchemy/orm/persistence.py", > line 518, in _emit_update_statements > execute(statement, params) > File > "/home/ubuntu/venv3.4/lib/python3.4/site-packages/SQLAlchemy-0.9.8-py3.4.egg/sqlalchemy/engine/base.py", > line 729, in execute > return meth(self, multiparams, params) > File > "/home/ubuntu/venv3.4/lib/python3.4/site-packages/SQLAlchemy-0.9.8-py3.4.egg/sqlalchemy/sql/elements.py", > line 322, in _execute_on_connection > return connection._execute_clauseelement(self, multiparams, params) > File > "/home/ubuntu/venv3.4/lib/python3.4/site-packages/SQLAlchemy-0.9.8-py3.4.egg/sqlalchemy/engine/base.py", > line 826, in _execute_clauseelement > compiled_sql, distilled_params > File > "/home/ubuntu/venv3.4/lib/python3.4/site-packages/SQLAlchemy-0.9.8-py3.4.egg/sqlalchemy/engine/base.py", > line 958, in _execute_context > context) > File > "/home/ubuntu/venv3.4/lib/python3.4/site-packages/SQLAlchemy-0.9.8-py3.4.egg/sqlalchemy/engine/base.py", > line 1159, in _handle_dbapi_exception > exc_info > File > "/home/ubuntu/venv3.4/lib/python3.4/site-packages/SQLAlchemy-0.9.8-py3.4.egg/sqlalchemy/util/compat.py", > line 188, in raise_from_cause > reraise(type(exception), exception, tb=exc_tb, cause=exc_value) > File > "/home/ubuntu/venv3.4/lib/python3.4/site-packages/SQLAlchemy-0.9.8-py3.4.egg/sqlalchemy/util/compat.py", > line 181, in reraise > raise value.with_traceback(tb) > File > "/home/ubuntu/venv3.4/lib/python3.4/site-packages/SQLAlchemy-0.9.8-py3.4.egg/sqlalchemy/engine/base.py", > line 951, in _execute_context > context) > File > "/home/ubuntu/venv3.4/lib/python3.4/site-packages/SQLAlchemy-0.9.8-py3.4.egg/sqlalchemy/engine/default.py", > line 436, in do_execute > cursor.execute(statement, parameters) > sqlalchemy.exc.IntegrityError: (raised as a result of Query-invoked > autoflush; consider using a session.no_autoflush block if this flush is > occurring prematurely) (IntegrityError) NOT NULL constraint failed: > acceptablealias.mailing_list_id 'UPDATE acceptablealias SET mailing_list_id=? > WHERE acceptablealias.id = ?' (None, 1) > > > ######################################################################################################### > This is the database at the time of the errors - note I have had to remove an > accumulation of UID and preferences INSERTS. > ######################################################################################################### > > PRAGMA foreign_keys=OFF; > BEGIN TRANSACTION; > CREATE TABLE pended ( > id INTEGER NOT NULL, > token VARCHAR, > expiration_date DATETIME, > PRIMARY KEY (id) > ); > CREATE TABLE preferences ( > id INTEGER NOT NULL, > acknowledge_posts BOOLEAN, > hide_address BOOLEAN, > preferred_language VARCHAR, > receive_list_copy BOOLEAN, > receive_own_postings BOOLEAN, > delivery_mode INTEGER, > delivery_status INTEGER, > PRIMARY KEY (id), > CHECK (acknowledge_posts IN (0, 1)), > CHECK (hide_address IN (0, 1)), > CHECK (receive_list_copy IN (0, 1)), > CHECK (receive_own_postings IN (0, 1)) > ); > CREATE TABLE domain ( > id INTEGER NOT NULL, > mail_host VARCHAR, > base_url VARCHAR, > description VARCHAR, > contact_address VARCHAR, > PRIMARY KEY (id) > ); > INSERT INTO "domain" > VALUES(1,'mail.example.org','http://mail.example.org',NULL,'postmas...@mail.example.org'); > CREATE TABLE message ( > id INTEGER NOT NULL, > message_id VARCHAR, > message_id_hash VARCHAR, > path VARCHAR, > PRIMARY KEY (id) > ); > CREATE TABLE mailinglist ( > id INTEGER NOT NULL, > list_name VARCHAR, > mail_host VARCHAR, > list_id VARCHAR, > allow_list_posts BOOLEAN, > include_rfc2369_headers BOOLEAN, > advertised BOOLEAN, > anonymous_list BOOLEAN, > created_at DATETIME, > next_request_id INTEGER, > next_digest_number INTEGER, > digest_last_sent_at DATETIME, > volume INTEGER, > last_post_at DATETIME, > accept_these_nonmembers BLOB, > admin_immed_notify BOOLEAN, > admin_notify_mchanges BOOLEAN, > administrivia BOOLEAN, > archive_policy INTEGER, > autoresponse_grace_period DATETIME, > autorespond_owner INTEGER, > autoresponse_owner_text VARCHAR, > autorespond_postings INTEGER, > autoresponse_postings_text VARCHAR, > autorespond_requests INTEGER, > autoresponse_request_text VARCHAR, > filter_action INTEGER, > filter_content BOOLEAN, > collapse_alternatives BOOLEAN, > convert_html_to_plaintext BOOLEAN, > bounce_info_stale_after DATETIME, > bounce_matching_headers VARCHAR, > bounce_notify_owner_on_disable BOOLEAN, > bounce_notify_owner_on_removal BOOLEAN, > bounce_score_threshold INTEGER, > bounce_you_are_disabled_warnings INTEGER, > bounce_you_are_disabled_warnings_interval DATETIME, > forward_unrecognized_bounces_to INTEGER, > process_bounces BOOLEAN, > default_member_action INTEGER, > default_nonmember_action INTEGER, > description VARCHAR, > digest_footer_uri VARCHAR, > digest_header_uri VARCHAR, > digest_is_default BOOLEAN, > digest_send_periodic BOOLEAN, > digest_size_threshold FLOAT, > digest_volume_frequency INTEGER, > digestable BOOLEAN, > discard_these_nonmembers BLOB, > emergency BOOLEAN, > encode_ascii_prefixes BOOLEAN, > first_strip_reply_to BOOLEAN, > footer_uri VARCHAR, > forward_auto_discards BOOLEAN, > gateway_to_mail BOOLEAN, > gateway_to_news BOOLEAN, > goodbye_message_uri VARCHAR, > header_matches BLOB, > header_uri VARCHAR, > hold_these_nonmembers BLOB, > info VARCHAR, > linked_newsgroup VARCHAR, > max_days_to_hold INTEGER, > max_message_size INTEGER, > max_num_recipients INTEGER, > member_moderation_notice VARCHAR, > mime_is_default_digest BOOLEAN, > moderator_password BLOB, > newsgroup_moderation INTEGER, > nntp_prefix_subject_too BOOLEAN, > nondigestable BOOLEAN, > nonmember_rejection_notice VARCHAR, > obscure_addresses BOOLEAN, > owner_chain VARCHAR, > owner_pipeline VARCHAR, > personalize INTEGER, > post_id INTEGER, > posting_chain VARCHAR, > posting_pipeline VARCHAR, > preferred_language VARCHAR, > display_name VARCHAR, > reject_these_nonmembers BLOB, > reply_goes_to_list INTEGER, > reply_to_address VARCHAR, > require_explicit_destination BOOLEAN, > respond_to_post_requests BOOLEAN, > scrub_nondigest BOOLEAN, > send_goodbye_message BOOLEAN, > send_welcome_message BOOLEAN, > subject_prefix VARCHAR, > topics BLOB, > topics_bodylines_limit INTEGER, > topics_enabled BOOLEAN, > welcome_message_uri VARCHAR, > PRIMARY KEY (id), > CHECK (allow_list_posts IN (0, 1)), > CHECK (include_rfc2369_headers IN (0, 1)), > CHECK (advertised IN (0, 1)), > CHECK (anonymous_list IN (0, 1)), > CHECK (admin_immed_notify IN (0, 1)), > CHECK (admin_notify_mchanges IN (0, 1)), > CHECK (administrivia IN (0, 1)), > CHECK (filter_content IN (0, 1)), > CHECK (collapse_alternatives IN (0, 1)), > CHECK (convert_html_to_plaintext IN (0, 1)), > CHECK (bounce_notify_owner_on_disable IN (0, 1)), > CHECK (bounce_notify_owner_on_removal IN (0, 1)), > CHECK (process_bounces IN (0, 1)), > CHECK (digest_is_default IN (0, 1)), > CHECK (digest_send_periodic IN (0, 1)), > CHECK (digestable IN (0, 1)), > CHECK (emergency IN (0, 1)), > CHECK (encode_ascii_prefixes IN (0, 1)), > CHECK (first_strip_reply_to IN (0, 1)), > CHECK (forward_auto_discards IN (0, 1)), > CHECK (gateway_to_mail IN (0, 1)), > CHECK (gateway_to_news IN (0, 1)), > CHECK (mime_is_default_digest IN (0, 1)), > CHECK (nntp_prefix_subject_too IN (0, 1)), > CHECK (nondigestable IN (0, 1)), > CHECK (obscure_addresses IN (0, 1)), > CHECK (require_explicit_destination IN (0, 1)), > CHECK (respond_to_post_requests IN (0, 1)), > CHECK (scrub_nondigest IN (0, 1)), > CHECK (send_goodbye_message IN (0, 1)), > CHECK (send_welcome_message IN (0, 1)), > CHECK (topics_enabled IN (0, 1)) > ); > INSERT INTO "mailinglist" > VALUES(1,'testlist1','mail.example.org','testlist1.mail.example.org',0,0,0,1,'2015-03-01 > > 20:04:21.186669',1,1,NULL,1,NULL,X'80049503000000000000005D942E',0,1,0,0,'1970-02-15 > 00:00:00.000000',1,'the owner',2,'the mailing list',1,'the > robot',2,1,0,1,'1970-01-08 00:00:00.000000',' > # Lines that *start* with a ''#'' are comments. > to: fri...@public.com > message-id: relay.comanche.denmark.eu > from: l...@listme.com > from: .*@uplinkpro.com > ',1,1,5,3,'1970-01-08 00:00:00.000000',1,1,0,2,'This is my mailing > list','mailman:///$listname/$language/footer-generic.txt',NULL,0,1,10.5,1,1,X'80049503000000000000005D942E',0,0,1,'mailman:///$listname/$language/footer-generic.txt',1,0,0,'',X'80049503000000000000005D942E',NULL,X'80049503000000000000005D942E','','',0,40,10,'',0,NULL,0,1,1,'',1,'default-owner-chain','default-owner-pipeline',0,1,'default-posting-chain','virgin','en','Fnords',X'80049503000000000000005D942E',1,'b...@example.com',1,1,0,1,0,'[ant]',X'80049503000000000000005D942E',5,0,'mailman:///welcome.txt'); > CREATE TABLE bounceevent ( > id INTEGER NOT NULL, > list_id VARCHAR, > email VARCHAR, > timestamp DATETIME, > message_id VARCHAR, > context INTEGER, > processed BOOLEAN, > PRIMARY KEY (id), > CHECK (processed IN (0, 1)) > ); > INSERT INTO "bounceevent" > VALUES(1,'testlist1.mail.example.org','testus...@mail.example.org','2015-03-01 > > 20:01:54.950333','<20150301200153.a950280...@ip-10-223-10-27.us-west-1.compute.internal>',1,0); > INSERT INTO "bounceevent" > VALUES(2,'testlist1.mail.example.org','testus...@mail.example.org','2015-03-01 > > 20:01:56.083932','<20150301200155.c229880...@ip-10-223-10-27.us-west-1.compute.internal>',1,0); > INSERT INTO "bounceevent" > VALUES(3,'testlist1.mail.example.org','testus...@mail.example.org','2015-03-01 > > 20:02:20.319257','<20150301200219.244be80...@ip-10-223-10-27.us-west-1.compute.internal>',1,0); > INSERT INTO "bounceevent" > VALUES(4,'testlist1.mail.example.org','testus...@mail.example.org','2015-03-01 > > 20:03:14.618731','<20150301200313.bd8e180...@ip-10-223-10-27.us-west-1.compute.internal>',1,0); > CREATE TABLE uid ( > id INTEGER NOT NULL, > uid CHAR(32), > PRIMARY KEY (id) > ); > CREATE TABLE ban ( > id INTEGER NOT NULL, > email VARCHAR, > list_id VARCHAR, > PRIMARY KEY (id) > ); > CREATE TABLE user ( > id INTEGER NOT NULL, > display_name VARCHAR, > password VARCHAR, > _user_id CHAR(32), > _created_on DATETIME, > _preferred_address_id INTEGER, > preferences_id INTEGER, > PRIMARY KEY (id), > FOREIGN KEY(preferences_id) REFERENCES preferences (id) > ); > INSERT INTO "user" VALUES(1,'Server > Owner','$6$rounds=101751$cOyechNgTQqeyfTJ$2lHEhtTCYTUuQ37CkZ/ncyptVRW3I9T61WxW8BV6sbzMa2KDJBoU6uRpiWyowbtVej.QTZnL9Ww0YXXM3lPdb/','4e0a784aeaa84b37b0e731aef00683aa','2015-03-01 > 20:00:41.531120',NULL,2); > INSERT INTO "user" VALUES(2,'test user > 1','$6$rounds=90188$eLE.L0U2hfbpa9QG$SKzS7PNvGiEvPjKSTDjG5PgDtIvsjARyt6HOtia24zT3eT3w99TCuXlL2ZrL.t7B3xLxX4PuWTolrjd1lZ6Qg.','23856abb3f414114b9cfde92d9557ecb','2015-03-01 > 20:00:58.143566',NULL,34); > INSERT INTO "user" > VALUES(4,'','$6$rounds=94146$ydwCyzFScrDi8mJt$Ia4w6zMnEdePdWvm3vuBrn8d0MpWstdmN0mLtImqJ3k/aLaEkZShgw.0aZU4Q7eh1sTuxUAtY7SLkSOWYj0RN.','c5e5dfd8a11e439a868cba6bdedc966e','2015-03-01 > 20:01:20.944564',NULL,92); > CREATE TABLE listarchiver ( > id INTEGER NOT NULL, > mailing_list_id INTEGER NOT NULL, > name VARCHAR NOT NULL, > _is_enabled BOOLEAN, > PRIMARY KEY (id), > FOREIGN KEY(mailing_list_id) REFERENCES mailinglist (id), > CHECK (_is_enabled IN (0, 1)) > ); > INSERT INTO "listarchiver" VALUES(1,1,'prototype',1); > INSERT INTO "listarchiver" VALUES(2,1,'mail-archive',1); > INSERT INTO "listarchiver" VALUES(3,1,'mhonarc',1); > CREATE TABLE acceptablealias ( > id INTEGER NOT NULL, > mailing_list_id INTEGER NOT NULL, > alias VARCHAR NOT NULL, > PRIMARY KEY (id), > FOREIGN KEY(mailing_list_id) REFERENCES mailinglist (id) > ); > INSERT INTO "acceptablealias" VALUES(1,1,'o...@example.com'); > INSERT INTO "acceptablealias" VALUES(2,1,'t...@example.com'); > CREATE TABLE pendedkeyvalue ( > id INTEGER NOT NULL, > "key" VARCHAR, > value VARCHAR, > pended_id INTEGER, > PRIMARY KEY (id), > FOREIGN KEY(pended_id) REFERENCES pended (id) > ); > CREATE TABLE contentfilter ( > id INTEGER NOT NULL, > mailing_list_id INTEGER, > filter_type INTEGER, > filter_pattern VARCHAR, > PRIMARY KEY (id), > FOREIGN KEY(mailing_list_id) REFERENCES mailinglist (id) > ); > CREATE TABLE _request ( > id INTEGER NOT NULL, > "key" VARCHAR, > request_type INTEGER, > data_hash VARCHAR, > mailing_list_id INTEGER, > PRIMARY KEY (id), > FOREIGN KEY(mailing_list_id) REFERENCES mailinglist (id) > ); > CREATE TABLE address ( > id INTEGER NOT NULL, > email VARCHAR, > _original VARCHAR, > display_name VARCHAR, > verified_on DATETIME, > registered_on DATETIME, > user_id INTEGER, > preferences_id INTEGER, > PRIMARY KEY (id), > FOREIGN KEY(user_id) REFERENCES user (id), > FOREIGN KEY(preferences_id) REFERENCES preferences (id) > ); > INSERT INTO "address" VALUES(1,'theb...@mail.example.org',NULL,'Server > Owner',NULL,'2015-03-01 20:00:41.530793',1,1); > CREATE TABLE autoresponserecord ( > id INTEGER NOT NULL, > address_id INTEGER, > mailing_list_id INTEGER, > response_type INTEGER, > date_sent DATE, > PRIMARY KEY (id), > FOREIGN KEY(address_id) REFERENCES address (id), > FOREIGN KEY(mailing_list_id) REFERENCES mailinglist (id) > ); > CREATE TABLE onelastdigest ( > id INTEGER NOT NULL, > mailing_list_id INTEGER, > address_id INTEGER, > delivery_mode INTEGER, > PRIMARY KEY (id), > FOREIGN KEY(mailing_list_id) REFERENCES mailinglist (id), > FOREIGN KEY(address_id) REFERENCES address (id) > ); > CREATE TABLE member ( > id INTEGER NOT NULL, > _member_id CHAR(32), > role INTEGER, > list_id VARCHAR, > moderation_action INTEGER, > address_id INTEGER, > preferences_id INTEGER, > user_id INTEGER, > PRIMARY KEY (id), > FOREIGN KEY(address_id) REFERENCES address (id), > FOREIGN KEY(preferences_id) REFERENCES preferences (id), > FOREIGN KEY(user_id) REFERENCES user (id) > ); > CREATE TABLE alembic_version ( > version_num VARCHAR(32) NOT NULL > ); > INSERT INTO "alembic_version" VALUES('33e1f5f6fa8'); > CREATE INDEX ix_uid_uid ON uid (uid); > CREATE INDEX ix_user_preferences_id ON user (preferences_id); > CREATE INDEX ix_user__user_id ON user (_user_id); > CREATE INDEX ix_listarchiver_mailing_list_id ON listarchiver > (mailing_list_id); > CREATE INDEX ix_acceptablealias_mailing_list_id ON acceptablealias > (mailing_list_id); > CREATE INDEX ix_acceptablealias_alias ON acceptablealias (alias); > CREATE INDEX ix_pendedkeyvalue_pended_id ON pendedkeyvalue (pended_id); > CREATE INDEX ix_contentfilter_mailing_list_id ON contentfilter > (mailing_list_id); > CREATE INDEX ix__request_mailing_list_id ON _request (mailing_list_id); > CREATE INDEX ix_address_user_id ON address (user_id); > CREATE INDEX ix_address_preferences_id ON address (preferences_id); > CREATE INDEX ix_autoresponserecord_address_id ON autoresponserecord > (address_id); > CREATE INDEX ix_autoresponserecord_mailing_list_id ON autoresponserecord > (mailing_list_id); > COMMIT; > > -- thanks, Abhilash Raj
signature.asc
Description: OpenPGP digital signature
_______________________________________________ Mailman-Developers mailing list Mailman-Developers@python.org https://mail.python.org/mailman/listinfo/mailman-developers Mailman FAQ: http://wiki.list.org/x/AgA3 Searchable Archives: http://www.mail-archive.com/mailman-developers%40python.org/ Unsubscribe: https://mail.python.org/mailman/options/mailman-developers/archive%40jab.org Security Policy: http://wiki.list.org/x/QIA9