// Licensed to the Apache Software Foundation (ASF) under one or more
// contributor license agreements.  See the NOTICE file distributed with
// this work for additional information regarding copyright ownership.
// The ASF licenses this file to You under the Apache License, Version 2.0
// (the "License"); you may not use this file except in compliance with
// the License.  You may obtain a copy of the License at
//
//     http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

//  This file tells Drill to consider this module when class path scanning.
//  This file can also include any supplementary configuration information.
//  This file is in HOCON format, see https://github.com/typesafehub/config/blob/master/HOCON.md for more information.

drill {
  classpath.scanning {
    base.classes: ${?drill.classpath.scanning.base.classes} [
      org.apache.drill.exec.expr.DrillFunc,
      org.apache.drill.exec.expr.fn.PluggableFunctionRegistry,
      org.apache.drill.exec.physical.base.PhysicalOperator,
      org.apache.drill.exec.physical.impl.BatchCreator,
      org.apache.drill.exec.physical.impl.RootCreator,
      org.apache.drill.exec.rpc.user.security.UserAuthenticator,
      org.apache.drill.exec.rpc.security.AuthenticatorFactory,
      org.apache.drill.exec.server.rest.auth.DrillHttpConstraintSecurityHandler,
      org.apache.drill.exec.store.dfs.FormatPlugin,
      org.apache.drill.exec.store.StoragePlugin,
      org.apache.drill.exec.coord.zk.ZKACLProvider
    ],

    annotations: ${?drill.classpath.scanning.annotations} [
      org.apache.drill.exec.expr.annotations.FunctionTemplate,
      org.apache.drill.exec.store.SystemPlugin
    ],

    packages: ${?drill.classpath.scanning.packages} [
      org.apache.drill.exec.expr,
      org.apache.drill.exec.physical,
      org.apache.drill.exec.store,
      org.apache.drill.exec.rpc.user.security,
      org.apache.drill.exec.rpc.security,
      org.apache.drill.exec.server.rest.auth,
      org.apache.drill.exec.coord.zk
    ],

    // caches scanned result during build time
    // set to false to avoid the need for a full Drill build during development
    cache.enabled: true
  }
}

drill.client: {
  supports-complex-types: true
}

// Location Drill uses for temporary files, such as downloaded dynamic UDFs jars.
// By default ${DRILL_TMP_DIR} is used if set or ${drill.tmp-dir} if it's been overridden.
drill.tmp-dir: "/tmp"
drill.tmp-dir: ${?DRILL_TMP_DIR}
drill.exec: {
  cluster-id: "drillbits1",
  rpc: {
    user: {
      timeout: 30,
      server: {
        port: 31010
        threads: 1,
        memory: {
          reservation: 0,
          maximum: 9223372036854775807
        }
      }
      client: {
        threads: 1
      }
    },
    bit: {
      timeout: 300,
      server: {
        port: 31011,
        retry:{
          count: 7200,
          delay: 500
        },
        threads: 10
        memory: {
          control: {
            reservation: 0,
            maximum: 9223372036854775807
          },
          data: {
            reservation: 0,
            maximum: 9223372036854775807
          }
        }
      }
    },
    use.ip: false
  },
  optimizer: {
    implementation: "org.apache.drill.exec.opt.IdentityOptimizer"
  },
  storage: {
    registry: "org.apache.drill.exec.store.StoragePluginRegistryImpl",
    file: {
      text: {
        buffer.size: 262144,
        batch.size: 4000
      }
    },
    # The name of the file to scan for "classic" storage plugins
    # Configured here for ease of testing. Users should NEVER change
    # this setting.
    bootstrap: {
      storage: "bootstrap-storage-plugins.json",
      # Not actually supported
      format: "bootstrap-format-plugins.json"
    },
    # The name of the upgrade (override) file for changes to an
    # existing system
    upgrade: {
      storage: "storage-plugins-override.conf"
    },
    # The action on the storage-plugins-override.conf after it's use.
    # Possible values are "none" (default), "rename", "remove"
    action_on_plugins_override_file: "none"
  },
  zk: {
    connect: "localhost:2181",
    root: "drill",
    refresh: 500,
    timeout: 5000,
    retry: {
      count: 7200,
      delay: 500
    },
    apply_secure_acl: false,
    acl_provider: "creator-all"
  },
  http: {
    enabled: true,
    client: {
      timeout: 5000
    },
    ssl_enabled: false,
    porthunt: false,
    port: 8047,
    jetty : {
      server : {
        acceptors : 1,
        selectors : 1,
        handlers : 5
      }
    }
    max_profiles: 100,
    profiles_per_page: [10, 25, 50, 100],
    profile.statistics.estimated_rows.show : false,
    profile.warning: {
      progress.threshold: 300,
      time.skew: {
        min: 2,
        ratio: {
          process: 2
          wait: 2
        }
      },
      scan.wait.min: 60
    },
    session_max_idle_secs: 3600, # Default value 1hr
    cors: {
      enabled: false,
      allowedOrigins: ["null"],
      allowedMethods: ["GET", "POST", "HEAD", "OPTIONS"],
      allowedHeaders: ["X-Requested-With", "Content-Type", "Accept", "Origin"],
      credentials: true
    },
    session: {
        memory: {
            reservation: 0,
            maximum: 9223372036854775807
        }
    },
    memory.heap.failure.threshold: 0.85,
    web.client.resultset: {
        autolimit {
            checked: false,
            rows: 1000
        },
        rowsPerPageValues: [10, 25, 50, 75, 100]
    },
    web.options.filters: ["planner", "store", "parquet", "hashagg", "hashjoin"]
  },
  //setting javax variables for ssl configurations is being deprecated.
  ssl: {
    keyStoreType = ${?javax.net.ssl.keyStoreType},
    keyStorePath = ${?javax.net.ssl.keyStore},
    keyStorePassword = ${?javax.net.ssl.keyStorePassword},
    trustStoreType = ${?javax.net.ssl.trustStoreType},
    trustStorePath = ${?javax.net.ssl.trustStore},
    trustStorePassword =  ${?javax.net.ssl.trustStorePassword}
    # default key password to keystore password
    keyPassword = ${?javax.net.ssl.keyStorePassword},
    protocol: "TLSv1.2",
    # if true, then Drill will read SSL parameters from the
    # Hadoop configuration files.
    useHadoopConfig : true,
    #Drill can use either the JDK implementation or the OpenSSL implementation.
    provider: "JDK"
  },
  network: {
    start: 35000
  },
  work: {
    affinity.factor: 1.2
  },
  sys.store.provider: {
    class: "org.apache.drill.exec.store.sys.store.provider.ZookeeperPersistentStoreProvider",
    local: {
      path: "/tmp/drill",
      write: true
    }
  },
  profiles.store: {
    inmemory: false,
    capacity: 1000
  },
  impersonation: {
    enabled: false,
    max_chained_user_hops: 3
  },
  security.user.auth: {
    enabled: false
  },
  security.bit.auth: {
    enabled: false
    use_login_principal: false
  }
  security.user.encryption.sasl: {
    enabled: false,
    max_wrapped_size: 65536
  }
  security.bit.encryption.sasl: {
    enabled: false,
    max_wrapped_size: 65536
  }
  security.user.encryption.ssl: {
    enabled: false
  }
  trace: {
    directory: "/tmp/drill-trace",
    filesystem: "file:///"
  },
  tmp: {
    directories: ["/tmp/drill"],
    filesystem: "drill-local:///"
  },
  buffer:{
    size: "6",
    spooling: {
      delete: true,
      size: 100000000
    }
  },
  compile: {
    codegen.debug.topn: false,
    compiler: "DEFAULT",
    debug: true,
    janino_maxsize: 262144,
    cache_max_size: 1000,
    // Where to save the generated source. See ClassBuilder
    code_dir: "/tmp/drill/codegen"
    // Disable code cache. Only for testing.
    disable_cache: false,
    // Use plain Java compilation where available
    prefer_plain_java: false
  },
  debug: {
    // If true, inserts the iterator validator atop each operator.
    // Primarily used for testing.
    validate_iterators: false,
    // If iterator validation is enabled, also validates the vectors
    // in each batch. Primarily used for testing. To enable from
    // the command line:
    // java ... -ea -Ddrill.exec.debug.validate_vectors=true ...
    validate_vectors: false
    // If true, dumps several record batches when an operator fails.
    // Generally disabled in testing, especially when we expect
    // a failure
    dump_batches: true
  },
  spill: {
    // *** Options common to all the operators that may spill
    // File system to use. Local file system by default.
    fs: "file:///",
    // List of directories to use. Directories are created
    // if they do not exist.
    directories: [ "/tmp/drill/spill" ]
  },
  hashjoin: {
    spill: {
      // -- The 2 options below can be used to override the common ones
      // -- (common to all spilling operators)
      // File system to use. Local file system by default.
      fs: ${drill.exec.spill.fs},
      // List of directories to use. Directories are created
      // if they do not exist.
      directories:  ${drill.exec.spill.directories},
    }
  },
  hashagg: {
    spill: {
      // -- The 2 options below can be used to override the common ones
      // -- (common to all spilling operators)
      // File system to use. Local file system by default.
      fs: ${drill.exec.spill.fs},
      // List of directories to use. Directories are created
      // if they do not exist.
      directories:  ${drill.exec.spill.directories},
    }
  },
  sort: {
    purge.threshold : 10,
    external: {
      // Limit on the number of batches buffered in memory.
      // Primarily for testing.
      // 0 = unlimited
      batch_limit: 0,
      // Limit on the amount of memory used for xsort. Overrides the
      // value provided by Foreman. Primarily for testing.
      // 0 = unlimited, Supports HOCON memory suffixes.
      mem_limit: 0,
      // Limit on the number of batches that can be merged in
      // a single pass. Limits the number of open file handles.
      // 0 = unlimited
      merge_limit: 128,
      spill: {
        // Deprecated for managed xsort; used only by legacy xsort
        group.size: 40000,
        // Deprecated for managed xsort; used only by legacy xsort
        threshold: 40000,
        // -- The two options below can be used to override the options common
        // -- for all spilling operators (see "spill" above).
        // -- This is done for backward compatibility; in the future they
        // -- would be deprecated (you should be using only the common ones)
        // File system to use. Local file system by default.
        fs: ${drill.exec.spill.fs},
        // List of directories to use. Directories are created
        // if they do not exist.
        directories:  ${drill.exec.spill.directories},
        // Size of the batches written to, and read from, the spill files.
        // Determines the ratio of memory to input data size for a single-
        // generation sort. Smaller values are better, but too small
        // incurs per-batch overhead.
        spill_batch_size = 1M,
        // Preferred file size for "first-generation" spill files.
        // Set large enough to get long, continuous writes, but not so
        // large as to overwhelm a temp directory.
        // Supports HOCON memory suffixes.
        file_size: 256M
      }
    }
  },
  queue : {
    // Settings for the local query queue available for embedded drillbits.
    embedded : {
      // Enable the local query queue
      enable: false,
      // Maximum number of queries that can run simultaneously.
      // All others queue.
      size: 2,
      // Maximum wait time in the queue before the query times out and
      // fails.
      timeout_ms: 5000 // 5 seconds
    }
  }
  memory: {
    operator: {
      max: 20000000000,
      initial: 10000000
    },
    fragment: {
      max: 20000000000,
      initial: 20000000
    }
  },
  debug: {
    return_error_for_failure_in_cancelled_fragments: false
  },
  scan: {
    threadpool_size: 8,
    decode_threadpool_size: 1
  },
  udf: {
    retry-attempts: 5,
    // Disables (parts of) the dynamic UDF functionality.
    // Primarily for testing.
    disable_dynamic: false,
    directory: {
      // Base directory for remote and local udf directories, unique among clusters.
      base: ${drill.exec.zk.root}"/udf",

      // Path to local udf directory, always created on local file system.
      // Root for these directory is generated at runtime unless Drill temporary directory is set.
      local: ${drill.exec.udf.directory.base}"/local",

      // Set this property if custom file system should be used to create remote directories, ex: fs: "file:///".
      // fs: "",
      // Set this property if custom absolute root should be used for remote directories, ex: root: "/app/drill".
      // root: "",

      // Relative path to all remote udf directories.
      // Directories are created under default file system taken from Hadoop configuration
      // unless ${drill.exec.udf.directory.fs} is set.
      // User home directory is used as root unless ${drill.exec.udf.directory.root} is set.
      staging: ${drill.exec.udf.directory.base}"/staging",
      registry: ${drill.exec.udf.directory.base}"/registry",
      tmp: ${drill.exec.udf.directory.base}"/tmp"
    }
  },
  # Temporary table can be created ONLY in default temporary workspace.
  # Full workspace name should be indicated (including schema and workspace separated by dot).
  # Workspace MUST be file-based and writable. Workspace name is case-sensitive.
  default_temporary_workspace: "dfs.tmp"

  // Resource management
  rm : {
    // Enables Drill RM feature by default. To disable it set the below parameter to false
    enabled: false
    // Memory per node normally comes from the direct memory alloated on the JVM
    // command line. This parameter, if other than 0, further limits the amount.
    // Primarily for testing.
    memory_per_node: 0,
    // The number of available CPUs normally comes directly from the system itself.
    // This parameter, if other than 0, further limits the number of CPUs will
    // will consider when planning. Note that, sadly, this parameter does not
    // limit *actual* CPU usage; only the amount of CPU assumed to exist when
    // planning and managing queries. Primarily for testing.
    cpus_per_node: 0,
  }
  # Grace period is the amount of time where the drillbit accepts work after
  # the shutdown request is triggered. The primary use of grace period is to
  # avoid the race conditions caused by zookeeper delay in updating the state
  # information of the drillbit that is shutting down. So, it is advisable
  # to have a grace period that is atleast twice the amount of zookeeper
  # refresh time.
  grace_period_ms : 0,
  //port hunting for drillbits. Enabled only for testing purposes.
  port_hunt : false,
  // Allow drillbit to bind to loopback address in distributed mode. Enabled only for testing purposes.
  allow_loopback_address_binding : false
}

drill.jdbc: {
  batch_queue_throttling_threshold: 100
}

# The following are defaults for system and session options.
# Provided here for easy customization in Drill distributions
# like the drill-distrib.conf file.
# An addition of new system option should go through following procedure.
# Before adding a system option a validator should be added for that
# option and then the option should be configured below under the name
# space drill.exec.options. When the system options are being loaded
# options config options are read to find the default value for a give option
# if the option is not set using ALTER SYSTEM or ALTER SESSION.But
# if the option is not configured in the conf file under the name space
# "drill.exec.options", option missing exception will be thrown.
# Users are not supposed to set these options in the drill-override.conf file.
# Users should use ALTER SYSTEM and ALTER SESSION to set the options.

drill.exec.options: {
    debug.validate_iterators: false,
    debug.validate_vectors: false,
    drill.exec.functions.cast_empty_string_to_null: false,
    drill.exec.rpc.fragrunner.timeout: 10000,
    drill.exec.hashjoin.mem_limit: 0,
    # Setting to control if HashJoin should fallback to older behavior of consuming
    # unbounded memory. By default it's set to false such that the
    # query will fail if there is not enough memory
    drill.exec.hashjoin.fallback.enabled: false
    # Setting to control if HashAgg should fallback to older behavior of consuming
    # unbounded memory. In case of 2 phase Agg when available memory is not enough
    # to start at least 2 partitions then HashAgg fallbacks to this case. It can be
    # enabled by setting this flag to true. By default it's set to false such that
    # query will fail if there is not enough memory
    drill.exec.hashagg.fallback.enabled: false,
    drill.exec.storage.file.partition.column.label: "dir",
    drill.exec.storage.implicit.filename.column.label: "filename",
    drill.exec.storage.implicit.filepath.column.label: "filepath",
    drill.exec.storage.implicit.fqn.column.label: "fqn",
    drill.exec.storage.implicit.suffix.column.label: "suffix",
    drill.exec.storage.implicit.row_group_index.column.label: "rgi",
    drill.exec.storage.implicit.row_group_start.column.label: "rgs",
    drill.exec.storage.implicit.row_group_length.column.label: "rgl",
    drill.exec.storage.implicit.last_modified_time.column.label: "lmt",
    drill.exec.storage.implicit.project_metadata.column.label: "$project_metadata$",
    drill.exec.testing.controls: "{}",
    drill.exec.memory.operator.output_batch_size : 16777216, # 16 MB
    drill.exec.memory.operator.output_batch_size_avail_mem_factor : 0.1,
    exec.bulk_load_table_list.bulk_size: 1000,
    exec.enable_bulk_load_table_list: false,
    exec.enable_union_type: false,
    exec.errors.verbose: false,
    exec.hashjoin.mem_limit: 0,
    exec.hashjoin.hash_table_calc_type: "LEAN",
    exec.hashjoin.safety_factor: 1.0,
    exec.hashjoin.fragmentation_factor: 1.33,
    exec.hashjoin.hash_double_factor: 2.0,
    exec.hashjoin.num_partitions: 32,
    exec.hashjoin.num_rows_in_batch: 1024,
    exec.hashjoin.max_batches_in_memory: 0,
    exec.hashjoin.enable.runtime_filter: false,
    exec.hashjoin.bloom_filter.fpp: 0.75,
    exec.hashjoin.bloom_filter.max.size: 33554432, #32 MB
    exec.hashjoin.runtime_filter.waiting.enable: true,
    exec.hashjoin.runtime_filter.max.waiting.time: 300, #400 ms
    exec.hashagg.mem_limit: 0,
    exec.hashagg.min_batches_per_partition: 2,
    exec.hashagg.num_partitions: 32,
    exec.hashagg.num_rows_in_batch: 128,
    exec.hashagg.max_batches_in_memory: 65536,
    exec.hashagg.use_memory_prediction: true,
    exec.impersonation.inbound_policies: "[]",
    exec.java.compiler.exp_in_method_size: 50,
    exec.java_compiler: "DEFAULT",
    exec.java_compiler_debug: true,
    exec.java_compiler_janino_maxsize: 262144,
    exec.max_hash_table_size: 1073741824,
    exec.min_hash_table_size: 65536,
    exec.persistent_table.umask: "002",
    exec.query.progress.update: true,
    exec.query_profile.debug_mode: false,
    exec.query_profile.save: true,
    exec.query_profile.alter_session.skip: true,
    exec.queue.enable: false,
    # Default queue values for an 8 GB direct memory default
    # Drill install. Users are expected to adjust these based
    # on load and available resources.
    exec.queue.large: 2,
    exec.queue.small: 4,
    exec.queue.threshold: 30000000,
    exec.queue.timeout_millis: 300000,
    exec.queue.memory_ratio: 10.0,
    exec.queue.memory_reserve_ratio: 0.2,
    # Deprecated
    exec.sort.disable_managed : false,
    # Deprecated
    exec.storage.enable_new_text_reader: true,
    # Deprecated
    exec.storage.enable_v3_text_reader: false,
    exec.storage.min_width: 1,
    exec.storage.skip_runtime_rowgroup_pruning: false,
    exec.udf.enable_dynamic_support: true,
    exec.udf.use_dynamic: true,
    drill.exec.stats.logging.batch_size: false,
    drill.exec.stats.logging.fine_grained.batch_size: false,
    drill.exec.stats.logging.enabled_operators: all,
    new_view_default_permissions: 700,
    org.apache.drill.exec.compile.ClassTransformer.scalar_replacement: "try",
    planner.add_producer_consumer: false,
    planner.affinity_factor: 1.2,
    planner.broadcast_factor: 1.0,
    planner.broadcast_threshold: 10000000,
    planner.cpu_load_average: 0.70,
    planner.disable_exchanges: false,
    planner.enable_broadcast_join: true,
    planner.enable_constant_folding: true,
    planner.enable_decimal_data_type: true,
    planner.enable_demux_exchange: false,
    planner.enable_hash_single_key: true,
    planner.enable_hashagg: true,
    planner.enable_hashjoin: true,
    planner.enable_semijoin: true,
    planner.enable_hashjoin_swap: true,
    planner.enable_hep_opt: true,
    planner.enable_hep_partition_pruning: true,
    planner.enable_rowkeyjoin_conversion: true,
    planner.rowkeyjoin_conversion_using_hashjoin: false,
    planner.rowkeyjoin_conversion_selectivity_threshold: 0.01,
    planner.enable_join_optimization: true,
    planner.enable_limit0_optimization: true,
    planner.enable_limit0_on_scan: true,
    planner.enable_mergejoin: true,
    planner.enable_multiphase_agg: true,
    planner.enable_mux_exchange: true,
    planner.enable_ordered_mux_exchange: true,
    planner.enable_nestedloopjoin: true,
    planner.enable_nljoin_for_scalar_only: true,
    planner.enable_streamagg: true,
    planner.enable_topn: true,
    planner.enable_type_inference: true,
    planner.enable_unionall_distribute: false,
    planner.enable_unnest_lateral: true,
    planner.filter.max_selectivity_estimate_factor: 1.0,
    planner.filter.min_selectivity_estimate_factor: 0.0,
    planner.force_2phase_aggr: false,
    planner.identifier_max_length: 1024,
    planner.in_subquery_threshold: 20,
    planner.join.hash_join_swap_margin_factor: 10,
    planner.join.row_count_estimate_factor: 1.0,
    planner.memory.average_field_width: 8,
    planner.memory.enable_memory_estimation: false,
    planner.memory.hash_agg_table_factor: 1.1d,
    planner.memory.hash_join_table_factor: 1.1d,
    planner.memory.max_query_memory_per_node: 2147483648, # 2 GB
    planner.memory.percent_per_query: 0.05, # 5%
    planner.memory.min_memory_per_buffered_op: 41943040, # 40 MB
    planner.memory.non_blocking_operators_memory: 64,
    planner.memory_limit: 268435456,
    planner.nestedloopjoin_factor: 100.0,
    planner.parser.quoting_identifiers: "`",
    planner.partitioner_sender_max_threads: 8,
    planner.partitioner_sender_set_threads: -1,
    planner.partitioner_sender_threads_factor: 2,
    planner.producer_consumer_queue_size: 10,
    planner.slice_target: 100000,
    planner.statistics.use: false,
    planner.statistics.multicol_ndv_adjustment_factor: 1.0,
    planner.store.parquet.rowgroup.filter.pushdown.enabled: true,
    planner.store.parquet.rowgroup.filter.pushdown.threshold: 10000,
    # Max per node should always be configured as zero and
    # it is dynamically computed based on cpu_load_average
    planner.width.max_per_node: 0,
    planner.width.max_per_query: 1000,
    prepare.statement.create_timeout_ms: 30000,
    security.admin.user_groups: "%drill_process_user_groups%",
    security.admin.users: "%drill_process_user%",
    store.format: "parquet",
    store.hive.optimize_scan_with_native_readers: false,
    store.hive.parquet.optimize_scan_with_native_reader: false,
    store.hive.maprdb_json.optimize_scan_with_native_reader: false,
    store.hive.maprdb_json.read_timestamp_with_timezone_offset: false,
    store.hive.maprdb_json.all_text_mode: false,
    # Properties values should NOT be set in double-quotes or any other quotes.
    # Property name and value should be separated by =.
    # Properties should be separated by new line (\n).
    store.hive.conf.properties: "",
    store.json.all_text_mode: false,
    store.json.writer.allow_nan_inf: true,
    store.json.reader.allow_nan_inf: true,
    store.json.reader.allow_escape_any_char: false,
    store.json.extended_types: false,
    store.json.read_numbers_as_double: false,
    store.json.reader.print_skipped_invalid_record_number: false,
    store.json.reader.skip_invalid_records: false,
    store.json.writer.skip_null_fields: true,
    store.json.writer.uglify: false,
    store.mongo.all_text_mode: false,
    store.mongo.bson.record.reader: true,
    store.mongo.read_numbers_as_double: false,
    store.parquet.block-size:  536870912,
    store.parquet.compression: "none",
    store.parquet.dictionary.page-size: 1048576,
    store.parquet.enable_dictionary_encoding: false,
    store.parquet.page-size: 1048576,
    store.parquet.reader.columnreader.async: false,
    store.parquet.reader.int96_as_timestamp: false,
    store.parquet.reader.strings_signed_min_max: "",
    store.parquet.reader.pagereader.async: true,
    store.parquet.reader.pagereader.bufferedread: true,
    store.parquet.reader.pagereader.buffersize: 1048576,
    store.parquet.reader.pagereader.enforceTotalSize: false,
    store.parquet.reader.pagereader.queuesize: 2,
    store.parquet.reader.pagereader.usefadvise: false,
    store.parquet.reader.enable_map_support: true,
    store.parquet.use_new_reader: false,
    store.parquet.vector_fill_check_threshold: 10,
    store.parquet.vector_fill_threshold: 85,
    store.parquet.writer.use_primitive_types_for_decimals: true,
    store.parquet.writer.logical_type_for_decimals: "fixed_len_byte_array",
    store.parquet.writer.use_single_fs_block: false,
    store.parquet.flat.reader.bulk: true,
    store.parquet.flat.batch.num_records: 32767,
    store.parquet.complex.batch.num_records: 4000,
    # Using common operators batch configuration unless the Parquet specific
    # configuration is used
    store.parquet.flat.batch.memory_size: 0,
    store.table.use_schema_file: false,
    store.partition.hash_distribute: false,
    store.text.estimated_row_size_bytes: 100.0,
    store.text.writer.add_header: true,
    store.text.writer.force_quotes: false,
    store.kafka.all_text_mode: false,
    store.kafka.read_numbers_as_double: false,
    store.kafka.record.reader: "org.apache.drill.exec.store.kafka.decoders.JsonMessageReader",
    store.kafka.poll.timeout: 200,
    store.kafka.reader.skip_invalid_records: false,
    store.kafka.reader.allow_nan_inf: true,
    store.kafka.reader.allow_escape_any_char: false,
    web.logs.max_lines: 10000,
    web.display_format.timestamp: "",
    web.display_format.date: "",
    web.display_format.time: "",
    window.enable: true,
    storage.list_files_recursively: false,
    # ============ index plan related options ==============
    planner.use_simple_optimizer: false,
    planner.enable_index_planning: true,
    planner.enable_statistics: true,
    planner.disable_full_table_scan: false,
    planner.index.max_chosen_indexes_per_table: 5,
    planner.index.force_sort_noncovering: false,
    planner.index.use_hashjoin_noncovering: false,
    planner.index.covering_selectivity_threshold: 1.0,
    planner.index.noncovering_selectivity_threshold: 0.025,
    planner.index.rowkeyjoin_cost_factor: 0.1,
    planner.index.statistics_rowcount_scaling_factor: 0.1,
    planner.index.prefer_intersect_plans: false,
    planner.index.max_indexes_to_intersect: 5,
    exec.query.rowkeyjoin_batchsize: 128,
    exec.query.return_result_set_for_ddl: true,
    exec.query.max_rows: 0,
    exec.return_result_set_for_ddl: true,
    storage.list_files_recursively: false,
    exec.statistics.ndv_accuracy: 20,
    exec.statistics.ndv_extrapolation_bf_elements: 1000000,
    exec.statistics.ndv_extrapolation_bf_fpprobability: 10,
    exec.statistics.deterministic_sampling: false,
    exec.query.return_result_set_for_ddl: true,
    # ========= rm related options ===========
    exec.rm.queryTags: "",
    exec.rm.queues.wait_for_preferred_nodes: true,
    exec.statistics.tdigest_compression: 100,
    # ========= Metastore related options ===========
    metastore.enabled: false,
    metastore.retrieval.retry_attempts: 5
    metastore.metadata.store.depth_level: "ALL",
    metastore.metadata.use_schema: true,
    metastore.metadata.use_statistics: true,
    metastore.metadata.ctas.auto-collect: "NONE",
    metastore.metadata.fallback_to_file_metadata: true
}
