You've already forked mariadb-columnstore-engine
							
							
				mirror of
				https://github.com/mariadb-corporation/mariadb-columnstore-engine.git
				synced 2025-10-30 07:25:34 +03:00 
			
		
		
		
	
		
			
				
	
	
		
			57 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			57 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| import io
 | |
| import os
 | |
| import argparse
 | |
| import sys
 | |
| import json
 | |
| import struct
 | |
| 
 | |
| journal_filename = ""
 | |
| journal_size = 0
 | |
| 
 | |
| def parse_args():
 | |
|     global journal_filename
 | |
|     parser = argparse.ArgumentParser(description="Print journal entries")
 | |
|     parser.add_argument('journal_file', type=str, help="The journal file");
 | |
|     args = parser.parse_args()
 | |
|     journal_filename = args.journal_file
 | |
| 
 | |
| def print_header(f):
 | |
|     # Argh.  Load up to \0 into a string, then json.loads() that.
 | |
|     s = ""
 | |
|     c = chr(f.read(1)[0])
 | |
|     while c != '\0':
 | |
|         s = s + c
 | |
|         c = chr(f.read(1)[0])
 | |
| 
 | |
|     header = json.loads(s)
 | |
|     print("Header:")
 | |
|     for (k, v) in header.items():
 | |
|         print("  {} : {}".format(k, int(v)))
 | |
| 
 | |
| def print_journal_entries(f):
 | |
|     i = 1
 | |
|     pos = f.tell()
 | |
|     while pos < journal_size:
 | |
|         b = f.read(16)
 | |
|         (offset, length) = struct.unpack("QQ", b)
 | |
|         print("{}:  offset = {}, length = {}".format(i, offset, length))
 | |
|         pos = f.seek(length, io.SEEK_CUR)
 | |
|         i = i + 1
 | |
| 
 | |
| def main():
 | |
|     global journal_size
 | |
|     parse_args()
 | |
|     journal_size = os.stat(journal_filename).st_size
 | |
| 
 | |
|     with open(journal_filename, "rb") as f:
 | |
|         print_header(f)
 | |
|         print_journal_entries(f)
 | |
| 
 | |
| if sys.version_info < (3, 0):
 | |
|     print("This requires Python 3.0+ b/c I'm lazy")
 | |
|     sys.exit(1)
 | |
| 
 | |
| if __name__ == "__main__":
 | |
|     main()
 | |
| 
 |