[Fix](Create View) support create view from tvf (#18087)

Support create view as select * from tvf()
This commit is contained in:
Tiewei Fang
2023-03-28 15:07:32 +08:00
committed by GitHub
parent d6339b36a4
commit d7dcdfcba9
3 changed files with 219 additions and 0 deletions

View File

@ -24,6 +24,7 @@ import org.apache.doris.planner.ScanNode;
import org.apache.doris.tablefunction.TableValuedFunctionIf;
import java.util.Map;
import java.util.stream.Collectors;
public class TableValuedFunctionRef extends TableRef {
@ -64,6 +65,29 @@ public class TableValuedFunctionRef extends TableRef {
return result;
}
@Override
protected String tableNameToSql() {
String aliasSql = null;
String alias = getExplicitAlias();
if (alias != null) {
aliasSql = ToSqlUtils.getIdentSql(alias);
}
// set tableName
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append(funcName);
stringBuilder.append('(');
String paramsString = params.entrySet().stream().map(kv -> "\"" + kv.getKey() + "\""
+ " = " + "\"" + kv.getValue() + "\"")
.collect(Collectors.joining(","));
stringBuilder.append(paramsString);
stringBuilder.append(')');
// set alias
stringBuilder.append((aliasSql != null) ? " " + aliasSql : "");
return stringBuilder.toString();
}
/**
* Register this table ref and then analyze the Join clause.
*/