import sys import duckdb from duckdb import ParserException, SyntaxException, BinderException, CatalogException def validate_query(query, schemas): try: print("Running query: ", query) with duckdb.connect( ":memory:", config={"enable_external_access": False} ) as duckdb_conn: # register schemas for schema in schemas.split(";"): duckdb_conn.execute(schema) cursor = duckdb_conn.cursor() cursor.execute(query) except ParserException as e: raise e except SyntaxException as e: raise e except BinderException as e: raise e except CatalogException as e: if not ("but it exists" in str(e) and "extension" in str(e)): raise e except Exception as e: return True return True if __name__ == "__main__": if len(sys.argv) > 2: validate_query(sys.argv[1], sys.argv[2]) else: print("No query provided.")