From 1db59fe65e1b9839a4b3824a4cf659cc153d94ff Mon Sep 17 00:00:00 2001 From: levinsv <44033647+levinsv@users.noreply.github.com> Date: Sat, 9 May 2020 01:08:46 +0500 Subject: [PATCH] bug fix bug fix refresh table and dialog crash --- Release_(3.0)/pgAdmin3.exe | Bin 10827776 -> 10827776 bytes dlg/dlgTable.cpp | 3 +++ schema/pgPartition.cpp | 14 ++++++++------ 3 files changed, 11 insertions(+), 6 deletions(-) diff --git a/Release_(3.0)/pgAdmin3.exe b/Release_(3.0)/pgAdmin3.exe index bd0cf5907a970813e0e4b2d59e035c8a699eb2c4..4e3e25927d71fafa822c00f322196ded731e2681 100644 GIT binary patch delta 3165 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 delta 3022 zcmZ|QeNZ}OT(jDo1-D5e=AB^8#{rYOt~ zINd-qf2e71yQkbb$)2*S=k#Jpf!cyno2QfOOPP&=Ij1#qPvqV29Xe-s|JXU_Gr#9P z_j$ed{_bt_?+j{#J_}P#eeL-awr9Id^UhIL(WG{#M74)DdqSHTg*L0orJfI?Z7OQB zRqXPZ)~i4b8VG`5(1H#^AQUEn9>O3TBESHVl4*U^Q)VhER|Tu{_7WZcJ~wrohkr?^+Z&waDC1htz2wQ;QuZ<)?Js*j-amvVw=*3Wm8Qjs=BD@ol^e>lee?#Zl)h8Qq{31X$pnz+z? zOyeo^$4Q0$c+(py&HHq{@6LEnOK$?)0f|ye@8p6vn1&7(C9Ov=7bmTc)4YFPXw~Ld z4xAS@81rL32^^u4+MY_APL{GfEuAS&BGZ4jvrM#$%GXfG+@x;x|2D5ENqYVNH1}vq zlO#>4x!%Gw(u&pQgKETxMzfkBMz1yJsj!FYb!MH-jcEuHx9ZF31U@GmuozO)HXg-_spyj**oa#ryLs}V(Un2=T?>fHgP*oBx7NSfh@bD z_0%_Dh)8K%{mvmlJ`{IbmPNN8|4#X<_I~|mW#bwr29=Gq^w)vV7<$vrBWD^zzQ6<0 zb;y8r?wb)E$+38x#Kiyf^)lHRhp8RUj>zG1e;7^I!|$FQ0YF}n&4H7qEcQUino44!1LduJpW!DioVA& zCwg@h8U?{wBZ`;M#P?#@7g$K3c<9Dy*?X(&1HCeu9MQ2KnINuCrHBlk#Wqn{2A{ze z(jyt%q7Af?=Vs{3@hsj4D@@C z{)M=l-JQr~oDIj>0qxEwap#Q|T*6Tuoyz3#%tlu;c^W%Kky$*2JwcgSJejOT(NVE( zXJ8qciDg9nK4>*<%HmT)l)0VWVc!59%;FBZlF7|Tj?+WyGjMYrba=DJa%jSvfZ@V0PZP21&+yk=zk`+x`96VDMGE9<#r?c}@j7=DE5L ze#E^S^c|;$*;rC3bMo@o6@j@?#@TZp%;`eMi=vWHG7@x1-zKm z(_;mg_6B`jz-!rGh!^rX%5^Eke5M#WT!{Hjkh%yRH&L|`(rK>}F4GT6*h3k`7;O=? z7xN62DT)pk^K$kz$;EsYdzfa;<&&v#^}Uk~D|{;>mHg?$ZNme%l8U;l33OSL9v6PU zY|K=WuBtC^qD?uG7L=Yq*XH703YPP=Gc^b8xona<}!DeK=Qu5urI+&d0%p$c^^S2o# zC2~_F$KZZ^b?e2lJ|!1SbngOg39mb%BnK`P^Hn)V=ozacg^Ch#BB}6VRh98YKshgo2gLTl`c2;YQ;tM&qfm#*3ynC87vd$;oK=^3*x zN2Kf5?A16d{Lwz|ANX)=JDCm{kO^6k4GzeGT$l}cFbDFX01BZ9ieWC4Kq-_#IaEL; z+zstclz#g zjLS=pd23U3;#|FV-dM(<&zUnWA6|B#U$|0-lBceFF)V?lP!IRPGO4cHbs~dWT36_) zJF_7!M0p=xxmx?Gj6`t7lQXhbM-Lx!rO|`GEDobrj=4;D!yP{6$|J|5C1JF2f4zx0 zrPzMgOR8O+i}ZBil4}yRTwNAQMftT^)DvDCMwX4sW61F5`Y1Y@f6s$ZU zM{Kluc+GsPQuftt+buWx|M|Kw5TqQp;ypbOq(>=1d2a_9JYNp4k-i*$Ff1<8iCWou zcHn~Wx$--b>iOx12cZ$xLKCcmW_So5hV{?_kHDkw7_`C$cpRR9jqoHq1y92t;2G(s zA2#j(7H^;JCpH%{!E^e=X6f{aHaaIYAK20##qy+??{E3Fk+!n6OFV7Xt diff --git a/dlg/dlgTable.cpp b/dlg/dlgTable.cpp index a4b755b..c02e9c9 100644 --- a/dlg/dlgTable.cpp +++ b/dlg/dlgTable.cpp @@ -181,6 +181,9 @@ dlgProperty *pgPartitionFactory::CreateDialog(frmMain *frame, pgObject *node, pg break; } parent=parentNode; + pgPartition *n=(pgPartition *)node; + pgSchema *p=(pgSchema *)parent; + if (n->GetSchema()->GetName()!=p->GetName()) parent=n->GetSchema(); return new dlgTable(this, frame, (pgPartition *)node, (pgSchema *)parent); } diff --git a/schema/pgPartition.cpp b/schema/pgPartition.cpp index 710957f..f94d0d5 100644 --- a/schema/pgPartition.cpp +++ b/schema/pgPartition.cpp @@ -76,11 +76,12 @@ wxString pgPartition::GetSql(ctlTree *browser) sql += pgTable::GetSql(browser); return sql; } - +ctlTree *tmp_br; pgObject *pgPartition::Refresh(ctlTree *browser, const wxTreeItemId item) { pgPartition *partition = 0; pgCollection *coll = browser->GetParentCollection(item); + tmp_br=browser; if (coll) partition = (pgPartition *)pg_partitionFactory.CreateObjects(coll, 0, wxT("\n AND rel.oid=") + GetOidStr()); @@ -197,7 +198,8 @@ pgObject *pgPartitionFactory::CreateObjects(pgCollection *coll, ctlTree *browser pgPartitionCollection *collection = (pgPartitionCollection *)coll; wxString query; pgPartition *table = 0; - + ctlTree *br=browser; + if (!br) br=tmp_br; // Greenplum returns reltuples and relpages as tuples per segmentDB and pages per segmentDB, // so we need to multiply them by the number of segmentDBs to get reasonable values. long gp_segments = 1; @@ -206,7 +208,7 @@ pgObject *pgPartitionFactory::CreateObjects(pgCollection *coll, ctlTree *browser //gp_segments = StrToLong(collection->GetDatabase()->ExecuteScalar(query)); //if (gp_segments <= 1) // gp_segments = 1; - + pgSet *tables; @@ -287,10 +289,10 @@ pgObject *pgPartitionFactory::CreateObjects(pgCollection *coll, ctlTree *browser wxTreeItemId currentItem = collection->GetSchema()->GetId(); pgCollection *collsch; wxTreeItemId scItem; - if (currentItem) scItem = browser->GetItemParent(currentItem); - collsch = (pgCollection *) browser->GetObject(scItem); + if (currentItem) scItem = br->GetItemParent(currentItem); + collsch = (pgCollection *) br->GetObject(scItem); if (!collsch) continue; - treeObjectIterator schemaIterator(browser, collsch); + treeObjectIterator schemaIterator(br, collsch); pgSchema *s; while ((s = (pgSchema *)schemaIterator.GetNextObject()) != 0) schemaArr.push_back(s);