CREATE OR REPLACE FUNCTION GetPLatform()
RETURNS varchar
AS
$$
declare platform varchar;
begin
SELECT CASE
WHEN OSVersion.OS LIKE '%w64%' THEN 'windows'
WHEN OSVersion.OS LIKE '%w32%' THEN 'windows'
WHEN OSVersion.OS LIKE '%mingw%' THEN 'windows'
WHEN OSVersion.OS LIKE '%visual studio%' THEN 'windows'
WHEN OSVersion.OS LIKE '%linux%' THEN 'linux'
WHEN OSVersion.OS LIKE '%mac%' THEN 'mac'
ELSE
'UNKNOWN'
END into platform
FROM (SELECT
substr(substr(version(), strpos(version(), ' on ')+3), 1,
strpos(substr(version(), strpos(version(), ' on ')+3),
', compiled by')-1) as OS)
as OSVersion;
return platform;
end;
$$
LANGUAGE PLPGSQL;
select GetPLatform()
SELECT CASE setting
WHEN 'windows' THEN 'WINDOWS family'
WHEN 'posix' THEN 'UNIX family'
WHEN 'sysv' THEN 'UNIX family'
ELSE 'UNKNOWN'
END AS OS_family
FROM pg_catalog.pg_file_settings
WHERE name = 'dynamic_shared_memory_type'
3条答案
按热度按时间deikduxw1#
您可以使用
select version()
我在一个Linux Alpine服务器上(通过Docker容器)尝试了一下,得到了这样的结果:
test=> select();
字符串
你可以在这里https://www.postgresql.org/docs/current/functions-info.html获得更多关于postgres系统信息函数的信息
希望对你有帮助!
gzszwxb42#
这是我写的代码,并在最后使用,它在Postgres 11版本上工作得很好:
字符串
您可以根据需要调整其他平台。
kq0g1dla3#
由于使用mmap非常罕见,因此您可以使用:用途:
字符串