*** SachaS_ has quit IRC *** btami has joined #gnuenterprise good morning *** reinhard has joined #gnuenterprise good morning all *** johannesV has joined #gnuenterprise *** kilo has joined #gnuenterprise good morning *** sjc has joined #gnuenterprise *** lekma has joined #gnuenterprise morning everyone reinhard: u here? brb *** wt has joined #gnuenterprise reinhard: i have a question about dirty reads from what i understand the postchange occurs during onvalidate if i call an external python method to make the object available to a session.find() but the object used during onvalidate is already available, and if it's not returned by a find it's not really a matter so unless i missed smthing you can delay the postChanges hi all reinhard: common & appserver packages done lekma: the problem is not the object calling the onValidate it's all the other objects putting off sponsorship for now so if I have object a and b I must postchanges for object a so object b can see it in a find and vice versa ok ajmitch_: cool, thanks so should i try solution a) (delete all not null constraints from db except for gnue_id) to have a temp working solution ? if it would really hold you back otherwise, then yes it will take at least a week until we have the "clean" solution working probably more :( well well... we have to decide here what to do... reinhard: strange thing happening here when i session.request() with properties like sales_saleOrder everything is fine but if property is : sales_saleOrder.sales_orderId and sales_saleOrder is None xmlrpc does not send back anything s/xmlrpc/xmlrpc server lekma: what would you think is the correct behaviour? sending back an empty value in SQL DB terms, sales_saleOrder.sales_orderId results in a join so you would think indirect properties should all yield "None" if the reference points to None? so if sales_salesOrder is None well in fact the pb is in session.count, request returns listid correctly, but count returns 0, even thougth there are records that should be returned reinhard: yes sales_salesOrder.sales_orderId, sales_salesOrder.sales_customer etc should all be none? it should at least return smthing do you have any chance to debug the SQL statement that is issued by the request? and would you know how the SQL statement would have to be constructed to result in that what would be more useful? * reinhard thinks it should probably be an outer join or somehting but not sure if all db's support that ok i'll try to get the debug and test sql statements in pg *** nickr__ has joined #gnuenterprise thanks what would be the smallest debug-level to get sql statement without everything else ? I usually searchfor the sql statements in postgres' own log files i think you need debug level 5 for sql statements :q err wrong window *** nickr has quit IRC *** sjc has quit IRC *** johannesV has quit IRC *** johannesV has joined #gnuenterprise *** sjc has joined #gnuenterprise lekma: if you have a really easy reproducible test case, can you please try what changes if you change in geasSession.py after line 156 "elements = string.split (propertyname, '.')" insert the line "if len (elements) > 1: return None" ok you might not be able to use indirect fields in sort ordr and conditions then but just to see what it would change well i stoped syncing with svn to avoid dirty read pbs, so in line 156 of geasSession.py i don't have the same, would you give me the method name pls __getFieldname at the very start after elements = ... ok found it however I still believe that an outer join would be much much better does anybody know how the different db's implement outer joins? and is gnue-common's dbdriver system capable of doing them? bbl lunch reinhard: doesn't work error: column "none" does not exist i think the correct sql would be LEFT OUTER JOIN\ i think the correct sql would be LEFT OUTER JOIN but i don't know if other dbs handle this back for a minute (toast is in the machine) thanks for testing re outer join, how would the full SQL statement look like? (for example) or do you have any pointer how OUTER JOIN syntax is? hmmm... I guess I could search in the postgres docs myself... seems like OUTER JOIN is a fairly standard feature of databases pg, mysql, and firebird support it even sqlite supports left outer join (but not right outer join) so it should not be a too big problem hmmm except maybe is outer join possible over more tables? i want A outer join B, A outer join C, and C outer join D in the same SQL statement sorry i was away i don't know if outer join would solve my problem... i'm testing different sql statement right now cause it seems the error is coming from and AND clause cause it seems the error is coming from an AND clause well one part of the AND clause should actually be the LEFT OUTER JOIN ... ON... clause (AFAICT now after having read a bit about JOIN syntax ) that's what i just found out that's it the AND clause : AND (t1.gnue_id = t0.sales_saleOrderRef) should not be there if i delete it and replace FROM clause by :FROM sales_SaleOrders t0 LEFT JOIN sales_SaleOrders t1 ON (t1.gnue_id = t0.sales_saleOrderRef) it works (please note that fk is on same class) but the pb is the same if fk is on an other class (i tested it) lekma: yes lekma: thanks for testing, I will look what we can do on this thx lekma: what will you do about dirty reads? should we fix the outer join stuff for current svn or for last release? shall we revert the dirty read changes so you can use svn again? i'm a bit afraid about deleting NOT NULL constraints in db, and the modif in reading gcd stuff... if nobody uses dirty reads atm i would be glad if you revert it so that i can svn up again ok so you will wait for the "clean" solution i will try to hold others as long as i can :) good wish you luck in this :) bbl *** neilt has joined #gnuenterprise good morning *** mnemoc has joined #gnuenterprise bbl *** kilo has quit IRC hi neilt reinhard: hello reinhard: if you have time I have a couple of questions? neilt: just a sec, i am on the phone cool neilt: sorry, still on the phone :) ok now i am here please ask whatever you want to know do you have a tiome schedule for version 4 appserver? yes ASAP :) is that realistic? we are already working on it for all the functions we want to have in 0.4 with acceptable stability it might be a month or so do you thing 1 week, 1 month or ? there will be prereleases with (hopefully) good stability but not yet all functions in ROADMAP excellent reinhard, i've just reverted the dirty-read stuff successfully ... are there any major issues with using appserver in a production CRM/Sales Order tracking process? will do some cleanup (remove debug-code) and then commit it what is it what you would regard most urgend of the 0.4 points? urgent for major issues you might really want to ask lekma reinhard: re 4.0 stability and security as he uses appserver in a production evironment with 10 users รก 5 connections 10 hour a day actually neither stability nor security are issues on the roadmap for 0.4 AFAICT does lekma use it at his company or a client company? there are no issues with stability currently AFAICT neilt: client company lekma: thanks for jumpint in :) jumping sigh, can't type any more... reinhard: from TODO The 0.4 release will add some features to make Appserver usable in production environments with limited security requirements. oh is that bad English? reinhard, johannesV : i may be wrong but it seems the memory leak we've seen, is back. But only when running server in debug mode. actually I wanted to say something like "production environments where security is not an issue" maybe the gDebug thingy... lekma: might well be, we didn't investigate too much in debug mode neilt: I don't want to say that security is low on our priority list i forgot the server was running in debug mode... and boom it's just that a lot of things are higher... reinhard: security is never not an issue. what is the current state of security you can have a user database with user name, password, and a list of classes the user may access this is very very primitive and only a temporary solution reinhard: what is the security in regards to processes that are not clients? For Example, wrt server security against attacs it's problable that things like connection hijacking etc are possible is the DB open to all connections or do they have to have a password also/ db can have a password you can set up the db with or without password however you like is anyone running the server with passwords? and you can configure appserver to log onto the db with a password i don't know personally, i don't (it's easier as my db isn't open to the internet) lekma: can you join #gnue? reinhard: you too if you have time neilt: i am alone in #gnue oops sorry *** lekma has quit IRC *** lekma has joined #gnuenterprise *** jamest has joined #gnuenterprise *** wt has quit IRC *** jamest has left #gnuenterprise *** R45 has quit IRC *** R45 has joined #gnuenterprise *** neilt has quit IRC *** dcmwai has joined #gnuenterprise johannesV: is the change of sort order upwards compatible? i.e. can i still do find ('address_person', sortorder = ['property1', 'property2']) ? reinhard, yes you can have you read the mail ?= if so, i probably should explain it a bit better then ... oops sorry using your example would be treated as [('property1', False), (property2, False)] i see you answer that question in your mail must have scrolled over it when reading ok, great, so my english isn't that bad :) can i also do mix it up ? sortorder = [('foo', True), 'bar'] yes you read my mind, don't you? :) haven't tried yet but looks crazy ... just a sec ...johannesV: haven't tried yet didn't ou write the program?? ;-) *** titopbs has joined #gnuenterprise hmm, well i did, but who said i should know what it's gonna do ? reinhard, you *can* mix it up ! cool hmm, i did a really defensive job then :) but if you look at 'geasSession.py' line 370 you can see it every item of the order-sequence will be extended with a fallback if it's missing so, i'll try to create a test-case for the LEFT JOIN thingy johannesV: the failed dirty read approach is reverted now, correct? yes, it's reverted so lekma could svn up again in his test environment yeah, but he better updates his test-environment and do some tests before taking this svn version into production johannesV: yes i know I take that for granted ;-) :) :) *** jamest has joined #gnuenterprise *** btami has quit IRC *** jcater has joined #gnuenterprise *** kilo has joined #gnuenterprise malek == lekma, correct? yes :) old nickname that sticked brb ok, i've a test-case for joins available now ... this is quite scary ... :) we really *need* that join-patch *** wendall911 has joined #gnuenterprise *** fx has joined #gnuenterprise *** fx has left #gnuenterprise *** cilkay has quit IRC *** cilkay has joined #gnuenterprise *** holycow has joined #gnuenterprise *** cilkay has quit IRC *** cilkay has joined #gnuenterprise *** btami has joined #gnuenterprise bye *** lekma has quit IRC bbl *** johannesV has quit IRC *** johannesV has joined #gnuenterprise hmm, is there any chance for a python class to implement some code which get's executed whenever it's involved in a "x is y" statement ? like: if foo is None: ..... "is" only applies to None and that's pretty specific statement what are you trying to accomplish? i try to create a class which provides attribute access like "foo.bar.baz" but if bar is None .baz can't be evaluated so it just should return None i've created a class called NullObject which has __getattr__ () returning itself, for a given amount of iterations and if the max is reached it returns None so it can handle foo.bar.baz, return None at the end but if the number of steps (like foo.bar) is lower than the max i've got a little problem with statements like if foo.bar.baz is None: so that's why i'm looking for something like __is__ but since "is" is the identity-operater it looks like i do have a problem *** jamest has left #gnuenterprise or do you have any idea ? i could change all code of the type "if x is None" or "if x is not None" ... but that could be quite a lot johannesV: why doesn't NullObject simply return None on __getattr__? because it cannot handle "foo.bar.baz" cause foo.bar would return None so foo.bar .baz ---> None.baz which is not allowed ah ok what about if i could get the number of "planned" __getattr__-calls NullObject knows what type it is of of course it does know ... ? and can look in the class dicitionary if it should return a "None" (for normal properties), another NullObject (for reference props) and an exception (for procedures) i mean what appserver class it stands for hmm that sounds like a good idea will try that bbl but have to do a little sort on joined tables first *** jamest has joined #gnuenterprise hahaha Linux and Windows - I want the best from both worlds so I take Linux reinhard: left outer joins and the new language interface are working ! seriously? yes did you test outer joins with different db's? but i need to tweak geasFilter and geasSession a bit no, not yet, but i will within the next 15 minutes cool (since i've a test-case with gcd/gld and .py) (will commit that into samples/testing/joins) *** kilo_ has joined #gnuenterprise *** kilo has quit IRC reinhard, it's working with sqlite ! reinhard, it's working with mysql reinhard, it's working with firebird great if i would remember how to set the maxdb online i could test this db too johannesV: i'm not especially worried about maxdb well, but i am curious about *lol i would be quite confused if maxdb missed a feature that even sqlite has well off to tv me too will commit tomorrow johannesV: 21:45 - your time is running out ;-) right good night good night *** johannesV has quit IRC *** btami has quit IRC *** reinhard has quit IRC *** nickr has quit IRC *** nickr has joined #gnuenterprise *** kilo_ has quit IRC *** jamest has left #gnuenterprise *** dcmwai has quit IRC *** jcater has quit IRC *** gnardo has joined #gnuenterprise *** nickr has quit IRC *** XEN has joined #gnuenterprise *** holycow has quit IRC *** titopbs has quit IRC *** XEN has quit IRC *** sjc has quit IRC *** nickr__ has joined #gnuenterprise *** nickr has quit IRC *** jamest has joined #gnuenterprise *** jamest has quit IRC *** jamest has joined #gnuenterprise *** XEN has joined #gnuenterprise *** XEN has quit IRC *** wendall911 has quit IRC *** holycow has joined #gnuenterprise *** jcater has joined #gnuenterprise *** jamest has quit IRC *** jcater has quit IRC