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}