1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
|
--- pgadmin/schema/pgFunction.cpp.orig 2019-05-24 16:47:20.205020000 +0300
+++ pgadmin/schema/pgFunction.cpp 2019-05-24 16:56:08.010511000 +0300
@@ -787,7 +787,17 @@
function->iSetArgDefValCount(functions->GetLong(wxT("pronargdefaults")));
// Check if it is a window function
- function->iSetIsWindow(functions->GetBool(wxT("proiswindow")));
+ bool isWindow = false;
+ if (obj->GetConnection()->BackendMinimumVersion(11, 0))
+ {
+ char* c = functions->GetCharPtr(wxT("prokind"));
+ isWindow = c!=NULL && *c=='w';
+ }
+ else
+ {
+ isWindow = functions->GetBool(wxT("proiswindow"));
+ }
+ function->iSetIsWindow(isWindow);
}
else
function->iSetIsWindow(false);
@@ -1060,10 +1071,10 @@
pgObject *pgFunctionFactory::CreateObjects(pgCollection *collection, ctlTree *browser, const wxString &restr)
{
- wxString funcRestriction = wxT(
- " WHERE proisagg = FALSE AND pronamespace = ") + NumToStr(collection->GetSchema()->GetOid())
- + wxT("::oid\n AND typname NOT IN ('trigger', 'event_trigger') \n");
+ wxString funcRestriction = wxString::Format( wxT(" WHERE %s AND pronamespace = %lu::oid\n AND typname NOT IN ('trigger', 'event_trigger') \n"),
+ collection->GetConnection()->BackendMinimumVersion(11, 0) ? wxT(" pr.prokind!='a'") : wxT(" proisagg = FALSE"),
+ collection->GetSchema()->GetOid());
if (collection->GetConnection()->EdbMinimumVersion(8, 1))
funcRestriction += wxT(" AND NOT (lanname = 'edbspl' AND protype = '1')\n");
else if (collection->GetConnection()->EdbMinimumVersion(8, 0))
@@ -1081,9 +1099,9 @@
pgObject *pgTriggerFunctionFactory::CreateObjects(pgCollection *collection, ctlTree *browser, const wxString &restr)
{
- wxString funcRestriction = wxT(
- " WHERE proisagg = FALSE AND pronamespace = ") + NumToStr(collection->GetSchema()->GetOid())
- + wxT("::oid\n");
+ wxString funcRestriction = wxString::Format(wxT(" WHERE %s AND pronamespace = %lu::oid\n"),
+ collection->GetConnection()->BackendMinimumVersion(11, 0) ? wxT(" pr.prokind!='a'") : wxT(" proisagg = FALSE"),
+ collection->GetSchema()->GetOid());
if(collection->GetConnection()->BackendMinimumVersion(9, 3))
{
funcRestriction += wxT("AND (typname IN ('trigger', 'event_trigger') \nAND lanname NOT IN ('edbspl', 'sql', 'internal'))");
@@ -1100,9 +1125,9 @@
pgObject *pgProcedureFactory::CreateObjects(pgCollection *collection, ctlTree *browser, const wxString &restr)
{
- wxString funcRestriction = wxT(
- " WHERE proisagg = FALSE AND pronamespace = ") + NumToStr(collection->GetSchema()->GetOid())
- + wxT("::oid AND lanname = 'edbspl'\n");
+ wxString funcRestriction = wxString::Format(wxT(" WHERE %s AND pronamespace = %lu::oid AND lanname = 'edbspl'\n"),
+ collection->GetConnection()->BackendMinimumVersion(11, 0) ? wxT(" pr.prokind!='a'") : wxT(" proisagg = FALSE"),
+ collection->GetSchema()->GetOid());
if (collection->GetConnection()->EdbMinimumVersion(8, 1))
funcRestriction += wxT(" AND protype = '1'\n");
|