diff options
author | shennetsind <ind@henn.et> | 2014-02-19 15:16:46 -0300 |
---|---|---|
committer | shennetsind <ind@henn.et> | 2014-02-19 15:16:46 -0300 |
commit | d0b9510cf0d7a47e53aa341462a1175326dfc09d (patch) | |
tree | 9fd3bc153a33cca6ad077545c23ad984d9bd0982 | |
parent | 37c20c832728b22ba23c3a3dfbe961fdbf9a3fb9 (diff) | |
download | hercules-d0b9510cf0d7a47e53aa341462a1175326dfc09d.tar.gz hercules-d0b9510cf0d7a47e53aa341462a1175326dfc09d.tar.bz2 hercules-d0b9510cf0d7a47e53aa341462a1175326dfc09d.tar.xz hercules-d0b9510cf0d7a47e53aa341462a1175326dfc09d.zip |
Follow up 9132878d911cfe720eaad94ad3d4a5dd11958f99
Fixed issue (8023) with sc rows (only those of tick = -1, aka permanent scs) duplicating due to lack of primary index.
Special Thanks to Flash, Haru.
Note that the upgrade script will clear the permanent statuses from your sc_data table (e.g. lex aeterna, carts) to ensure no issues are left.
Signed-off-by: shennetsind <ind@henn.et>
-rw-r--r-- | sql-files/main.sql | 4 | ||||
-rw-r--r-- | sql-files/upgrades/2014-02-19--17-57.sql | 4 | ||||
-rw-r--r-- | sql-files/upgrades/index.txt | 3 | ||||
-rw-r--r-- | src/char/char.c | 4 |
4 files changed, 13 insertions, 2 deletions
diff --git a/sql-files/main.sql b/sql-files/main.sql index 4a91aeef8..654eee9f0 100644 --- a/sql-files/main.sql +++ b/sql-files/main.sql @@ -468,7 +468,8 @@ CREATE TABLE IF NOT EXISTS `sc_data` ( `val3` int(11) NOT NULL default '0', `val4` int(11) NOT NULL default '0', KEY (`account_id`), - KEY (`char_id`) + KEY (`char_id`), + PRIMARY KEY (`account_id`,`char_id`,`type`) ) ENGINE=MyISAM; -- @@ -661,6 +662,7 @@ INSERT INTO `sql_updates` (`timestamp`) VALUES (1384763034); -- 2013-11-18--08-2 INSERT INTO `sql_updates` (`timestamp`) VALUES (1387844126); -- 2013-12-24--00-15.sql INSERT INTO `sql_updates` (`timestamp`) VALUES (1388854043); -- 2014-01-04--16-47.sql INSERT INTO `sql_updates` (`timestamp`) VALUES (1389028967); -- 2014-01-06--17-22.sql +INSERT INTO `sql_updates` (`timestamp`) VALUES (1392832626); -- 2014-02-19--17-57.sql -- -- Table structure for table `sstatus` diff --git a/sql-files/upgrades/2014-02-19--17-57.sql b/sql-files/upgrades/2014-02-19--17-57.sql new file mode 100644 index 000000000..ebebe6665 --- /dev/null +++ b/sql-files/upgrades/2014-02-19--17-57.sql @@ -0,0 +1,4 @@ +#1392832626 +DELETE FROM `sc_data` WHERE `tick` = '-1'; +ALTER TABLE `sc_data` ADD PRIMARY KEY (`account_id`,`char_id`,`type`); +INSERT INTO `sql_updates` (`timestamp`) VALUES (1392832626);
\ No newline at end of file diff --git a/sql-files/upgrades/index.txt b/sql-files/upgrades/index.txt index bf404d919..39fbd0070 100644 --- a/sql-files/upgrades/index.txt +++ b/sql-files/upgrades/index.txt @@ -17,4 +17,5 @@ 2013-11-18--08-23.sql 2013-12-24--00-15.sql 2014-01-04--16-47.sql -2014-01-06--17-22.sql
\ No newline at end of file +2014-01-06--17-22.sql +2014-02-19--17-57.sql
\ No newline at end of file diff --git a/src/char/char.c b/src/char/char.c index 1ee3cfd1d..5b497bd0c 100644 --- a/src/char/char.c +++ b/src/char/char.c @@ -3574,6 +3574,10 @@ int parse_frommap(int fd) cid = RFIFOL(fd, 8); count = RFIFOW(fd, 12); + /* clear; ensure no left overs e.g. permanent */ + if( SQL_ERROR == SQL->Query(sql_handle, "DELETE FROM `%s` WHERE `account_id` = '%d' AND `char_id`='%d'", scdata_db, aid, cid) ) + Sql_ShowDebug(sql_handle); + if( count > 0 ) { struct status_change_data data; |