This is an automated email from the ASF dual-hosted git repository. shaofengshi pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/kylin.git
The following commit(s) were added to refs/heads/master by this push: new 33edddf KYLIN-3479 add configuration to override xml for RDBMS 33edddf is described below commit 33edddf29be4c8ed9529b1477da474a090f7811b Author: woyumen4597 <woyumen4...@gmail.com> AuthorDate: Sun Dec 30 12:46:50 2018 +0800 KYLIN-3479 add configuration to override xml for RDBMS --- .../framework/def/DataSourceDefProvider.java | 10 +- .../framework/def/DataSourceDefTest.java | 7 + .../test/resources/datasource/default.xml.override | 202 +++++++++++++++++++++ 3 files changed, 218 insertions(+), 1 deletion(-) diff --git a/datasource-sdk/src/main/java/org/apache/kylin/sdk/datasource/framework/def/DataSourceDefProvider.java b/datasource-sdk/src/main/java/org/apache/kylin/sdk/datasource/framework/def/DataSourceDefProvider.java index 9574d66..2aa6851 100644 --- a/datasource-sdk/src/main/java/org/apache/kylin/sdk/datasource/framework/def/DataSourceDefProvider.java +++ b/datasource-sdk/src/main/java/org/apache/kylin/sdk/datasource/framework/def/DataSourceDefProvider.java @@ -47,9 +47,17 @@ public class DataSourceDefProvider { private DataSourceDef loadDataSourceFromEnv(String id) { String resourcePath = RESOURCE_DIR + "/" + id + ".xml"; + String resourcePathOverride = resourcePath + ".override"; InputStream is = null; try { - URL url = cl.getResource(resourcePath); + URL urlOverride, url; + urlOverride = cl.getResource(resourcePathOverride); + if (urlOverride == null) { + url = cl.getResource(resourcePath); + } else { + url = urlOverride; + logger.debug("Use override xml:{}", resourcePathOverride); + } if (url == null) return null; diff --git a/datasource-sdk/src/test/java/org/apache/kylin/sdk/datasource/framework/def/DataSourceDefTest.java b/datasource-sdk/src/test/java/org/apache/kylin/sdk/datasource/framework/def/DataSourceDefTest.java index b07c251..cb376d6 100644 --- a/datasource-sdk/src/test/java/org/apache/kylin/sdk/datasource/framework/def/DataSourceDefTest.java +++ b/datasource-sdk/src/test/java/org/apache/kylin/sdk/datasource/framework/def/DataSourceDefTest.java @@ -72,4 +72,11 @@ public class DataSourceDefTest extends LocalFileMetadataTestCase { Assert.assertEquals(Types.DOUBLE, (int) testingDsDef.getDataTypeValue("DOUBLE PRECISION")); Assert.assertEquals(Types.DOUBLE, (int) testingDsDef.getDataTypeValue("double precision")); } + + @Test + public void testOverrideXml() { + DataSourceDefProvider provider = DataSourceDefProvider.getInstance(); + DataSourceDef defaultDef = provider.getDefault(); + Assert.assertEquals("true", defaultDef.getPropertyValue("metadata.enable-cache", null)); //in default.xml is false,but in default.xml.override is true + } } diff --git a/datasource-sdk/src/test/resources/datasource/default.xml.override b/datasource-sdk/src/test/resources/datasource/default.xml.override new file mode 100644 index 0000000..62dee8b --- /dev/null +++ b/datasource-sdk/src/test/resources/datasource/default.xml.override @@ -0,0 +1,202 @@ +<?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. +--> +<DATASOURCE_DEF NAME="kylin" ID="default"> + <PROPERTY NAME="sql.default-converted-enabled" VALUE="true"/> + <PROPERTY NAME="sql.allow-no-offset" VALUE="true"/> + <PROPERTY NAME="sql.allow-fetch-no-rows" VALUE="true"/> + <PROPERTY NAME="sql.allow-no-orderby-with-fetch" VALUE="true"/> + <PROPERTY NAME="sql.keyword-default-escape" VALUE="true"/> + <PROPERTY NAME="sql.keyword-default-uppercase" VALUE="true"/> + <PROPERTY NAME="sql.case-sensitive" VALUE="false"/> + <PROPERTY NAME="metadata.enable-cache" VALUE="true"/> + <!--Min--> + <FUNCTION_DEF ID="1" EXPRESSION="MIN($0)"/> + <!--Max--> + <FUNCTION_DEF ID="3" EXPRESSION="MAX($0)"/> + <!--CurrentDate--> + <FUNCTION_DEF ID="5" EXPRESSION="CURRENT_DATE"/> + <!--CurrentDateTime--> + <FUNCTION_DEF ID="6" EXPRESSION="CURRENT_TIMESTAMP"/> + <!--Date--> + <FUNCTION_DEF ID="7" EXPRESSION="CAST($0 AS DATE)"/> + <!--DayOfMonth--> + <FUNCTION_DEF ID="8" EXPRESSION="EXTRACT(DAY FROM $0)"/> + <!--DayOfYear--> + <FUNCTION_DEF ID="9" EXPRESSION="DAYOFYEAR($0)"/> + <!--Month--> + <FUNCTION_DEF ID="10" EXPRESSION="EXTRACT(MONTH FROM $0)"/> + <!--Quarter--> + <FUNCTION_DEF ID="11" EXPRESSION="EXTRACT(QUARTER FROM $0)"/> + <!--Year--> + <FUNCTION_DEF ID="12" EXPRESSION="EXTRACT(YEAR FROM $0)"/> + <!--IsNotNull--> + <FUNCTION_DEF ID="13" EXPRESSION="$0 IS NOT NULL"/> + <!--IsNull--> + <FUNCTION_DEF ID="14" EXPRESSION="$0 IS NULL"/> + <!--NullToZero--> + <FUNCTION_DEF ID="15" EXPRESSION="COALESCE($0, 0)"/> + <!--ZeroToNull--> + <FUNCTION_DEF ID="16" EXPRESSION="NULLIF($0, 0)"/> + <!--FirstInRange--> + <FUNCTION_DEF ID="17" EXPRESSION="first_value($0) over($1)"/> + <!--MovingAvg--> + <FUNCTION_DEF ID="18" EXPRESSION="avg($0) over($1)"/> + <!--MovingCount--> + <FUNCTION_DEF ID="19" EXPRESSION="count($0) over($1)"/> + <!--MovingMax--> + <FUNCTION_DEF ID="20" EXPRESSION="max($0) over($1)"/> + <!--MovingMin--> + <FUNCTION_DEF ID="21" EXPRESSION="min($0) over($1)"/> + <!--MovingSum--> + <FUNCTION_DEF ID="22" EXPRESSION="sum($0) over($1)"/> + <!--RunningStdevP--> + <FUNCTION_DEF ID="23" EXPRESSION="STDDEV_POP($0) OVER($1)"/> + <!--LeftStr--> + <FUNCTION_DEF ID="24" EXPRESSION="SUBSTRING($0, 1, $1)"/> + <!--Length--> + <FUNCTION_DEF ID="25" EXPRESSION="CHAR_LENGTH($0)"/> + <!--Lower--> + <FUNCTION_DEF ID="26" EXPRESSION="LOWER($0)"/> + <!--SubStr--> + <FUNCTION_DEF ID="27" EXPRESSION="SUBSTRING($0, $1, $2)"/> + <!--initcap--> + <FUNCTION_DEF ID="28" EXPRESSION="INITCAP($0)"/> + <!--Trim--> + <FUNCTION_DEF ID="29" EXPRESSION="TRIM($0)"/> + <!--Upper--> + <FUNCTION_DEF ID="30" EXPRESSION="UPPER($0)"/> + <!--Abs--> + <FUNCTION_DEF ID="31" EXPRESSION="ABS($0)"/> + <!--Acos--> + <FUNCTION_DEF ID="32" EXPRESSION="ACOS($0)"/> + <!--Asin--> + <FUNCTION_DEF ID="34" EXPRESSION="ASIN($0)"/> + <!--Atan--> + <FUNCTION_DEF ID="36" EXPRESSION="ATAN($0)"/> + <!--Atan2--> + <FUNCTION_DEF ID="37" EXPRESSION="ATAN2($1, $0)"/> + <!--Ceiling--> + <FUNCTION_DEF ID="39" EXPRESSION="CEIL($0)"/> + <!--Cos--> + <FUNCTION_DEF ID="40" EXPRESSION="COS($0)"/> + <!--Degrees--> + <FUNCTION_DEF ID="42" EXPRESSION="DEGREES($0)"/> + <!--Exp--> + <FUNCTION_DEF ID="43" EXPRESSION="EXP($0)"/> + <!--Floor--> + <FUNCTION_DEF ID="44" EXPRESSION="FLOOR($0)"/> + <!--Int--> + <FUNCTION_DEF ID="45" EXPRESSION="FLOOR($0)"/> + <!--Int2--> + <FUNCTION_DEF ID="46" EXPRESSION="FLOOR($0)"/> + <!--Ln--> + <FUNCTION_DEF ID="47" EXPRESSION="LN($0)"/> + <!--Log--> + <FUNCTION_DEF ID="48" EXPRESSION="LN($0)/LN($1)"/> + <!--Log10--> + <FUNCTION_DEF ID="49" EXPRESSION="LOG10($0)"/> + <!--Mod--> + <FUNCTION_DEF ID="50" EXPRESSION="$0-FLOOR($0/$1)*$1"/> + <!--Power--> + <FUNCTION_DEF ID="51" EXPRESSION="POWER($0, $1)"/> + <!--Radians--> + <FUNCTION_DEF ID="53" EXPRESSION="RADIANS($0)"/> + <!--Round--> + <FUNCTION_DEF ID="55" EXPRESSION="ROUND($0, 0)"/> + <!--Sin--> + <FUNCTION_DEF ID="56" EXPRESSION="SIN($0)"/> + <!--Sqrt--> + <FUNCTION_DEF ID="58" EXPRESSION="SQRT($0)"/> + <!--Tan--> + <FUNCTION_DEF ID="59" EXPRESSION="TAN($0)"/> + <!--Trunc--> + <FUNCTION_DEF ID="61" EXPRESSION="CAST($0 AS INTEGER)"/> + <!--Median--> + <FUNCTION_DEF ID="63" EXPRESSION="MEDIAN($0)"/> + <!--Daysbetween--> + <FUNCTION_DEF ID="64" EXPRESSION="TIMESTAMPDIFF(day, $0, $1)"/> + <!--DateAdd--> + <FUNCTION_DEF ID="65" EXPRESSION="TIMESTAMPADD(day, $1, $0)"/> + <!--AddMonths--> + <FUNCTION_DEF ID="66" EXPRESSION="TIMESTAMPADD(month, $1, $0)"/> + <!--CurrentTime--> + <FUNCTION_DEF ID="67" EXPRESSION="CURRENT_TIME"/> + <!--DayofWeek--> + <FUNCTION_DEF ID="68" EXPRESSION="DAYOFWEEK($0)"/> + <!--Monthsbetween--> + <FUNCTION_DEF ID="69" EXPRESSION="TIMESTAMPDIFF(month, $0, $1)"/> + <!--Week--> + <FUNCTION_DEF ID="70" EXPRESSION="WEEK($0)"/> + <!--NulltoEmpty--> + <FUNCTION_DEF ID="71" EXPRESSION="COALESCE($0, '')"/> + <!--StrBeginsWith--> + <FUNCTION_DEF ID="72" + EXPRESSION="case when SUBSTRING($0 from 1 for CHAR_LENGTH('$1') ) =$1 then 1 else 0 end"/> + <!--Concat--> + <FUNCTION_DEF ID="73" EXPRESSION="concat ($0 , $1)"/> + <!--StrEndsWith--> + <FUNCTION_DEF ID="74" + EXPRESSION="case when SUBSTRING($0 from (CHAR_LENGTH($0)-CHAR_LENGTH($1)+1) for CHAR_LENGTH($1) ) =$1 then 1 else 0 end"/> + <!--LTrim--> + <FUNCTION_DEF ID="76" EXPRESSION="TRIM( LEADING ' ' FROM $0)"/> + <!--Position--> + <FUNCTION_DEF ID="77" EXPRESSION="POSITION($0 IN $1)"/> + <!--StrReplace--> + <FUNCTION_DEF ID="78" EXPRESSION="REPLACE($0, $1, $2)"/> + <!--RightStr--> + <FUNCTION_DEF ID="79" + EXPRESSION="SUBSTRING($0 FROM (char_length($0) -$1 +1) FOR $1)"/> + <!--RTrim--> + <FUNCTION_DEF ID="80" EXPRESSION="TRIM(TRAILING ' ' FROM $0)"/> + <!--Round2--> + <FUNCTION_DEF ID="81" EXPRESSION="ROUND($0, $1)"/> + <!--CORRELATION --> + <FUNCTION_DEF ID="82" EXPRESSION="CORR($0, $1)"/> + <!--Random number--> + <FUNCTION_DEF ID="83" EXPRESSION="RAND()"/> + <!--Convert SQL_BIGINT --> + <FUNCTION_DEF ID="84" EXPRESSION="{fn CONVERT($0, SQL_BIGINT)}"/> + + <TYPE_DEF ID="Any" EXPRESSION="ANY"/> + + <TYPE_DEF ID="Integer" EXPRESSION="INTEGER"/> + <TYPE_DEF ID="Int" EXPRESSION="INT"/> + <TYPE_DEF ID="BigInt" EXPRESSION="BIGINT"/> + <TYPE_DEF ID="TinyInt" EXPRESSION="TINYINT"/> + <TYPE_DEF ID="SmallInt" EXPRESSION="SMALLINT"/> + <TYPE_DEF ID="Short" EXPRESSION="SHORT"/> + <TYPE_DEF ID="Long" EXPRESSION="LONG"/> + + <TYPE_DEF ID="Numeric" EXPRESSION="NUMERIC($p, $s)"/> + <TYPE_DEF ID="Decimal" EXPRESSION="DECIMAL($p, $s)"/> + <TYPE_DEF ID="Real" EXPRESSION="REAL"/> + <TYPE_DEF ID="Double" EXPRESSION="DOUBLE"/> + <TYPE_DEF ID="Float" EXPRESSION="FLOAT"/> + + <TYPE_DEF ID="Char" EXPRESSION="CHAR($p)"/> + <TYPE_DEF ID="VarChar" EXPRESSION="VARCHAR($p)"/> + <TYPE_DEF ID="String" EXPRESSION="STRING"/> + + <TYPE_DEF ID="Binary" EXPRESSION="BINARY"/> + <TYPE_DEF ID="Byte" EXPRESSION="BYTE"/> + <TYPE_DEF ID="Boolean" EXPRESSION="BOOLEAN"/> + + <TYPE_DEF ID="Date" EXPRESSION="DATE"/> + <TYPE_DEF ID="Time" EXPRESSION="TIME"/> + <TYPE_DEF ID="DateTime" EXPRESSION="DATETIME"/> + <TYPE_DEF ID="TimeStamp" EXPRESSION="TIMESTAMP"/> +</DATASOURCE_DEF> \ No newline at end of file