A semantic search engine for source code https://bitshift.benkurtovic.com/
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

148 lines
5.1 KiB

  1. """
  2. Contains information about database schema versions, and SQL queries to update
  3. between them.
  4. """
  5. VERSION = 12
  6. MIGRATIONS = [
  7. # 1 -> 2
  8. [
  9. """ALTER TABLE `codelets`
  10. DROP FOREIGN KEY `codelets_ibfk_1`""",
  11. """ALTER TABLE `code`
  12. DROP KEY `code_hash`,
  13. DROP COLUMN `code_hash`,
  14. MODIFY COLUMN `code_id` BIGINT NOT NULL""",
  15. """ALTER TABLE `codelets`
  16. MODIFY COLUMN `codelet_code_id` BIGINT NOT NULL,
  17. ADD KEY (`codelet_lang`),
  18. ADD CONSTRAINT `codelets_ibfk_1` FOREIGN KEY (`codelet_code_id`)
  19. REFERENCES `code` (`code_id`)
  20. ON DELETE RESTRICT ON UPDATE CASCADE""",
  21. """ALTER TABLE `symbols`
  22. ADD COLUMN `symbol_end_row` INT UNSIGNED NOT NULL,
  23. ADD COLUMN `symbol_end_col` INT UNSIGNED NOT NULL"""
  24. ],
  25. # 2 -> 3
  26. [
  27. """ALTER TABLE `symbols`
  28. DROP FOREIGN KEY `symbols_ibfk_1`,
  29. CHANGE COLUMN `symbol_codelet` `symbol_code` BIGINT NOT NULL,
  30. ADD CONSTRAINT `symbols_ibfk_1` FOREIGN KEY (`symbol_code`)
  31. REFERENCES `code` (`code_id`)
  32. ON DELETE CASCADE ON UPDATE CASCADE"""
  33. ],
  34. # 3 -> 4
  35. [
  36. """ALTER TABLE `symbols`
  37. DROP COLUMN `symbol_row`,
  38. DROP COLUMN `symbol_col`,
  39. DROP COLUMN `symbol_end_row`,
  40. DROP COLUMN `symbol_end_col`""",
  41. """CREATE TABLE `symbol_locations` (
  42. `sloc_id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
  43. `sloc_symbol` BIGINT UNSIGNED NOT NULL,
  44. `sloc_type` TINYINT UNSIGNED NOT NULL,
  45. `sloc_row` INT UNSIGNED NOT NULL,
  46. `sloc_col` INT UNSIGNED NOT NULL,
  47. `sloc_end_row` INT UNSIGNED NOT NULL,
  48. `sloc_end_col` INT UNSIGNED NOT NULL,
  49. PRIMARY KEY (`sloc_id`),
  50. FOREIGN KEY (`sloc_symbol`)
  51. REFERENCES `symbols` (`symbol_id`)
  52. ON DELETE CASCADE ON UPDATE CASCADE
  53. ) ENGINE=InnoDB"""
  54. ],
  55. # 4 -> 5
  56. [
  57. """ALTER TABLE `origins`
  58. MODIFY COLUMN `origin_name` VARCHAR(64) DEFAULT NULL,
  59. MODIFY COLUMN `origin_url` VARCHAR(512) DEFAULT NULL,
  60. MODIFY COLUMN `origin_url_base` VARCHAR(512) DEFAULT NULL"""
  61. ],
  62. # 5 -> 6
  63. [
  64. """ALTER TABLE `code`
  65. ADD COLUMN `code_lang` SMALLINT UNSIGNED DEFAULT NULL
  66. AFTER `code_id`,
  67. ADD KEY (`code_lang`)""",
  68. """ALTER TABLE `codelets`
  69. DROP KEY `codelet_lang`,
  70. DROP COLUMN `codelet_lang`""",
  71. """ALTER TABLE `cache_data`
  72. DROP FOREIGN KEY `cache_data_ibfk_1`""",
  73. """ALTER TABLE `cache`
  74. MODIFY COLUMN `cache_id` BIGINT NOT NULL,
  75. DROP COLUMN `cache_hash`,
  76. DROP COLUMN `cache_last_used`,
  77. MODIFY COLUMN `cache_count_mnt` SMALLINT UNSIGNED NOT NULL""",
  78. """ALTER TABLE `cache_data`
  79. MODIFY COLUMN `cdata_cache` BIGINT NOT NULL,
  80. ADD PRIMARY KEY (`cdata_cache`, `cdata_codelet`),
  81. ADD CONSTRAINT `cache_data_ibfk_1` FOREIGN KEY (`cdata_codelet`)
  82. REFERENCES `codelets` (`codelet_id`)
  83. ON DELETE CASCADE ON UPDATE CASCADE""",
  84. """CREATE EVENT `flush_cache`
  85. ON SCHEDULE EVERY 1 HOUR
  86. DO
  87. DELETE FROM `cache`
  88. WHERE `cache_created` < DATE_SUB(NOW(), INTERVAL 1 DAY);"""
  89. ],
  90. # 6 -> 7
  91. [
  92. """DELETE FROM `cache`""",
  93. """ALTER TABLE `cache_data`
  94. ADD COLUMN `cdata_index` TINYINT UNSIGNED NOT NULL
  95. AFTER `cdata_codelet`"""
  96. ],
  97. # 7 -> 8
  98. [
  99. """ALTER TABLE `origins`
  100. DROP COLUMN `origin_image`"""
  101. ],
  102. # 8 -> 9
  103. [
  104. """DELIMITER //
  105. CREATE PROCEDURE `empty_database`()
  106. BEGIN
  107. DELETE FROM `codelets`;
  108. DELETE FROM `code`;
  109. DELETE FROM `cache`;
  110. ALTER TABLE `codelets` AUTO_INCREMENT = 1;
  111. ALTER TABLE `authors` AUTO_INCREMENT = 1;
  112. ALTER TABLE `symbols` AUTO_INCREMENT = 1;
  113. ALTER TABLE `symbol_locations` AUTO_INCREMENT = 1;
  114. END//
  115. DELIMITER ;"""
  116. ],
  117. # 9 -> 10
  118. [
  119. """ALTER TABLE `symbol_locations`
  120. MODIFY COLUMN `sloc_col` INT UNSIGNED DEFAULT NULL,
  121. MODIFY COLUMN `sloc_end_row` INT UNSIGNED DEFAULT NULL,
  122. MODIFY COLUMN `sloc_end_col` INT UNSIGNED DEFAULT NULL"""
  123. ],
  124. # 10 -> 11
  125. [
  126. """ALTER DATABASE `bitshift`
  127. CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci"""
  128. ],
  129. # 11 -> 12
  130. [
  131. """CREATE TABLE `stopwords` (
  132. `value` varchar(18) NOT NULL DEFAULT ""
  133. ) ENGINE=InnoDB DEFAULT CHARSET=utf8""",
  134. """INSERT INTO `stopwords` VALUES
  135. ("a"), ("about"), ("an"), ("are"), ("as"), ("at"), ("be"), ("by"),
  136. ("how"), ("i"), ("it"), ("la"), ("of"), ("on"), ("that"), ("the"),
  137. ("to"), ("und"), ("was"), ("what"), ("when"), ("where"), ("who"),
  138. ("will")"""
  139. ]
  140. ]
  141. if __name__ == "__main__":
  142. from . import Database
  143. Database(migrate=True).close()