<?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.client.query.poll.interval</name>
      <value>4000</value>
      <description>Interval at which query progress will be polled. Interval has to be given in milliseconds
      </description>
  </property>
  <property>
    <name>lens.cube.query.enable.flattening.bridge.tables</name>
    <value>true</value>
    <description>Flag specifies if fields selected have to be flattened or not, if they are coming from tables with many
       to many relationship in join. If false, field selection will be simple join and selecting the field. If true, the
       fields from bridge tables will be aggregated grouped by join key.
    </description>
  </property>
</configuration>
