mirror of
https://github.com/Syngnat/GoNavi.git
synced 2026-08-10 00:33:28 +08:00
🐛 fix(oracle): 修复存储包定义截断与斜杠误执行
- 对象树支持序列和存储包双击及右键查看定义 - Oracle package 同时读取 PACKAGE 与 PACKAGE BODY 并生成可编辑 SQL - SQL 拆分器跳过 SQL*Plus 独立斜杠和注释分隔符 - 补充前后端 PL/SQL 拆分与定义查看回归测试
This commit is contained in:
@@ -475,3 +475,52 @@ func TestStreamSQLFileSkipsOracleSqlPlusSlashDelimiter(t *testing.T) {
|
||||
t.Fatalf("unexpected second statement: %q", statements[1])
|
||||
}
|
||||
}
|
||||
|
||||
func TestStreamSQLFileKeepsOraclePackageSpecAndBodyTogether(t *testing.T) {
|
||||
input := strings.Join([]string{
|
||||
"CREATE OR REPLACE PACKAGE pkg_order AS",
|
||||
" PROCEDURE sync_order(p_id IN NUMBER);",
|
||||
"END pkg_order;",
|
||||
"/",
|
||||
"CREATE OR REPLACE PACKAGE BODY pkg_order AS",
|
||||
" PROCEDURE sync_order(p_id IN NUMBER) IS",
|
||||
" BEGIN",
|
||||
" NULL;",
|
||||
" END sync_order;",
|
||||
"END pkg_order;",
|
||||
"/ -- SQLPlus delimiter from PL/SQL tools",
|
||||
"SELECT 1 FROM dual;",
|
||||
}, "\n")
|
||||
var statements []string
|
||||
|
||||
count, err := streamSQLFile(&chunkedReader{data: []byte(input), step: 3}, func(index int, stmt string) error {
|
||||
statements = append(statements, stmt)
|
||||
return nil
|
||||
})
|
||||
if err != nil {
|
||||
t.Fatalf("streamSQLFile returned error: %v", err)
|
||||
}
|
||||
if count != 3 || len(statements) != 3 {
|
||||
t.Fatalf("expected 3 statements, got count=%d statements=%#v", count, statements)
|
||||
}
|
||||
if statements[0] != strings.Join([]string{
|
||||
"CREATE OR REPLACE PACKAGE pkg_order AS",
|
||||
" PROCEDURE sync_order(p_id IN NUMBER);",
|
||||
"END pkg_order;",
|
||||
}, "\n") {
|
||||
t.Fatalf("unexpected package spec statement: %q", statements[0])
|
||||
}
|
||||
if statements[1] != strings.Join([]string{
|
||||
"CREATE OR REPLACE PACKAGE BODY pkg_order AS",
|
||||
" PROCEDURE sync_order(p_id IN NUMBER) IS",
|
||||
" BEGIN",
|
||||
" NULL;",
|
||||
" END sync_order;",
|
||||
"END pkg_order;",
|
||||
}, "\n") {
|
||||
t.Fatalf("unexpected package body statement: %q", statements[1])
|
||||
}
|
||||
if statements[2] != "SELECT 1 FROM dual" {
|
||||
t.Fatalf("unexpected third statement: %q", statements[2])
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user