fix(db): 适配KingbaseES系统目录元数据查询

This commit is contained in:
wangzhibiao committed 2026-09-14 02:24:17 +08:00
1 parent 35774cc53c
commit 7191f5e3a9
2 files changed
+59 -54

No files matched your search

+51 -48
View File
@@ -126,6 +126,7 @@ BEGIN
SELECT count(*) INTO v_cnt FROM train_student_portrait;
IF v_cnt <> 0 THEN RAISE EXCEPTION '>>> [Preflight-FATAL] train_student_portrait 非空,包含 % 行', v_cnt; END IF;
-- ==========================================================================
-- ==========================================================================
-- 5. 14 个 Phase 0.5 旧业务主键 (PK) 精确骨架校验
-- ==========================================================================
@@ -133,20 +134,20 @@ BEGIN
FOR r IN (
WITH expected_pk(table_name, constraint_name, column_name) AS (
VALUES
('train_teacher', 'pk_train_teacher', 't_id'),
('train_student', 'pk_train_student', 's_id'),
('train_course', 'pk_train_course', 'c_id'),
('train_class_plan', 'pk_train_class_plan', 'plan_id'),
('train_dormitory_info', 'pk_train_dormitory_info', 'dorm_id'),
('train_dorm_auth', 'pk_train_dorm_auth', 'auth_id'),
('train_classroom_info', 'pk_train_classroom_info', 'class_room_id'),
('train_training_site', 'pk_train_training_site', 'site_id'),
('train_class_report', 'pk_train_class_report', 'report_id'),
('train_electronic_board', 'pk_train_electronic_board', 'board_id'),
('train_student_checkin', 'pk_train_student_checkin', 'checkin_id'),
('train_score_info', 'pk_train_score_info', 'score_id'),
('train_study_duration', 'pk_train_study_duration', 'dur_id'),
('train_student_portrait', 'pk_train_student_portrait', 'portrait_id')
('train_class_plan', 'train_class_plan_pkey', 'plan_id'),
('train_class_report', 'train_class_report_pkey', 'report_id'),
('train_classroom_info', 'train_classroom_info_pkey', 'class_room_id'),
('train_course', 'train_course_pkey', 'c_id'),
('train_dorm_auth', 'train_dorm_auth_pkey', 'auth_id'),
('train_dormitory_info', 'train_dormitory_info_pkey', 'dorm_id'),
('train_electronic_board', 'train_electronic_board_pkey', 'board_id'),
('train_score_info', 'train_score_info_pkey', 'score_id'),
('train_student', 'train_student_pkey', 's_id'),
('train_student_checkin', 'train_student_checkin_pkey', 'checkin_id'),
('train_student_portrait', 'train_student_portrait_pkey', 'portrait_id'),
('train_study_duration', 'train_study_duration_pkey', 'dur_id'),
('train_teacher', 'train_teacher_pkey', 't_id'),
('train_training_site', 'train_training_site_pkey', 'site_id')
),
actual_pk AS (
SELECT tc.table_name, tc.constraint_name, kcu.column_name
@@ -183,23 +184,25 @@ BEGIN
FOR r IN (
WITH expected_identity(table_name, column_name) AS (
VALUES
('train_dorm_auth', 'auth_id'),
('train_class_report', 'report_id'),
('train_student_checkin', 'checkin_id'),
('train_dorm_auth', 'auth_id'),
('train_score_info', 'score_id'),
('train_study_duration', 'dur_id'),
('train_student_portrait', 'portrait_id')
('train_student_checkin', 'checkin_id'),
('train_student_portrait', 'portrait_id'),
('train_study_duration', 'dur_id')
),
actual_identity AS (
SELECT table_name, column_name
FROM information_schema.columns
WHERE table_schema = 'public'
AND table_name LIKE 'train_%'
AND is_identity = 'YES'
SELECT c.relname AS table_name, a.attname AS column_name
FROM sys_class c
JOIN sys_attribute a ON a.attrelid = c.oid
JOIN sys_namespace n ON n.oid = c.relnamespace
WHERE n.nspname = 'public'
AND c.relname LIKE 'train_%'
AND a.attidentity = 'd'
)
SELECT 'MISSING_IDENTITY' AS diff_type, e.table_name, e.column_name
FROM expected_identity e
LEFT JOIN actual_identity a
LEFT JOIN actual_identity a
ON e.table_name = a.table_name AND e.column_name = a.column_name
WHERE a.table_name IS NULL
UNION ALL
@@ -223,13 +226,13 @@ BEGIN
FOR r IN (
WITH expected_unique(table_name, constraint_name, column_list) AS (
VALUES
('train_dormitory_info', 'uq_dorm_building_room', 'dorm_building, dorm_room'),
('train_dorm_auth', 'uq_dormauth_stu_plan', 'student_id, plan_id'),
('train_class_report', 'uq_classreport_plan_stu', 'plan_id, student_id'),
('train_electronic_board', 'uq_board_sn', 'board_sn'),
('train_student_checkin', 'uq_checkin_lesson_stu', 'plan_id, c_id, student_id, lesson_start_time'),
('train_score_info', 'uq_scoreinfo_plan_c_stu', 'plan_id, c_id, student_id'),
('train_student_portrait', 'uq_portrait_stu_plan', 'student_id, plan_id')
('train_class_report', 'uk_plan_stu_report', 'plan_id, student_id'),
('train_dorm_auth', 'uk_student_plan_dormauth', 'student_id, plan_id'),
('train_dormitory_info', 'uk_dorm_build_room', 'dorm_building, dorm_room'),
('train_electronic_board', 'uk_board_sn', 'board_sn'),
('train_score_info', 'uk_score_plan_course_stu', 'plan_id, c_id, student_id'),
('train_student_checkin', 'uk_lesson_stu_checkin', 'plan_id, c_id, student_id, lesson_start_time'),
('train_student_portrait', 'uk_stu_plan_portrait', 'student_id, plan_id')
),
actual_unique AS (
SELECT
@@ -272,28 +275,28 @@ BEGIN
VALUES
('train_class_plan', 'fk_classplan_course', 'c_id', 'train_course', 'c_id'),
('train_class_plan', 'fk_classplan_teacher', 't_id', 'train_teacher', 't_id'),
('train_dorm_auth', 'fk_dormauth_stu', 'student_id', 'train_student', 's_id'),
('train_dorm_auth', 'fk_dormauth_plan', 'plan_id', 'train_class_plan', 'plan_id'),
('train_class_report', 'fk_report_classroom', 'alloc_classroom_id', 'train_classroom_info', 'class_room_id'),
('train_class_report', 'fk_report_dorm', 'alloc_dorm_id', 'train_dormitory_info', 'dorm_id'),
('train_class_report', 'fk_report_plan', 'plan_id', 'train_class_plan', 'plan_id'),
('train_class_report', 'fk_report_site', 'alloc_site_id', 'train_training_site', 'site_id'),
('train_class_report', 'fk_report_stu', 'student_id', 'train_student', 's_id'),
('train_dorm_auth', 'fk_dormauth_dorm', 'dorm_id', 'train_dormitory_info', 'dorm_id'),
('train_class_report', 'fk_classreport_plan', 'plan_id', 'train_class_plan', 'plan_id'),
('train_class_report', 'fk_classreport_stu', 'student_id', 'train_student', 's_id'),
('train_class_report', 'fk_classreport_dorm', 'alloc_dorm_id', 'train_dormitory_info', 'dorm_id'),
('train_class_report', 'fk_classreport_classroom', 'alloc_classroom_id', 'train_classroom_info', 'class_room_id'),
('train_class_report', 'fk_classreport_site', 'alloc_site_id', 'train_training_site', 'site_id'),
('train_dorm_auth', 'fk_dormauth_plan', 'plan_id', 'train_class_plan', 'plan_id'),
('train_dorm_auth', 'fk_dormauth_stu', 'student_id', 'train_student', 's_id'),
('train_electronic_board', 'fk_board_classroom', 'bind_classroom_id', 'train_classroom_info', 'class_room_id'),
('train_electronic_board', 'fk_board_plan', 'bind_plan_id', 'train_class_plan', 'plan_id'),
('train_student_checkin', 'fk_checkin_plan', 'plan_id', 'train_class_plan', 'plan_id'),
('train_student_checkin', 'fk_checkin_course', 'c_id', 'train_course', 'c_id'),
('train_student_checkin', 'fk_checkin_stu', 'student_id', 'train_student', 's_id'),
('train_score_info', 'fk_score_course', 'c_id', 'train_course', 'c_id'),
('train_score_info', 'fk_score_plan', 'plan_id', 'train_class_plan', 'plan_id'),
('train_score_info', 'fk_score_stu', 'student_id', 'train_student', 's_id'),
('train_student_checkin', 'fk_checkin_board', 'board_id', 'train_electronic_board', 'board_id'),
('train_score_info', 'fk_scoreinfo_plan', 'plan_id', 'train_class_plan', 'plan_id'),
('train_score_info', 'fk_scoreinfo_course', 'c_id', 'train_course', 'c_id'),
('train_score_info', 'fk_scoreinfo_stu', 'student_id', 'train_student', 's_id'),
('train_study_duration', 'fk_studydur_stu', 'student_id', 'train_student', 's_id'),
('train_study_duration', 'fk_studydur_plan', 'plan_id', 'train_class_plan', 'plan_id'),
('train_study_duration', 'fk_studydur_course', 'c_id', 'train_course', 'c_id'),
('train_student_checkin', 'fk_checkin_course', 'c_id', 'train_course', 'c_id'),
('train_student_checkin', 'fk_checkin_plan', 'plan_id', 'train_class_plan', 'plan_id'),
('train_student_checkin', 'fk_checkin_stu', 'student_id', 'train_student', 's_id'),
('train_student_portrait', 'fk_portrait_plan', 'plan_id', 'train_class_plan', 'plan_id'),
('train_student_portrait', 'fk_portrait_stu', 'student_id', 'train_student', 's_id'),
('train_student_portrait', 'fk_portrait_plan', 'plan_id', 'train_class_plan', 'plan_id')
('train_study_duration', 'fk_duration_course', 'c_id', 'train_course', 'c_id'),
('train_study_duration', 'fk_duration_plan', 'plan_id', 'train_class_plan', 'plan_id'),
('train_study_duration', 'fk_duration_stu', 'student_id', 'train_student', 's_id')
),
actual_fk AS (
SELECT
+8 -6
View File
@@ -348,15 +348,17 @@ BEGIN
('train_student_portrait', 'portrait_id')
),
actual_identity AS (
SELECT table_name, column_name
FROM information_schema.columns
WHERE table_schema = 'public'
AND table_name LIKE 'train_%'
AND is_identity = 'YES'
SELECT c.relname AS table_name, a.attname AS column_name
FROM sys_class c
JOIN sys_attribute a ON a.attrelid = c.oid
JOIN sys_namespace n ON n.oid = c.relnamespace
WHERE n.nspname = 'public'
AND c.relname LIKE 'train_%'
AND a.attidentity = 'd'
)
SELECT 'MISSING_IDENTITY' AS diff_type, e.table_name, e.column_name
FROM expected_identity e
LEFT JOIN actual_identity a
LEFT JOIN actual_identity a
ON e.table_name = a.table_name AND e.column_name = a.column_name
WHERE a.table_name IS NULL
UNION ALL