Как узнать, на какой ОС / платформе работает сервер Postgresql? - PullRequest
0 голосов
/ 19 ноября 2018

Я пытаюсь написать функцию SQL, которая определяет, работает ли Postgres Server в Windows, это возможно, или есть ли способ получить платформу работающего Сервера?

Ответы [ 2 ]

0 голосов
/ 20 ноября 2018

Это код, который я написал и использовал в конце, он прекрасно работает в версии Postgres 11:

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()

Вы можете настроить его так, как хотите для других платформ ...

0 голосов
/ 19 ноября 2018

Вы можете просто использовать select version()
Я попробовал это на сервере Linux Alpine (через контейнер Docker) и получил это:
test => выбрать версию ();

                                             version                                             
-------------------------------------------------------------------------------------------------
 PostgreSQL 9.6.8 on x86_64-pc-linux-musl, compiled by gcc (Alpine 6.2.1) 6.2.1 20160822, 64-bit
(1 row)

Вы можете получить больше информации о функциях системной информации postgres здесь https://www.postgresql.org/docs/current/functions-info.html

Надеюсь, это вам поможет!

...