@@ -36,25 +36,13 @@ class ActiveTableSwitcher
36
36
public function switchTable (\Magento \Framework \DB \Adapter \AdapterInterface $ connection , array $ tableNames )
37
37
{
38
38
$ toRename = [];
39
- $ tableComment = '' ;
40
- $ replicaComment = '' ;
41
39
foreach ($ tableNames as $ tableName ) {
42
40
$ outdatedTableName = $ tableName . $ this ->outdatedTableSuffix ;
43
41
$ replicaTableName = $ tableName . $ this ->additionalTableSuffix ;
44
42
45
- $ tableCreateQuery = 'SHOW CREATE TABLE ' . $ tableName ;
46
- $ tableCreateResult = $ connection ->fetchRow ($ tableCreateQuery );
43
+ $ tableComment = $ connection ->showTableStatus ($ tableName )['Comment ' ];
47
44
48
- if (is_array ($ tableCreateResult )) {
49
- $ tableComment = $ this ->getTableComment ($ tableCreateResult );
50
- }
51
-
52
- $ replicaCreateQuery = 'SHOW CREATE TABLE ' . $ replicaTableName ;
53
- $ replicaCreateResult = $ connection ->fetchRow ($ replicaCreateQuery );
54
-
55
- if (is_array ($ replicaCreateResult )) {
56
- $ replicaComment = $ this ->getTableComment ($ replicaCreateResult );
57
- }
45
+ $ replicaComment = $ connection ->showTableStatus ($ replicaTableName )['Comment ' ];
58
46
59
47
$ renameBatch = [
60
48
[
@@ -71,15 +59,14 @@ public function switchTable(\Magento\Framework\DB\Adapter\AdapterInterface $conn
71
59
]
72
60
];
73
61
74
- $ toRename = $ this -> mergeRenameTables ( $ renameBatch, $ toRename ) ;
62
+ $ toRename[] = $ renameBatch ;
75
63
76
64
if (!empty ($ toRename ) && $ replicaComment !== '' && $ tableComment !== $ replicaComment ) {
77
- $ changeTableComment = sprintf ("ALTER TABLE %s COMMENT=%s " , $ tableName , $ replicaComment );
78
- $ connection ->query ($ changeTableComment );
79
- $ changeReplicaComment = sprintf ("ALTER TABLE %s COMMENT=%s " , $ replicaTableName , $ tableComment );
80
- $ connection ->query ($ changeReplicaComment );
65
+ $ connection ->changeTableComment ($ tableName , $ replicaComment );
66
+ $ connection ->changeTableComment ($ replicaTableName , $ tableComment );
81
67
}
82
68
}
69
+ $ toRename = array_merge ([], ...$ toRename );
83
70
84
71
if (!empty ($ toRename )) {
85
72
$ connection ->renameTablesBatch ($ toRename );
@@ -96,37 +83,4 @@ public function getAdditionalTableName($tableName)
96
83
{
97
84
return $ tableName . $ this ->additionalTableSuffix ;
98
85
}
99
-
100
- /**
101
- * Returns table comment
102
- *
103
- * @param array $tableCreateResult
104
- * @return string
105
- */
106
- private function getTableComment ($ tableCreateResult )
107
- {
108
- $ tableComment = '' ;
109
- $ replicaCommentPosition = strpos ((string )end ($ tableCreateResult ), "COMMENT= " );
110
- if ($ replicaCommentPosition ) {
111
- $ tableComment = substr ((string )end ($ tableCreateResult ), $ replicaCommentPosition + 8 );
112
- }
113
- return $ tableComment ;
114
- }
115
-
116
- /**
117
- * Merges two arrays
118
- *
119
- * @param array $renameBatch
120
- * @param array $toRename
121
- * @return array
122
- */
123
- private function mergeRenameTables ($ renameBatch , $ toRename )
124
- {
125
- foreach ($ renameBatch as $ batch ) {
126
- if (!in_array ($ batch , $ toRename )) {
127
- array_push ($ toRename , $ batch );
128
- }
129
- }
130
- return $ toRename ;
131
- }
132
86
}
0 commit comments