summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorshennetsind <ind@henn.et>2014-02-19 15:16:46 -0300
committershennetsind <ind@henn.et>2014-02-19 15:16:46 -0300
commitd0b9510cf0d7a47e53aa341462a1175326dfc09d (patch)
tree9fd3bc153a33cca6ad077545c23ad984d9bd0982
parent37c20c832728b22ba23c3a3dfbe961fdbf9a3fb9 (diff)
downloadhercules-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.sql4
-rw-r--r--sql-files/upgrades/2014-02-19--17-57.sql4
-rw-r--r--sql-files/upgrades/index.txt3
-rw-r--r--src/char/char.c4
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;