Преглед изворни кода

Added primary key to tables that lack them & Dropped sstatus table (#4306)

* Added primary key to tables that lack them

* Dropped table sstatus

* Changed some primary keys and dropped no longer needed indexes

* Indent upgrade file with spaces
[ci skip]

* Fixed upgrade query on bonus_script table

* Renamed to current date

* Added missing table to engine conversion script

Co-authored-by: Lemongrass3110 <lemongrass@kstp.at>
Jittapan Pluemsumran пре 5 година
родитељ
комит
f2a1b6e784

+ 22 - 27
sql-files/main.sql

@@ -112,7 +112,8 @@ CREATE TABLE IF NOT EXISTS `bonus_script` (
   `tick` BIGINT(20) NOT NULL DEFAULT '0',
   `flag` SMALLINT(5) UNSIGNED NOT NULL DEFAULT '0',
   `type` TINYINT(1) UNSIGNED NOT NULL DEFAULT '0',
-  `icon` SMALLINT(3) NOT NULL DEFAULT '-1'
+  `icon` SMALLINT(3) NOT NULL DEFAULT '-1',
+  PRIMARY KEY (`char_id`, `type`)
 ) ENGINE=InnoDB;
 
 --
@@ -124,7 +125,8 @@ CREATE TABLE IF NOT EXISTS `buyingstore_items` (
   `index` smallint(5) unsigned NOT NULL,
   `item_id` int(10) unsigned NOT NULL,
   `amount` smallint(5) unsigned NOT NULL,
-  `price` int(10) unsigned NOT NULL
+  `price` int(10) unsigned NOT NULL,
+  PRIMARY KEY (`buyingstore_id`, `index`)
 ) ENGINE=MyISAM;
 
 --
@@ -307,7 +309,8 @@ CREATE TABLE IF NOT EXISTS `charlog` (
   `dex` int(11) unsigned NOT NULL default '0',
   `luk` int(11) unsigned NOT NULL default '0',
   `hair` tinyint(4) NOT NULL default '0',
-  `hair_color` int(11) NOT NULL default '0'
+  `hair_color` int(11) NOT NULL default '0',
+  PRIMARY KEY (`time`, `account_id`, `char_num`)
 ) ENGINE=MyISAM; 
 
 --
@@ -387,7 +390,7 @@ CREATE TABLE IF NOT EXISTS `friends` (
   `char_id` int(11) NOT NULL default '0',
   `friend_account` int(11) NOT NULL default '0',
   `friend_id` int(11) NOT NULL default '0',
-  KEY  `char_id` (`char_id`)
+  PRIMARY KEY (`char_id`, `friend_id`)
 ) ENGINE=MyISAM;
 
 --
@@ -658,12 +661,12 @@ CREATE TABLE IF NOT EXISTS `homunculus` (
 --
 
 CREATE TABLE IF NOT EXISTS `hotkey` (
-	`char_id` INT(11) NOT NULL,
-	`hotkey` TINYINT(2) unsigned NOT NULL,
-	`type` TINYINT(1) unsigned NOT NULL default '0',
-	`itemskill_id` INT(11) unsigned NOT NULL default '0',
-	`skill_lvl` TINYINT(4) unsigned NOT NULL default '0',
-	PRIMARY KEY (`char_id`,`hotkey`)
+  `char_id` INT(11) NOT NULL,
+  `hotkey` TINYINT(2) unsigned NOT NULL,
+  `type` TINYINT(1) unsigned NOT NULL default '0',
+  `itemskill_id` INT(11) unsigned NOT NULL default '0',
+  `skill_lvl` TINYINT(4) unsigned NOT NULL default '0',
+  PRIMARY KEY (`char_id`,`hotkey`)
 ) ENGINE=MyISAM;
 
 -- 
@@ -671,8 +674,11 @@ CREATE TABLE IF NOT EXISTS `hotkey` (
 --
 
 CREATE TABLE IF NOT EXISTS `interlog` (
+  `id` INT NOT NULL AUTO_INCREMENT,
   `time` datetime NOT NULL,
-  `log` varchar(255) NOT NULL default ''
+  `log` varchar(255) NOT NULL default '',
+  PRIMARY KEY (`id`),
+  INDEX `time` (`time`)
 ) ENGINE=MyISAM; 
 
 --
@@ -735,7 +741,7 @@ CREATE TABLE IF NOT EXISTS `ipbanlist` (
   `btime` datetime NOT NULL,
   `rtime` datetime NOT NULL,
   `reason` varchar(255) NOT NULL default '',
-  KEY (`list`)
+  PRIMARY KEY (`list`, `btime`)
 ) ENGINE=MyISAM;
 
 --
@@ -919,8 +925,7 @@ CREATE TABLE IF NOT EXISTS `sc_data` (
   `val2` int(11) NOT NULL default '0',
   `val3` int(11) NOT NULL default '0',
   `val4` int(11) NOT NULL default '0',
-  KEY (`account_id`),
-  KEY (`char_id`)
+  PRIMARY KEY (`char_id`, `type`)
 ) ENGINE=MyISAM;
 
 --
@@ -932,8 +937,7 @@ CREATE TABLE IF NOT EXISTS `skillcooldown` (
   `char_id` int(11) unsigned NOT NULL,
   `skill` smallint(11) unsigned NOT NULL DEFAULT '0',
   `tick` bigint(20) NOT NULL,
-  KEY `account_id` (`account_id`),
-  KEY `char_id` (`char_id`)
+  PRIMARY KEY (`char_id`, `skill`)
 ) ENGINE=MyISAM;
 
 --
@@ -1009,16 +1013,6 @@ CREATE TABLE IF NOT EXISTS `skill_homunculus` (
   PRIMARY KEY  (`homun_id`,`id`)
 ) ENGINE=MyISAM;
 
---
--- Table structure for table `sstatus`
---
-
-CREATE TABLE IF NOT EXISTS `sstatus` (
-  `index` tinyint(4) unsigned NOT NULL default '0',
-  `name` varchar(255) NOT NULL default '',
-  `user` int(11) unsigned NOT NULL default '0'
-) ENGINE=MyISAM;
-
 --
 -- Table structure for table `storage`
 --
@@ -1067,7 +1061,8 @@ CREATE TABLE IF NOT EXISTS `vending_items` (
   `index` smallint(5) unsigned NOT NULL,
   `cartinventory_id` int(10) unsigned NOT NULL,
   `amount` smallint(5) unsigned NOT NULL,
-  `price` int(10) unsigned NOT NULL
+  `price` int(10) unsigned NOT NULL,
+  PRIMARY KEY (`vending_id`, `index`)
 ) ENGINE=MyISAM;
 
 --

+ 42 - 3
sql-files/tools/convert_engine_innodb.sql

@@ -2,12 +2,30 @@
 -- rAthena Database Converter ( MyISAM -> InnoDB )
 --
 
+ALTER TABLE `acc_reg_num` ENGINE = InnoDB;
+ALTER TABLE `acc_reg_str` ENGINE = InnoDB;
+ALTER TABLE `achievement` ENGINE = InnoDB;
+#ALTER TABLE `atcommandlog` ENGINE = InnoDB;
 ALTER TABLE `auction` ENGINE = InnoDB;
+ALTER TABLE `bonus_script` ENGINE = InnoDB;
+#ALTER TABLE `branchlog` ENGINE = InnoDB;
+ALTER TABLE `buyingstore_items` ENGINE = InnoDB;
+ALTER TABLE `buyingstores` ENGINE = InnoDB;
 ALTER TABLE `cart_inventory` ENGINE = InnoDB;
+#ALTER TABLE `cashlog` ENGINE = InnoDB;
 ALTER TABLE `char` ENGINE = InnoDB;
+ALTER TABLE `char_reg_num` ENGINE = InnoDB;
+ALTER TABLE `char_reg_str` ENGINE = InnoDB;
 ALTER TABLE `charlog` ENGINE = InnoDB;
+#ALTER TABLE `chatlog` ENGINE = InnoDB;
+ALTER TABLE `clan` ENGINE = InnoDB;
+ALTER TABLE `clan_alliance` ENGINE = InnoDB;
+#ALTER TABLE `db_roulette` ENGINE = InnoDB;
+ALTER TABLE `elemental` ENGINE = InnoDB;
+#ALTER TABLE `feedinglog` ENGINE = InnoDB;
 ALTER TABLE `friends` ENGINE = InnoDB;
-ALTER TABLE `global_reg_value` ENGINE = InnoDB;
+ALTER TABLE `global_acc_reg_num` ENGINE = InnoDB;
+ALTER TABLE `global_acc_reg_str` ENGINE = InnoDB;
 ALTER TABLE `guild` ENGINE = InnoDB;
 ALTER TABLE `guild_alliance` ENGINE = InnoDB;
 ALTER TABLE `guild_castle` ENGINE = InnoDB;
@@ -16,27 +34,48 @@ ALTER TABLE `guild_member` ENGINE = InnoDB;
 ALTER TABLE `guild_position` ENGINE = InnoDB;
 ALTER TABLE `guild_skill` ENGINE = InnoDB;
 ALTER TABLE `guild_storage` ENGINE = InnoDB;
+ALTER TABLE `guild_storage_log` ENGINE = InnoDB;
 ALTER TABLE `homunculus` ENGINE = InnoDB;
 ALTER TABLE `hotkey` ENGINE = InnoDB;
 ALTER TABLE `interlog` ENGINE = InnoDB;
+ALTER TABLE `interreg` ENGINE = InnoDB;
 ALTER TABLE `inventory` ENGINE = InnoDB;
 ALTER TABLE `ipbanlist` ENGINE = InnoDB;
+#ALTER TABLE `item_cash_db` ENGINE = InnoDB;
+#ALTER TABLE `item_cash_db2` ENGINE = InnoDB;
 #ALTER TABLE `item_db` ENGINE = InnoDB;
+#ALTER TABLE `item_db_re` ENGINE = InnoDB;
 #ALTER TABLE `item_db2` ENGINE = InnoDB;
+#ALTER TABLE `item_db2_re` ENGINE = InnoDB;
 ALTER TABLE `login` ENGINE = InnoDB;
+#ALTER TABLE `loginlog` ENGINE = InnoDB;
 ALTER TABLE `mail` ENGINE = InnoDB;
+ALTER TABLE `mail_attachments` ENGINE = InnoDB;
 ALTER TABLE `mapreg` ENGINE = InnoDB;
+ALTER TABLE `market` ENGINE = InnoDB;
 ALTER TABLE `memo` ENGINE = InnoDB;
 ALTER TABLE `mercenary` ENGINE = InnoDB;
 ALTER TABLE `mercenary_owner` ENGINE = InnoDB;
 #ALTER TABLE `mob_db` ENGINE = InnoDB;
+#ALTER TABLE `mob_db_re` ENGINE = InnoDB;
 #ALTER TABLE `mob_db2` ENGINE = InnoDB;
+#ALTER TABLE `mob_db2_re` ENGINE = InnoDB;
+#ALTER TABLE `mob_skill_db` ENGINE = InnoDB;
+#ALTER TABLE `mob_skill_db_re` ENGINE = InnoDB;
+#ALTER TABLE `mob_skill_db2` ENGINE = InnoDB;
+#ALTER TABLE `mob_skill_db2_re` ENGINE = InnoDB;
+#ALTER TABLE `mvplog` ENGINE = InnoDB;
+#ALTER TABLE `npclog` ENGINE = InnoDB;
 ALTER TABLE `party` ENGINE = InnoDB;
 ALTER TABLE `pet` ENGINE = InnoDB;
+#ALTER TABLE `picklog` ENGINE = InnoDB;
 ALTER TABLE `quest` ENGINE = InnoDB;
-ALTER TABLE `ragsrvinfo` ENGINE = InnoDB;
+ALTER TABLE `sales` ENGINE = InnoDB;
 ALTER TABLE `sc_data` ENGINE = InnoDB;
 ALTER TABLE `skill` ENGINE = InnoDB;
 ALTER TABLE `skill_homunculus` ENGINE = InnoDB;
-ALTER TABLE `sstatus` ENGINE = InnoDB;
+ALTER TABLE `skillcooldown` ENGINE = InnoDB;
 ALTER TABLE `storage` ENGINE = InnoDB;
+ALTER TABLE `vending_items` ENGINE = InnoDB;
+ALTER TABLE `vendings` ENGINE = InnoDB;
+#ALTER TABLE `zenylog` ENGINE = InnoDB;

+ 42 - 3
sql-files/tools/convert_engine_myisam.sql

@@ -2,12 +2,30 @@
 -- rAthena Database Converter ( InnoDB -> MyISAM )
 --
 
+ALTER TABLE `acc_reg_num` ENGINE = MyISAM;
+ALTER TABLE `acc_reg_str` ENGINE = MyISAM;
+ALTER TABLE `achievement` ENGINE = MyISAM;
+#ALTER TABLE `atcommandlog` ENGINE = MyISAM;
 ALTER TABLE `auction` ENGINE = MyISAM;
+ALTER TABLE `bonus_script` ENGINE = MyISAM;
+#ALTER TABLE `branchlog` ENGINE = MyISAM;
+ALTER TABLE `buyingstore_items` ENGINE = MyISAM;
+ALTER TABLE `buyingstores` ENGINE = MyISAM;
 ALTER TABLE `cart_inventory` ENGINE = MyISAM;
+#ALTER TABLE `cashlog` ENGINE = MyISAM;
 ALTER TABLE `char` ENGINE = MyISAM;
+ALTER TABLE `char_reg_num` ENGINE = MyISAM;
+ALTER TABLE `char_reg_str` ENGINE = MyISAM;
 ALTER TABLE `charlog` ENGINE = MyISAM;
+#ALTER TABLE `chatlog` ENGINE = MyISAM;
+ALTER TABLE `clan` ENGINE = MyISAM;
+ALTER TABLE `clan_alliance` ENGINE = MyISAM;
+#ALTER TABLE `db_roulette` ENGINE = MyISAM;
+ALTER TABLE `elemental` ENGINE = MyISAM;
+#ALTER TABLE `feedinglog` ENGINE = MyISAM;
 ALTER TABLE `friends` ENGINE = MyISAM;
-ALTER TABLE `global_reg_value` ENGINE = MyISAM;
+ALTER TABLE `global_acc_reg_num` ENGINE = MyISAM;
+ALTER TABLE `global_acc_reg_str` ENGINE = MyISAM;
 ALTER TABLE `guild` ENGINE = MyISAM;
 ALTER TABLE `guild_alliance` ENGINE = MyISAM;
 ALTER TABLE `guild_castle` ENGINE = MyISAM;
@@ -16,27 +34,48 @@ ALTER TABLE `guild_member` ENGINE = MyISAM;
 ALTER TABLE `guild_position` ENGINE = MyISAM;
 ALTER TABLE `guild_skill` ENGINE = MyISAM;
 ALTER TABLE `guild_storage` ENGINE = MyISAM;
+ALTER TABLE `guild_storage_log` ENGINE = MyISAM;
 ALTER TABLE `homunculus` ENGINE = MyISAM;
 ALTER TABLE `hotkey` ENGINE = MyISAM;
 ALTER TABLE `interlog` ENGINE = MyISAM;
+ALTER TABLE `interreg` ENGINE = MyISAM;
 ALTER TABLE `inventory` ENGINE = MyISAM;
 ALTER TABLE `ipbanlist` ENGINE = MyISAM;
+#ALTER TABLE `item_cash_db` ENGINE = MyISAM;
+#ALTER TABLE `item_cash_db2` ENGINE = MyISAM;
 #ALTER TABLE `item_db` ENGINE = MyISAM;
+#ALTER TABLE `item_db_re` ENGINE = MyISAM;
 #ALTER TABLE `item_db2` ENGINE = MyISAM;
+#ALTER TABLE `item_db2_re` ENGINE = MyISAM;
 ALTER TABLE `login` ENGINE = MyISAM;
+#ALTER TABLE `loginlog` ENGINE = MyISAM;
 ALTER TABLE `mail` ENGINE = MyISAM;
+ALTER TABLE `mail_attachments` ENGINE = MyISAM;
 ALTER TABLE `mapreg` ENGINE = MyISAM;
+ALTER TABLE `market` ENGINE = MyISAM;
 ALTER TABLE `memo` ENGINE = MyISAM;
 ALTER TABLE `mercenary` ENGINE = MyISAM;
 ALTER TABLE `mercenary_owner` ENGINE = MyISAM;
 #ALTER TABLE `mob_db` ENGINE = MyISAM;
+#ALTER TABLE `mob_db_re` ENGINE = MyISAM;
 #ALTER TABLE `mob_db2` ENGINE = MyISAM;
+#ALTER TABLE `mob_db2_re` ENGINE = MyISAM;
+#ALTER TABLE `mob_skill_db` ENGINE = MyISAM;
+#ALTER TABLE `mob_skill_db_re` ENGINE = MyISAM;
+#ALTER TABLE `mob_skill_db2` ENGINE = MyISAM;
+#ALTER TABLE `mob_skill_db2_re` ENGINE = MyISAM;
+#ALTER TABLE `mvplog` ENGINE = MyISAM;
+#ALTER TABLE `npclog` ENGINE = MyISAM;
 ALTER TABLE `party` ENGINE = MyISAM;
 ALTER TABLE `pet` ENGINE = MyISAM;
+#ALTER TABLE `picklog` ENGINE = MyISAM;
 ALTER TABLE `quest` ENGINE = MyISAM;
-ALTER TABLE `ragsrvinfo` ENGINE = MyISAM;
+ALTER TABLE `sales` ENGINE = MyISAM;
 ALTER TABLE `sc_data` ENGINE = MyISAM;
 ALTER TABLE `skill` ENGINE = MyISAM;
 ALTER TABLE `skill_homunculus` ENGINE = MyISAM;
-ALTER TABLE `sstatus` ENGINE = MyISAM;
+ALTER TABLE `skillcooldown` ENGINE = MyISAM;
 ALTER TABLE `storage` ENGINE = MyISAM;
+ALTER TABLE `vending_items` ENGINE = MyISAM;
+ALTER TABLE `vendings` ENGINE = MyISAM;
+#ALTER TABLE `zenylog` ENGINE = MyISAM;

+ 36 - 0
sql-files/upgrades/upgrade_20191222.sql

@@ -0,0 +1,36 @@
+ALTER TABLE `bonus_script`
+    ADD PRIMARY KEY (`char_id`, `type`);
+
+ALTER TABLE `buyingstore_items`
+    ADD PRIMARY KEY (`buyingstore_id`, `index`);
+
+ALTER TABLE `charlog`
+    ADD PRIMARY KEY (`time`, `account_id`, `char_num`);
+
+ALTER TABLE `friends`
+    DROP INDEX `char_id`,
+    ADD PRIMARY KEY (`char_id`, `friend_id`);
+
+ALTER TABLE `interlog`
+    ADD COLUMN `id` INT NOT NULL AUTO_INCREMENT FIRST,
+    ADD PRIMARY KEY (`id`),
+    ADD INDEX `time` (`time`);
+
+ALTER TABLE `ipbanlist`
+    DROP INDEX `list`,
+    ADD PRIMARY KEY (`list`, `btime`);
+
+ALTER TABLE `sc_data`
+    DROP INDEX `account_id`,
+    DROP INDEX `char_id`,
+    ADD PRIMARY KEY (`char_id`, `type`);
+
+ALTER TABLE `skillcooldown`
+    DROP INDEX `account_id`,
+    DROP INDEX `char_id`,
+    ADD PRIMARY KEY (`char_id`, `skill`);
+
+ALTER TABLE `vending_items`
+    ADD PRIMARY KEY (`vending_id`, `index`);
+
+DROP TABLE `sstatus`;