:: echo off
:: sqlline.bat - Windows script to launch SQL shell
::
:: Licensed to Julian Hyde under one or more contributor license
:: agreements. See the NOTICE file distributed with this work for
:: additional information regarding copyright ownership.
::
:: Julian Hyde 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.
::
:: Example:
:: > sqlline.bat
:: sqlline> !connect jdbc:optiq:model=target/test-classes/model.json admin admin 

:: Copy dependency jars on first call. (To force jar refresh, remove target\dependencies)
if not exist target\dependencies (call mvn -B -DskipTests -Dcheckstyle.skip=true package)

java -Xmx1G -cp ".\target\dependencies\*" sqlline.SqlLine --verbose=true %*

:: End sqlline.bat
