diff --git a/ChangeLog b/ChangeLog index e2ec555fd..8889609f2 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2005-10-20 Alexey Shchepin + + * src/odbc/pg.sql: Added spool.seq field for offline messages + sorting + * src/mod_offline_odbc.erl: Likewise + 2005-10-18 Alexey Shchepin * src/mod_roster_odbc.erl: Bugfix diff --git a/src/mod_offline_odbc.erl b/src/mod_offline_odbc.erl index ff9737171..d7a77ae4a 100644 --- a/src/mod_offline_odbc.erl +++ b/src/mod_offline_odbc.erl @@ -214,7 +214,8 @@ pop_offline_messages(Ls, User, Server) -> case ejabberd_odbc:sql_query( LServer, ["begin;" - "select * from spool where username='", EUser, "';" + "select username, xml from spool where username='", EUser, "'" + " order by seq;" "delete from spool where username='", EUser, "';" "commit"]) of [{updated, undefined}, diff --git a/src/odbc/pg.sql b/src/odbc/pg.sql index 5d0799ccd..e8404b134 100644 --- a/src/odbc/pg.sql +++ b/src/odbc/pg.sql @@ -36,10 +36,17 @@ CREATE TABLE rostergroups ( CREATE INDEX pk_rosterg_user_jid ON rostergroups USING btree (username, jid); +;; To update from previous table definition: +; CREATE SEQUENCE spool_seq_seq; +; ALTER TABLE spool ADD COLUMN seq integer; +; ALTER TABLE spool ALTER COLUMN seq SET DEFAULT nextval('spool_seq_seq'); +; UPDATE spool SET seq = DEFAULT; +; ALTER TABLE spool ALTER COLUMN seq SET NOT NULL; CREATE TABLE spool ( username text NOT NULL, - xml text + xml text, + seq SERIAL ); CREATE INDEX i_despool ON spool USING btree (username);