feat(tplus): 新增 T+ 只读同步服务与同步管理
This commit is contained in:
1 parent
78bef43c06
commit
4fe5916c2c
43 files changed
+3309
-388
No files matched your search
@@ -0,0 +1,40 @@
|
||||
"""限制 T+ 源查询语法;真实 2008 R2 的驱动/引擎实测仍是最终验收条件。"""
|
||||
|
||||
import re
|
||||
from pathlib import Path
|
||||
|
||||
import pytest
|
||||
|
||||
QUERY_ROOT = Path(__file__).resolve().parents[3] / "db" / "queries" / "tplus"
|
||||
|
||||
|
||||
@pytest.mark.parametrize("path", sorted(QUERY_ROOT.glob("*.sql")), ids=lambda p: p.stem)
|
||||
def test_源查询只使用旧版本分页并保持只读(path):
|
||||
sql = re.sub(r"--[^\n]*", "", path.read_text(encoding="utf-8"))
|
||||
assert not re.search(
|
||||
r"\b(OFFSET|FETCH|OPENJSON|JSON_VALUE|STRING_AGG|TRY_CONVERT|TRY_CAST|"
|
||||
r"INSERT|UPDATE|DELETE|MERGE|CREATE|ALTER|DROP|TRUNCATE)\b",
|
||||
sql,
|
||||
re.I,
|
||||
)
|
||||
assert "TOP (:batch_size)" in sql
|
||||
assert ":after_id" in sql
|
||||
assert not re.search(r"SELECT\s+\*", sql, re.I)
|
||||
|
||||
|
||||
def test_收付款主表没有更新时间时不虚构水位():
|
||||
sql = (QUERY_ROOT / "receipts.sql").read_text(encoding="utf-8")
|
||||
assert "CAST(NULL AS datetime) AS source_updated_at" in sql
|
||||
assert not re.search(r"h\.updated\b", sql, re.I)
|
||||
|
||||
|
||||
def test_关联核验保持只读且不使用新版函数():
|
||||
sql = re.sub(r"--[^\n]*", "", (QUERY_ROOT / "audit/queries.sql").read_text(encoding="utf-8"))
|
||||
assert not re.search(
|
||||
r"\b(OFFSET|FETCH|OPENJSON|JSON_VALUE|STRING_AGG|TRY_CONVERT|TRY_CAST|"
|
||||
r"INSERT|UPDATE|DELETE|MERGE|CREATE|ALTER|DROP|TRUNCATE)\b",
|
||||
sql,
|
||||
re.I,
|
||||
)
|
||||
assert not re.search(r"SELECT\s+\*", sql, re.I)
|
||||
assert ":sale_delivery_type_id" in sql and ":receive_flag" in sql
|
||||
Reference in new issue
Block a user