#
# 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,
      org.apache.drill.exec.store.security
    ],

    # 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: 8
        memory: {
          control: {
            reservation: 0,
            maximum: 9223372036854775807
          },
          data: {
            reservation: 0,
            maximum: 9223372036854775807
          }
        }
      }
    },
    use.ip: false,
    bind_addr: "0.0.0.0"
  },
  optimizer: {
    implementation: "org.apache.drill.exec.opt.IdentityOptimizer"
  },
  storage: {
    registry: "org.apache.drill.exec.store.StoragePluginRegistryImpl",
    file: {
      text: {
        buffer.size: 262144,
        batch.size: 4000
      },
      enable_mount_commands: false
    },
    # 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: 15,
      delay: 500
    },
    apply_secure_acl: false,
    acl_provider: "creator-all"
  },
  http: {
    enabled: true,
    client: {
      timeout: 5000
    },
    ssl_enabled: false,
    porthunt: false,
    bind_addr: "0.0.0.0",
    port: 8047,
    jetty : {
      server : {
        acceptors : 1,
        selectors : 1,
        handlers : 5,
        dumpAfterStart: false
      }
    }
    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
        }
    },
    # Default to failing queries only at 100% heap usage, i.e. the heap usage
    # limiting logic in the REST API is disabled by default.
    memory.heap.failure.threshold: 1.0,
    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.3",
    # if true, then Drill will read SSL parameters from the
    # Hadoop configuration files.
    useHadoopConfig : true,
    # Use keyStore and trustStore credentials provided by MapR platform.
    useMapRSSLConfig : false,
    #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
    },
    unlimited_receiver: {
      max_size: 500000000
    }
  },
  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

  # HTTP client proxy configuration
  net_proxy: {

    # HTTP URL, usually from a Linux env var
    # See https://www.shellhacks.com/linux-proxy-server-settings-set-proxy-command-line/
    http_url: "",
    http_url: ${?HTTP_PROXY},
    http_url: ${?http_proxy},
    http_url: ${?all_proxy},
    http_url: ${?ALL_PROXY},

    # Explicit HTTP setup, used if URL is not set
    http: {
      type: "none", # none, http, socks. Blank same as none.
      host: "",
      port: 80,
      user_name: "",
      password: ""
    },

    # HTTPS URL, usually from a Linux env var
    https_url: "",
    https_url: ${?HTTPS_PROXY},
    https_url: ${?https_proxy},
    https_url: ${?all_proxy},
    https_url: ${?ALL_PROXY},

    # Explicit HTTPS setup, used if URL is not set
    https: {
      type: "none", # none, http, socks. Blank same as none.
      host: "",
      port: 80,
      user_name: "",
      password: ""
    }
  }
}

drill.jdbc: {
  batch_queue_throttling_threshold: 100,
  query_timeout: 600000
}

# 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.implicit_casts.joins.enabled: false,
    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.except_add_agg_below: false,
    exec.errors.verbose: false,
    drill.exec.http.rest.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.partition.mem_throttle: 0,
    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.enable_dynamic_fc: false,
    exec.enable_aliases: 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_file_listing_limit0_optimization: false,
    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.enable_v2_reader: true,
    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.writer.format_version: "v1",
    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,
    storage.plugin_retry_attempts: 1,
    storage.plugin_retry_attempt_delay: 2000,
    storage.plugin_auto_disable: 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,
    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
}
