3
=h,                 @   s8   d dl Z d dlZd dlZd dlmZ G dd deZdS )    N)PAGEc               @   s    e Zd ZdZdd Zdd ZdS )SDIzj
	INPUT:
		sdino: sdi page id
		pg: page reader
		row_format: row format
	RETURN:
		data(json): sdi data
	c             C   s6   || _ || _d| _d| _|| _|dkr2d| _d| _d S )Nc      Z	REDUNDANTe      )sdinopgoffsetrec_header_size
row_format)selfr   r	   r    r   :/root/work/ibd2sql-ibd2sql-v2.x/ibd2sql/innodb_page/sdi.py__init__   s    zSDI.__init__c             C   s2  | j }t }d}g }x|dk r,|j| jj| |j  |j  |j}|j}| j	dkr| jj
d|  |_tj }|j|jdd  }| jj
t|j |_|j| _|  jtjd|j|jd |j d 7  _xV|dkr(|d8 }| j	dkr&| j|_|  jtjd|j|jd |j d 7  _|jdksJ|jd	krL| j	dkrLP |j|j| j d |j| j  d
krxdnd}| j	dkrtjd|jd\}}	|	dkr||	d d 7 }n| jd8  _|jd}
tjd|jd\}}tjd|jd\}}}}}n2tjd|jd\}}tjd|jd\}}}}}tjd|jd\}}|d> | }|d> |d>  | }d}|rd}tjd|jd\}}}}||krtjd xF| jj|}tjd|dd \}}||dd 7 }|dkrP qW tj|}ntj|j|}tj|j }|j| qW qW |S )Nr   l    
COMPRESSED   ^   z>h   i @  p   s   TFz>BB      z>LQ   z>LHLHB   z>LL             z>3LQ   &   .   i)r   r   Zinitr	   readZinit_filZinit_page_headerZPAGE_N_RECSFIL_PAGE_NEXTr   	PAGE_SIZEZ_offsetzlibZdecompressobjZ
decompressdatalenZunused_datar
   structunpackr   Zread_reversesysexitjsonloadsdecodeappend)r   pagenor%   Zn_recsZdddZ_ddZis_overflowZ_t1Z_t2_Zsdi_typeZsdi_idZtrx1Ztrx2Zundo1Zundo2Zundo3Z
dunzip_lenZdzip_lenZtrxZundoZunzbdataSPACE_IDPAGENOBLOB_HEADER	REAL_SIZEZtdataZdic_infor   r   r   get_sdi   sn    
,,$0




zSDI.get_sdiN)__name__
__module____qualname____doc__r   r6   r   r   r   r   r      s   
r   )r'   r+   r$   ibd2sql.innodb_page.pager   objectr   r   r   r   r   <module>   s   