This is an automated email from the ASF dual-hosted git repository. leonbao pushed a commit to branch dev-merge in repository https://gitbox.apache.org/repos/asf/incubator-dolphinscheduler.git
commit 1904a7022a38ff9bc8fbe42f1e8e9c4547916fd6 Merge: 2749c7e 464405f Author: lenboo <[email protected]> AuthorDate: Wed Jun 10 11:42:15 2020 +0800 change 1.3.0 to 1.3.0-snapshot .github/workflows/ci_e2e.yml | 2 +- .github/workflows/ci_ut.yml | 2 +- LICENSE | 16 + NOTICE | 2 +- README.md | 17 +- README_zh_CN.md | 17 +- ambari_plugin/README.md | 97 +++- .../DOLPHIN/1.3.0/configuration/dolphin-alert.xml | 6 - .../1.3.0/configuration/dolphin-datasource.xml | 261 ---------- .../DOLPHIN/1.3.0/configuration/dolphin-worker.xml | 9 - .../1.3.0/configuration/dolphin-zookeeper.xml | 8 - .../DOLPHIN/1.3.0/package/scripts/params.py | 4 - dolphinscheduler-alert/pom.xml | 2 +- .../alert/template/impl/DefaultHTMLTemplate.java | 19 +- .../dolphinscheduler/alert/utils/Constants.java | 4 + .../src/main/resources/logback-alert.xml | 2 +- .../template/impl/DefaultHTMLTemplateTest.java | 37 +- dolphinscheduler-api/pom.xml | 2 +- .../api/controller/DataSourceController.java | 2 +- .../apache/dolphinscheduler/api/enums/Status.java | 2 +- .../api/service/DataSourceService.java | 41 +- .../api/service/ProcessInstanceService.java | 5 +- .../api/service/ResourcesService.java | 64 ++- .../dolphinscheduler/api/service/UsersService.java | 65 ++- .../api/service/DataSourceServiceTest.java | 65 ++- .../api/service/ResourcesServiceTest.java | 14 +- dolphinscheduler-common/pom.xml | 2 +- .../apache/dolphinscheduler/common/Constants.java | 13 +- .../common/enums/ExecutionStatus.java | 11 +- .../dolphinscheduler/common/model/TaskNode.java | 13 + .../common/task/datax/DataxParameters.java | 13 +- .../dolphinscheduler/common/utils/DateUtils.java | 2 +- .../common/utils/DependentUtils.java | 6 + .../common/utils/ParameterUtils.java | 17 +- .../dolphinscheduler/common/utils/ResInfo.java | 8 +- .../common/utils/ScriptRunner.java | 34 +- .../common/utils/dependent/DependentDateUtils.java | 27 + .../src/main/resources/common.properties | 30 +- .../common/shell/ShellExecutorTest.java | 49 +- .../common/utils/DependentUtilsTest.java | 40 ++ dolphinscheduler-dao/pom.xml | 2 +- .../dao/datasource/BaseDataSource.java | 13 +- .../dao/datasource/MySQLDataSource.java | 47 ++ .../dao/datasource/OracleDataSource.java | 25 +- .../dolphinscheduler/dao/entity/ProcessData.java | 10 + .../dolphinscheduler/dao/entity/WorkerGroup.java | 3 - .../dao/mapper/ProcessDefinitionMapper.java | 7 + .../dao/upgrade/DolphinSchedulerManager.java | 7 +- .../dao/upgrade/ProcessDefinitionDao.java | 92 ++++ .../dolphinscheduler/dao/upgrade/UpgradeDao.java | 54 +- .../dao/upgrade/WorkerGroupDao.java | 65 +++ .../src/main/resources/datasource.properties | 3 +- .../dao/mapper/ProcessDefinitionMapper.xml | 6 + .../dolphinscheduler/dao/mapper/UserMapper.xml | 6 +- .../dao/mapper/WorkerGroupMapper.xml | 40 -- .../dao/datasource/MySQLDataSourceTest.java | 64 +++ .../dao/mapper/ProcessDefinitionMapperTest.java | 27 +- .../dao/upgrade/ProcessDefinitionDaoTest.java | 65 +++ .../dao/upgrade/UpgradeDaoTest.java | 24 +- .../dao/upgrade/WokrerGrouopDaoTest.java | 51 ++ dolphinscheduler-dist/pom.xml | 4 +- dolphinscheduler-dist/release-docs/LICENSE | 50 +- dolphinscheduler-dist/release-docs/NOTICE | 92 +--- .../release-docs/licenses/LICENSE-ant-1.6.5.txt | 203 ++++++++ .../release-docs/licenses/LICENSE-commons-el.txt | 60 --- ...-framework.txt => LICENSE-commons-lang-2.6.txt} | 0 .../release-docs/licenses/LICENSE-core-3.1.1.txt | 70 +++ ...mons-lang3.txt => LICENSE-curator-framwork.txt} | 0 .../release-docs/licenses/LICENSE-freemarker.txt | 49 -- .../release-docs/licenses/LICENSE-grpc-context.txt | 36 -- .../release-docs/licenses/LICENSE-grpc-core.txt | 36 -- .../release-docs/licenses/LICENSE-grpc-netty.txt | 36 -- .../licenses/LICENSE-grpc-protobuf-little.txt | 36 -- .../licenses/LICENSE-grpc-protobuf.txt | 36 -- .../release-docs/licenses/LICENSE-grpc-stub.txt | 36 -- .../release-docs/licenses/LICENSE-h2-1.4.200.txt | 552 +++++++++++++++++++++ .../licenses/LICENSE-instrumentation-api.txt | 201 -------- .../licenses/LICENSE-jackson-annotations.txt | 0 .../release-docs/licenses/LICENSE-jackson-core.txt | 0 .../licenses/LICENSE-jackson-databind.txt | 0 .../licenses/LICENSE-jasper-compiler.txt | 202 -------- .../licenses/LICENSE-jasper-runtime.txt | 14 - .../licenses/LICENSE-jsp-api-2.1-6.1.14.txt | 53 ++ .../licenses/LICENSE-log4j-api-2.11.2.txt | 53 ++ ...mons-lang.txt => LICENSE-log4j-core-2.11.2.txt} | 2 +- .../release-docs/licenses/LICENSE-netty-buffer.txt | 201 -------- .../licenses/LICENSE-netty-code-http.txt | 201 -------- .../licenses/LICENSE-netty-codec-http2.txt | 201 -------- .../licenses/LICENSE-netty-codec-socks.txt | 201 -------- .../release-docs/licenses/LICENSE-netty-codec.txt | 201 -------- .../release-docs/licenses/LICENSE-netty-common.txt | 201 -------- .../licenses/LICENSE-netty-handler-proxy.txt | 201 -------- .../licenses/LICENSE-netty-handler.txt | 201 -------- .../licenses/LICENSE-netty-resolver.txt | 201 -------- .../licenses/LICENSE-netty-transport.txt | 201 -------- .../licenses/LICENSE-opencensus-api.txt | 202 -------- .../LICENSE-opencensus-contrib-grpc-metrics.txt | 202 -------- .../LICENSE-proto-google-common-protos.txt | 202 -------- .../licenses/LICENSE-protobuf-java-util.txt | 42 -- .../licenses/ui-licenses/LICENSE-normalize | 8 - dolphinscheduler-plugin-api/pom.xml | 2 +- dolphinscheduler-remote/pom.xml | 2 +- .../remote/NettyRemotingClient.java | 2 +- .../remote/command/CommandType.java | 2 +- .../command/log/RemoveTaskLogRequestCommand.java | 63 +++ .../command/log/RemoveTaskLogResponseCommand.java | 63 +++ .../remote/RemoveTaskLogRequestCommandTest.java | 32 +- .../remote/RemoveTaskLogResponseCommandTest.java | 24 +- dolphinscheduler-server/pom.xml | 2 +- .../server/log/LoggerRequestProcessor.java | 35 +- .../dolphinscheduler/server/log/LoggerServer.java | 1 + .../server/master/config/MasterConfig.java | 11 + .../master/consumer/TaskPriorityQueueConsumer.java | 59 ++- .../server/master/dispatch/ExecutorDispatcher.java | 5 +- .../dispatch/host/LowerWeightHostManager.java | 27 +- .../server/master/processor/TaskAckProcessor.java | 2 +- .../server/master/registry/MasterRegistry.java | 33 +- .../master/runner/DependentTaskExecThread.java | 2 +- .../server/master/runner/MasterExecThread.java | 15 +- .../server/master/runner/MasterTaskExecThread.java | 30 +- .../dolphinscheduler/server/monitor/RunConfig.java | 15 +- .../server/registry/HeartBeatTask.java | 84 ++++ .../server/utils/DependentExecute.java | 32 +- .../server/worker/config/WorkerConfig.java | 2 +- .../worker/processor/TaskCallbackService.java | 42 +- .../server/worker/processor/TaskKillProcessor.java | 1 + .../server/worker/registry/WorkerRegistry.java | 33 +- .../server/worker/runner/TaskExecuteThread.java | 10 + .../worker/task/AbstractCommandExecutor.java | 83 +++- .../server/worker/task/ShellCommandExecutor.java | 7 +- .../server/worker/task/datax/DataxTask.java | 54 +- .../server/worker/task/shell/ShellTask.java | 2 +- .../server/worker/task/sql/SqlTask.java | 2 +- .../generator/sources/MysqlSourceGenerator.java | 18 +- .../dolphinscheduler/server/zk/ZKMasterClient.java | 5 +- .../src/main/resources/config/install_config.conf | 30 +- .../src/main/resources/master.properties | 8 +- .../src/main/resources/worker.properties | 9 +- .../server/log/LoggerServerTest.java | 62 +++ .../server/master/DependentTaskTest.java | 64 ++- .../consumer/TaskPriorityQueueConsumerTest.java | 4 +- .../server/master/registry/MasterRegistryTest.java | 4 +- .../master/runner/MasterTaskExecThreadTest.java | 41 +- .../server/registry/DependencyConfig.java | 5 + .../worker/processor/TaskCallbackServiceTest.java | 34 +- .../server/worker/registry/WorkerRegistryTest.java | 4 +- .../server/worker/task/datax/DataxTaskTest.java | 11 +- dolphinscheduler-service/pom.xml | 24 +- .../service/log/LogClientService.java | 29 ++ .../service/permission/PermissionCheck.java | 4 + .../service/process/ProcessService.java | 65 ++- .../service/quartz/ProcessScheduleJob.java | 4 +- .../service/zk/AbstractZKClient.java | 17 +- .../dolphinscheduler/service/zk/ZKServer.java | 5 +- .../dolphinscheduler/service/zk/ZKServerTest.java | 12 +- dolphinscheduler-ui/pom.xml | 2 +- dolphinscheduler-ui/src/js/conf/home/index.js | 2 - .../src/js/conf/home/pages/dag/_source/dag.js | 22 +- .../src/js/conf/home/pages/dag/_source/dag.vue | 24 +- .../home/pages/dag/_source/formModel/formModel.vue | 28 +- .../dag/_source/formModel/tasks/_source/commcon.js | 8 + .../pages/dag/_source/formModel/tasks/datax.vue | 81 +++ .../home/pages/dag/_source/formModel/tasks/mr.vue | 2 +- .../pages/dag/_source/formModel/tasks/python.vue | 37 ++ .../home/pages/dag/_source/formModel/tasks/sql.vue | 37 ++ .../pages/dag/_source/formModel/tasks/sqoop.vue | 38 +- .../dag/_source/formModel/tasks/sub_process.vue | 7 +- .../home/pages/dag/_source/plugIn/jsPlumbHandle.js | 40 +- .../js/conf/home/pages/dag/_source/plugIn/util.js | 4 +- .../home/pages/dag/_source/startingParam/index.vue | 4 +- .../src/js/conf/home/pages/dag/_source/udp/udp.vue | 9 +- .../pages/list/_source/createDataSource.vue | 6 +- .../home/pages/monitor/pages/servers/master.vue | 2 +- .../home/pages/monitor/pages/servers/worker.vue | 2 +- .../pages/definition/pages/list/_source/list.vue | 9 +- .../pages/definition/pages/list/_source/timing.vue | 18 +- .../projects/pages/definition/pages/list/index.vue | 3 + .../pages/instance/pages/list/_source/list.vue | 24 +- .../projects/pages/instance/pages/list/index.vue | 3 + .../projects/pages/taskInstance/_source/list.vue | 2 +- .../pages/projects/pages/taskInstance/index.vue | 7 +- .../pages/file/pages/list/_source/rename.vue | 2 +- .../pages/udf/pages/resource/_source/rename.vue | 2 +- .../security/pages/users/_source/createUser.vue | 7 +- .../src/js/conf/home/store/security/actions.js | 2 +- .../src/js/module/i18n/locale/en_US.js | 10 +- .../src/js/module/i18n/locale/zh_CN.js | 12 +- licenses/LICENSE-mybatis.txt | 13 + pom.xml | 10 +- script/scp-hosts.sh | 20 +- script/start-all.sh | 16 +- script/stop-all.sh | 16 +- sql/dolphinscheduler-postgre.sql | 7 +- sql/dolphinscheduler_mysql.sql | 2 +- sql/h2.mv.db | Bin 110592 -> 0 bytes .../mysql/dolphinscheduler_ddl.sql | 166 ++----- .../mysql/dolphinscheduler_dml.sql | 8 +- .../postgresql/dolphinscheduler_ddl.sql | 173 ++----- .../postgresql/dolphinscheduler_dml.sql | 24 + tools/dependencies/known-dependencies.txt | 2 - 200 files changed, 3441 insertions(+), 4838 deletions(-) diff --cc dolphinscheduler-alert/src/main/java/org/apache/dolphinscheduler/alert/utils/Constants.java index ec47a1e,540b1a9..465d9bf --- a/dolphinscheduler-alert/src/main/java/org/apache/dolphinscheduler/alert/utils/Constants.java +++ b/dolphinscheduler-alert/src/main/java/org/apache/dolphinscheduler/alert/utils/Constants.java @@@ -156,24 -156,11 +156,28 @@@ public class Constants public static final String ENTERPRISE_WECHAT_AGENT_ID = "enterprise.wechat.agent.id"; public static final String ENTERPRISE_WECHAT_USERS = "enterprise.wechat.users"; + + + public static final String DINGTALK_WEBHOOK = "dingtalk.webhook"; + + public static final String DINGTALK_KEYWORD = "dingtalk.keyword"; + + public static final String DINGTALK_PROXY_ENABLE = "dingtalk.isEnableProxy"; + + public static final String DINGTALK_PROXY = "dingtalk.proxy"; + + public static final String DINGTALK_PORT = "dingtalk.port"; + + public static final String DINGTALK_USER = "dingtalk.user"; + + public static final String DINGTALK_PASSWORD = "dingtalk.password"; + + public static final String DINGTALK_ENABLE = "dingtalk.isEnable"; + public static final String HTML_HEADER_PREFIX = "<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN' 'http://www.w3.org/TR/html4/loose.dtd'><html><head><title>dolphinscheduler</title><meta name='Keywords' content=''><meta name='Description' content=''><style type=\"text/css\">table {margin-top:0px;padding-top:0px;border:1px solid;font-size: 14px;color: #333333;border-width: 1px;border-color: #666666;border-collapse: collapse;}table th {border-width: 1px;padding: 8px;borde [...] + + public static final String TABLE_BODY_HTML_TAIL = "</table></body></html>"; + /** * plugin config */ diff --cc dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/UsersService.java index bb31733,8d79c8e..09d4824 --- a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/UsersService.java +++ b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/UsersService.java @@@ -306,16 -306,12 +310,13 @@@ public class UsersService extends BaseS user.setEmail(email); } - if (StringUtils.isNotEmpty(phone)) { - if (!CheckUtils.checkPhone(phone)){ - putMsg(result, Status.REQUEST_PARAMS_NOT_VALID_ERROR,phone); - return result; - } - user.setPhone(phone); + if (StringUtils.isNotEmpty(phone) && !CheckUtils.checkPhone(phone)) { + putMsg(result, Status.REQUEST_PARAMS_NOT_VALID_ERROR,phone); + return result; } - + user.setPhone(phone); user.setQueue(queue); + user.setState(state); Date now = new Date(); user.setUpdateTime(now); diff --cc dolphinscheduler-common/src/main/resources/common.properties index 0cc118f,923f02a..089b07d --- a/dolphinscheduler-common/src/main/resources/common.properties +++ b/dolphinscheduler-common/src/main/resources/common.properties @@@ -42,25 -42,23 +42,25 @@@ login.user.keytab.path=/opt/hdfs.headle # if resource.storage.type=HDFS, the user need to have permission to create directories under the HDFS root path hdfs.root.user=hdfs -# if resource.storage.type=S3,the value like: s3a://dolphinscheduler ; if resource.storage.type=HDFS, When namenode HA is enabled, you need to copy core-site.xml and hdfs-site.xml to conf dir +# if resource.storage.type=S3,the value like: s3a://dolphinscheduler ; if resource.storage.type=HDFS, When namenode HA is enabled, you need to copy core-site.xml and hdfs-site.xml to conf dir fs.defaultFS=hdfs://mycluster:8020 - # if resource.storage.type=S3,s3 endpoint - #fs.s3a.endpoint=http://192.168.199.91:9010 + # if resource.storage.type=S3,s3 endpoint + fs.s3a.endpoint=http://192.168.xx.xx:9010 - # if resource.storage.type=S3,s3 access key - #fs.s3a.access.key=A3DXS30FO22544RE + # if resource.storage.type=S3,s3 access key + fs.s3a.access.key=A3DXS30FO22544RE - # if resource.storage.type=S3,s3 secret key - #fs.s3a.secret.key=OloCLq3n+8+sdPHUhJ21XrSxTC+JK + # if resource.storage.type=S3,s3 secret key + fs.s3a.secret.key=OloCLq3n+8+sdPHUhJ21XrSxTC+JK # if not use hadoop resourcemanager, please keep default value; if resourcemanager HA enable, please type the HA ips ; if resourcemanager is single, make this value empty yarn.resourcemanager.ha.rm.ids=192.168.xx.xx,192.168.xx.xx - # If resourcemanager HA enable or not use resourcemanager, please keep the default value; If resourcemanager is single, you only need to replace ark1 to actual resourcemanager hostname. - yarn.application.status.address=http://ark1:8088/ws/v1/cluster/apps/%s + # if resourcemanager HA enable or not use resourcemanager, please keep the default value; If resourcemanager is single, you only need to replace ds1 to actual resourcemanager hostname. + yarn.application.status.address=http://ds1:8088/ws/v1/cluster/apps/%s +# job history status url when application number threshold is reached(default 10000,maybe it was set to 1000) - yarn.job.history.status.address=http://ark1:19888/ws/v1/history/mapreduce/jobs/%s ++yarn.job.history.status.address=http://ds1:19888/ws/v1/history/mapreduce/jobs/%s # system env path #dolphinscheduler.env.path=env/dolphinscheduler_env.sh diff --cc dolphinscheduler-ui/src/js/module/i18n/locale/en_US.js index 026b96b,def4c1a..a3d691c --- a/dolphinscheduler-ui/src/js/module/i18n/locale/en_US.js +++ b/dolphinscheduler-ui/src/js/module/i18n/locale/en_US.js @@@ -588,9 -590,10 +590,13 @@@ export default 'Some Columns': 'Some Columns', 'Branch flow': 'Branch flow', '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': 'Successful branch flow and failed branch flow are required', + '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' ++ 'Disable': 'Disable', ++ 'Please delete all non-existent resources': 'Please delete all non-existent resources', + '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 --cc dolphinscheduler-ui/src/js/module/i18n/locale/zh_CN.js index 39f237c,add8601..af384cc --- a/dolphinscheduler-ui/src/js/module/i18n/locale/zh_CN.js +++ b/dolphinscheduler-ui/src/js/module/i18n/locale/zh_CN.js @@@ -588,9 -590,10 +590,13 @@@ export default 'Some Columns': '选择列', 'Branch flow': '分支流转', 'Cannot select the same node for successful branch flow and failed branch flow': '成功分支流转和失败分支流转不能选择同一个节点', - 'Successful branch flow and failed branch flow are required': '成功分支流转和失败分支流转必填', + 'Successful branch flow and failed branch flow are required': 'conditions节点成功和失败分支流转必填', 'Unauthorized or deleted resources': '未授权或已删除资源', 'Please delete all non-existent resources': '请删除所有未授权或已删除资源', + 'Enable': '启用', - 'Disable': '停用' ++ 'Disable': '停用', ++ 'Please delete all non-existent resources': '请删除所有未授权或已删除资源', + '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之间' } diff --cc sql/upgrade/1.3.0_schema/mysql/dolphinscheduler_ddl.sql index 87d06e9,a188bfe..40e7a3f --- a/sql/upgrade/1.3.0_schema/mysql/dolphinscheduler_ddl.sql +++ b/sql/upgrade/1.3.0_schema/mysql/dolphinscheduler_ddl.sql @@@ -354,27 -274,6 +274,27 @@@ CREATE PROCEDURE uc_dolphin_T_t_ds_proc d// delimiter ; - CALL dc_dolphin_T_t_ds_error_command_D_worker_group_id; - DROP PROCEDURE dc_dolphin_T_t_ds_error_command_D_worker_group_id; + CALL uc_dolphin_T_t_ds_process_definition_A_process_definition_unique; + DROP PROCEDURE uc_dolphin_T_t_ds_process_definition_A_process_definition_unique; +-- ac_dolphin_T_t_ds_user_A_state +drop PROCEDURE if EXISTS ac_dolphin_T_t_ds_user_A_state; +delimiter d// +CREATE PROCEDURE ac_dolphin_T_t_ds_user_A_state() + BEGIN + IF NOT EXISTS (SELECT 1 FROM information_schema.COLUMNS + WHERE TABLE_NAME='t_ds_user' + AND TABLE_SCHEMA=(SELECT DATABASE()) + AND COLUMN_NAME ='state') + THEN + ALTER TABLE t_ds_user ADD `state` int(1) DEFAULT 1 COMMENT 'state 0:disable 1:enable'; + END IF; + END; + +d// + +delimiter ; +CALL ac_dolphin_T_t_ds_user_A_state; +DROP PROCEDURE ac_dolphin_T_t_ds_user_A_state; + + diff --cc sql/upgrade/1.3.0_schema/postgresql/dolphinscheduler_ddl.sql index b3f5436,506ae35..7ea4a34 --- a/sql/upgrade/1.3.0_schema/postgresql/dolphinscheduler_ddl.sql +++ b/sql/upgrade/1.3.0_schema/postgresql/dolphinscheduler_ddl.sql @@@ -359,28 -277,9 +277,29 @@@ BEGI END; $$ LANGUAGE plpgsql; d// + delimiter ; - select dc_dolphin_T_t_ds_error_command_D_worker_group_id(); - DROP FUNCTION dc_dolphin_T_t_ds_error_command_D_worker_group_id(); + SELECT uc_dolphin_T_t_ds_process_definition_A_process_definition_unique(); + DROP FUNCTION IF EXISTS uc_dolphin_T_t_ds_process_definition_A_process_definition_unique(); +-- ac_dolphin_T_t_ds_user_A_state +delimiter ; +DROP FUNCTION IF EXISTS ac_dolphin_T_t_ds_user_A_state(); +delimiter d// +CREATE FUNCTION ac_dolphin_T_t_ds_user_A_state() RETURNS void AS $$ +BEGIN + IF NOT EXISTS (SELECT 1 FROM information_schema.COLUMNS + WHERE TABLE_CATALOG=current_database() + AND TABLE_SCHEMA=current_schema() + AND TABLE_NAME='t_ds_user' + AND COLUMN_NAME ='state') + THEN + ALTER TABLE t_ds_user ADD COLUMN state int DEFAULT 1; + END IF; +END; +$$ LANGUAGE plpgsql; +d// +delimiter ; +select ac_dolphin_T_t_ds_user_A_state(); +DROP FUNCTION ac_dolphin_T_t_ds_user_A_state();
