cc.blynk.clickhouse.settings.ClickHouseQueryParam Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of clickhouse4j Show documentation
Show all versions of clickhouse4j Show documentation
Light and fast JDBC driver for ClickHouse
package cc.blynk.clickhouse.settings;
import java.sql.DriverPropertyInfo;
import java.util.Properties;
public enum ClickHouseQueryParam {
ADD_HTTP_CORS_HEADER("add_http_cors_header", false, Boolean.class, "Write add http CORS header"),
AGGREGATION_MEMORY_EFFICIENT_MERGE_THREADS("aggregation_memory_efficient_merge_threads", null, Long.class, ""),
BACKGROUND_POOL_SIZE("background_pool_size", null, Long.class, ""),
AUTHORIZATION("authorization", null, String.class, "Authorization header content for HTTP transport"),
COMPILE("compile", false, Boolean.class, ""),
COMPRESS("compress", true, Boolean.class, "whether to compress transferred data or not"),
CONNECT_TIMEOUT("connect_timeout", null, Integer.class, ""),
CONNECT_TIMEOUT_WITH_FAILOVER_MS("connect_timeout_with_failover_ms", null, Integer.class, ""),
CONNECTIONS_WITH_FAILOVER_MAX_TRIES("connections_with_failover_max_tries", null, Long.class, ""),
COUNT_DISTINCT_IMPLEMENTATION("count_distinct_implementation",
null,
String.class,
"What aggregate function to use for implementation of count(DISTINCT ...)"),
DATABASE("database", null, String.class, "database name used by default"),
DECOMPRESS("decompress", false, Boolean.class, "whether to decompress transferred data or not"),
DISTRIBUTED_AGGREGATION_MEMORY_EFFICIENT("distributed_aggregation_memory_efficient",
false,
Boolean.class,
"Whether to optimize memory consumption for external aggregation"),
DISTRIBUTED_CONNECTIONS_POOL_SIZE("distributed_connections_pool_size", null, Long.class, ""),
DISTRIBUTED_DIRECTORY_MONITOR_SLEEP_TIME_MS("distributed_directory_monitor_sleep_time_ms", null, Long.class, ""),
DISTRIBUTED_GROUP_BY_NO_MERGE("distributed_group_by_no_merge", false, Boolean.class, ""),
DISTRIBUTED_PRODUCT_MODE("distributed_product_mode", null, String.class, ""),
ENABLE_HTTP_COMPRESSION("enable_http_compression", false, Boolean.class, ""),
/**
* https://clickhouse.yandex/reference_en.html#Extreme values
*/
EXTREMES("extremes", false, Boolean.class, "Whether to include extreme values."),
FORCE_INDEX_BY_DATE("force_index_by_date", false, Boolean.class, ""),
FORCE_PRIMARY_KEY("force_primary_key", false, Boolean.class, ""),
GLOBAL_SUBQUERIES_METHOD("global_subqueries_method", null, String.class, ""),
GROUP_BY_TWO_LEVEL_THRESHOLD("group_by_two_level_threshold", null, Long.class, ""),
GROUP_BY_TWO_LEVEL_THRESHOLD_BYTES("group_by_two_level_threshold_bytes", null, Long.class, ""),
HTTP_NATIVE_COMPRESSION_DISABLE_CHECKSUMMING_ON_DECOMPRESS(
"http_native_compression_disable_checksumming_on_decompress",
null,
Boolean.class,
"Whether to disable checksum check on decompress"),
HTTP_ZLIB_COMPRESSION_LEVEL("http_zlib_compression_level", null, Long.class, ""),
INPUT_FORMAT_SKIP_UNKNOWN_FIELDS("input_format_skip_unknown_fields",
false,
Boolean.class,
"Skip columns with unknown names from input data "
+ "(it works for JSONEachRow and TSKV formats)."),
INPUT_FORMAT_VALUES_INTERPRET_EXPRESSIONS("input_format_values_interpret_expressions",
true,
Boolean.class,
"For Values format: if field could not be parsed by "
+ "streaming parser, run SQL parser and try "
+ "to interpret it as SQL expression."),
INSERT_DEDUPLICATE("insert_deduplicate",
null,
Boolean.class,
"For INSERT queries in the replicated table, specifies that deduplication of "
+ "insertings blocks should be preformed"),
INSERT_DISTRIBUTED_SYNC("insert_distributed_sync",
null,
Boolean.class,
"If setting is enabled, insert query into distributed waits until "
+ "data will be sent to all nodes in cluster."),
INSERT_QUORUM("insert_quorum", null, Long.class, ""),
INSERT_QUORUM_TIMEOUT("insert_quorum_timeout", null, Long.class, ""),
INTERACTIVE_DELAY("interactive_delay", null, Long.class, ""),
LOAD_BALANCING("load_balancing", null, String.class, ""),
LOG_QUERIES("log_queries", false, Boolean.class, ""),
LOG_QUERIES_CUT_TO_LENGTH("log_queries_cut_to_length", null, Long.class, ""),
MARK_CACHE_MIN_LIFETIME("mark_cache_min_lifetime", null, Long.class, ""),
/**
* https://clickhouse.yandex/reference_en.html#max_block_size
*/
MAX_BLOCK_SIZE("max_block_size",
null,
Integer.class,
"Recommendation for what size of block (in number of rows) to load from tables"),
MAX_BYTES_BEFORE_EXTERNAL_GROUP_BY("max_bytes_before_external_group_by",
null,
Long.class,
"Threshold to use external group by"),
MAX_BYTES_BEFORE_EXTERNAL_SORT("max_bytes_before_external_sort",
null,
Long.class,
"Threshold to use external sort"),
MAX_COMPRESS_BLOCK_SIZE("max_compress_block_size", null, Long.class, ""),
MAX_CONCURRENT_QUERIES_FOR_USER("max_concurrent_queries_for_user", null, Long.class, ""),
MAX_DISTRIBUTED_CONNECTIONS("max_distributed_connections", null, Long.class, ""),
MAX_DISTRIBUTED_PROCESSING_THREADS("max_distributed_processing_threads", null, Long.class, ""),
/**
* https://clickhouse.yandex/reference_en.html#max_execution_time
*/
MAX_EXECUTION_TIME("max_execution_time", null, Integer.class, "Maximum query execution time in seconds."),
MAX_INSERT_BLOCK_SIZE("max_insert_block_size", null, Long.class, ""),
/**
* @see max_memory_usage
*/
MAX_MEMORY_USAGE("max_memory_usage",
null,
Long.class,
"The maximum amount of memory consumption when running a query on a single server."),
/**
* @see
* max_memory_usage_for_user
*/
MAX_MEMORY_USAGE_FOR_USER("max_memory_usage_for_user",
null,
Long.class,
"The maximum amount of RAM to use for running a"
+ "user's queries on a single server."),
/**
* @see "https://clickhouse.yandex/docs/en/operations/settings/query_complexity/#max-memory-usage-for-all-queries"
*/
MAX_MEMORY_USAGE_FOR_ALL_QUERIES("max_memory_usage_for_all_queries",
null,
Long.class,
"The maximum amount of RAM to use for running"
+ "all queries on a single server."),
//dbms/include/DB/Interpreters/Settings.h
MAX_PARALLEL_REPLICAS("max_parallel_replicas", null, Integer.class, "Max shard replica count."),
MAX_PARTITIONS_PER_INSERT_BLOCK("max_partitions_per_insert_block",
null,
Integer.class,
"If inserted block contains larger number of partitions, "
+ "an exception is thrown. Set it to 0 if you want"
+ "to remove the limit (not recommended)."),
MAX_READ_BUFFER_SIZE("max_read_buffer_size", null, Long.class, ""),
MAX_RESULT_ROWS("max_result_rows",
null,
Integer.class,
"Limit on the number of rows in the result. Also checked for subqueries, and "
+ "on remote servers when running parts of a distributed query."),
/**
* https://clickhouse.yandex/reference_en.html#max_rows_to_group_by
*/
MAX_ROWS_TO_GROUP_BY("max_rows_to_group_by",
null,
Integer.class,
"Maximum number of unique keys received from aggregation. This setting lets "
+ "you limit memory consumption when aggregating."),
MAX_STREAMS_TO_MAX_THREADS_RATIO("max_streams_to_max_threads_ratio", null, Double.class, ""),
/**
* https://clickhouse.yandex/reference_en.html#max_threads
*/
MAX_THREADS("max_threads", null, Integer.class, "The maximum number of query processing threads"),
MAX_QUERY_SIZE("max_query_size", null, Long.class, "Maximum size of query"),
MAX_AST_ELEMENTS("max_ast_elements", null, Long.class, "Maximum number of elements in a query syntactic tree"),
MEMORY_TRACKER_FAULT_PROBABILITY("memory_tracker_fault_probability", null, Double.class, ""),
MERGE_TREE_COARSE_INDEX_GRANULARITY("merge_tree_coarse_index_granularity", null, Long.class, ""),
MERGE_TREE_MAX_ROWS_TO_USE_CACHE("merge_tree_max_rows_to_use_cache", null, Long.class, ""),
MERGE_TREE_MIN_ROWS_FOR_CONCURRENT_READ("merge_tree_min_rows_for_concurrent_read", null, Long.class, ""),
MERGE_TREE_MIN_ROWS_FOR_SEEK("merge_tree_min_rows_for_seek", null, Long.class, ""),
MERGE_TREE_UNIFORM_READ_DISTRIBUTION("merge_tree_uniform_read_distribution", true, Boolean.class, ""),
MIN_BYTES_TO_USE_DIRECT_IO("min_bytes_to_use_direct_io", null, Long.class, ""),
MIN_COMPRESS_BLOCK_SIZE("min_compress_block_size", null, Long.class, ""),
MIN_COUNT_TO_COMPILE("min_count_to_compile", null, Long.class, ""),
MIN_INSERT_BLOCK_SIZE_BYTES("min_insert_block_size_bytes",
null,
Long.class,
"Squash blocks passed to INSERT query to specified size in bytes, "
+ "if blocks are not big enoug"),
MIN_INSERT_BLOCK_SIZE_ROWS("min_insert_block_size_rows",
null,
Long.class,
"Squash blocks passed to INSERT query to specified size in rows, "
+ "if blocks are not big enough."),
NETWORK_COMPRESSION_METHOD("network_compression_method", null, String.class, ""),
OPTIMIZE_MIN_EQUALITY_DISJUNCTION_CHAIN_LENGTH("optimize_min_equality_disjunction_chain_length",
null,
Long.class,
""),
OPTIMIZE_MOVE_TO_PREWHERE("optimize_move_to_prewhere", true, Boolean.class, ""),
OUTPUT_FORMAT_JSON_QUOTE_64BIT_INTEGERS("output_format_json_quote_64bit_integers",
true,
Boolean.class,
"Controls quoting of 64-bit integers in JSON output format."),
OUTPUT_FORMAT_PRETTY_MAX_ROWS("output_format_pretty_max_rows", null, Long.class, "Rows limit for "
+ "Pretty formats."),
OUTPUT_FORMAT_WRITE_STATISTICS("output_format_write_statistics",
true,
Boolean.class,
"Write statistics about read rows, bytes, time elapsed in "
+ "suitable output formats"),
PARALLEL_REPLICAS_COUNT("parallel_replicas_count", null, Long.class, ""),
PARALLEL_REPLICA_OFFSET("parallel_replica_offset", null, Long.class, ""),
PASSWORD("password", null, String.class, "user password, by default null"),
POLL_INTERVAL("poll_interval", null, Long.class, ""),
PRIORITY("priority", null, Integer.class, "The lower the value the bigger the priority."),
/**
* https://clickhouse.yandex/reference_en.html#Settings profiles
*/
PROFILE("profile", null, String.class, "Settings profile: a collection of settings grouped "
+ "under the same name"),
RECEIVE_TIMEOUT("receive_timeout", null, Integer.class, ""),
READ_BACKOFF_MAX_THROUGHPUT("read_backoff_max_throughput", null, Long.class, ""),
READ_BACKOFF_MIN_EVENTS("read_backoff_min_events", null, Long.class, ""),
READ_BACKOFF_MIN_INTERVAL_BETWEEN_EVENTS_MS("read_backoff_min_interval_between_events_ms", null, Long.class, ""),
READ_BACKOFF_MIN_LATENCY_MS("read_backoff_min_latency_ms", null, Long.class, ""),
REPLACE_RUNNING_QUERY("replace_running_query", false, Boolean.class, ""),
REPLICATION_ALTER_COLUMNS_TIMEOUT("replication_alter_columns_timeout", null, Long.class, ""),
REPLICATION_ALTER_PARTITIONS_SYNC("replication_alter_partitions_sync", null, Long.class, ""),
RESHARDING_BARRIER_TIMEOUT("resharding_barrier_timeout", null, Long.class, ""),
RESULT_OVERFLOW_MODE("result_overflow_mode",
null,
String.class,
"What to do if the volume of the result exceeds one of the limits: "
+ "'throw' or 'break'. By default, throw. Using 'break' "
+ "is similar to using LIMIT."),
SELECT_SEQUENTIAL_CONSISTENCY("select_sequential_consistency", null, Long.class, ""),
SEND_TIMEOUT("send_timeout", null, Integer.class, ""),
SESSION_CHECK("session_check", false, Boolean.class, ""),
SESSION_ID("session_id", null, String.class, ""),
SESSION_TIMEOUT("session_timeout", null, Long.class, ""),
SKIP_UNAVAILABLE_SHARDS("skip_unavailable_shards", false, Boolean.class, ""),
STRICT_INSERT_DEFAULTS("strict_insert_defaults", false, Boolean.class, ""),
TABLE_FUNCTION_REMOTE_MAX_ADDRESSES("table_function_remote_max_addresses", null, Long.class, ""),
TOTALS_AUTO_THRESHOLD("totals_auto_threshold", null, Double.class, ""),
/**
* https://clickhouse.yandex/reference_en.html#WITH TOTALS modifier
*/
TOTALS_MODE("totals_mode",
null,
String.class,
"How to calculate TOTALS when HAVING is present, as well as when "
+ "max_rows_to_group_by and group_by_overflow_mode = 'any' are present."),
QUERY_ID("query_id", null, String.class, ""),
QUEUE_MAX_WAIT_MS("queue_max_wait_ms", null, Integer.class, ""),
QUOTA_KEY("quota_key",
null,
String.class,
"quota is calculated for each quota_key value. For example here may be some user name."),
use_client_time_zone("use_client_time_zone", false, Boolean.class, ""),
USE_UNCOMPRESSED_CACHE("use_uncompressed_cache",
true,
Boolean.class,
"Whether to use the cache of uncompressed blocks."),
USER("user", null, String.class, "user name, by default - default"),
PREFERRED_BLOCK_SIZE_BYTES("preferred_block_size_bytes",
null,
Long.class,
"Adaptively estimates number of required rows in a block."),
ENABLE_OPTIMIZE_PREDICATE_EXPRESSION("enable_optimize_predicate_expression",
null,
Boolean.class,
"See Clickhouse server description for this parameter. "
+ "Default value is null so that server setting is taken.");
private final String key;
private final Object defaultValue;
private final Class clazz;
private final String description;
ClickHouseQueryParam(String key, T defaultValue, Class clazz, String description) {
this.key = key;
this.defaultValue = defaultValue;
this.clazz = clazz;
this.description = description;
}
public String getKey() {
return key;
}
public Object getDefaultValue() {
return defaultValue;
}
public Class getClazz() {
return clazz;
}
public String getDescription() {
return description;
}
@Override
public String toString() {
return name().toLowerCase();
}
public DriverPropertyInfo createDriverPropertyInfo(Properties properties) {
DriverPropertyInfo propertyInfo = new DriverPropertyInfo(key, driverPropertyValue(properties));
propertyInfo.required = false;
propertyInfo.description = description;
propertyInfo.choices = driverPropertyInfoChoices();
return propertyInfo;
}
private String[] driverPropertyInfoChoices() {
return clazz == Boolean.class || clazz == Boolean.TYPE ? new String[]{"true", "false"} : null;
}
private String driverPropertyValue(Properties properties) {
String value = properties.getProperty(key);
if (value == null) {
value = defaultValue == null ? null : defaultValue.toString();
}
return value;
}
}