Title: Build failure in DBMS_SCHEDULER due to incorrect placement of pg_noreturn
維護者通常 1 天內回覆
@darshan-s-44 已經在處理了。
開始於 2026年10月11日。
評估
研究方向
這三個宣告位於 src/builtin_packages/dbms_scheduler/dbms_scheduler.h 的第 153-155 行,失敗的翻譯單元是 contrib/ivorysql_ora/src/ivorysql_ora.c。先檢查 pg_noreturn 定義在哪裡,以及此屬性相對於 extern 和 PGDLLEXPORT 必須如何排序。使用 gcc 建置 contrib/ivorysql_ora 來重現問題。當這些宣告在受影響的設定下編譯時沒有任何警告或錯誤,即為完成。
由索引模型根據 Issue 內容生成。
描述
What happened?
Building IvorySQL fails while compiling contrib/ivorysql_ora/src/ivorysql_ora.c. The compiler reports errors for three background worker entry point declarations in dbms_scheduler.h:
- SchedulerLauncherMain
- SchedulerDatabaseWorkerMain
- SchedulerJobWorkerMain
In file included from src/ivorysql_ora.c:45:
src/builtin_packages/dbms_scheduler/dbms_scheduler.h:153:1: warning: ‘noreturn’ attribute ignored [-Wattributes]
153 | extern PGDLLEXPORT pg_noreturn void SchedulerLauncherMain(Datum main_arg);
| ^~~~~~
src/builtin_packages/dbms_scheduler/dbms_scheduler.h:153:32: error: expected identifier or ‘(’ before ‘void’
153 | extern PGDLLEXPORT pg_noreturn void SchedulerLauncherMain(Datum main_arg);
| ^~~~
src/builtin_packages/dbms_scheduler/dbms_scheduler.h:154:1: warning: ‘noreturn’ attribute ignored [-Wattributes]
154 | extern PGDLLEXPORT pg_noreturn void SchedulerDatabaseWorkerMain(Datum main_arg);
| ^~~~~~
src/builtin_packages/dbms_scheduler/dbms_scheduler.h:154:32: error: expected identifier or ‘(’ before ‘void’
154 | extern PGDLLEXPORT pg_noreturn void SchedulerDatabaseWorkerMain(Datum main_arg);
| ^~~~
src/builtin_packages/dbms_scheduler/dbms_scheduler.h:155:1: warning: ‘noreturn’ attribute ignored [-Wattributes]
155 | extern PGDLLEXPORT pg_noreturn void SchedulerJobWorkerMain(Datum main_arg);
| ^~~~~~
src/builtin_packages/dbms_scheduler/dbms_scheduler.h:155:32: error: expected identifier or ‘(’ before ‘void’
155 | extern PGDLLEXPORT pg_noreturn void SchedulerJobWorkerMain(Datum main_arg);
| ^~~~
make[1]: *** [<builtin>: src/ivorysql_ora.o] Error 1
make: *** [GNUmakefile:11: all-contrib/ivorysql_ora-recurse] Error 2
What did you expect to happen?
Compile successfully.
How can we reproduce it (as minimally and precisely as possible)?
Build IvorySQL with
IvorySQL version
master
Compatible mode
oracle
Server encoding
UTF8
Anything else we need to know?
Likely cause
The declarations place pg_noreturn after extern PGDLLEXPORT.
In configurations where pg_noreturn expands to the C23 attribute [[noreturn]], the attribute must appear at the beginning of the declaration. The current placement appears to cause the warnings and syntax errors above.
Proposed fix
Move pg_noreturn before extern and PGDLLEXPORT:
-extern PGDLLEXPORT pg_noreturn void SchedulerLauncherMain(Datum main_arg);
-extern PGDLLEXPORT pg_noreturn void SchedulerDatabaseWorkerMain(Datum main_arg);
-extern PGDLLEXPORT pg_noreturn void SchedulerJobWorkerMain(Datum main_arg);
+pg_noreturn extern PGDLLEXPORT void SchedulerLauncherMain(Datum main_arg);
+pg_noreturn extern PGDLLEXPORT void SchedulerDatabaseWorkerMain(Datum main_arg);
+pg_noreturn extern PGDLLEXPORT void SchedulerJobWorkerMain(Datum main_arg);
OS version
$ cat /etc/os-release
➜ ivorysql_ora git:(pr-1841) ✗ cat /etc/os-release
PRETTY_NAME="Ubuntu 26.04 LTS"
NAME="Ubuntu"
VERSION_ID="26.04"
VERSION="26.04 LTS (Resolute Raccoon)"
VERSION_CODENAME=resolute
ID=ubuntu
ID_LIKE=debian
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
UBUNTU_CODENAME=resolute
LOGO=ubuntu-logo
$ uname -a
Linux e15 7.0.0-34-generic #34-Ubuntu SMP PREEMPT_DYNAMIC Wed Sep 2 14:29:37 UTC 2026 x86_64 GNU/Linux
cc --version
make --version
gcc (Ubuntu 15.2.0-16ubuntu1) 15.2.0
Copyright (C) 2025 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
cc (Ubuntu 15.2.0-16ubuntu1) 15.2.0
Copyright (C) 2025 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
GNU Make 4.4.1
Built for x86_64-pc-linux-gnu
Copyright (C) 1988-2023 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later https://gnu.org/licenses/gpl.html
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Before submitting
- I confirmed the problem still happens on current
master - I searched existing issues and found no duplicate
- 主要語言
- C
- 星號
- 1.1k
- 分支
- 232
- 平均合併
- 2 天 3 小時
- 30 天內合併 PR
- 8
環境準備
這個專案沒有提供開發容器、Dockerfile 或貢獻指南,環境需要你自己搭建:先看它的 README,通用步驟見我們的新手貢獻指南。
從這裡開始
- 先讀完整個 Issue,再讀專案的貢獻指南。
- 在 Issue 下留言說明你要接手 —— 這能避免兩個人做同樣的事。
- Fork 儲存庫,在一個分支上完成修改。
- 送出 Pull Request,並在描述裡引用這個 Issue 編號。
IvorySQL/IvorySQL 的其他 Issue
-
PostgreSQL::Version rejects documented full psql version output可能已有人在做 @feitiansiyan 於 1 天前認領。 未關閉bug
難度 2/5 1-3 小時 新手友好度 62/100
IvorySQL/IvorySQL#2999 · 1 則留言 ·
維護者通常 1 天內回覆
-
UTL_FILE.NEW_LINE silently ignores negative line counts可能已有人在做 @X-LightYear 於 9 天前認領。 未關閉
難度 2/5 1-3 小時 新手友好度 64/100
IvorySQL/IvorySQL#2634 · 1 則留言 ·
維護者通常 1 天內回覆
-
Character function regression assumes normal identifier case on default interchange clusters可能已有人在做 @zhouxj52 於 15 天前認領。 未關閉
難度 2/5 1-3 小時 新手友好度 78/100
IvorySQL/IvorySQL#2470 · 1 則留言 ·
維護者通常 1 天內回覆
-
xml2 no-libxslt expected files do not match PG/Oracle input scripts可能已有人在做 @zhouxj52 於 15 天前認領。 未關閉
難度 2/5 1-3 小時 新手友好度 78/100
IvorySQL/IvorySQL#2468 · 1 則留言 ·
維護者通常 1 天內回覆
-
Ivy input bindings with an omitted indicator pointer crash during execution可能已有人在做 @Loyal-Young 於 35 天前認領。 未關閉
難度 1/5 1 小時以內 新手友好度 85/100
IvorySQL/IvorySQL#2257 · 1 則留言 ·
維護者通常 1 天內回覆
查看 IvorySQL/IvorySQL 的全部 Issue
相似的 Issue
-
難度 2/5 半天 新手友好度 72/100
vercel-labs/scriptc#2910 ·
維護者通常 1 天內回覆
-
難度 2/5 1-3 小時 新手友好度 68/100
darktable-org/darktable#22939 ·
維護者通常 1 天內回覆
-
os: input_password leaves terminal echo disabled when reading fails可能已有人在做 @davlgd 今天認領。 未關閉
難度 2/5 1-3 小時 新手友好度 82/100
維護者通常 1 天內回覆
-
armv7l: `close`, `unlink` and `chroot` pass the kernel their argument's address可能已有人在做 @aoinoikaz 今天認領。 未關閉
難度 2/5 1-3 小時 新手友好度 72/100
-
難度 2/5 1-3 小時 新手友好度 68/100
colbymchenry/codegraph#3223 ·
維護者通常 1 天內回覆