summaryrefslogtreecommitdiff
path: root/databases/pgadmin3/files/patch-pg11
blob: ffa947013c4ab4b1549cef10380dc4f4d7551ea4 (plain) (blame)
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");