This is an automated email from the ASF dual-hosted git repository.
morningman pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/master by this push:
new a2b9aa4d495 [fix](tvf) fix FE cannot start when replay `alter view
from tvf` (#40872)
a2b9aa4d495 is described below
commit a2b9aa4d495ce0cc5c07b76a7e2ccb4c2a0acbaa
Author: Tiewei Fang <[email protected]>
AuthorDate: Fri Sep 20 18:13:02 2024 +0800
[fix](tvf) fix FE cannot start when replay `alter view from tvf` (#40872)
---
.../main/java/org/apache/doris/alter/Alter.java | 9 ++--
.../data/external_table_p0/tvf/test_hdfs_tvf.out | 44 +++++++++++++++++
.../data/external_table_p0/tvf/upgrade/test.out | 45 ++++++++++++++++++
.../external_table_p0/tvf/test_hdfs_tvf.groovy | 26 ++++++++++
.../external_table_p0/tvf/upgrade/load.groovy | 55 ++++++++++++++++++++++
.../external_table_p0/tvf/upgrade/test.groovy | 34 +++++++++++++
6 files changed, 208 insertions(+), 5 deletions(-)
diff --git a/fe/fe-core/src/main/java/org/apache/doris/alter/Alter.java
b/fe/fe-core/src/main/java/org/apache/doris/alter/Alter.java
index 672932f1877..72dc8141e27 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/alter/Alter.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/alter/Alter.java
@@ -729,13 +729,12 @@ public class Alter {
try {
String viewName = view.getName();
view.setInlineViewDefWithSqlMode(inlineViewDef,
alterViewInfo.getSqlMode());
- try {
- view.init();
- } catch (UserException e) {
- throw new DdlException("failed to init view stmt, reason=" +
e.getMessage());
- }
view.setNewFullSchema(newFullSchema);
+ // We do not need to init view here.
+ // During the `init` phase, some `Alter-View` statements will
access the remote file system,
+ // but they should not access it during the metadata replay phase.
+
db.unregisterTable(viewName);
db.registerTable(view);
diff --git a/regression-test/data/external_table_p0/tvf/test_hdfs_tvf.out
b/regression-test/data/external_table_p0/tvf/test_hdfs_tvf.out
index 68e310c5a4f..3f12b448581 100644
--- a/regression-test/data/external_table_p0/tvf/test_hdfs_tvf.out
+++ b/regression-test/data/external_table_p0/tvf/test_hdfs_tvf.out
@@ -615,3 +615,47 @@ string_col text Yes false \N NONE
string_col text Yes false \N NONE
tinyint_col tinyint Yes false \N NONE
+-- !create_view --
+0 2 3 4 5 6.6 7.7 8.8 abc def
ghiaaaaaa 2020-10-10 2020-10-10 11:12:59
+1 2 3 4 5 6.6 7.7 8.8 abc def
ghiaaaaaa 2020-10-10 2020-10-10 11:12:59
+10 2 3 4 5 6.6 7.7 8.8 abc def
ghiaaaaaa 2020-10-10 2020-10-10 11:12:59
+100 2 3 4 5 6.6 7.7 8.8 abc def
ghiaaaaaa 2020-10-10 2020-10-10 11:12:59
+101 2 3 4 5 6.6 7.7 8.8 abc def
ghiaaaaaa 2020-10-10 2020-10-10 11:12:59
+102 2 3 4 5 6.6 7.7 8.8 abc def
ghiaaaaaa 2020-10-10 2020-10-10 11:12:59
+103 2 3 4 5 6.6 7.7 8.8 abc def
ghiaaaaaa 2020-10-10 2020-10-10 11:12:59
+104 2 3 4 5 6.6 7.7 8.8 abc def
ghiaaaaaa 2020-10-10 2020-10-10 11:12:59
+105 2 3 4 5 6.6 7.7 8.8 abc def
ghiaaaaaa 2020-10-10 2020-10-10 11:12:59
+106 2 3 4 5 6.6 7.7 8.8 abc def
ghiaaaaaa 2020-10-10 2020-10-10 11:12:59
+107 2 3 4 5 6.6 7.7 8.8 abc def
ghiaaaaaa 2020-10-10 2020-10-10 11:12:59
+108 2 3 4 5 6.6 7.7 8.8 abc def
ghiaaaaaa 2020-10-10 2020-10-10 11:12:59
+109 2 3 4 5 6.6 7.7 8.8 abc def
ghiaaaaaa 2020-10-10 2020-10-10 11:12:59
+11 2 3 4 5 6.6 7.7 8.8 abc def
ghiaaaaaa 2020-10-10 2020-10-10 11:12:59
+110 2 3 4 5 6.6 7.7 8.8 abc def
ghiaaaaaa 2020-10-10 2020-10-10 11:12:59
+111 2 3 4 5 6.6 7.7 8.8 abc def
ghiaaaaaa 2020-10-10 2020-10-10 11:12:59
+112 2 3 4 5 6.6 7.7 8.8 abc def
ghiaaaaaa 2020-10-10 2020-10-10 11:12:59
+113 2 3 4 5 6.6 7.7 8.8 abc def
ghiaaaaaa 2020-10-10 2020-10-10 11:12:59
+114 2 3 4 5 6.6 7.7 8.8 abc def
ghiaaaaaa 2020-10-10 2020-10-10 11:12:59
+115 2 3 4 5 6.6 7.7 8.8 abc def
ghiaaaaaa 2020-10-10 2020-10-10 11:12:59
+
+-- !alter_view --
+0
+1
+10
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+11
+110
+111
+112
+113
+114
+115
+
diff --git a/regression-test/data/external_table_p0/tvf/upgrade/test.out
b/regression-test/data/external_table_p0/tvf/upgrade/test.out
new file mode 100644
index 00000000000..12289c25718
--- /dev/null
+++ b/regression-test/data/external_table_p0/tvf/upgrade/test.out
@@ -0,0 +1,45 @@
+-- This file is automatically generated. You should know what you did if you
want to edit this
+-- !create_view --
+0
+1
+10
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+11
+110
+111
+112
+113
+114
+115
+
+-- !alter_view --
+0
+1
+10
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+11
+110
+111
+112
+113
+114
+115
+
diff --git a/regression-test/suites/external_table_p0/tvf/test_hdfs_tvf.groovy
b/regression-test/suites/external_table_p0/tvf/test_hdfs_tvf.groovy
index abdfd871a1f..8c4028bfefe 100644
--- a/regression-test/suites/external_table_p0/tvf/test_hdfs_tvf.groovy
+++ b/regression-test/suites/external_table_p0/tvf/test_hdfs_tvf.groovy
@@ -312,6 +312,32 @@ suite("test_hdfs_tvf","external,hive,tvf,external_docker")
{
"column_separator" = ",",
"format" = "${format}"); """
+
+ // test create view from tvf and alter view from tvf
+ uri = "${defaultFS}" +
"/user/doris/preinstalled_data/csv_format_test/all_types.csv"
+ format = "csv"
+ sql """ DROP VIEW IF EXISTS test_hdfs_tvf_create_view;"""
+ sql """
+ create view test_hdfs_tvf_create_view as
+ select * from HDFS(
+ "uri" = "${uri}",
+ "hadoop.username" = "${hdfsUserName}",
+ "column_separator" = ",",
+ "format" = "${format}") order by c1;
+ """
+
+ order_qt_create_view """ select * from test_hdfs_tvf_create_view
order by c1 limit 20; """
+
+ sql """
+ alter view test_hdfs_tvf_create_view as
+ select c1 from HDFS(
+ "uri" = "${uri}",
+ "hadoop.username" = "${hdfsUserName}",
+ "column_separator" = ",",
+ "format" = "${format}") order by c1;
+ """
+
+ order_qt_alter_view """ select * from test_hdfs_tvf_create_view
order by c1 limit 20; """
} finally {
}
}
diff --git a/regression-test/suites/external_table_p0/tvf/upgrade/load.groovy
b/regression-test/suites/external_table_p0/tvf/upgrade/load.groovy
new file mode 100644
index 00000000000..5fac50e64ff
--- /dev/null
+++ b/regression-test/suites/external_table_p0/tvf/upgrade/load.groovy
@@ -0,0 +1,55 @@
+// 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.
+
+suite("test_tvf_upgrade_load",
"p0,external,hive,external_docker,external_docker_hive,restart_fe,upgrade_case")
{
+ String hdfs_port = context.config.otherConfigs.get("hive2HdfsPort")
+ String externalEnvIp = context.config.otherConfigs.get("externalEnvIp")
+
+ // It's okay to use random `hdfsUser`, but can not be empty.
+ def hdfsUserName = "doris"
+ def format = "csv"
+ def defaultFS = "hdfs://${externalEnvIp}:${hdfs_port}"
+ def uri = ""
+
+ String enabled = context.config.otherConfigs.get("enableHiveTest")
+ if (enabled != null && enabled.equalsIgnoreCase("true")) {
+ // test create view from tvf and alter view from tvf
+ uri = "${defaultFS}" +
"/user/doris/preinstalled_data/csv_format_test/all_types.csv"
+ format = "csv"
+ sql """ DROP VIEW IF EXISTS test_hdfs_tvf_create_view;"""
+ sql """
+ create view test_hdfs_tvf_create_view as
+ select * from HDFS(
+ "uri" = "${uri}",
+ "hadoop.username" = "${hdfsUserName}",
+ "column_separator" = ",",
+ "format" = "${format}") order by c1;
+ """
+ logger.info("View test_hdfs_tvf_create_view created")
+
+
+ sql """
+ alter view test_hdfs_tvf_create_view as
+ select c1 from HDFS(
+ "uri" = "${uri}",
+ "hadoop.username" = "${hdfsUserName}",
+ "column_separator" = ",",
+ "format" = "${format}") order by c1;
+ """
+ logger.info("View test_hdfs_tvf_create_view altered")
+ }
+}
\ No newline at end of file
diff --git a/regression-test/suites/external_table_p0/tvf/upgrade/test.groovy
b/regression-test/suites/external_table_p0/tvf/upgrade/test.groovy
new file mode 100644
index 00000000000..a3b0795ef46
--- /dev/null
+++ b/regression-test/suites/external_table_p0/tvf/upgrade/test.groovy
@@ -0,0 +1,34 @@
+// 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.
+
+suite("test_tvf_upgrade_test",
"p0,external,hive,external_docker,external_docker_hive,restart_fe,upgrade_case")
{
+ String hdfs_port = context.config.otherConfigs.get("hive2HdfsPort")
+ String externalEnvIp = context.config.otherConfigs.get("externalEnvIp")
+
+ // It's okay to use random `hdfsUser`, but can not be empty.
+ def hdfsUserName = "doris"
+ def format = "csv"
+ def defaultFS = "hdfs://${externalEnvIp}:${hdfs_port}"
+ def uri = ""
+
+ String enabled = context.config.otherConfigs.get("enableHiveTest")
+ if (enabled != null && enabled.equalsIgnoreCase("true")) {
+ order_qt_create_view """ select * from test_hdfs_tvf_create_view order
by c1 limit 20; """
+
+ order_qt_alter_view """ select * from test_hdfs_tvf_create_view order
by c1 limit 20; """
+ }
+}
\ No newline at end of file
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]