<?xml version="1.0"?>
<!--

    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.

-->
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>

  <property>
     
    <name>lens.server.drivers</name>
     
    <value>org.apache.lens.server.api.driver.MockDriver</value>
  </property>

  <property>
    <name>hive.metastore.warehouse.dir</name>
    <value>${project.build.directory}/hive/warehouse</value>
  </property>

  <property>
    <name>hive.exec.scratchdir</name>
    <value>${project.build.directory}/hive/scratch</value>
  </property>

  <property>
    <name>hive.querylog.location</name>
    <value>${project.build.directory}/query_logs</value>
    <description>Location of the structured hive logs</description>
  </property>

  <property>
    <name>javax.jdo.option.ConnectionURL</name>
    <value>jdbc:derby:;databaseName=target/metastore_db;create=true</value>
    <description>JDBC connect string for a JDBC metastore</description>
  </property>

  <property>
    <name>datanucleus.schema.autoCreateTables</name>
    <value>true</value>
  </property>

  <property>
    <name>hive.metastore.schema.verification</name>
    <value>false</value>
  </property>

  <property>
    <name>hive.support.sql11.reserved.keywords</name>
    <value>false</value>
  </property>

</configuration>
