in src/ColumnEncodingUtility/analyze-schema-compression.py [0:0]
def main(argv):
supported_args = """db= db-user= db-pwd= db-host= db-port= target-schema= analyze-schema= analyze-table= new-dist-key= new-sort-keys= analyze-cols= new-varchar-min= threads= debug= output-file= do-execute= slot-count= ignore-errors= force= drop-old-data= comprows= query_group= ssl-option= suppress-cloudwatch= statement-timeout="""
# extract the command line arguments
try:
optlist, remaining = getopt.getopt(argv[1:], "", supported_args.split())
except getopt.GetoptError as err:
print(str(err))
usage(None)
# parse command line arguments
args = {}
for arg, value in optlist:
if arg == "--db":
if value == '' or value is None:
usage()
else:
args[config_constants.DB_NAME] = value
elif arg == "--db-user":
if value == '' or value is None:
usage()
else:
args[config_constants.DB_USER] = value
elif arg == "--db-host":
if value == '' or value is None:
usage()
else:
args[config_constants.DB_HOST] = value
elif arg == "--db-port":
if value != '' and value is not None:
args[config_constants.DB_PORT] = int(value)
elif arg == "--db-pwd":
if value != '' and value is not None:
args[config_constants.DB_PASSWORD] = value
elif arg == "--analyze-schema":
if value != '' and value is not None:
args[config_constants.SCHEMA_NAME] = value
elif arg == "--analyze-table":
if value != '' and value is not None:
args[config_constants.TABLE_NAME] = value
elif arg == "--new-dist-key":
if value != '' and value is not None:
args['new_dist_key'] = value
elif arg == "--new-sort-keys":
if value != '' and value is not None:
args['new_sort_keys'] = value
elif arg == "--analyze-cols":
if value != '' and value is not None:
args['analyze_col_width'] = value
elif arg == "--new-varchar-min":
if value != '' and value is not None:
args['new_varchar_min'] = int(value)
elif arg == "--target-schema":
if value != '' and value is not None:
args[config_constants.TARGET_SCHEMA] = value
elif arg == "--threads":
if value != '' and value is not None:
args[config_constants.THREADS] = int(value)
elif arg == "--debug":
if value == 'true' or value == 'True':
args[config_constants.DEBUG] = True
else:
args[config_constants.DEBUG] = False
elif arg == "--output-file":
sys.stdout = open(value, 'w')
elif arg == "--ignore-errors":
if value == 'true' or value == 'True':
args[config_constants.IGNORE_ERRORS] = True
else:
args[config_constants.IGNORE_ERRORS] = False
elif arg == "--force":
if value == 'true' or value == 'True':
args[config_constants.FORCE] = True
else:
args[config_constants.FORCE] = False
elif arg == "--drop-old-data":
if value == 'true' or value == 'True':
args[config_constants.DROP_OLD_DATA] = True
else:
args[config_constants.DROP_OLD_DATA] = False
elif arg == "--do-execute":
if value == 'true' or value == 'True':
args[config_constants.DO_EXECUTE] = True
else:
args[config_constants.DO_EXECUTE] = False
elif arg == "--slot-count":
args[config_constants.QUERY_SLOT_COUNT] = int(value)
elif arg == "--comprows":
args[config_constants.COMPROWS] = int(value)
elif arg == "--query_group":
if value != '' and value is not None:
args[config_constants.QUERY_GROUP] = value
elif arg == "--ssl-option":
if value == 'true' or value == 'True':
args[config_constants.SSL] = True
else:
args[config_constants.SSL] = False
elif arg == "--suppress-cloudwatch":
if value == 'true' or value == 'True':
args[config_constants.SUPPRESS_CLOUDWATCH] = True
else:
args[config_constants.SUPPRESS_CLOUDWATCH] = False
elif arg == "--statement-timeout":
if value != '' and value is not None:
try:
args[config_constants.STATEMENT_TIMEOUT] = str(int(value))
except ValueError:
pass
else:
print("Unsupported Argument " + arg)
usage()
# Validate that we've got all the args needed
if config_constants.DB_NAME not in args:
usage("Missing Parameter 'db'")
if config_constants.DB_USER not in args:
usage("Missing Parameter 'db-user'")
if config_constants.DB_HOST not in args:
usage("Missing Parameter 'db-host'")
if config_constants.DB_PORT not in args:
args[config_constants.DB_PORT] = 5439
if config_constants.SCHEMA_NAME not in args:
args[config_constants.SCHEMA_NAME] = 'public'
# Reduce to 1 thread if we're analyzing a single table
if config_constants.TABLE_NAME in args:
args[config_constants.THREADS] = 1
# get the database password
if config_constants.DB_PASSWORD not in args:
args[config_constants.DB_PASSWORD] = getpass.getpass("Password <%s>: " % db_user)
# setup the configuration
configure(**args)
# run the analyser
result_code = run()
# exit based on the provided return code
return result_code