Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
287 views
in Technique[技术] by (71.8m points)

postgresql - How to refer to or coalesce a column which may not exist?

I am creating views referring to system catalog views ( eg. pg_constraint ) which are to deployed to various databases with varying versions of postgresql. Later versions of system catalog views include columns that don't exist in prior versions of postgresql. I'd rather have a single version of my view that I can deploy widely instead of maintaining multiple versions so that when we (inevitably) upgrade some of our older databases, the view definition will not need to be updated ( who is going to remember to do that? )...

It's probably not feasible and perhaps I'm grasping at straws but I don't want to give up so easily while it's still possible someone may have a solution.

question from:https://stackoverflow.com/questions/65901998/how-to-refer-to-or-coalesce-a-column-which-may-not-exist

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

Don't create a view on system catalogs, it will prevent you from upgrading with pg_upgrade.

Use a function that either composes the query with dynamic SQL or executes different static queries based on the server version. You can then define a view using that function.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...