def match_sql_command(sql) options_pattern = %q{ (?:\s+OPTIONS\s*\((? (?: \s* (?:\"(?:[^\"]+)\"|(?:[^\s]+)) \s+ (?:\'(?:[^\']*)\'|(?:[^\'].+)) )* \s* )\))? } patterns = { create_server: %r{ CREATE\s+SERVER\s+(?[^\s]+) \s+ FOREIGN\s+DATA\s+WRAPPER\s+(?[^\s]+) #{options_pattern} }xi, create_user_mapping: %r{ CREATE\s+USER\s+MAPPING\s+FOR\s+\"?(?[^\s\"]+)\"? \s+ SERVER\s+(?[^\s]+) #{options_pattern} }xi, import_foreign_schema: %r{ IMPORT\s+FOREIGN\s+SCHEMA\s+\"?(?[^\s\"]+)\"? \s+ FROM\s+SERVER\s+(?[^\s]+) \s+ INTO\s+\"?(?[^\s\"]+)\"? #{options_pattern} }xi, import_foreign_schema_limited: %r{ IMPORT\s+FOREIGN\s+SCHEMA\s+\"?(?[^\s\"]+)\"? \s+ LIMIT\s+TO\s+\((?.+)\) \s+ FROM\s+SERVER\s+(?[^\s]+) \s+ INTO\s+\"?(?[^\s\"]+)\"? #{options_pattern} }xi, create_foreign_table: %r{ CREATE\+FOREIGN\+TABLE\s+(?.+)\s*\((?.+)\) \s+ SERVER\s+(?[^\s]+) #{options_pattern} }xi, grant_select: %r{ GRANT\s+SELECT\s+ON\s+(?[^\s]+)\s+TO\s+\"?(?[^\s\"]+)\"? }xi, create_table_as_select: %r{ CREATE\s+TABLE\s+(?[^\s]+)\s+AS\s+SELECT\s+(?