pg_upgrade 10.2

2018-06-12 Thread Murthy Nunna
In older versions of pg_upgrade (e.g from 9.2 to 9.3), I was able to run 
pg_upgrade without stopping old cluster using the check flag.

pg_upgrade -b  -B  -d  -D  -p 5432 -P 
5434 -r -v -k -c

Note the "c" flag at the end

However pg_upgrade in 10 (I tried from 9.3 to 10.4), when I did not stop the 
old cluster, the upgrade failed:

***
There seems to be a postmaster servicing the old cluster.
Please shutdown that postmaster and try again.
Failure, exiting

Is this expected?

Also, when I stopped the old cluster and ran pg_upgrade with "-c" flag, the 
file global/pg_control got renamed to global/pg_control.old. The "-c" flag 
never renamed anything in the old cluster in older pg_upgrade




RE: pg_upgrade 10.2

2018-06-12 Thread Murthy Nunna
Thanks Adrian.
I removed "-k" flag. But still got same error.

There seems to be a postmaster servicing the old cluster.
Please shutdown that postmaster and try again.
Failure, exiting

-Original Message-
From: Adrian Klaver [mailto:adrian.kla...@aklaver.com] 
Sent: Tuesday, June 12, 2018 3:48 PM
To: Murthy Nunna ; pgsql-general@lists.postgresql.org; 
pgsql-ad...@lists.postgresql.org; pgsql-performa...@lists.postgresql.org
Subject: Re: pg_upgrade 10.2

On 06/12/2018 01:34 PM, Murthy Nunna wrote:
> In older versions of pg_upgrade (e.g from 9.2 to 9.3), I was able to 
> run pg_upgrade without stopping old cluster using the check flag.
> 
> pg_upgrade -b  -B  -d  -D  -p 
> 5432 -P 5434 -r -v -k -c
> 
> Note the "c" flag at the end

I take the below to it mean it should work:

https://urldefense.proofpoint.com/v2/url?u=https-3A__www.postgresql.org_docs_10_static_pgupgrade.html&d=DwID-g&c=gRgGjJ3BkIsb5y6s49QqsA&r=0wrsmPzpZSao0v32yCcG2Q&m=g2e1NMngBLIcEgi5UjlCHkyJ5zK1Su-vsaRw0Y9N0Dc&s=PDVmjA_uW6cJvV4lWR8vgkiArplzgd5Rs4taLA6ZY6Q&e=
> "You can use pg_upgrade --check to perform only the checks, even if 
> the
old server is still running. pg_upgrade --check will also outline any manual 
adjustments you will need to make after the upgrade. If you are going to be 
using link mode, you should use the --link option with --check to enable 
link-mode-specific checks."

Might want to try without -k to see what happens.

More comments below.

> However pg_upgrade in 10 (I tried from 9.3 to 10.4), when I did not 
> stop the old cluster, the upgrade failed:
> 
> ***
> 
> There seems to be a postmaster servicing the old cluster.
> 
> Please shutdown that postmaster and try again.
> 
> Failure, exiting
> 
> Is this expected?
> 
> Also, when I stopped the old cluster and ran pg_upgrade with "-c" 
> flag, the file global/pg_control got renamed to global/pg_control.old. 
> The "-c" flag never renamed anything in the old cluster in older 
> pg_upgrade

Again seems related to -k:

"
If you ran pg_upgrade without --link or did not start the new server, the old 
cluster was not modified except that, if linking started, a .old suffix was 
appended to $PGDATA/global/pg_control. To reuse the old cluster, possibly 
remove the .old suffix from $PGDATA/global/pg_control; you can then restart the 
old cluster.
"
> 


--
Adrian Klaver
adrian.kla...@aklaver.com



RE: pg_upgrade 10.2

2018-06-12 Thread Murthy Nunna
pg_upgrade -V
pg_upgrade (PostgreSQL) 10.4

pg_upgrade -b /fnal/ups/prd/postgres/v9_3_14_x64/Linux-2-6/bin -B 
/fnal/ups/prd/postgres/v10_4_x64/Linux-2-6/bin -d /data0/pgdata/ifb_prd_last -D 
/data0/pgdata/ifb_prd_last_104 -p 5433 -P 5434 -r -v –c


-Original Message-
From: Adrian Klaver [mailto:adrian.kla...@aklaver.com] 
Sent: Tuesday, June 12, 2018 4:13 PM
To: Murthy Nunna ; pgsql-general@lists.postgresql.org; 
pgsql-ad...@lists.postgresql.org; pgsql-performa...@lists.postgresql.org
Subject: Re: pg_upgrade 10.2

On 06/12/2018 01:58 PM, Murthy Nunna wrote:
> Thanks Adrian.
> I removed "-k" flag. But still got same error.
> 
> There seems to be a postmaster servicing the old cluster.
> Please shutdown that postmaster and try again.
> Failure, exiting
> 

Well according to the code in pg_upgrade.c that message should not be reached 
when the check option is specified:

if (!user_opts.check)
 pg_fatal("There seems to be a postmaster servicing the old cluster.\n"
 "Please shutdown that postmaster and try again.\n"); else
 *live_check = true;

Can we see the actual command you ran?


--
Adrian Klaver
adrian.kla...@aklaver.com


RE: pg_upgrade 10.2

2018-06-12 Thread Murthy Nunna
Hi Adrian,

Port numbers are correct.

I moved the position of -c (-p 5433 -P 5434 -c -r -v). Now it is NOT 
complaining about old cluster running. However, I am running into a different 
problem.

New cluster database "ifb_prd_last" is not empty
Failure, exiting

Note: ifb_prd_last is not new cluster. It is actually old cluster.

Is this possibly because in one of my earlier attempts where I shutdown old 
cluster and ran pg_upgrade with -c at the end of the command line. I think -c 
was ignored and my cluster has been upgraded in that attempt. Is that possible?


-Original Message-
From: Adrian Klaver [mailto:adrian.kla...@aklaver.com] 
Sent: Tuesday, June 12, 2018 4:35 PM
To: Murthy Nunna ; pgsql-general@lists.postgresql.org; 
pgsql-ad...@lists.postgresql.org; pgsql-performa...@lists.postgresql.org
Subject: Re: pg_upgrade 10.2

On 06/12/2018 02:18 PM, Murthy Nunna wrote:
> pg_upgrade -V
> pg_upgrade (PostgreSQL) 10.4
> 
> pg_upgrade -b /fnal/ups/prd/postgres/v9_3_14_x64/Linux-2-6/bin -B 
> /fnal/ups/prd/postgres/v10_4_x64/Linux-2-6/bin -d 
> /data0/pgdata/ifb_prd_last -D /data0/pgdata/ifb_prd_last_104 -p 5433 
> -P 5434 -r -v –c
> 
>

Looks good to me. The only thing that stands out is that in your original post 
you had:

-p 5432

and above you have:

-p 5433

Not sure if that makes a difference.

The only suggestion I have at the moment is to move -c from the end of the line 
to somewhere earlier on the chance that there is a bug that is not finding it 
when it's at the end.


--
Adrian Klaver
adrian.kla...@aklaver.com


RE: pg_upgrade 10.2

2018-06-12 Thread Murthy Nunna
Jerry,

OMG, I think you nailed this... I know what I did. I cut/pasted the command 
from an e-mail... I have seen this issue before with stuff not related to 
postgres. But then those commands failed in syntax error and then you know what 
you did wrong.

Similarly, I expect pg_upgrade to throw an error if it finds something it 
doesn't understand instead of ignoring and causing damage. Don't you agree?

Thanks for pointing that out. I will redo my upgrade.

-r -v -k -c --- good flags no utf8
-r -v -k –c --- bad flags




-Original Message-
From: Jerry Sievers [mailto:gsiever...@comcast.net] 
Sent: Tuesday, June 12, 2018 6:24 PM
To: Murthy Nunna 
Cc: Adrian Klaver ; 
pgsql-general@lists.postgresql.org; pgsql-ad...@lists.postgresql.org; 
pgsql-performa...@lists.postgresql.org
Subject: Re: pg_upgrade 10.2

Murthy Nunna  writes:

> Hi Adrian,
>
> Port numbers are correct.
>
> I moved the position of -c (-p 5433 -P 5434 -c -r -v). Now it is NOT 
> complaining about old cluster running. However, I am running into a different 
> problem.

I noted in your earlier message the final -c... the dash was not a regular 7bit 
ascii char but some UTF or whatever dash char.

I wonder if that's what you fed your shell and it caused a silent parsing 
issue, eg the -c dropped.

But of course email clients wrap and mangle text like that all sorts of fun 
ways so lordy knows just what you originally sent :-)

FWIW


>
> New cluster database "ifb_prd_last" is not empty Failure, exiting
>
> Note: ifb_prd_last is not new cluster. It is actually old cluster.
>
> Is this possibly because in one of my earlier attempts where I 
> shutdown old cluster and ran pg_upgrade with -c at the end of the 
> command line. I think -c was ignored and my cluster has been upgraded 
> in that attempt. Is that possible?
>
>
> -Original Message-
> From: Adrian Klaver [mailto:adrian.kla...@aklaver.com]
> Sent: Tuesday, June 12, 2018 4:35 PM
> To: Murthy Nunna ; 
> pgsql-general@lists.postgresql.org; pgsql-ad...@lists.postgresql.org; 
> pgsql-performa...@lists.postgresql.org
> Subject: Re: pg_upgrade 10.2
>
> On 06/12/2018 02:18 PM, Murthy Nunna wrote:
>> pg_upgrade -V
>> pg_upgrade (PostgreSQL) 10.4
>> 
>> pg_upgrade -b /fnal/ups/prd/postgres/v9_3_14_x64/Linux-2-6/bin -B 
>> /fnal/ups/prd/postgres/v10_4_x64/Linux-2-6/bin -d 
>> /data0/pgdata/ifb_prd_last -D /data0/pgdata/ifb_prd_last_104 -p 5433 
>> -P 5434 -r -v –c
>> 
>>
>
> Looks good to me. The only thing that stands out is that in your original 
> post you had:
>
> -p 5432
>
> and above you have:
>
> -p 5433
>
> Not sure if that makes a difference.
>
> The only suggestion I have at the moment is to move -c from the end of the 
> line to somewhere earlier on the chance that there is a bug that is not 
> finding it when it's at the end.
>
>
> --
> Adrian Klaver
> adrian.kla...@aklaver.com

--
Jerry Sievers
Postgres DBA/Development Consulting
e: postgres.consult...@comcast.net
p: 312.241.7800


psql help

2024-07-04 Thread Murthy Nunna
Hello:

Following works-

SELECT pid, pg_terminate_backend(pid) FROM pg_stat_activity
WHERE pid IN (select unnest(pg_blocking_pids(pid)) from pg_stat_activity 
where cardinality(pg_blocking_pids(pid)) > 0)
 and usename = 'DBUSER_10'
 and now() - state_change >= interval $a'${TIMEOUT_MINS}'$a
 order by now() - state_change >= interval 
$a'${TIMEOUT_MINS}'$a desc limit 1;

How can I rewrite the above in psql and pg_terminate_backend  all pids that 
meet above criteria (essentially remove limit 1) ?

Thanks!

Note:
I run this in Linux. TIMEOUT_MINS is env variable.





RE: psql help

2024-07-04 Thread Murthy Nunna
Sorry, there is no problem with the following statement and the environment 
variable. It works fine. But it terminates only one PID due to LIMIT 1. I want 
to terminate all pids that meet this criteria. If I remove LIMIT 1, 
pg_terminate_backend(pid) will not work as it expects only one pid at a time. 
So, the question is how to rewrite this psql so it loops through all pids one 
pid at a time? Thanks in advance for your help.

SELECT pid, pg_terminate_backend(pid) FROM pg_stat_activity
WHERE pid IN (select unnest(pg_blocking_pids(pid)) from pg_stat_activity 
where cardinality(pg_blocking_pids(pid)) > 0)
 and usename = 'DBUSER_10'
 and now() - state_change >= interval $a'${TIMEOUT_MINS}'$a
 order by now() - state_change >= interval 
$a'${TIMEOUT_MINS}'$a desc limit 1;





From: David G. Johnston 
Sent: Thursday, July 4, 2024 8:17 PM
To: Murthy Nunna 
Cc: pgsql-general@lists.postgresql.org
Subject: Re: psql help


[EXTERNAL] – This message is from an external sender
On Thu, Jul 4, 2024 at 4:56 PM Murthy Nunna 
mailto:mnu...@fnal.gov>> wrote:

How can I rewrite the above in psql

The only real trick is using a psql variable instead of the shell-injection of 
the environment variable.  Use the --set CLI argument to assign the environment 
variable to a psql variable then refer to it in the query using :'timout_mins'

Removing the limit 1 should be as simple as not typing limit 1 when you bring 
the query into the psql script.

David J.



RE: psql help

2024-07-05 Thread Murthy Nunna
-Original Message-
From: dep...@depesz.com 
Sent: Friday, July 5, 2024 6:05 AM
To: Murthy Nunna 
Cc: pgsql-general@lists.postgresql.org
Subject: Re: psql help



[EXTERNAL] – This message is from an external sender



On Fri, Jul 05, 2024 at 03:54:56AM +, Murthy Nunna wrote:

> Sorry, there is no problem with the following statement and the environment 
> variable. It works fine. But it terminates only one PID due to LIMIT 1. I 
> want to terminate all pids that meet this criteria. If I remove LIMIT 1, 
> pg_terminate_backend(pid) will not work as it expects only one pid at a time. 
> So, the question is how to rewrite this psql so it loops through all pids one 
> pid at a time? Thanks in advance for your help.

>

> SELECT pid, pg_terminate_backend(pid) FROM pg_stat_activity

> WHERE pid IN (select unnest(pg_blocking_pids(pid)) from pg_stat_activity 
> where cardinality(pg_blocking_pids(pid)) > 0)

>  and usename = 'DBUSER_10'

>  and now() - state_change >= interval $a'${TIMEOUT_MINS}'$a

>  order by now() - state_change >= interval 
> $a'${TIMEOUT_MINS}'$a desc limit 1;



Did you try?



I don't see any reason why it wouldn't work with just 'limit 1' removed.



Best regards,



depesz





Thanks, depesz. I am pretty sure removing “limit 1” should terminate all pids 
in the result set. I was just being dumb.


RE: Bash function from psql (v14)

2024-11-10 Thread Murthy Nunna
Thanks, Greg.


  1.  This means what I am trying to do is not meant to work. This won’t work 
even if I declare the function before calling it in PSQL. I get it.
  2.  You are correct. Function must be declared before the call.

Thanks again.


Bash function from psql (v14)

2024-11-09 Thread Murthy Nunna
Hi,

I am trying to code bash function and call it from psql. But it is failing. How 
can I get this to work. Creating a separate script instead of a function works, 
but I do not want to do that. I have too many variables to be passed back and 
forth. Any ideas?

#!/bin/bash
psql -d postgres  -p 5433 <<-PSQLBLOCK
\! run-bash-function-- This doesn't work
PSQLBLOCK

# Run the function outside PSQLBLOCK. This works!
run-bash-function
exit $?

# Create bash function
run-bash-function ()
{
  echo "in bash function"
}
# end of bash script


Run the above script:
./test-bash-function.sh
sh: line 1: run-bash-function: command not found
in bash function