You've already forked mariadb-columnstore-engine
							
							
				mirror of
				https://github.com/mariadb-corporation/mariadb-columnstore-engine.git
				synced 2025-11-03 17:13:17 +03:00 
			
		
		
		
	
		
			
				
	
	
		
			98 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			98 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
	
	
#!/usr/bin/python
 | 
						|
 | 
						|
import os, sys, glob, shutil, xml.dom.minidom
 | 
						|
 | 
						|
def find_paths():
 | 
						|
  
 | 
						|
  """Find DBRoot and BulkRoot."""
 | 
						|
  try:
 | 
						|
    config_file = os.environ['CALPONT_CONFIG_FILE']
 | 
						|
  except KeyError:
 | 
						|
    try:
 | 
						|
      config_file = '/usr/local/mariadb/columnstore/etc/Columnstore.xml'
 | 
						|
      os.lstat(config_file)
 | 
						|
    except:
 | 
						|
      sys.exit('No config file available')
 | 
						|
 | 
						|
      
 | 
						|
  xmldoc = xml.dom.minidom.parse(config_file)
 | 
						|
  bulk_node = xmldoc.getElementsByTagName('BulkRoot')[0]
 | 
						|
  db_node = xmldoc.getElementsByTagName('DBRoot')[0]
 | 
						|
  
 | 
						|
  bulk_dir = bulk_node.childNodes[0].nodeValue
 | 
						|
  data_dir = db_node.childNodes[0].nodeValue
 | 
						|
 | 
						|
  return (bulk_dir, data_dir)
 | 
						|
 | 
						|
 | 
						|
def validate_indexes(job_file):
 | 
						|
  index_files = []
 | 
						|
  xmldoc = xml.dom.minidom.parse(job_file)
 | 
						|
 | 
						|
  for index_node in xmldoc.getElementsByTagName('Index'):
 | 
						|
    curTreeOid = index_node.getAttribute('iTreeOid')
 | 
						|
    curListOid = index_node.getAttribute('iListOid')
 | 
						|
    curMapOid = index_node.getAttribute('mapOid')
 | 
						|
    #curIdxCmdArg = ' -t ' + curTreeOid + ' -l ' + curListOid + ' -v -c ' + curMapOid + ' > idxCol_' + curMapOid+'.out' 
 | 
						|
    curIdxCmdArg = ' -t %s -l %s -v -c %s > idxCol_%s.out' % (curTreeOid, curListOid, curMapOid, curMapOid) 
 | 
						|
    index_files.append( curIdxCmdArg )
 | 
						|
      
 | 
						|
  return index_files
 | 
						|
 | 
						|
def exec_cmd(cmd, args):
 | 
						|
  """Execute command using subprocess module or if that fails,
 | 
						|
     use os.system
 | 
						|
  """
 | 
						|
  
 | 
						|
  try:
 | 
						|
    import subprocess
 | 
						|
 | 
						|
    try:
 | 
						|
      retcode = call(cmd + " "+args, shell=True)
 | 
						|
      if retcode < 0:
 | 
						|
        print >>sys.stderr, "Child was terminated by signal", -retcode
 | 
						|
        sys.exit(-1)
 | 
						|
 | 
						|
      else:
 | 
						|
        print >>sys.stderr, "Child returned", retcode
 | 
						|
 | 
						|
    except OSError, e:
 | 
						|
 | 
						|
      print >>sys.stderr, "Execution failed:", e
 | 
						|
      sys.exit(-1)
 | 
						|
  except:
 | 
						|
    res = os.system(cmd+' '+args)
 | 
						|
    if res:
 | 
						|
      sys.exit( res )
 | 
						|
             
 | 
						|
 | 
						|
 | 
						|
def main():
 | 
						|
  """
 | 
						|
  Validate indexes..
 | 
						|
  """
 | 
						|
  
 | 
						|
  if not os.access('.', os.W_OK):
 | 
						|
    os.chdir('/tmp')
 | 
						|
    print 'Changing to /tmp to have permission to write files'
 | 
						|
 | 
						|
  if len(os.getenv('LD_LIBRARY_PATH'))<5:
 | 
						|
    print 'Suspicous LD_LIBRARY_PATH: %s'%os.getenv('LD_LIBRARY_PATH')
 | 
						|
  
 | 
						|
  home = os.getenv('HOME')
 | 
						|
  genii = home+'/genii'
 | 
						|
 | 
						|
  (bulkroot, dbroot) = find_paths()
 | 
						|
 | 
						|
  if len(glob.glob(bulkroot+'/job/Job_300.xml')) == 0: 
 | 
						|
    sys.exit("No Job_300.xml exist ") 
 | 
						|
  
 | 
						|
  indexes = validate_indexes(bulkroot+'/job/Job_300.xml')
 | 
						|
  for idxCmdArg in indexes:
 | 
						|
    print idxCmdArg
 | 
						|
    exec_cmd( genii + '/tools/evalidx/evalidx', idxCmdArg )
 | 
						|
  
 | 
						|
 | 
						|
## the following line allows either interactive use or module import
 | 
						|
if __name__=="__main__": main()
 |