@@ -3534,6 +3534,7 @@ getAggregates(Archive *fout, int *numAggs)
3534
3534
int i_proargtypes ;
3535
3535
int i_rolname ;
3536
3536
int i_aggacl ;
3537
+ int i_proiargs ;
3537
3538
3538
3539
/* Make sure we are in proper schema */
3539
3540
selectSourceSchema (fout , "pg_catalog" );
@@ -3543,11 +3544,12 @@ getAggregates(Archive *fout, int *numAggs)
3543
3544
* rationale behind the filtering logic.
3544
3545
*/
3545
3546
3546
- if (fout -> remoteVersion >= 80200 )
3547
+ if (fout -> remoteVersion >= 80400 )
3547
3548
{
3548
3549
appendPQExpBuffer (query , "SELECT tableoid, oid, proname AS aggname, "
3549
3550
"pronamespace AS aggnamespace, "
3550
3551
"pronargs, proargtypes, "
3552
+ "pg_catalog.pg_get_function_identity_arguments(oid) AS proiargs,"
3551
3553
"(%s proowner) AS rolname, "
3552
3554
"proacl AS aggacl "
3553
3555
"FROM pg_proc p "
@@ -3565,12 +3567,28 @@ getAggregates(Archive *fout, int *numAggs)
3565
3567
"deptype = 'e')" );
3566
3568
appendPQExpBuffer (query , ")" );
3567
3569
}
3570
+ else if (fout -> remoteVersion >= 80200 )
3571
+ {
3572
+ appendPQExpBuffer (query , "SELECT tableoid, oid, proname AS aggname, "
3573
+ "pronamespace AS aggnamespace, "
3574
+ "pronargs, proargtypes, "
3575
+ "NULL::text AS proiargs,"
3576
+ "(%s proowner) AS rolname, "
3577
+ "proacl AS aggacl "
3578
+ "FROM pg_proc p "
3579
+ "WHERE proisagg AND ("
3580
+ "pronamespace != "
3581
+ "(SELECT oid FROM pg_namespace "
3582
+ "WHERE nspname = 'pg_catalog'))" ,
3583
+ username_subquery );
3584
+ }
3568
3585
else if (fout -> remoteVersion >= 70300 )
3569
3586
{
3570
3587
appendPQExpBuffer (query , "SELECT tableoid, oid, proname AS aggname, "
3571
3588
"pronamespace AS aggnamespace, "
3572
3589
"CASE WHEN proargtypes[0] = 'pg_catalog.\"any\"'::pg_catalog.regtype THEN 0 ELSE 1 END AS pronargs, "
3573
3590
"proargtypes, "
3591
+ "NULL::text AS proiargs, "
3574
3592
"(%s proowner) AS rolname, "
3575
3593
"proacl AS aggacl "
3576
3594
"FROM pg_proc "
@@ -3585,6 +3603,7 @@ getAggregates(Archive *fout, int *numAggs)
3585
3603
"0::oid AS aggnamespace, "
3586
3604
"CASE WHEN aggbasetype = 0 THEN 0 ELSE 1 END AS pronargs, "
3587
3605
"aggbasetype AS proargtypes, "
3606
+ "NULL::text AS proiargs, "
3588
3607
"(%s aggowner) AS rolname, "
3589
3608
"'{=X}' AS aggacl "
3590
3609
"FROM pg_aggregate "
@@ -3600,6 +3619,7 @@ getAggregates(Archive *fout, int *numAggs)
3600
3619
"0::oid AS aggnamespace, "
3601
3620
"CASE WHEN aggbasetype = 0 THEN 0 ELSE 1 END AS pronargs, "
3602
3621
"aggbasetype AS proargtypes, "
3622
+ "NULL::text AS proiargs, "
3603
3623
"(%s aggowner) AS rolname, "
3604
3624
"'{=X}' AS aggacl "
3605
3625
"FROM pg_aggregate "
@@ -3623,6 +3643,7 @@ getAggregates(Archive *fout, int *numAggs)
3623
3643
i_proargtypes = PQfnumber (res , "proargtypes" );
3624
3644
i_rolname = PQfnumber (res , "rolname" );
3625
3645
i_aggacl = PQfnumber (res , "aggacl" );
3646
+ i_proiargs = PQfnumber (res , "proiargs" );
3626
3647
3627
3648
for (i = 0 ; i < ntups ; i ++ )
3628
3649
{
@@ -3642,6 +3663,7 @@ getAggregates(Archive *fout, int *numAggs)
3642
3663
agginfo [i ].aggfn .lang = InvalidOid ; /* not currently interesting */
3643
3664
agginfo [i ].aggfn .prorettype = InvalidOid ; /* not saved */
3644
3665
agginfo [i ].aggfn .proacl = pg_strdup (PQgetvalue (res , i , i_aggacl ));
3666
+ agginfo [i ].aggfn .proiargs = pg_strdup (PQgetvalue (res , i , i_proiargs ));
3645
3667
agginfo [i ].aggfn .nargs = atoi (PQgetvalue (res , i , i_pronargs ));
3646
3668
if (agginfo [i ].aggfn .nargs == 0 )
3647
3669
agginfo [i ].aggfn .argtypes = NULL ;
@@ -3693,6 +3715,7 @@ getFuncs(Archive *fout, int *numFuncs)
3693
3715
int i_proargtypes ;
3694
3716
int i_prorettype ;
3695
3717
int i_proacl ;
3718
+ int i_proiargs ;
3696
3719
3697
3720
/* Make sure we are in proper schema */
3698
3721
selectSourceSchema (fout , "pg_catalog" );
@@ -3713,12 +3736,13 @@ getFuncs(Archive *fout, int *numFuncs)
3713
3736
* doesn't have; otherwise we might not get creation ordering correct.
3714
3737
*/
3715
3738
3716
- if (fout -> remoteVersion >= 70300 )
3739
+ if (fout -> remoteVersion >= 80400 )
3717
3740
{
3718
3741
appendPQExpBuffer (query ,
3719
3742
"SELECT tableoid, oid, proname, prolang, "
3720
3743
"pronargs, proargtypes, prorettype, proacl, "
3721
3744
"pronamespace, "
3745
+ "pg_catalog.pg_get_function_identity_arguments(oid) AS proiargs,"
3722
3746
"(%s proowner) AS rolname "
3723
3747
"FROM pg_proc p "
3724
3748
"WHERE NOT proisagg AND ("
@@ -3740,13 +3764,29 @@ getFuncs(Archive *fout, int *numFuncs)
3740
3764
"deptype = 'e')" );
3741
3765
appendPQExpBuffer (query , ")" );
3742
3766
}
3767
+ else if (fout -> remoteVersion >= 70300 )
3768
+ {
3769
+ appendPQExpBuffer (query ,
3770
+ "SELECT tableoid, oid, proname, prolang, "
3771
+ "pronargs, proargtypes, prorettype, proacl, "
3772
+ "pronamespace, "
3773
+ "NULL::text AS proiargs,"
3774
+ "(%s proowner) AS rolname "
3775
+ "FROM pg_proc p "
3776
+ "WHERE NOT proisagg AND ("
3777
+ "pronamespace != "
3778
+ "(SELECT oid FROM pg_namespace "
3779
+ "WHERE nspname = 'pg_catalog'))" ,
3780
+ username_subquery );
3781
+ }
3743
3782
else if (fout -> remoteVersion >= 70100 )
3744
3783
{
3745
3784
appendPQExpBuffer (query ,
3746
3785
"SELECT tableoid, oid, proname, prolang, "
3747
3786
"pronargs, proargtypes, prorettype, "
3748
3787
"'{=X}' AS proacl, "
3749
3788
"0::oid AS pronamespace, "
3789
+ "NULL::text AS proiargs,"
3750
3790
"(%s proowner) AS rolname "
3751
3791
"FROM pg_proc "
3752
3792
"WHERE pg_proc.oid > '%u'::oid" ,
@@ -3763,6 +3803,7 @@ getFuncs(Archive *fout, int *numFuncs)
3763
3803
"pronargs, proargtypes, prorettype, "
3764
3804
"'{=X}' AS proacl, "
3765
3805
"0::oid AS pronamespace, "
3806
+ "NULL::text AS proiargs,"
3766
3807
"(%s proowner) AS rolname "
3767
3808
"FROM pg_proc "
3768
3809
"where pg_proc.oid > '%u'::oid" ,
@@ -3788,6 +3829,7 @@ getFuncs(Archive *fout, int *numFuncs)
3788
3829
i_proargtypes = PQfnumber (res , "proargtypes" );
3789
3830
i_prorettype = PQfnumber (res , "prorettype" );
3790
3831
i_proacl = PQfnumber (res , "proacl" );
3832
+ i_proiargs = PQfnumber (res , "proiargs" );
3791
3833
3792
3834
for (i = 0 ; i < ntups ; i ++ )
3793
3835
{
@@ -3803,6 +3845,7 @@ getFuncs(Archive *fout, int *numFuncs)
3803
3845
finfo [i ].rolname = pg_strdup (PQgetvalue (res , i , i_rolname ));
3804
3846
finfo [i ].lang = atooid (PQgetvalue (res , i , i_prolang ));
3805
3847
finfo [i ].prorettype = atooid (PQgetvalue (res , i , i_prorettype ));
3848
+ finfo [i ].proiargs = pg_strdup (PQgetvalue (res , i , i_proiargs ));
3806
3849
finfo [i ].proacl = pg_strdup (PQgetvalue (res , i , i_proacl ));
3807
3850
finfo [i ].nargs = atoi (PQgetvalue (res , i , i_pronargs ));
3808
3851
if (finfo [i ].nargs == 0 )
0 commit comments