Skip to content

Commit 315e862

Browse files
author
ddcw
committed
fix issue 17
1 parent 1ea3784 commit 315e862

File tree

3 files changed

+9
-11
lines changed

3 files changed

+9
-11
lines changed

README.md

+1
Original file line numberDiff line numberDiff line change
@@ -188,6 +188,7 @@ python3 main.py --sdi-table /data/mysql_3314/mysqldata/ibd2sql/ddcw_alltype_tabl
188188
6. [默认值为时间戳](https://github.com/ddcw/ibd2sql/issues/8) : 支持默认值为时间戳, blob等字段的前缀索引
189189
7. [8.0.12 无hidden](https://github.com/ddcw/ibd2sql/issues/10) : 取消hidden检查
190190
8. [ONLINE DDL instant](https://github.com/ddcw/ibd2sql/issues/12) : record 1-2 bit is instant flag
191+
9. [mysql 5.7 解析无数据](https://github.com/ddcw/ibd2sql/issues/17) : mysql 5.7无SDI PAGE, INODE不需要去掉第一个INDEX
191192
192193
193194

ibd2sql/ibd2sql.py

+5-10
Original file line numberDiff line numberDiff line change
@@ -131,17 +131,12 @@ def init(self):
131131
#inode page
132132
self.debug(f'ANALYZE PAGE INODE (PAGE_ID=2) (for get index)')
133133
self.PAGE_ID = 2 #inode
134-
if self.MYSQL5:
135-
self.first_leaf_page = 2
136-
else:
137-
self.inode = inode(self.read())
138-
self.debug("FIRST INDEX (Non-leaf and leaf page) :",self.inode.index_page[0]," (-1 is None)")
139-
self.first_no_leaf_page = self.inode.index_page[0][0]
140-
self.first_leaf_page = self.inode.index_page[0][1]
134+
self.inode = inode(self.read(),MYSQL5=self.MYSQL5)
135+
self.debug("FIRST INDEX (Non-leaf and leaf page) :",self.inode.index_page[0]," (-1 is None)")
136+
self.first_no_leaf_page = self.inode.index_page[0][0]
137+
self.first_leaf_page = self.inode.index_page[0][1]
141138
#self.debug("START FIND FIRST LEAF PAGE")
142-
if self.MYSQL5:
143-
self.first_leaf_page = 4
144-
elif self.first_leaf_page < 3 or self.first_leaf_page >= 4294967295 or True:
139+
if self.first_leaf_page < 3 or self.first_leaf_page >= 4294967295 or True:
145140
self.init_first_leaf_page()
146141
self.debug("FIRST LEAF PAGE ID:",self.first_leaf_page )
147142
self.debug("#############################################################################")

ibd2sql/innodb_page_inode.py

+3-1
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ def __init__(self,*args,**kwargs):
2828
super().__init__(*args,**kwargs)
2929
if self.FIL_PAGE_TYPE != 3:
3030
return False
31+
self.MYSQL5 = kwargs['MYSQL5']
3132
self.page_name = 'INODE'
3233
self.EXTRA_PAGE = True #假装还有额外的Inode page
3334
self._init_inodeinfo()
@@ -56,7 +57,8 @@ def _segment(self):
5657
}
5758

5859
def _init_segment(self):
59-
self.FSEG_SDI = (self._segment(),self._segment())
60+
if not self.MYSQL5: # fix issue 17 mysql57没得sdi信息, 就不用去掉第一个index了
61+
self.FSEG_SDI = (self._segment(),self._segment())
6062
self.FSEG = [] #(non_leaf_page, leaf_page)
6163
for x in range(85):
6264
_fseg = self._segment()

0 commit comments

Comments
 (0)