Обсуждение: problem with pg_stat_activity view

Поиск
Список
Период
Сортировка

problem with pg_stat_activity view

От
"Sofer, Yuval"
Дата:

Hello,

 

postgres version:  8.2.0.4

platform windows: server 2008

 

I check connections using:

 

SELECT pg_stat_get_backend_idset()

 

Now, I take the output and try to get the ip addresses using

 

select pg_stat_get_backend_client_addr(<integer>);

 

but for a local connection (simple login using psql), I get the next error:

 

ERROR:  invalid input syntax for type inet: "fe80::104d:416e:a8dc:c02e%12"

SQL state: 22P02

 

The same error occurs for simple “select * pg_stat_activity” (of course, as it is based on the former function)

 

I noticed that for netstat –r –n, I got the next line (among the others):

 

12    266 fe80::104d:416e:a8dc:c02e/128

 

May the last 8 was removed and therefore the ip became illegal ?

 

Need your help

 

Thanks,

 

Yuval Sofer
BMC Software
CTM&D Business Unit

DBA Team
972-52-4286-282
yuval_sofer@bmc.com

 

Re: problem with pg_stat_activity view

От
Ben Kim
Дата:
fe80::104d:416e:a8dc:c02e  %12

Since %12 is a "space" character, it seems first thing to do might be an
extra space in your code. Just a quick guess.

Regards,

Ben Kim


On Mon, 8 Sep 2008, Sofer, Yuval wrote:

> Hello,
>
>
>
> postgres version:  8.2.0.4
>
> platform windows: server 2008
>
>
>
> I check connections using:
>
>
>
> SELECT pg_stat_get_backend_idset()
>
>
>
> Now, I take the output and try to get the ip addresses using
>
>
>
> select pg_stat_get_backend_client_addr(<integer>);
>
>
>
> but for a local connection (simple login using psql), I get the next
> error:
>
>
>
> ERROR:  invalid input syntax for type inet:
> "fe80::104d:416e:a8dc:c02e%12"
>
> SQL state: 22P02
>
>
>
> The same error occurs for simple "select * pg_stat_activity" (of course,
> as it is based on the former function)
>
>
>
> I noticed that for netstat -r -n, I got the next line (among the
> others):
>
>
>
> 12    266 fe80::104d:416e:a8dc:c02e/128
>
>
>
> May the last 8 was removed and therefore the ip became illegal ?
>
>
>
> Need your help
>
>
>
> Thanks,
>
>
>
> Yuval Sofer
> BMC Software
> CTM&D Business Unit
>
> DBA Team
> 972-52-4286-282
> yuval_sofer@bmc.com
>
>
>
>

Re: problem with pg_stat_activity view

От
Ben Kim
Дата:
Sorry, I apologize for the mistake. %20 is the space, and the extra %12
seems to be DC3 (device control 3).


Regards,

Ben Kim


On Mon, 8 Sep 2008, Ben Kim wrote:

>
> fe80::104d:416e:a8dc:c02e  %12
>
> Since %12 is a "space" character, it seems first thing to do might be an extra
> space in your code. Just a quick guess.
>
> Regards,
>
> Ben Kim
>
>
> On Mon, 8 Sep 2008, Sofer, Yuval wrote:
>
>> Hello,
>>
>>
>>
>> postgres version:  8.2.0.4
>>
>> platform windows: server 2008
>>
>>
>>
>> I check connections using:
>>
>>
>>
>> SELECT pg_stat_get_backend_idset()
>>
>>
>>
>> Now, I take the output and try to get the ip addresses using
>>
>>
>>
>> select pg_stat_get_backend_client_addr(<integer>);
>>
>>
>>
>> but for a local connection (simple login using psql), I get the next
>> error:
>>
>>
>>
>> ERROR:  invalid input syntax for type inet:
>> "fe80::104d:416e:a8dc:c02e%12"
>>
>> SQL state: 22P02
>>
>>
>>
>> The same error occurs for simple "select * pg_stat_activity" (of course,
>> as it is based on the former function)
>>
>>
>>
>> I noticed that for netstat -r -n, I got the next line (among the
>> others):
>>
>>
>>
>> 12    266 fe80::104d:416e:a8dc:c02e/128
>>
>>
>>
>> May the last 8 was removed and therefore the ip became illegal ?
>>
>>
>>
>> Need your help
>>
>>
>>
>> Thanks,
>>
>>
>>
>> Yuval Sofer
>> BMC Software
>> CTM&D Business Unit
>>
>> DBA Team
>> 972-52-4286-282
>> yuval_sofer@bmc.com
>>
>>
>>
>>
>
> --
> Sent via pgsql-admin mailing list (pgsql-admin@postgresql.org)
> To make changes to your subscription:
> http://www.postgresql.org/mailpref/pgsql-admin
>

Re: problem with pg_stat_activity view

От
Alvaro Herrera
Дата:
>> ERROR:  invalid input syntax for type inet:
>> "fe80::104d:416e:a8dc:c02e%12"
>>
>> SQL state: 22P02

Interesting.

When we HAVE_IPV6, there's code to remove stuff after a % in an address.
My bet is that what you're running was not compiled with HAVE_IPV6 and
so the code is not executed.  Obviously this is invoked in
pg_stat_get_backend_client_addr().

/*
 * clean_ipv6_addr --- remove any '%zone' part from an IPv6 address string
 *
 * XXX This should go away someday!
 *
 * This is a kluge needed because we don't yet support zones in stored inet
 * values.  Since the result of getnameinfo() might include a zone spec,
 * call this to remove it anywhere we want to feed getnameinfo's output to
 * network_in.  Beats failing entirely.
 *
 * An alternative approach would be to let network_in ignore %-parts for
 * itself, but that would mean we'd silently drop zone specs in user input,
 * which seems not such a good idea.
 */
void
clean_ipv6_addr(int addr_family, char *addr)
{
#ifdef HAVE_IPV6
    if (addr_family == AF_INET6)
    {
        char       *pct = strchr(addr, '%');

        if (pct)
            *pct = '\0';
    }
#endif
}

--
Alvaro Herrera                                http://www.CommandPrompt.com/
PostgreSQL Replication, Consulting, Custom Development, 24x7 support

Re: problem with pg_stat_activity view

От
Tom Lane
Дата:
Alvaro Herrera <alvherre@commandprompt.com> writes:
> ERROR:  invalid input syntax for type inet:
> "fe80::104d:416e:a8dc:c02e%12"
>
> SQL state: 22P02

> Interesting.

> When we HAVE_IPV6, there's code to remove stuff after a % in an address.

We do now ... it wasn't there in 8.2.0.

http://archives.postgresql.org/pgsql-committers/2007-05/msg00268.php

            regards, tom lane

Re: problem with pg_stat_activity view

От
Ben Kim
Дата:
That explains it... I thought it was a precent encoding but at the same
time a strange place for a control character.

Regards,

Ben Kim


On Mon, 8 Sep 2008, Alvaro Herrera wrote:

>
>>> ERROR:  invalid input syntax for type inet:
>>> "fe80::104d:416e:a8dc:c02e%12"
>>>
>>> SQL state: 22P02
>
> Interesting.
>
> When we HAVE_IPV6, there's code to remove stuff after a % in an address.
> My bet is that what you're running was not compiled with HAVE_IPV6 and
> so the code is not executed.  Obviously this is invoked in
> pg_stat_get_backend_client_addr().
>
> /*
> * clean_ipv6_addr --- remove any '%zone' part from an IPv6 address string
> *
> * XXX This should go away someday!
> *
> * This is a kluge needed because we don't yet support zones in stored inet
> * values.  Since the result of getnameinfo() might include a zone spec,
> * call this to remove it anywhere we want to feed getnameinfo's output to
> * network_in.  Beats failing entirely.
> *
> * An alternative approach would be to let network_in ignore %-parts for
> * itself, but that would mean we'd silently drop zone specs in user input,
> * which seems not such a good idea.
> */
> void
> clean_ipv6_addr(int addr_family, char *addr)
> {
> #ifdef HAVE_IPV6
>    if (addr_family == AF_INET6)
>    {
>        char       *pct = strchr(addr, '%');
>
>        if (pct)
>            *pct = '\0';
>    }
> #endif
> }
>
> --
> Alvaro Herrera                                http://www.CommandPrompt.com/
> PostgreSQL Replication, Consulting, Custom Development, 24x7 support
>
> --
> Sent via pgsql-admin mailing list (pgsql-admin@postgresql.org)
> To make changes to your subscription:
> http://www.postgresql.org/mailpref/pgsql-admin
>

moving tablespaces on windows - is it possible?

От
"Kasia Tuszynska"
Дата:

Hi Everybody,

Is it possible to move the directory associated to a tablespace and update that information in the postgres cluster?

I was expecting something like : ALTER TABLESPACE LOCATION “C:\...” but found no such usage.  Looking it up in the documentation I found that on linux one could

- shutdown postgres instance

- move the directory

- fix the symbolic link in $PGDATA/pg_tblspc

- start postgres instance

- update the pg_tablespace entry

 

I am running postgres 8.3.0 on windows 2003 sp2, according to wikipedia windows “symbolic links” have been implemented on xp only, so my platform would not have them. Altering the pg_tablespace it’s self and moving the directory does not work, I get the following error: could not create directory “pg_tblspc/16439/111451”; No such file or directory.

 

Questions:

  1. is it possible to move a tablespace ?
  2. how does the instance keep track of the pg_tblspc contents if there are no symbolic links on windows?

 

Thank you,

Sincerely,

Kasia