001package gudusoft.gsqlparser.util; 002 003 004 005import java.util.HashSet; 006import java.util.Set; 007 008public class TSnowflakeParameterChecker { 009 010 // A set containing all the Snowflake parameters 011 private static final Set<String> SNOWFLAKE_PARAMETERS = new HashSet<>(); 012 013 static { 014 // Add all the parameters listed in the Snowflake documentation: https://docs.snowflake.com/en/sql-reference/parameters 015 SNOWFLAKE_PARAMETERS.add("ABORT_DETACHED_QUERY"); 016 SNOWFLAKE_PARAMETERS.add("ALLOW_CLIENT_MFA_CACHING"); 017 SNOWFLAKE_PARAMETERS.add("ALLOW_ID_TOKEN"); 018 SNOWFLAKE_PARAMETERS.add("AUTOCOMMIT"); 019 SNOWFLAKE_PARAMETERS.add("AUTOCOMMIT_API_SUPPORTED"); 020 SNOWFLAKE_PARAMETERS.add("BINARY_INPUT_FORMAT"); 021 SNOWFLAKE_PARAMETERS.add("BINARY_OUTPUT_FORMAT"); 022 SNOWFLAKE_PARAMETERS.add("CATALOG"); 023 SNOWFLAKE_PARAMETERS.add("CLIENT_ENABLE_LOG_INFO_STATEMENT_PARAMETERS"); 024 SNOWFLAKE_PARAMETERS.add("CLIENT_ENCRYPTION_KEY_SIZE"); 025 SNOWFLAKE_PARAMETERS.add("CLIENT_MEMORY_LIMIT"); 026 SNOWFLAKE_PARAMETERS.add("CLIENT_METADATA_REQUEST_USE_CONNECTION_CTX"); 027 SNOWFLAKE_PARAMETERS.add("CLIENT_METADATA_USE_SESSION_DATABASE"); 028 SNOWFLAKE_PARAMETERS.add("CLIENT_PREFETCH_THREADS"); 029 SNOWFLAKE_PARAMETERS.add("CLIENT_RESULT_CHUNK_SIZE"); 030 SNOWFLAKE_PARAMETERS.add("CLIENT_RESULT_COLUMN_CASE_INSENSITIVE"); 031 SNOWFLAKE_PARAMETERS.add("CLIENT_SESSION_KEEP_ALIVE"); 032 SNOWFLAKE_PARAMETERS.add("CLIENT_SESSION_KEEP_ALIVE_HEARTBEAT_FREQUENCY"); 033 SNOWFLAKE_PARAMETERS.add("CLIENT_TIMESTAMP_TYPE_MAPPING"); 034 SNOWFLAKE_PARAMETERS.add("DATA_METRIC_SCHEDULE"); 035 SNOWFLAKE_PARAMETERS.add("DATA_RETENTION_TIME_IN_DAYS"); 036 SNOWFLAKE_PARAMETERS.add("DATE_INPUT_FORMAT"); 037 SNOWFLAKE_PARAMETERS.add("DATE_OUTPUT_FORMAT"); 038 SNOWFLAKE_PARAMETERS.add("DEFAULT_DDL_COLLATION"); 039 SNOWFLAKE_PARAMETERS.add("ENABLE_IDENTIFIER_FIRST_LOGIN"); 040 SNOWFLAKE_PARAMETERS.add("ENABLE_INTERNAL_STAGES_PRIVATELINK"); 041 SNOWFLAKE_PARAMETERS.add("ENABLE_TRI_SECRET_AND_REKEY_OPT_OUT_FOR_IMAGE_REPOSITORY"); 042 SNOWFLAKE_PARAMETERS.add("ENABLE_TRI_SECRET_AND_REKEY_OPT_OUT_FOR_SPCS_BLOCK_STORAGE"); 043 SNOWFLAKE_PARAMETERS.add("ENABLE_UNHANDLED_EXCEPTIONS_REPORTING"); 044 SNOWFLAKE_PARAMETERS.add("ENABLE_UNLOAD_PHYSICAL_TYPE_OPTIMIZATION"); 045 SNOWFLAKE_PARAMETERS.add("ENABLE_UNREDACTED_QUERY_SYNTAX_ERROR"); 046 SNOWFLAKE_PARAMETERS.add("ENFORCE_NETWORK_RULES_FOR_INTERNAL_STAGES"); 047 SNOWFLAKE_PARAMETERS.add("ERROR_ON_NONDETERMINISTIC_MERGE"); 048 SNOWFLAKE_PARAMETERS.add("ERROR_ON_NONDETERMINISTIC_UPDATE"); 049 SNOWFLAKE_PARAMETERS.add("EVENT_TABLE"); 050 SNOWFLAKE_PARAMETERS.add("EXTERNAL_OAUTH_ADD_PRIVILEGED_ROLES_TO_BLOCKED_LIST"); 051 SNOWFLAKE_PARAMETERS.add("EXTERNAL_VOLUME"); 052 SNOWFLAKE_PARAMETERS.add("GEOGRAPHY_OUTPUT_FORMAT"); 053 SNOWFLAKE_PARAMETERS.add("GEOMETRY_OUTPUT_FORMAT"); 054 SNOWFLAKE_PARAMETERS.add("INITIAL_REPLICATION_SIZE_LIMIT_IN_TB"); 055 SNOWFLAKE_PARAMETERS.add("JDBC_ENABLE_PUT_GET"); 056 SNOWFLAKE_PARAMETERS.add("JDBC_TREAT_DECIMAL_AS_INT"); 057 SNOWFLAKE_PARAMETERS.add("JDBC_TREAT_TIMESTAMP_NTZ_AS_UTC"); 058 SNOWFLAKE_PARAMETERS.add("JDBC_USE_SESSION_TIMEZONE"); 059 SNOWFLAKE_PARAMETERS.add("JSON_INDENT"); 060 SNOWFLAKE_PARAMETERS.add("JS_TREAT_INTEGER_AS_BIGINT"); 061 SNOWFLAKE_PARAMETERS.add("LOCK_TIMEOUT"); 062 SNOWFLAKE_PARAMETERS.add("LOG_LEVEL"); 063 SNOWFLAKE_PARAMETERS.add("MAX_CONCURRENCY_LEVEL"); 064 SNOWFLAKE_PARAMETERS.add("MAX_DATA_EXTENSION_TIME_IN_DAYS"); 065 SNOWFLAKE_PARAMETERS.add("MIN_DATA_RETENTION_TIME_IN_DAYS"); 066 SNOWFLAKE_PARAMETERS.add("MULTI_STATEMENT_COUNT"); 067 SNOWFLAKE_PARAMETERS.add("NETWORK_POLICY"); 068 SNOWFLAKE_PARAMETERS.add("NOORDER_SEQUENCE_AS_DEFAULT"); 069 SNOWFLAKE_PARAMETERS.add("ODBC_TREAT_DECIMAL_AS_INT"); 070 SNOWFLAKE_PARAMETERS.add("OAUTH_ADD_PRIVILEGED_ROLES_TO_BLOCKED_LIST"); 071 SNOWFLAKE_PARAMETERS.add("PERIODIC_DATA_REKEYING"); 072 SNOWFLAKE_PARAMETERS.add("PIPE_EXECUTION_PAUSED"); 073 SNOWFLAKE_PARAMETERS.add("PREVENT_UNLOAD_TO_INLINE_URL"); 074 SNOWFLAKE_PARAMETERS.add("PREVENT_UNLOAD_TO_INTERNAL_STAGES"); 075 SNOWFLAKE_PARAMETERS.add("QUERY_TAG"); 076 SNOWFLAKE_PARAMETERS.add("QUOTED_IDENTIFIERS_IGNORE_CASE"); 077 SNOWFLAKE_PARAMETERS.add("REPLACE_INVALID_CHARACTERS"); 078 SNOWFLAKE_PARAMETERS.add("REQUIRE_STORAGE_INTEGRATION_FOR_STAGE_CREATION"); 079 SNOWFLAKE_PARAMETERS.add("REQUIRE_STORAGE_INTEGRATION_FOR_STAGE_OPERATION"); 080 SNOWFLAKE_PARAMETERS.add("ROWS_PER_RESULTSET"); 081 SNOWFLAKE_PARAMETERS.add("S3_STAGE_VPCE_DNS_NAME"); 082 SNOWFLAKE_PARAMETERS.add("SAML_IDENTITY_PROVIDER"); 083 SNOWFLAKE_PARAMETERS.add("SEARCH_PATH"); 084 SNOWFLAKE_PARAMETERS.add("SIMULATED_DATA_SHARING_CONSUMER"); 085 SNOWFLAKE_PARAMETERS.add("SSO_LOGIN_PAGE"); 086 SNOWFLAKE_PARAMETERS.add("STATEMENT_QUEUED_TIMEOUT_IN_SECONDS"); 087 SNOWFLAKE_PARAMETERS.add("STATEMENT_TIMEOUT_IN_SECONDS"); 088 SNOWFLAKE_PARAMETERS.add("STORAGE_SERIALIZATION_POLICY"); 089 SNOWFLAKE_PARAMETERS.add("STRICT_JSON_OUTPUT"); 090 SNOWFLAKE_PARAMETERS.add("SUSPEND_TASK_AFTER_NUM_FAILURES"); 091 SNOWFLAKE_PARAMETERS.add("TASK_AUTO_RETRY_ATTEMPTS"); 092 SNOWFLAKE_PARAMETERS.add("TIMESTAMP_DAY_IS_ALWAYS_24H"); 093 SNOWFLAKE_PARAMETERS.add("TIMESTAMP_INPUT_FORMAT"); 094 SNOWFLAKE_PARAMETERS.add("TIMESTAMP_LTZ_OUTPUT_FORMAT"); 095 SNOWFLAKE_PARAMETERS.add("TIMESTAMP_NTZ_OUTPUT_FORMAT"); 096 SNOWFLAKE_PARAMETERS.add("TIMESTAMP_OUTPUT_FORMAT"); 097 SNOWFLAKE_PARAMETERS.add("TIMESTAMP_TYPE_MAPPING"); 098 SNOWFLAKE_PARAMETERS.add("TIMESTAMP_TZ_OUTPUT_FORMAT"); 099 SNOWFLAKE_PARAMETERS.add("TIMEZONE"); 100 SNOWFLAKE_PARAMETERS.add("TIME_INPUT_FORMAT"); 101 SNOWFLAKE_PARAMETERS.add("TIME_OUTPUT_FORMAT"); 102 SNOWFLAKE_PARAMETERS.add("TRACE_LEVEL"); 103 SNOWFLAKE_PARAMETERS.add("TRANSACTION_ABORT_ON_ERROR"); 104 SNOWFLAKE_PARAMETERS.add("TRANSACTION_DEFAULT_ISOLATION_LEVEL"); 105 SNOWFLAKE_PARAMETERS.add("TWO_DIGIT_CENTURY_START"); 106 SNOWFLAKE_PARAMETERS.add("UNSUPPORTED_DDL_ACTION"); 107 SNOWFLAKE_PARAMETERS.add("USE_CACHED_RESULT"); 108 SNOWFLAKE_PARAMETERS.add("USER_TASK_MANAGED_INITIAL_WAREHOUSE_SIZE"); 109 SNOWFLAKE_PARAMETERS.add("USER_TASK_TIMEOUT_MS"); 110 SNOWFLAKE_PARAMETERS.add("WEEK_OF_YEAR_POLICY"); 111 SNOWFLAKE_PARAMETERS.add("WEEK_START"); 112 } 113 114 // Function to check if the input string matches any Snowflake parameter 115 public static boolean isSnowflakeParameter(String input) { 116 return SNOWFLAKE_PARAMETERS.contains(input); 117 } 118 119// public static void main(String[] args) { 120// // Test cases 121// System.out.println(isSnowflakeParameter("AUTOCOMMIT")); // true 122// System.out.println(isSnowflakeParameter("INVALID_PARAMETER")); // false 123// } 124}