Обсуждение: How to tell what OS PostgreSQL is installed on.
Hi, I have a need to find out what OS PostgreSQL is running under. I need to be able to query the database or send a command and figure it out. I also do not have super user permission to do this. All I want to know is if the PostgreSQL I am connected to is running from Windows or Non Windows. I could do =93Show data_directory=94 and parse the result, but this require superuser permission. I tried select version() also. Under Windows OS, I got this: version --------------------------------------------------- PostgreSQL 8.3.6, compiled by Visual C++ build 1400 Does anyone know if Visual C++ is use to only compile PostgreSQL for Windows? Or can other compiler be use? If Visual C++ is always use for Windows and Windows only then this is very good information I can use. I know on RedHat, I got this. version --------------------------------------------------------------------------= ---------------------------- PostgreSQL 8.3.7 on i686-redhat-linux-gnu, compiled by GCC gcc (GCC) 3.4.6 20060404 (Red Hat 3.4.6-10) And on Solaris I got this. ----------------- PostgreSQL 8.1.11 on sparc-sun-solaris2.10, compiled by /ws/on10-tools/SUNWspro/SOS8/bin/cc -Xa (1 row) Thank you all in advance for your help. Louis Lam
Visual C++ is Microsoft's compiler for C++. If something is compiled with Visual C++, it was COMPILED on Windows. There is a 99.9% chance that the underlying machine is also Windows (unless you're talking about a VM, but, still, the OS on which PG itself is running is, in fact, Windows). To the best of my knowledge, there is no way, within the PG interpreter to determine what version of Windows you're on, however. -----Original Message----- From: pgsql-admin-owner@postgresql.org [mailto:pgsql-admin-owner@postgresql.org] On Behalf Of Louis Lam Sent: Thursday, October 08, 2009 3:59 PM To: pgsql-admin@postgresql.org Subject: [ADMIN] How to tell what OS PostgreSQL is installed on. Hi, I have a need to find out what OS PostgreSQL is running under. I need to be able to query the database or send a command and figure it out. I also do not have super user permission to do this. All I want to know is if the PostgreSQL I am connected to is running from Windows or Non Windows. I could do "Show data_directory" and parse the result, but this require superuser permission. I tried select version() also. Under Windows OS, I got this: version --------------------------------------------------- PostgreSQL 8.3.6, compiled by Visual C++ build 1400 Does anyone know if Visual C++ is use to only compile PostgreSQL for Windows? Or can other compiler be use? If Visual C++ is always use for Windows and Windows only then this is very good information I can use. I know on RedHat, I got this. version ---------------------------------------------------------------------------- -------------------------- PostgreSQL 8.3.7 on i686-redhat-linux-gnu, compiled by GCC gcc (GCC) 3.4.6 20060404 (Red Hat 3.4.6-10) And on Solaris I got this. ----------------- PostgreSQL 8.1.11 on sparc-sun-solaris2.10, compiled by /ws/on10-tools/SUNWspro/SOS8/bin/cc -Xa (1 row) Thank you all in advance for your help. Louis Lam
psql -c "select version()";
From: louis.lam@guardium.com
Date: Thu, 8 Oct 2009 16:58:33 -0400
Subject: [ADMIN] How to tell what OS PostgreSQL is installed on.
To: pgsql-admin@postgresql.org
Hi,
I have a need to find out what OS PostgreSQL is running under. I need to be able to query the database or send a command and figure it out. I also do not have super user permission to do this. All I want to know is if the PostgreSQL I am connected to is running from Windows or Non Windows.
I could do “Show data_directory” and parse the result, but this require superuser permission.
I tried select version() also. Under Windows OS, I got this:
version
---------------------------------------------------
PostgreSQL 8.3.6, compiled by Visual C++ build 1400
Does anyone know if Visual C++ is use to only compile PostgreSQL for Windows? Or can other compiler be use? If Visual C++ is always use for Windows and Windows only then this is very good information I can use.
I know on RedHat, I got this.
version
------------------------------------------------------------------------------------------------------
PostgreSQL 8.3.7 on i686-redhat-linux-gnu, compiled by GCC gcc (GCC) 3.4.6 20060404 (Red Hat 3.4.6-10)
And on Solaris I got this.
-----------------
PostgreSQL 8.1.11 on sparc-sun-solaris2.10, compiled by /ws/on10-tools/SUNWspro/SOS8/bin/cc -Xa
(1 row)
Thank you all in advance for your help.
Louis Lam
Another option might be to look in the select pg_show_all_settings() for the ident_file. If the ident file is a DOS path (aka c:\somewhere\some dir\some file), you know you're on a Windows-based system. If it's a UNIX path, select version() will tell you specifically. -----Original Message----- From: pgsql-admin-owner@postgresql.org [mailto:pgsql-admin-owner@postgresql.org] On Behalf Of Julio Leyva Sent: Thursday, October 08, 2009 4:14 PM To: louis.lam@guardium.com; pgsql-admin@postgresql.org Subject: Re: [ADMIN] How to tell what OS PostgreSQL is installed on. as postgres user psql -c "select version()"; ________________________________ From: louis.lam@guardium.com Date: Thu, 8 Oct 2009 16:58:33 -0400 Subject: [ADMIN] How to tell what OS PostgreSQL is installed on. To: pgsql-admin@postgresql.org Hi, I have a need to find out what OS PostgreSQL is running under. I need to be able to query the database or send a command and figure it out. I also do not have super user permission to do this. All I want to know is if the PostgreSQL I am connected to is running from Windows or Non Windows. I could do "Show data_directory" and parse the result, but this require superuser permission. I tried select version() also. Under Windows OS, I got this: version --------------------------------------------------- PostgreSQL 8.3.6, compiled by Visual C++ build 1400 Does anyone know if Visual C++ is use to only compile PostgreSQL for Windows? Or can other compiler be use? If Visual C++ is always use for Windows and Windows only then this is very good information I can use. I know on RedHat, I got this. version ---------------------------------------------------------------------------- -------------------------- PostgreSQL 8.3.7 on i686-redhat-linux-gnu, compiled by GCC gcc (GCC) 3.4.6 20060404 (Red Hat 3.4.6-10) And on Solaris I got this. ----------------- PostgreSQL 8.1.11 on sparc-sun-solaris2.10, compiled by /ws/on10-tools/SUNWspro/SOS8/bin/cc -Xa (1 row) Thank you all in advance for your help. Louis Lam
Hi Scott, Thanks for the info. I did tried select pg_show_all_settings() But this function has a filter based on a user privilege. As postgres user, I got 187 rows return and can see parameter like data_directory with its OS path. But as a non admin user, I got 176 rows return and all the parameters that would point to a directory on the OS are not shown due to privilege. Louis. -----Original Message----- From: Scott Whitney [mailto:swhitney@journyx.com] Sent: Thursday, October 08, 2009 5:19 PM To: 'Julio Leyva'; louis.lam@guardium.com; pgsql-admin@postgresql.org Subject: RE: [ADMIN] How to tell what OS PostgreSQL is installed on. Another option might be to look in the select pg_show_all_settings() for the ident_file. If the ident file is a DOS path (aka c:\somewhere\some dir\some file), you know you're on a Windows-based system. If it's a UNIX path, select version() will tell you specifically. -----Original Message----- From: pgsql-admin-owner@postgresql.org [mailto:pgsql-admin-owner@postgresql.org] On Behalf Of Julio Leyva Sent: Thursday, October 08, 2009 4:14 PM To: louis.lam@guardium.com; pgsql-admin@postgresql.org Subject: Re: [ADMIN] How to tell what OS PostgreSQL is installed on. as postgres user psql -c "select version()"; ________________________________ From: louis.lam@guardium.com Date: Thu, 8 Oct 2009 16:58:33 -0400 Subject: [ADMIN] How to tell what OS PostgreSQL is installed on. To: pgsql-admin@postgresql.org Hi, I have a need to find out what OS PostgreSQL is running under. I need to be able to query the database or send a command and figure it out. I also do not have super user permission to do this. All I want to know is if the PostgreSQL I am connected to is running from Windows or Non Windows. I could do "Show data_directory" and parse the result, but this require superuser permission. I tried select version() also. Under Windows OS, I got this: version --------------------------------------------------- PostgreSQL 8.3.6, compiled by Visual C++ build 1400 Does anyone know if Visual C++ is use to only compile PostgreSQL for Windows? Or can other compiler be use? If Visual C++ is always use for Windows and Windows only then this is very good information I can use. I know on RedHat, I got this. version -------------------------------------------------------------------------- -- -------------------------- PostgreSQL 8.3.7 on i686-redhat-linux-gnu, compiled by GCC gcc (GCC) 3.4.6 20060404 (Red Hat 3.4.6-10) And on Solaris I got this. ----------------- PostgreSQL 8.1.11 on sparc-sun-solaris2.10, compiled by /ws/on10-tools/SUNWspro/SOS8/bin/cc -Xa (1 row) Thank you all in advance for your help. Louis Lam
One more clever one: \o /tmp/foo will fail on Windows with a "No such file or directory" Any Unix system will give you access to /tmp for writing. If you can't open a stream for output to /tmp, you're on a file system that has no /tmp, aka Windows -----Original Message----- From: pgsql-admin-owner@postgresql.org [mailto:pgsql-admin-owner@postgresql.org] On Behalf Of Scott Whitney Sent: Thursday, October 08, 2009 4:11 PM To: 'Louis Lam'; pgsql-admin@postgresql.org Subject: Re: [ADMIN] How to tell what OS PostgreSQL is installed on. Visual C++ is Microsoft's compiler for C++. If something is compiled with Visual C++, it was COMPILED on Windows. There is a 99.9% chance that the underlying machine is also Windows (unless you're talking about a VM, but, still, the OS on which PG itself is running is, in fact, Windows). To the best of my knowledge, there is no way, within the PG interpreter to determine what version of Windows you're on, however. -----Original Message----- From: pgsql-admin-owner@postgresql.org [mailto:pgsql-admin-owner@postgresql.org] On Behalf Of Louis Lam Sent: Thursday, October 08, 2009 3:59 PM To: pgsql-admin@postgresql.org Subject: [ADMIN] How to tell what OS PostgreSQL is installed on. Hi, I have a need to find out what OS PostgreSQL is running under. I need to be able to query the database or send a command and figure it out. I also do not have super user permission to do this. All I want to know is if the PostgreSQL I am connected to is running from Windows or Non Windows. I could do "Show data_directory" and parse the result, but this require superuser permission. I tried select version() also. Under Windows OS, I got this: version --------------------------------------------------- PostgreSQL 8.3.6, compiled by Visual C++ build 1400 Does anyone know if Visual C++ is use to only compile PostgreSQL for Windows? Or can other compiler be use? If Visual C++ is always use for Windows and Windows only then this is very good information I can use. I know on RedHat, I got this. version ---------------------------------------------------------------------------- -------------------------- PostgreSQL 8.3.7 on i686-redhat-linux-gnu, compiled by GCC gcc (GCC) 3.4.6 20060404 (Red Hat 3.4.6-10) And on Solaris I got this. ----------------- PostgreSQL 8.1.11 on sparc-sun-solaris2.10, compiled by /ws/on10-tools/SUNWspro/SOS8/bin/cc -Xa (1 row) Thank you all in advance for your help. Louis Lam -- Sent via pgsql-admin mailing list (pgsql-admin@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-admin
Scott, \o /tmp/foo This look like a psql thing only. I cannot do this via JDBC. I guess the only solution is to use "select version()" and in combination with select spclocation on pg_tablespace where spclocation is not null; The only problem is, if a user do not create any tablespace which I assume one would always do in production. Then this spclocation column will always be NULL by default. Once a tablespace is created, then I can get a value on the spclocation and parse that to determine if it is Windows or Unix/Linux. Thanks, Louis. -----Original Message----- From: Scott Whitney [mailto:swhitney@journyx.com] Sent: Thursday, October 08, 2009 5:50 PM To: 'Scott Whitney'; 'Louis Lam'; pgsql-admin@postgresql.org Subject: RE: [ADMIN] How to tell what OS PostgreSQL is installed on. One more clever one: \o /tmp/foo will fail on Windows with a "No such file or directory" Any Unix system will give you access to /tmp for writing. If you can't open a stream for output to /tmp, you're on a file system that has no /tmp, aka Windows -----Original Message----- From: pgsql-admin-owner@postgresql.org [mailto:pgsql-admin-owner@postgresql.org] On Behalf Of Scott Whitney Sent: Thursday, October 08, 2009 4:11 PM To: 'Louis Lam'; pgsql-admin@postgresql.org Subject: Re: [ADMIN] How to tell what OS PostgreSQL is installed on. Visual C++ is Microsoft's compiler for C++. If something is compiled with Visual C++, it was COMPILED on Windows. There is a 99.9% chance that the underlying machine is also Windows (unless you're talking about a VM, but, still, the OS on which PG itself is running is, in fact, Windows). To the best of my knowledge, there is no way, within the PG interpreter to determine what version of Windows you're on, however. -----Original Message----- From: pgsql-admin-owner@postgresql.org [mailto:pgsql-admin-owner@postgresql.org] On Behalf Of Louis Lam Sent: Thursday, October 08, 2009 3:59 PM To: pgsql-admin@postgresql.org Subject: [ADMIN] How to tell what OS PostgreSQL is installed on. Hi, I have a need to find out what OS PostgreSQL is running under. I need to be able to query the database or send a command and figure it out. I also do not have super user permission to do this. All I want to know is if the PostgreSQL I am connected to is running from Windows or Non Windows. I could do "Show data_directory" and parse the result, but this require superuser permission. I tried select version() also. Under Windows OS, I got this: version --------------------------------------------------- PostgreSQL 8.3.6, compiled by Visual C++ build 1400 Does anyone know if Visual C++ is use to only compile PostgreSQL for Windows? Or can other compiler be use? If Visual C++ is always use for Windows and Windows only then this is very good information I can use. I know on RedHat, I got this. version -------------------------------------------------------------------------- -- -------------------------- PostgreSQL 8.3.7 on i686-redhat-linux-gnu, compiled by GCC gcc (GCC) 3.4.6 20060404 (Red Hat 3.4.6-10) And on Solaris I got this. ----------------- PostgreSQL 8.1.11 on sparc-sun-solaris2.10, compiled by /ws/on10-tools/SUNWspro/SOS8/bin/cc -Xa (1 row) Thank you all in advance for your help. Louis Lam -- Sent via pgsql-admin mailing list (pgsql-admin@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-admin
Hi Scott, Thanks for the info. I did tried select pg_show_all_settings() But this function has a filter based on a user privilege. As postgres user, I got 187 rows return and can see parameter like data_directory with its OS path. But as a non admin user, I got 176 rows return and all the parameters that would point to a directory on the OS are not shown due to privilege. Louis. -----Original Message----- From: Scott Whitney [mailto:swhitney@journyx.com] Sent: Thursday, October 08, 2009 5:19 PM To: 'Julio Leyva'; louis.lam@guardium.com; pgsql-admin@postgresql.org Subject: RE: [ADMIN] How to tell what OS PostgreSQL is installed on. Another option might be to look in the select pg_show_all_settings() for the ident_file. If the ident file is a DOS path (aka c:\somewhere\some dir\some file), you know you're on a Windows-based system. If it's a UNIX path, select version() will tell you specifically. -----Original Message----- From: pgsql-admin-owner@postgresql.org [mailto:pgsql-admin-owner@postgresql.org] On Behalf Of Julio Leyva Sent: Thursday, October 08, 2009 4:14 PM To: louis.lam@guardium.com; pgsql-admin@postgresql.org Subject: Re: [ADMIN] How to tell what OS PostgreSQL is installed on. as postgres user psql -c "select version()"; ________________________________ From: louis.lam@guardium.com Date: Thu, 8 Oct 2009 16:58:33 -0400 Subject: [ADMIN] How to tell what OS PostgreSQL is installed on. To: pgsql-admin@postgresql.org Hi, I have a need to find out what OS PostgreSQL is running under. I need to be able to query the database or send a command and figure it out. I also do not have super user permission to do this. All I want to know is if the PostgreSQL I am connected to is running from Windows or Non Windows. I could do "Show data_directory" and parse the result, but this require superuser permission. I tried select version() also. Under Windows OS, I got this: version --------------------------------------------------- PostgreSQL 8.3.6, compiled by Visual C++ build 1400 Does anyone know if Visual C++ is use to only compile PostgreSQL for Windows? Or can other compiler be use? If Visual C++ is always use for Windows and Windows only then this is very good information I can use. I know on RedHat, I got this. version -------------------------------------------------------------------------- -- -------------------------- PostgreSQL 8.3.7 on i686-redhat-linux-gnu, compiled by GCC gcc (GCC) 3.4.6 20060404 (Red Hat 3.4.6-10) And on Solaris I got this. ----------------- PostgreSQL 8.1.11 on sparc-sun-solaris2.10, compiled by /ws/on10-tools/SUNWspro/SOS8/bin/cc -Xa (1 row) Thank you all in advance for your help. Louis Lam
Scott, \o /tmp/foo This look like a psql thing only. I cannot do this via JDBC. I guess the only solution is to use "select version()" and in combination with select spclocation on pg_tablespace where spclocation is not null; The only problem is, if a user do not create any tablespace which I assume one would always do in production. Then this spclocation column will always be NULL by default. Once a tablespace is created, then I can get a value on the spclocation and parse that to determine if it is Windows or Unix/Linux. Thanks, Louis. -----Original Message----- From: Scott Whitney [mailto:swhitney@journyx.com] Sent: Thursday, October 08, 2009 5:50 PM To: 'Scott Whitney'; 'Louis Lam'; pgsql-admin@postgresql.org Subject: RE: [ADMIN] How to tell what OS PostgreSQL is installed on. One more clever one: \o /tmp/foo will fail on Windows with a "No such file or directory" Any Unix system will give you access to /tmp for writing. If you can't open a stream for output to /tmp, you're on a file system that has no /tmp, aka Windows -----Original Message----- From: pgsql-admin-owner@postgresql.org [mailto:pgsql-admin-owner@postgresql.org] On Behalf Of Scott Whitney Sent: Thursday, October 08, 2009 4:11 PM To: 'Louis Lam'; pgsql-admin@postgresql.org Subject: Re: [ADMIN] How to tell what OS PostgreSQL is installed on. Visual C++ is Microsoft's compiler for C++. If something is compiled with Visual C++, it was COMPILED on Windows. There is a 99.9% chance that the underlying machine is also Windows (unless you're talking about a VM, but, still, the OS on which PG itself is running is, in fact, Windows). To the best of my knowledge, there is no way, within the PG interpreter to determine what version of Windows you're on, however. -----Original Message----- From: pgsql-admin-owner@postgresql.org [mailto:pgsql-admin-owner@postgresql.org] On Behalf Of Louis Lam Sent: Thursday, October 08, 2009 3:59 PM To: pgsql-admin@postgresql.org Subject: [ADMIN] How to tell what OS PostgreSQL is installed on. Hi, I have a need to find out what OS PostgreSQL is running under. I need to be able to query the database or send a command and figure it out. I also do not have super user permission to do this. All I want to know is if the PostgreSQL I am connected to is running from Windows or Non Windows. I could do "Show data_directory" and parse the result, but this require superuser permission. I tried select version() also. Under Windows OS, I got this: version --------------------------------------------------- PostgreSQL 8.3.6, compiled by Visual C++ build 1400 Does anyone know if Visual C++ is use to only compile PostgreSQL for Windows? Or can other compiler be use? If Visual C++ is always use for Windows and Windows only then this is very good information I can use. I know on RedHat, I got this. version -------------------------------------------------------------------------- -- -------------------------- PostgreSQL 8.3.7 on i686-redhat-linux-gnu, compiled by GCC gcc (GCC) 3.4.6 20060404 (Red Hat 3.4.6-10) And on Solaris I got this. ----------------- PostgreSQL 8.1.11 on sparc-sun-solaris2.10, compiled by /ws/on10-tools/SUNWspro/SOS8/bin/cc -Xa (1 row) Thank you all in advance for your help. Louis Lam -- Sent via pgsql-admin mailing list (pgsql-admin@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-admin
On Thu, Oct 08, 2009 at 05:31:50PM -0400, Louis Lam wrote: > Hi Scott, > > Thanks for the info. I did tried > > select pg_show_all_settings() > > But this function has a filter based on a user privilege. As postgres > user, I got 187 rows return and can see parameter like data_directory with > its OS path. But as a non admin user, I got 176 rows return and all the > parameters that would point to a directory on the OS are not shown due to > privilege. I'm wondering what you want to do with this information. For a user there should not be a difference regarding the underlying operating system on the server. And for an admin who might want to do statistics on a larger set of database servers you should have enough privileges. If you need some classification of all the databases then you could just store that information in the database. E.g. with a stored procedure that gives you the correct answer. Greetings, -- Michael van Elst Internet: mlelstv@serpens.de "A potential Snark may lurk in every tree."