Re: "set schema" patch - Mailing list pgadmin-hackers
From | Guillaume Lelarge |
---|---|
Subject | Re: "set schema" patch |
Date | |
Msg-id | 477809B5.80500@lelarge.info Whole thread Raw |
In response to | Re: "set schema" patch (Dave Page <dpage@postgresql.org>) |
Responses |
Re: "set schema" patch
|
List | pgadmin-hackers |
Hi, Dave Page wrote: > Apologies, but I'm *really* busy right now (with upcoming pgAdmin, > PostgreSQL and EnterpriseDB releases) so haven't yet had a chance to > properly review your patches. I'll answer what I can for now - it I > haven't reviewed within a week or so of the pgAdmin release, please feel > free to give me a verbal kick. > I completely understand. I was more thinking this was a holidays season, so I'm not waiting for a fast answer :) So, no problem at all. > Guillaume Lelarge wrote: >> Hi, >> >> This patch adds a schema combobox on some objets' dialog : aggregate, >> conversion, domain, function, sequence, table, type, view. There are two >> EDB objects that probably need it too : package and synonym. Dave, can >> you tell me if they are dependants on schema ? and do they use the same >> SQL statement to alter their schema ? thanks. > > Public Synonyms live at the same logical level as Schemas, so they re > unaffected by this patch. > OK. > Packages are modified using CREATE OR REPLACE, which of course won't > allow you to change the schema in itself, but you could create the new > package in the new schema, and then drop the old. The problem with that > (and changing the schema of other objects) is figuring out what nodes > to refresh. > Yes, that's a big problem. >> The patch attached is not finished. I have one big issue with it. It >> seems I can't alter the schema of a function. The call to ShowObject() >> in dlgProperty::apply() fails. It seems this statement >> pgObject *newData=data->Refresh(mainForm->GetBrowser(), item); >> crashes pgAdmin (core dump), but I have no clue to explain this. It >> don't even know why it crashes with functions, but works with the other >> objects. >> >> If I can find a solution to this issue, it'll probably solve this second >> (and last) issue. I've put some of my code in comments in OnOK() >> function. I wrote this code to refresh the "Schemas" node. It seemed to >> work fine Thursday morning, but didn't want to work since. Is there >> something wrong with my way to refresh the "Schemas" node? Is there >> another way ? > > Refreshing is a real pita - the Refresh function in the pgObject and > derived classes was originally designed to do exactly that, but these > days has subtly changed such that it no longer works as you need (and > how even I expect in most cases). > > We should really add a sure-fire way to refresh the tree as you expect > in SVN-Trunk (or figure out what the heck Refresh() really does these > days). Recently though, I used code like this to refresh the Functions > collection node in the case that the debugger finds a function no longer > exists: > > ctlTree *browser = form->GetBrowser(); > wxTreeItemId item=browser->GetSelection(); > if (obj == browser->GetObject(item)) > { > pgCollection *coll=browser->GetParentCollection(obj->GetId()); > browser->DeleteChildren(coll->GetId()); > coll->ShowTreeDetail(browser); > } > OK, I'll try to have a better understanding of the Refresh function. I'll look at this in the next few days. Thanks. -- Guillaume. http://www.postgresqlfr.org http://dalibo.com
pgadmin-hackers by date: