@@ -502,16 +564,38 @@
import codemirror from '@/conf/home/pages/resource/pages/file/pages/_source/codemirror'
let editor
+ let shellEditor
export default {
name: 'sql',
data () {
return {
-
+ /**
+ * Is Custom Task
+ */
+ isCustomTask: false,
/**
* Customer Params
*/
localParams: [],
+
+ /**
+ * Hadoop Custom Params
+ */
+ hadoopCustomParams: [],
+
+ /**
+ * Sqoop Advanced Params
+ */
+ sqoopAdvancedParams: [],
+ /**
+ * script
+ */
+ customShell: '',
+ /**
+ * task name
+ */
+ jobName: '',
/**
* mysql query type
*/
@@ -528,6 +612,10 @@
* concurrency
*/
concurrency:1,
+ /**
+ * default job type
+ */
+ jobType:'TEMPLATE',
/**
* direct model type
*/
@@ -535,17 +623,11 @@
modelTypeList: [{ code: 'import' }, { code: 'export' }],
- sourceTypeList:[
+ sourceTypeList: [
{
- code:"MYSQL"
- },
- {
- code:"HDFS"
+ code: "MYSQL"
},
- {
- code:"HIVE"
- }
- ],
+ ],
targetTypeList:[
{
@@ -653,17 +735,45 @@
},
_handleQueryType(o){
this.sourceMysqlParams.srcQueryType = this.srcQueryType
+ this._getTargetTypeList(this.sourceType)
+ this.targetType = this.targetTypeList[0].code
+ },
+
+ _handleModelTypeChange(a){
+ this._getSourceTypeList(a.label)
+ this.sourceType = this.sourceTypeList[0].code
+ this._handleSourceTypeChange({label: this.sourceType, value: this.sourceType})
},
_handleSourceTypeChange(a){
- this._getTargetTypeList(a.label)
- this.targetType = this.targetTypeList[0].code
+ this._getTargetTypeList(a.label)
+ this.targetType = this.targetTypeList[0].code
},
- _getTargetTypeList(data){
+ _getSourceTypeList(data){
switch(data){
- case 'MYSQL':
- this.targetTypeList = [
+ case 'import':
+ this.sourceTypeList = [
+ {
+ code:"MYSQL"
+ },
+ ]
+ break;
+ case 'export':
+ this.sourceTypeList = [
+ {
+ code: "HDFS"
+ },
+ {
+ code: "HIVE"
+ }
+ ]
+ break;
+ default:
+ this.sourceTypeList = [
+ {
+ code:"MYSQL"
+ },
{
code:"HIVE"
},
@@ -672,6 +782,28 @@
}
]
break;
+ }
+ },
+
+ _getTargetTypeList(data){
+ switch(data){
+ case 'MYSQL':
+ if (this.srcQueryType === "1") {
+ this.targetTypeList = [
+ {
+ code: "HDFS"
+ }]
+ } else {
+ this.targetTypeList = [
+ {
+ code: "HIVE"
+ },
+ {
+ code: "HDFS"
+ }
+ ]
+ }
+ break;
case 'HDFS':
this.targetTypeList = [
{
@@ -701,12 +833,10 @@
_onMapColumnHive (a) {
this.sourceMysqlParams.mapColumnHive = a
- console.log(this.sourceMysqlParams.mapColumnHive)
},
_onMapColumnJava (a) {
this.sourceMysqlParams.mapColumnJava = a
- console.log(this.sourceMysqlParams.mapColumnJava)
},
/**
@@ -726,13 +856,14 @@
},
/**
- * stringify the source params
- */
+ * stringify the source params
+ */
_handleSourceParams() {
var params = null
switch(this.sourceType){
case "MYSQL":
- this.sourceMysqlParams.srcQuerySql = editor ? editor.getValue() : this.sourceMysqlParams.srcQuerySql
+ this.sourceMysqlParams.srcQuerySql = this.sourceMysqlParams.srcQueryType === "1" && editor ?
+ editor.getValue() : this.sourceMysqlParams.srcQuerySql
params = JSON.stringify(this.sourceMysqlParams)
break;
case "ORACLE":
@@ -746,14 +877,14 @@
break;
default:
params = "";
- break;
+ break;
}
return params
},
- /**
- * stringify the target params
- */
+ /**
+ * stringify the target params
+ */
_handleTargetParams() {
var params = null
switch(this.targetType){
@@ -822,91 +953,114 @@
* verification
*/
_verification () {
+ let sqoopParams = {
+ jobType: this.jobType,
+ localParams: this.localParams
+ }
+ if (this.jobType === 'CUSTOM') {
+ if (!shellEditor.getValue()) {
+ this.$message.warning(`${i18n.$t('Please enter Custom Shell(required)')}`)
+ return false
+ }
+ sqoopParams['customShell'] = shellEditor.getValue()
+ } else {
+ if (!this.jobName) {
+ this.$message.warning(`${i18n.$t('Please enter Job Name(required)')}`)
+ return false
+ }
- switch(this.sourceType){
- case "MYSQL":
- if (!this.$refs.refSourceDs._verifDatasource()) {
- return false
- }
- if(this.srcQueryType === '1'){
- if (!editor.getValue()) {
- this.$message.warning(`${i18n.$t('Please enter a SQL Statement(required)')}`)
- return false
- }
- }else{
- if (this.sourceMysqlParams.srcTable === "") {
- this.$message.warning(`${i18n.$t('Please enter Mysql Table(required)')}`)
+ switch (this.sourceType) {
+ case "MYSQL":
+ if (!this.$refs.refSourceDs._verifDatasource()) {
return false
}
-
- if(this.sourceMysqlParams.srcColumnType === "1" && this.sourceMysqlParams.srcColumns === ""){
- this.$message.warning(`${i18n.$t('Please enter Columns (Comma separated)')}`)
- return false
+ if (this.srcQueryType === '1') {
+ if (!editor.getValue()) {
+ this.$message.warning(`${i18n.$t('Please enter a SQL Statement(required)')}`)
+ return false
+ }
+ this.sourceMysqlParams.srcTable = ""
+ this.sourceMysqlParams.srcColumnType = "0"
+ this.sourceMysqlParams.srcColumns = ""
+ } else {
+ if (this.sourceMysqlParams.srcTable === "") {
+ this.$message.warning(`${i18n.$t('Please enter Mysql Table(required)')}`)
+ return false
+ }
+ this.sourceMysqlParams.srcQuerySql = ""
+ if (this.sourceMysqlParams.srcColumnType === "1" && this.sourceMysqlParams.srcColumns === "") {
+ this.$message.warning(`${i18n.$t('Please enter Columns (Comma separated)')}`)
+ return false
+ }
+ if (this.sourceMysqlParams.srcColumnType === "0") {
+ this.sourceMysqlParams.srcColumns = ""
+ }
}
- }
- break;
- case "HDFS":
- if(this.sourceHdfsParams.exportDir === ""){
+ break;
+ case "HDFS":
+ if (this.sourceHdfsParams.exportDir === "") {
this.$message.warning(`${i18n.$t('Please enter Export Dir(required)')}`)
return false
}
- break;
- case "HIVE":
- if(this.sourceHiveParams.hiveDatabase === ""){
+ break;
+ case "HIVE":
+ if (this.sourceHiveParams.hiveDatabase === "") {
this.$message.warning(`${i18n.$t('Please enter Hive Database(required)')}`)
return false
}
- if(this.sourceHiveParams.hiveTable === ""){
+ if (this.sourceHiveParams.hiveTable === "") {
this.$message.warning(`${i18n.$t('Please enter Hive Table(required)')}`)
return false
}
- break;
- default:
- break;
- }
+ break;
+ default:
+ break;
+ }
- switch(this.targetType){
- case "HIVE":
- if(this.targetHiveParams.hiveDatabase === ""){
+ switch (this.targetType) {
+ case "HIVE":
+ if (this.targetHiveParams.hiveDatabase === "") {
this.$message.warning(`${i18n.$t('Please enter Hive Database(required)')}`)
return false
}
- if(this.targetHiveParams.hiveTable === ""){
+ if (this.targetHiveParams.hiveTable === "") {
this.$message.warning(`${i18n.$t('Please enter Hive Table(required)')}`)
return false
}
- break;
- case "HDFS":
- if(this.targetHdfsParams.targetPath === ""){
+ break;
+ case "HDFS":
+ if (this.targetHdfsParams.targetPath === "") {
this.$message.warning(`${i18n.$t('Please enter Target Dir(required)')}`)
return false
}
- break;
- case "MYSQL":
+ break;
+ case "MYSQL":
if (!this.$refs.refTargetDs._verifDatasource()) {
return false
}
- if(this.targetMysqlParams.targetTable === ""){
+ if (this.targetMysqlParams.targetTable === "") {
this.$message.warning(`${i18n.$t('Please enter Mysql Table(required)')}`)
return false
}
- break;
- default:
- break;
+ break;
+ default:
+ break;
+ }
+ sqoopParams['jobName'] = this.jobName
+ sqoopParams['hadoopCustomParams'] = this.hadoopCustomParams
+ sqoopParams['sqoopAdvancedParams'] = this.sqoopAdvancedParams
+ sqoopParams['concurrency'] = this.concurrency
+ sqoopParams['modelType'] = this.modelType
+ sqoopParams['sourceType'] = this.sourceType
+ sqoopParams['targetType'] = this.targetType
+ sqoopParams['targetParams'] = this._handleTargetParams()
+ sqoopParams['sourceParams'] = this._handleSourceParams()
}
// storage
- this.$emit('on-params', {
- concurrency:this.concurrency,
- modelType:this.modelType,
- sourceType:this.sourceType,
- targetType:this.targetType,
- sourceParams:this._handleSourceParams(),
- targetParams:this._handleTargetParams(),
- localParams:this.localParams
- })
+ this.$emit('on-params', sqoopParams)
return true
},
@@ -943,13 +1097,54 @@
return editor
},
- /**
+ /**
+ * Processing code highlighting
+ */
+ _handlerShellEditor () {
+ this._destroyShellEditor()
+
+ // shellEditor
+ shellEditor = codemirror('code-shell-mirror', {
+ mode: 'shell',
+ readOnly: this.isDetails
+ })
+
+ this.keypress = () => {
+ if (!shellEditor.getOption('readOnly')) {
+ shellEditor.showHint({
+ completeSingle: false
+ })
+ }
+ }
+
+ // Monitor keyboard
+ shellEditor.on('keypress', this.keypress)
+ shellEditor.setValue(this.customShell)
+
+ return shellEditor
+ },
+
+ /**
* return localParams
*/
_onLocalParams (a) {
this.localParams = a
},
+ /**
+ * return hadoopParams
+ */
+ _onHadoopCustomParams (a) {
+ this.hadoopCustomParams = a
+ },
+
+ /**
+ * return sqoopAdvancedParams
+ */
+ _onSqoopAdvancedParams (a) {
+ this.sqoopAdvancedParams = a
+ },
+
_cacheParams () {
this.$emit('on-cache-params', {
concurrency:this.concurrency,
@@ -963,13 +1158,20 @@
},
_destroyEditor () {
- if (editor) {
+ if (editor) {
editor.toTextArea() // Uninstall
editor.off($('.code-sqoop-mirror'), 'keypress', this.keypress)
editor.off($('.code-sqoop-mirror'), 'changes', this.changes)
editor = null
}
},
+ _destroyShellEditor () {
+ if (shellEditor) {
+ shellEditor.toTextArea() // Uninstall
+ shellEditor.off($('.code-shell-mirror'), 'keypress', this.keypress)
+ shellEditor.off($('.code-shell-mirror'), 'changes', this.changes)
+ }
+ }
},
watch: {
// Listening to sqlType
@@ -1001,14 +1203,24 @@
// Non-null objects represent backfill
if (!_.isEmpty(o)) {
- this.concurrency = o.params.concurrency || 1,
- this.modelType = o.params.modelType,
- this.sourceType = o.params.sourceType,
- this._getTargetTypeList(this.sourceType)
- this.targetType = o.params.targetType,
- this._getSourceParams(o.params.sourceParams),
- this._getTargetParams(o.params.targetParams),
- this.localParams = o.params.localParams
+ this.jobType = o.params.jobType
+ this.isCustomTask = false
+ if (this.jobType === 'CUSTOM') {
+ this.customShell = o.params.customShell
+ this.isCustomTask = true
+ } else {
+ this.jobName = o.params.jobName
+ this.hadoopCustomParams = o.params.hadoopCustomParams
+ this.sqoopAdvancedParams = o.params.sqoopAdvancedParams
+ this.concurrency = o.params.concurrency || 1
+ this.modelType = o.params.modelType
+ this.sourceType = o.params.sourceType
+ this._getTargetTypeList(this.sourceType)
+ this.targetType = o.params.targetType
+ this._getSourceParams(o.params.sourceParams)
+ this._getTargetParams(o.params.targetParams)
+ this.localParams = o.params.localParams
+ }
}
},
@@ -1017,6 +1229,10 @@
this._handlerEditor()
}, 200)
+ setTimeout(() => {
+ this._handlerShellEditor()
+ }, 200)
+
setTimeout(() => {
this.srcQueryType = this.sourceMysqlParams.srcQueryType
}, 500)
diff --git a/dolphinscheduler-ui/src/js/module/i18n/locale/en_US.js b/dolphinscheduler-ui/src/js/module/i18n/locale/en_US.js
index 86384bac39..ec20ba27ac 100755
--- a/dolphinscheduler-ui/src/js/module/i18n/locale/en_US.js
+++ b/dolphinscheduler-ui/src/js/module/i18n/locale/en_US.js
@@ -98,6 +98,7 @@ export default {
Script: 'Script',
'Please enter script(required)': 'Please enter script(required)',
'Deploy Mode': 'Deploy Mode',
+ 'Flink Version':'Flink Version',
'Driver core number': 'Driver core number',
'Please enter driver core number': 'Please enter driver core number',
'Driver memory use': 'Driver memory use',
@@ -542,6 +543,9 @@ export default {
'Whether directory': 'Whether directory',
Yes: 'Yes',
No: 'No',
+ 'Hadoop Custom Params': 'Hadoop Params',
+ 'Sqoop Advanced Parameters': 'Sqoop Params',
+ 'Sqoop Job Name': 'Job Name',
'Please enter Mysql Database(required)': 'Please enter Mysql Database(required)',
'Please enter Mysql Table(required)': 'Please enter Mysql Table(required)',
'Please enter Columns (Comma separated)': 'Please enter Columns (Comma separated)',
@@ -556,6 +560,8 @@ export default {
'Please enter Lines Terminated': 'Please enter Lines Terminated',
'Please enter Concurrency': 'Please enter Concurrency',
'Please enter Update Key': 'Please enter Update Key',
+ 'Please enter Job Name(required)': 'Please enter Job Name(required)',
+ 'Please enter Custom Shell(required)': 'Please enter Custom Shell(required)',
Direct: 'Direct',
Type: 'Type',
ModelType: 'ModelType',
@@ -589,12 +595,21 @@ export default {
'All Columns': 'All Columns',
'Some Columns': 'Some Columns',
'Branch flow': 'Branch flow',
+ 'Custom Job': 'Custom Job',
+ 'Custom Script': 'Custom Script',
'Cannot select the same node for successful branch flow and failed branch flow': 'Cannot select the same node for successful branch flow and failed branch flow',
'Successful branch flow and failed branch flow are required': 'conditions node Successful and failed branch flow are required',
'Unauthorized or deleted resources': 'Unauthorized or deleted resources',
'Please delete all non-existent resources': 'Please delete all non-existent resources',
'Enable': 'Enable',
'Disable': 'Disable',
+ 'Timeout Settings': 'Timeout Settings',
+ 'Connect Timeout':'Connect Timeout',
+ 'Socket Timeout':'Socket Timeout',
+ 'Connect timeout be a positive integer': 'Connect timeout be a positive integer',
+ 'Socket Timeout be a positive integer': 'Socket Timeout be a positive integer',
+ 'ms':'ms',
+ 'Disable': 'Disable',
'The Worker group no longer exists, please select the correct Worker group!': 'The Worker group no longer exists, please select the correct Worker group!',
'Please confirm whether the workflow has been saved before downloading': 'Please confirm whether the workflow has been saved before downloading',
'User name length is between 3 and 39': 'User name length is between 3 and 39'
diff --git a/dolphinscheduler-ui/src/js/module/i18n/locale/zh_CN.js b/dolphinscheduler-ui/src/js/module/i18n/locale/zh_CN.js
index 88a59f5417..8e3981b74c 100755
--- a/dolphinscheduler-ui/src/js/module/i18n/locale/zh_CN.js
+++ b/dolphinscheduler-ui/src/js/module/i18n/locale/zh_CN.js
@@ -99,6 +99,7 @@ export default {
Script: '脚本',
'Please enter script(required)': '请输入脚本(必填)',
'Deploy Mode': '部署方式',
+ 'Flink Version': 'Flink版本',
'Driver core number': 'Driver内核数',
'Please enter driver core number': '请输入Driver内核数',
'Driver memory use': 'Driver内存数',
@@ -542,6 +543,9 @@ export default {
'Whether directory': '是否文件夹',
Yes: '是',
No: '否',
+ 'Hadoop Custom Params': 'Hadoop参数',
+ 'Sqoop Advanced Parameters': 'Sqoop参数',
+ 'Sqoop Job Name': '任务名称',
'Please enter Mysql Database(required)': '请输入Mysql数据库(必填)',
'Please enter Mysql Table(required)': '请输入Mysql表名(必填)',
'Please enter Columns (Comma separated)': '请输入列名,用 , 隔开',
@@ -556,6 +560,8 @@ export default {
'Please enter Lines Terminated': '请输入行分隔符',
'Please enter Concurrency': '请输入并发度',
'Please enter Update Key': '请输入更新列',
+ 'Please enter Job Name(required)': '请输入任务名称(必填)',
+ 'Please enter Custom Shell(required)': '请输入自定义脚本',
Direct: '流向',
Type: '类型',
ModelType: '模式',
@@ -589,6 +595,8 @@ export default {
'All Columns': '全表导入',
'Some Columns': '选择列',
'Branch flow': '分支流转',
+ 'Custom Job': '自定义任务',
+ 'Custom Script': '自定义脚本',
'Cannot select the same node for successful branch flow and failed branch flow': '成功分支流转和失败分支流转不能选择同一个节点',
'Successful branch flow and failed branch flow are required': 'conditions节点成功和失败分支流转必填',
'Unauthorized or deleted resources': '未授权或已删除资源',
@@ -597,5 +605,12 @@ export default {
'Disable': '停用',
'The Worker group no longer exists, please select the correct Worker group!': '该Worker分组已经不存在,请选择正确的Worker分组!',
'Please confirm whether the workflow has been saved before downloading': '下载前请确定工作流是否已保存',
- 'User name length is between 3 and 39': '用户名长度在3~39之间'
+ 'User name length is between 3 and 39': '用户名长度在3~39之间',
+ 'Disable': '停用',
+ 'Timeout Settings': '超时设置',
+ 'Connect Timeout':'连接超时',
+ 'Socket Timeout':'Socket超时',
+ 'Connect timeout be a positive integer': '连接超时必须为数字',
+ 'Socket Timeout be a positive integer': 'Socket超时必须为数字',
+ 'ms':'毫秒'
}
diff --git a/e2e/src/test/java/org/apache/dolphinscheduler/common/BrowserCommon.java b/e2e/src/test/java/org/apache/dolphinscheduler/common/BrowserCommon.java
index 5ad085a137..a7c1f7ffb4 100644
--- a/e2e/src/test/java/org/apache/dolphinscheduler/common/BrowserCommon.java
+++ b/e2e/src/test/java/org/apache/dolphinscheduler/common/BrowserCommon.java
@@ -23,7 +23,7 @@ import org.openqa.selenium.interactions.Actions;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;
import redis.clients.jedis.Jedis;
-
+import org.openqa.selenium.JavascriptExecutor;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
@@ -115,6 +115,7 @@ public class BrowserCommon {
/**
* Click button element
+ *
* @param locator By
* @return clickButton
*/
@@ -128,12 +129,13 @@ public class BrowserCommon {
/**
* Click Navigation Bar element
+ *
* @param locator By
* @return clickButton
*/
public void clickTopElement(By locator) {
WebElement element = driver.findElement(locator);
- JavascriptExecutor executor = (JavascriptExecutor)driver;
+ JavascriptExecutor executor = (JavascriptExecutor) driver;
executor.executeScript("arguments[0].click();", element);
}
@@ -164,6 +166,7 @@ public class BrowserCommon {
inputElement.sendKeys(content);
return inputElement;
}
+
/**
* clear element
*
@@ -182,9 +185,8 @@ public class BrowserCommon {
*
* @param codeMirrorLocator By codeMirror
* @param codeMirrorLineLocator By codeMirrorLine
-
*/
- public void inputCodeMirror(By codeMirrorLocator,By codeMirrorLineLocator,String content) {
+ public void inputCodeMirror(By codeMirrorLocator, By codeMirrorLineLocator, String content) {
WebElement codeMirrorElement = locateElement(codeMirrorLocator);
WebElement codeMirrorLineElement = locateElement(codeMirrorLineLocator);
codeMirrorElement.click();
@@ -193,10 +195,11 @@ public class BrowserCommon {
/**
* move to element
+ *
* @param locator BY
* @return actions
*/
- public Actions moveToElement(By locator){
+ public Actions moveToElement(By locator) {
return actions.moveToElement(locateElement(locator));
}
@@ -206,14 +209,14 @@ public class BrowserCommon {
* @param source_locator BY
* @param target_locator BY
*/
- public void dragAndDrop(By source_locator, By target_locator){
+ public void dragAndDrop(By source_locator, By target_locator) {
WebElement sourceElement = locateElement(source_locator);
WebElement targetElement = locateElement(target_locator);
actions.dragAndDrop(sourceElement, targetElement).perform();
actions.release();
}
- public void moveToDragElement(By target_locator, int X, int Y){
+ public void moveToDragElement(By target_locator, int X, int Y) {
WebElement targetElement = locateElement(target_locator);
actions.dragAndDropBy(targetElement, X, Y).perform();
actions.release();
@@ -249,9 +252,22 @@ public class BrowserCommon {
return driver;
}
+ /**
+ * select time
+ *
+ * @return WebElement
+ */
+ public WebElement selectDate(String js, By locator_time, String date) {
+ JavascriptExecutor removeAttribute = (JavascriptExecutor) driver;
+ removeAttribute.executeScript("var setDate=" + js + ";setDate.removeAttribute('readonly');");
+ WebElement dateElement = locateElement(locator_time);
-
-
+ //input date
+ dateElement.clear();
+ dateElement.sendKeys(Keys.HOME,Keys.chord(Keys.SHIFT,Keys.END));
+ dateElement.sendKeys(date);
+ return dateElement;
+ }
/**
* Multi-window switch handle, according to the handle number passed in
diff --git a/e2e/src/test/java/org/apache/dolphinscheduler/data/security/QueueManageData.java b/e2e/src/test/java/org/apache/dolphinscheduler/data/security/QueueManageData.java
new file mode 100644
index 0000000000..9fa9568a35
--- /dev/null
+++ b/e2e/src/test/java/org/apache/dolphinscheduler/data/security/QueueManageData.java
@@ -0,0 +1,42 @@
+/*
+ * 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.
+ */
+package org.apache.dolphinscheduler.data.security;
+
+public class QueueManageData {
+ /**
+ * Create Queue Name
+ */
+ public static final String QUEUE_NAME = "selenium_queue_name";
+
+ /**
+ * Create Queue Value
+ */
+ public static final String QUEUE_VALUE = "selenium_queue_value";
+
+ /**
+ * Edit Queue Name
+ */
+ public static final String EDIT_QUEUE_NAME = "_edit";
+
+ /**
+ * Edit Queue Value
+ */
+ public static final String EDIT_QUEUE_VALUE = "_edit";
+
+ public static final String QUEUE_MANAGE = "队列管理 - DolphinScheduler";
+
+}
diff --git a/e2e/src/test/java/org/apache/dolphinscheduler/data/security/TokenManageData.java b/e2e/src/test/java/org/apache/dolphinscheduler/data/security/TokenManageData.java
new file mode 100644
index 0000000000..6b6370f550
--- /dev/null
+++ b/e2e/src/test/java/org/apache/dolphinscheduler/data/security/TokenManageData.java
@@ -0,0 +1,24 @@
+/*
+ * 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.
+ */
+package org.apache.dolphinscheduler.data.security;
+
+public class TokenManageData {
+ public static final String TOKEN_MANAGE = "令牌管理 - DolphinScheduler";
+ public static final String DATE = "2038-06-10 00:00:00";
+
+
+}
diff --git a/e2e/src/test/java/org/apache/dolphinscheduler/locator/security/QueueManageLocator.java b/e2e/src/test/java/org/apache/dolphinscheduler/locator/security/QueueManageLocator.java
new file mode 100644
index 0000000000..ee7d3992b5
--- /dev/null
+++ b/e2e/src/test/java/org/apache/dolphinscheduler/locator/security/QueueManageLocator.java
@@ -0,0 +1,31 @@
+/*
+ * 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.
+ */
+package org.apache.dolphinscheduler.locator.security;
+
+import org.openqa.selenium.By;
+
+public class QueueManageLocator {
+ //create queue locator
+ public static final By CLICK_QUEUE_MANAGE = By.xpath("//div[6]/div/a/div/a/span");
+ public static final By CLICK_CREATE_QUEUE = By.xpath("//button/span");
+ public static final By INPUT_QUEUE_NAME = By.xpath("//div[2]/div/div/div[2]/div/input");
+ public static final By INPUT_QUEUE_VALUE = By.xpath("//div[2]/div[2]/div/input");
+ public static final By SUBMIT_QUEUE = By.xpath("//button[2]/span");
+
+ //edit queue locator
+ public static final By CLICK_EDIT_QUEUE = By.xpath("//td[6]/button/i");
+}
diff --git a/e2e/src/test/java/org/apache/dolphinscheduler/locator/security/TokenManageLocator.java b/e2e/src/test/java/org/apache/dolphinscheduler/locator/security/TokenManageLocator.java
new file mode 100644
index 0000000000..e7f7654811
--- /dev/null
+++ b/e2e/src/test/java/org/apache/dolphinscheduler/locator/security/TokenManageLocator.java
@@ -0,0 +1,41 @@
+/*
+ * 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.
+ */
+package org.apache.dolphinscheduler.locator.security;
+
+import org.openqa.selenium.By;
+
+public class TokenManageLocator {
+ //create token
+ public static final By CLICK_TOKEN_MANAGE = By.xpath("//div[7]/div/a/div/a/span");
+
+ public static final By CLICK_CREATE_TOKEN = By.xpath("//div[2]/div/div[2]/div[2]/div/div[1]/button/span");
+
+ public static final By SELECT_USER = By.xpath("//div[2]/div[2]/div/div/div/span/i");
+
+ public static final By CLICK_GENERATE_TOKEN_BUTTON = By.xpath("//div[3]/div[2]/button/span");
+
+ public static final By CLICK_SUBMIT_BUTTON = By.xpath("//div[3]/button[2]/span");
+
+ //edit token
+ public static final By CLICK_EDIT_BUTTON = By.xpath("//div[3]/div[1]/div/table/tr[2]/td[7]/button/i");
+
+ //delete token
+ public static final By CLICK_DELETE_BUTTON = By.xpath("//div[3]/div[1]/div/table/tr[2]/td[7]/span/button");
+
+ public static final By CLICK_CONFIRM_DELETE_BUTTON = By.xpath("//div[2]/div/button[2]/span");
+
+}
diff --git a/e2e/src/test/java/org/apache/dolphinscheduler/page/security/AlertManagePage.java b/e2e/src/test/java/org/apache/dolphinscheduler/page/security/AlertManagePage.java
index eb3fa34bb5..a205723867 100644
--- a/e2e/src/test/java/org/apache/dolphinscheduler/page/security/AlertManagePage.java
+++ b/e2e/src/test/java/org/apache/dolphinscheduler/page/security/AlertManagePage.java
@@ -38,11 +38,11 @@ public class AlertManagePage extends PageCommon {
public boolean createAlert() throws InterruptedException {
// click alert manage
clickElement(AlertManageLocator.CLICK_ALERT_MANAGE);
- Thread.sleep(2000);
+ Thread.sleep(1000);
// click create alert button
clickElement(AlertManageLocator.CLICK_CREATE_ALERT);
- Thread.sleep(2000);
+ Thread.sleep(1000);
// input alert data
sendInput(AlertManageLocator.INPUT_ALERT_NAME, AlertManageData.ALERT_NAME);
diff --git a/e2e/src/test/java/org/apache/dolphinscheduler/page/security/QueueManagePage.java b/e2e/src/test/java/org/apache/dolphinscheduler/page/security/QueueManagePage.java
new file mode 100644
index 0000000000..33b7627254
--- /dev/null
+++ b/e2e/src/test/java/org/apache/dolphinscheduler/page/security/QueueManagePage.java
@@ -0,0 +1,85 @@
+/*
+ * 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.
+ */
+package org.apache.dolphinscheduler.page.security;
+
+import org.apache.dolphinscheduler.common.PageCommon;
+import org.apache.dolphinscheduler.data.security.QueueManageData;
+import org.apache.dolphinscheduler.locator.security.QueueManageLocator;
+import org.openqa.selenium.WebDriver;
+
+public class QueueManagePage extends PageCommon {
+ /**
+ * Unique constructor
+ * @param driver driver
+ */
+ public QueueManagePage(WebDriver driver) {
+ super(driver);
+ }
+
+ /**
+ * create queue
+ *
+ * @return Whether to enter the specified page after create queue
+ */
+ public boolean createQueue() throws InterruptedException {
+ // click queue manage
+ clickElement(QueueManageLocator.CLICK_QUEUE_MANAGE);
+ Thread.sleep(1000);
+
+ // click create queue button
+ clickElement(QueueManageLocator.CLICK_CREATE_QUEUE);
+ Thread.sleep(1000);
+
+ // input queue data
+ sendInput(QueueManageLocator.INPUT_QUEUE_NAME, QueueManageData.QUEUE_NAME);
+
+ sendInput(QueueManageLocator.INPUT_QUEUE_VALUE, QueueManageData.QUEUE_VALUE);
+
+ // click button
+ clickButton(QueueManageLocator.SUBMIT_QUEUE);
+
+ // Whether to enter the specified page after submit
+ return ifTitleContains(QueueManageData.QUEUE_MANAGE);
+ }
+
+
+ /**
+ * edit queue
+ *
+ * @return Whether to enter the specified page after create queue
+ */
+ public boolean editQueue() throws InterruptedException {
+ // click queue manage
+ Thread.sleep(1000);
+ clickElement(QueueManageLocator.CLICK_QUEUE_MANAGE);
+ Thread.sleep(1000);
+
+ // click edit queue button
+ clickElement(QueueManageLocator.CLICK_EDIT_QUEUE);
+ Thread.sleep(1000);
+
+ // input queue data
+ sendInput(QueueManageLocator.INPUT_QUEUE_NAME, QueueManageData.EDIT_QUEUE_NAME);
+ sendInput(QueueManageLocator.INPUT_QUEUE_VALUE, QueueManageData.EDIT_QUEUE_VALUE);
+
+ // click button
+ clickButton(QueueManageLocator.SUBMIT_QUEUE);
+
+ // Whether to enter the specified page after submit
+ return ifTitleContains(QueueManageData.QUEUE_MANAGE);
+ }
+}
diff --git a/e2e/src/test/java/org/apache/dolphinscheduler/page/security/TokenManagePage.java b/e2e/src/test/java/org/apache/dolphinscheduler/page/security/TokenManagePage.java
new file mode 100644
index 0000000000..2f8204ac47
--- /dev/null
+++ b/e2e/src/test/java/org/apache/dolphinscheduler/page/security/TokenManagePage.java
@@ -0,0 +1,94 @@
+/*
+ * 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.
+ */
+package org.apache.dolphinscheduler.page.security;
+
+import org.apache.dolphinscheduler.common.PageCommon;
+import org.apache.dolphinscheduler.data.security.TokenManageData;
+import org.apache.dolphinscheduler.locator.security.TokenManageLocator;
+import org.openqa.selenium.WebDriver;
+
+public class TokenManagePage extends PageCommon {
+ public TokenManagePage(WebDriver driver) {
+ super(driver);
+ }
+
+ /**
+ * createTenant
+ *
+ * @return Whether to enter the specified page after creat tenant
+ */
+ public boolean createToken() throws InterruptedException {
+ //create token
+ Thread.sleep(1000);
+ clickElement(TokenManageLocator.CLICK_TOKEN_MANAGE);
+ Thread.sleep(1000);
+
+ // click create token button
+ clickButton(TokenManageLocator.CLICK_CREATE_TOKEN);
+ Thread.sleep(1000);
+
+ //selectDate(TokenManageLocator.js, TokenManageLocator.CLICK_TIME, TokenManageData.DATE);
+
+ clickButton(TokenManageLocator.SELECT_USER);
+
+ clickButton(TokenManageLocator.CLICK_GENERATE_TOKEN_BUTTON);
+ Thread.sleep(2500);
+
+ // click button
+ clickButton(TokenManageLocator.CLICK_SUBMIT_BUTTON);
+
+ // Whether to enter the specified page after submit
+ return ifTitleContains(TokenManageData.TOKEN_MANAGE);
+ }
+
+
+ //edit token
+ public boolean editToken() throws InterruptedException {
+ // click token manage
+ clickElement(TokenManageLocator.CLICK_TOKEN_MANAGE);
+ Thread.sleep(1000);
+
+ // click create token button
+ clickButton(TokenManageLocator.CLICK_EDIT_BUTTON);
+ Thread.sleep(1000);
+
+ clickButton(TokenManageLocator.SELECT_USER);
+
+ clickButton(TokenManageLocator.CLICK_GENERATE_TOKEN_BUTTON);
+ Thread.sleep(2500);
+
+ // click button
+ clickButton(TokenManageLocator.CLICK_SUBMIT_BUTTON);
+
+ // Whether to enter the specified page after submit
+ return ifTitleContains(TokenManageData.TOKEN_MANAGE);
+ }
+
+
+ //delete token
+ public boolean deleteToken() throws InterruptedException {
+ // click token manage
+ clickElement(TokenManageLocator.CLICK_TOKEN_MANAGE);
+ Thread.sleep(1000);
+
+ clickButton(TokenManageLocator.CLICK_DELETE_BUTTON);
+ clickButton(TokenManageLocator.CLICK_CONFIRM_DELETE_BUTTON);
+
+ return ifTitleContains(TokenManageData.TOKEN_MANAGE);
+ }
+
+}
diff --git a/e2e/src/test/java/org/apache/dolphinscheduler/testcase/testDeleteData/TestDeleteToken.java b/e2e/src/test/java/org/apache/dolphinscheduler/testcase/testDeleteData/TestDeleteToken.java
new file mode 100644
index 0000000000..d524f0056f
--- /dev/null
+++ b/e2e/src/test/java/org/apache/dolphinscheduler/testcase/testDeleteData/TestDeleteToken.java
@@ -0,0 +1,42 @@
+/*
+ * 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.
+ */
+package org.apache.dolphinscheduler.testcase.testDeleteData;
+
+import org.apache.dolphinscheduler.base.BaseTest;
+import org.apache.dolphinscheduler.page.security.TenantManagePage;
+import org.apache.dolphinscheduler.page.security.TokenManagePage;
+import org.testng.annotations.Test;
+
+public class TestDeleteToken extends BaseTest {
+ private TokenManagePage tokenManagePage;
+ private TenantManagePage tenantManagePage;
+
+
+ @Test(groups = {"functionTests"}, dependsOnGroups = {"login", "token"}, description = "TestDeleteToken")
+ public void testUserManage() throws InterruptedException {
+ tenantManagePage = new TenantManagePage(driver);
+ System.out.println("jump to security to delete token");
+ tenantManagePage.jumpSecurity();
+
+ tokenManagePage = new TokenManagePage(driver);
+ //delete token
+ System.out.println("start delete token");
+ assert tokenManagePage.deleteToken();
+ System.out.println("end delete token");
+ System.out.println("===================================");
+ }
+}
diff --git a/e2e/src/test/java/org/apache/dolphinscheduler/testcase/testSecurity/TestQueueManage.java b/e2e/src/test/java/org/apache/dolphinscheduler/testcase/testSecurity/TestQueueManage.java
new file mode 100644
index 0000000000..3e33bb9ad7
--- /dev/null
+++ b/e2e/src/test/java/org/apache/dolphinscheduler/testcase/testSecurity/TestQueueManage.java
@@ -0,0 +1,42 @@
+/*
+ * 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.
+ */
+package org.apache.dolphinscheduler.testcase.testSecurity;
+
+import org.apache.dolphinscheduler.base.BaseTest;
+import org.apache.dolphinscheduler.page.security.QueueManagePage;
+import org.testng.annotations.Test;
+
+
+public class TestQueueManage extends BaseTest {
+ private QueueManagePage queueManagePage;
+
+ @Test(groups={"functionTests","queue"},dependsOnGroups = { "login" },description = "TestQueueManage")
+ public void testTenantManage() throws InterruptedException {
+ queueManagePage = new QueueManagePage(driver);
+ //create queue
+ System.out.println("start create queue");
+ assert queueManagePage.createQueue();
+ System.out.println("end create queue");
+ System.out.println("===================================");
+
+ //edit queue
+ System.out.println("start edit queue");
+ assert queueManagePage.editQueue();
+ System.out.println("end edit queue");
+ System.out.println("===================================");
+ }
+}
diff --git a/e2e/src/test/java/org/apache/dolphinscheduler/testcase/testSecurity/TestTokenManage.java b/e2e/src/test/java/org/apache/dolphinscheduler/testcase/testSecurity/TestTokenManage.java
new file mode 100644
index 0000000000..e46cf0d997
--- /dev/null
+++ b/e2e/src/test/java/org/apache/dolphinscheduler/testcase/testSecurity/TestTokenManage.java
@@ -0,0 +1,43 @@
+/*
+ * 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.
+ */
+package org.apache.dolphinscheduler.testcase.testSecurity;
+
+import org.apache.dolphinscheduler.base.BaseTest;
+import org.apache.dolphinscheduler.page.security.TokenManagePage;
+import org.testng.annotations.Test;
+
+public class TestTokenManage extends BaseTest {
+ private TokenManagePage tokenManagePage;
+
+ @Test(groups={"functionTests","token"},dependsOnGroups = { "login" },description = "TestTokenManage")
+ public void testUserManage() throws InterruptedException {
+ tokenManagePage = new TokenManagePage(driver);
+ //generate token
+ System.out.println("start create token");
+ assert tokenManagePage.createToken();
+ System.out.println("end create token");
+ System.out.println("===================================");
+
+
+ //edit token
+ System.out.println("start edit token");
+ assert tokenManagePage.editToken();
+ System.out.println("end edit token");
+ System.out.println("===================================");
+
+ }
+}
diff --git a/e2e/testng.xml b/e2e/testng.xml
index 5bd35bdc78..438d5474d3 100644
--- a/e2e/testng.xml
+++ b/e2e/testng.xml
@@ -28,6 +28,8 @@
+
+
@@ -35,6 +37,7 @@
+
diff --git a/pom.xml b/pom.xml
index 598806c6f0..79ffa5d816 100644
--- a/pom.xml
+++ b/pom.xml
@@ -69,7 +69,6 @@
3.2.0
2.0.1
5.0.5
-
1.2.61
1.1.14
1.4.200
1.6
@@ -150,11 +149,6 @@
${cron.utils.version}
-
- com.alibaba
- fastjson
- ${fastjson.version}
-
com.alibaba
druid
@@ -749,6 +743,7 @@
**/common/shell/ShellExecutorTest.java
**/common/task/EntityTestUtils.java
**/common/task/FlinkParametersTest.java
+ **/common/task/HttpParametersTest.java
**/common/task/SqoopParameterEntityTest.java
**/common/threadutils/ThreadPoolExecutorsTest.java
**/common/threadutils/ThreadUtilsTest.java
@@ -786,9 +781,9 @@
**/dao/mapper/CommandMapperTest.java
**/dao/mapper/ConnectionFactoryTest.java
**/dao/mapper/DataSourceMapperTest.java
+ **/remote/JsonSerializerTest.java
**/remote/RemoveTaskLogResponseCommandTest.java
**/remote/RemoveTaskLogRequestCommandTest.java
- **/remote/FastJsonSerializerTest.java
**/remote/NettyRemotingClientTest.java
**/remote/ResponseFutureTest.java
**/server/log/LoggerServerTest.java
@@ -824,6 +819,9 @@
**/server/worker/task/spark/SparkTaskTest.java
**/server/worker/task/EnvFileTest.java
**/server/worker/task/spark/SparkTaskTest.java
+ **/server/worker/task/datax/DataxTaskTest.java
+ **/server/worker/task/http/HttpTaskTest.java
+ **/server/worker/task/sqoop/SqoopTaskTest.java
**/server/worker/EnvFileTest.java
**/service/quartz/cron/CronUtilsTest.java
**/service/zk/DefaultEnsembleProviderTest.java
@@ -849,6 +847,7 @@
**/dao/mapper/UserMapperTest.java
**/dao/utils/DagHelperTest.java
**/dao/AlertDaoTest.java
+ **/dao/datasource/OracleDataSourceTest.java
**/dao/upgrade/ProcessDefinitionDaoTest.java
**/dao/upgrade/WokrerGrouopDaoTest.java
**/dao/upgrade/UpgradeDaoTest.java
diff --git a/sql/create/release-1.0.0_schema/mysql/dolphinscheduler_ddl.sql b/sql/create/release-1.0.0_schema/mysql/dolphinscheduler_ddl.sql
index dad81b1c95..ac0851aa65 100644
--- a/sql/create/release-1.0.0_schema/mysql/dolphinscheduler_ddl.sql
+++ b/sql/create/release-1.0.0_schema/mysql/dolphinscheduler_ddl.sql
@@ -193,8 +193,8 @@ CREATE TABLE `t_escheduler_project` (
`desc` varchar(200) DEFAULT NULL COMMENT 'project description',
`user_id` int(11) DEFAULT NULL COMMENT 'creator id',
`flag` tinyint(4) DEFAULT '1' COMMENT '0 not available, 1 available',
- `create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT 'create time',
- `update_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT 'update time',
+ `create_time` datetime DEFAULT NULL COMMENT 'create time',
+ `update_time` datetime DEFAULT NULL COMMENT 'update time',
PRIMARY KEY (`id`),
KEY `user_id_index` (`user_id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
diff --git a/sql/dolphinscheduler_mysql.sql b/sql/dolphinscheduler_mysql.sql
index 746b7bfe8a..b62cb526fe 100644
--- a/sql/dolphinscheduler_mysql.sql
+++ b/sql/dolphinscheduler_mysql.sql
@@ -479,8 +479,8 @@ CREATE TABLE `t_ds_project` (
`description` varchar(200) DEFAULT NULL,
`user_id` int(11) DEFAULT NULL COMMENT 'creator id',
`flag` tinyint(4) DEFAULT '1' COMMENT '0 not available, 1 available',
- `create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT 'create time',
- `update_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT 'update time',
+ `create_time` datetime DEFAULT NULL COMMENT 'create time',
+ `update_time` datetime DEFAULT NULL COMMENT 'update time',
PRIMARY KEY (`id`),
KEY `user_id_index` (`user_id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
diff --git a/sql/upgrade/1.0.2_schema/mysql/dolphinscheduler_ddl.sql b/sql/upgrade/1.0.2_schema/mysql/dolphinscheduler_ddl.sql
index aad87b1503..4572a0fd3b 100644
--- a/sql/upgrade/1.0.2_schema/mysql/dolphinscheduler_ddl.sql
+++ b/sql/upgrade/1.0.2_schema/mysql/dolphinscheduler_ddl.sql
@@ -97,9 +97,9 @@ CREATE PROCEDURE ac_escheduler_T_t_escheduler_error_command()
`failure_strategy` tinyint(4) NULL DEFAULT 0 COMMENT 'failure strategy',
`warning_type` tinyint(4) NULL DEFAULT 0 COMMENT 'warning type',
`warning_group_id` int(11) NULL DEFAULT NULL COMMENT 'warning group id',
- `schedule_time` datetime(0) NULL DEFAULT NULL COMMENT 'scheduler time',
- `start_time` datetime(0) NULL DEFAULT NULL COMMENT 'start time',
- `update_time` datetime(0) NULL DEFAULT NULL COMMENT 'update time',
+ `schedule_time` datetime NULL DEFAULT NULL COMMENT 'scheduler time',
+ `start_time` datetime NULL DEFAULT NULL COMMENT 'start time',
+ `update_time` datetime NULL DEFAULT NULL COMMENT 'update time',
`dependence` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT 'dependence',
`process_instance_priority` int(11) NULL DEFAULT NULL COMMENT 'process instance priority, 0 Highest,1 High,2 Medium,3 Low,4 Lowest',
`worker_group_id` int(11) NULL DEFAULT -1 COMMENT 'worker group id',
@@ -125,8 +125,8 @@ CREATE PROCEDURE ac_escheduler_T_t_escheduler_worker_group()
`id` bigint(11) NOT NULL AUTO_INCREMENT COMMENT 'id',
`name` varchar(256) NULL DEFAULT NULL COMMENT 'worker group name',
`ip_list` varchar(256) NULL DEFAULT NULL COMMENT 'worker ip list. split by [,] ',
- `create_time` datetime(0) NULL DEFAULT NULL COMMENT 'create time',
- `update_time` datetime(0) NULL DEFAULT NULL COMMENT 'update time',
+ `create_time` datetime NULL DEFAULT NULL COMMENT 'create time',
+ `update_time` datetime NULL DEFAULT NULL COMMENT 'update time',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT=1 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
diff --git a/tools/dependencies/known-dependencies.txt b/tools/dependencies/known-dependencies.txt
index 6548fa8c7e..531740696b 100755
--- a/tools/dependencies/known-dependencies.txt
+++ b/tools/dependencies/known-dependencies.txt
@@ -43,7 +43,6 @@ datanucleus-core-4.1.6.jar
datanucleus-rdbms-4.1.7.jar
derby-10.14.2.0.jar
druid-1.1.14.jar
-fastjson-1.2.61.jar
gson-2.8.5.jar
guava-20.0.jar
guice-3.0.jar