Todd
Many thanks for these useful pointers – I had thought of asking you for a hint of where problems can occur, but you beat me to it. At present I am just playing, to get the feel of what it can do, but when it gets to real data I will consider defensive measures – backups and change logs, for example. The application I am considering involves reading and storing quite large documents, which are input as XML. Presumably it would be safer to store the XML in the database. Similarly, with other complex objects, we could consider a hybrid system in which objects are serialized with some other mechanism, e.g. STON, and OmniBase is just used to store and manage them. All speculation until we try it out. Thanks again Peter Kenny From: Pharo-users <pharo-users-boun...@lists.pharo.org> On Behalf Of Todd Blanchard Sent: 25 June 2018 07:31 To: Any question about pharo is welcome <pharo-users@lists.pharo.org> Subject: Re: [Pharo-users] OmniBase for Pharo 6 I will just add that the failures I was experiencing involved storing "documents" with deep hierarchies of heterogeneous items. Something along the lines of EMR's (electronic medical records - which if you have any experience in that domain - are very complex). The failures would manifest as randomly thrown exceptions while trying to read a particularly large and complex hierarchy - which would result in documents missing segments when rendered. Rescuing the data took a couple weeks of constantly trying to read smaller chunks and retrying when exceptions were thrown. So I would include tests along those lines before trusting it with important data. The database I was working with was quite large when reads began to fail. On Jun 24, 2018, at 3:33 PM, Matias Maretto <mgmare...@hotmail.com <mailto:mgmare...@hotmail.com> > wrote: Thank you for the info Peter ; I have been working storing and retrieving data , everything works fine. I have an ODBPErsistDictionary with almost 20.000 objects on it, I really get sorprised of how fast can resolve "select:[] commands"; I know it is not related with the subjet we are working, but well 😊 _____ De: Pharo-users <pharo-users-boun...@lists.pharo.org <mailto:pharo-users-boun...@lists.pharo.org> > en nombre de PBKResearch <pe...@pbkresearch.co.uk <mailto:pe...@pbkresearch.co.uk> > Enviado: domingo, 24 de junio de 2018 05:54 p. m. Para: 'Any question about pharo is welcome' Asunto: Re: [Pharo-users] OmniBase for Pharo 6 Hi Matias (and EstebanLM) I have explained the problem with storing and retrieving Date. Looking through the OmniBase code in the repository, I see that there is a whole series of extensions for many of the standard classes, which provide methods for serializing and deserializing instances of those classes. The extension for Date class ignores the start time, and simply saves the day number; the retrieval method can only use the days, and so cannot take account of the offset for the time zone. If it is necessary to save and restore dates in a way which is time-zone sensitive, it will be necessary to modify the code for serializing dates to store day and offset. I have not yet worked out how the methods are structured, so I have not tried to recode, but all the methods I have looked at are only one or two lines, so it should not be difficult. Looking through the classes with extensions, I realise that we may need to check rather more examples to be sure that everything is handled correctly. I did one little test with String. The standard test in TestEquality just stores and retrieves ‘Hello World’. To check that it could handle other encodings, I tried the test with a German string encoded in utf8. This worked OK. So thus far everything is fine, but it would be a good idea to check correct retrieval each time we persist a new class of object. Best wishes Peter Kenny From: Pharo-users <pharo-users-boun...@lists.pharo.org <mailto:pharo-users-boun...@lists.pharo.org> > On Behalf Of Matias Maretto Sent: 23 June 2018 19:40 To: Any question about pharo is welcome <pharo-users@lists.pharo.org <mailto:pharo-users@lists.pharo.org> > Subject: Re: [Pharo-users] OmniBase for Pharo 6 Hi Peter, thanks for the news. I have been doing some tests, persisting diferent kind of objects and until now everythings works fine. If you find anything else, please let me now. Thanks. Matias. _____ De: Pharo-users <pharo-users-boun...@lists.pharo.org <mailto:pharo-users-boun...@lists.pharo.org> > en nombre de PBKResearch <pe...@pbkresearch.co.uk <mailto:pe...@pbkresearch.co.uk> > Enviado: sábado, 23 de junio de 2018 05:18 p. m. Para: 'Any question about pharo is welcome' Asunto: Re: [Pharo-users] OmniBase for Pharo 6 Hi Matias A further report. I have worked through the test suite in OmniBaseTests, running each test individually. I now have all green except two – testEquality, which fails on the storage and retrieval of ‘Date today’, and testGC, which fails for reasons I have not yet found. The worrying thing is the apparent change in the instance variables of Date – see my exchange with Alistair Grant in another thread. I shall try to work through the way OmniBase saves and resets the instvars, just in case it might be a general problem. I shall let you know of anything else I find. Peter Kenny From: Pharo-users <pharo-users-boun...@lists.pharo.org <mailto:pharo-users-boun...@lists.pharo.org> > On Behalf Of PBKResearch Sent: 23 June 2018 09:18 To: 'Any question about pharo is welcome' <pharo-users@lists.pharo.org <mailto:pharo-users@lists.pharo.org> > Subject: Re: [Pharo-users] OmniBase for Pharo 6 Matias Thanks. I have made this change, but it does not affect the tests I have run. I have focused on getting the test suite in OmniBaseTests to run. So far I still have 5 greens, 7 reds and one orange. The greens are all the first five test methods in the browser list; it seems it half fails on the sixth one (TestEquality), hence the orange, and then red for all the rest. One problem is that the test database is created at the start of the test suite, and then not removed at the end. This seems to mess up the next attempt to run the tests. I tried to run the OmniBaseTests>>#tearDown manually, but it fails, so I have to exit Pharo and delete the test database in Windows. I intend to continue running the test suite, but I shall run the tests individually, and put breakpoints in those that fail. I shall report here if I make any progress. Best wishes Peter Kenny From: Pharo-users <pharo-users-boun...@lists.pharo.org <mailto:pharo-users-boun...@lists.pharo.org> > On Behalf Of Matias Maretto Sent: 23 June 2018 01:37 To: Any question about pharo is welcome <pharo-users@lists.pharo.org <mailto:pharo-users@lists.pharo.org> > Subject: Re: [Pharo-users] OmniBase for Pharo 6 Peter: I think I found the problem. On ODBFileStream class >> accessModeReadOnly the "o" on "only" is not capital. It is ^#accessModeReadonly when should be ^#accessModeReadOnly ; so on the ODBWin32FileStream >> createOn: createMode: accessMode: shareMode: cacheMode: this part fails: accessMode = #accessModeReadOnly ifTrue: [acMode := 2147483648 "GENERIC_READ"]. So it cant open the users file for read. I have fix it and at least for now I didn't get any "block" error. _____ De: Pharo-users <pharo-users-boun...@lists.pharo.org <mailto:pharo-users-boun...@lists.pharo.org> > en nombre de PBKResearch <pe...@pbkresearch.co.uk <mailto:pe...@pbkresearch.co.uk> > Enviado: viernes, 22 de junio de 2018 10:39 p. m. Para: 'Any question about pharo is welcome' Asunto: Re: [Pharo-users] OmniBase for Pharo 6 Matias Thanks for the hints. I now have 5 greens, but all the rest are red. I am still getting the ‘File cannot be locked’ message. Are you doing better than that? I may try a few trials using it for real, rather than the test suite. Thanks again Peter Kenny From: Pharo-users <pharo-users-boun...@lists.pharo.org <mailto:pharo-users-boun...@lists.pharo.org> > On Behalf Of Matias Maretto Sent: 22 June 2018 22:54 To: Any question about pharo is welcome <pharo-users@lists.pharo.org <mailto:pharo-users@lists.pharo.org> > Subject: Re: [Pharo-users] OmniBase for Pharo 6 Hi Peter, yes I had the same error at the beginning. I have done 2 minor changes. Now it seems to be working fine (Although I am still running more tests). Here: ODBWin32FileStream >> closeHandle: aHandle "Close an open Win32 object handle, freeing any resources held by it. Once closed a handle is no longer valid. Answer whether the function succeeds. See Win32 SDK help for more information. BOOL CloseHandle( HANDLE hObject // handle of object to close );" "<apicall: ulong 'CloseHandle' (long) module:'kernel32.dll'>" ^ self ffiCall: #(ulong CloseHandle(long aHandle)) ODBWin32FileStream >> lockFile: aHandle offsetLow: loPos offsetHigh: hiPos lengthLow: loLength lengthHigh: hiLength "<apicall: long 'LockFile' (long ulong ulong ulong ulong) module: 'kernel32.dll'>" ^ self ffiCall: #(long LockFile #(long aHandle , ulong loPos , ulong hiPos , ulong loLength , ulong hiLength)) _____ De: Pharo-users <pharo-users-boun...@lists.pharo.org <mailto:pharo-users-boun...@lists.pharo.org> > en nombre de PBKResearch <pe...@pbkresearch.co.uk <mailto:pe...@pbkresearch.co.uk> > Enviado: viernes, 22 de junio de 2018 09:45 p. m. Para: 'Any question about pharo is welcome' Asunto: Re: [Pharo-users] OmniBase for Pharo 6 Matias I have just loaded Esteban’s package in a new Pharo 6.1 under Windows 10. I get an error message saying ‘File cannot be locked. Try again?’. When I select ‘no’, all tests are run and give red. Are you still running on win 7? If so, I must be doing something wrong. Can you give more details of the FFI corrections you made, please? Many thanks Peter Kenny From: Pharo-users <pharo-users-boun...@lists.pharo.org <mailto:pharo-users-boun...@lists.pharo.org> > On Behalf Of Matias Maretto Sent: 22 June 2018 21:07 To: Any question about pharo is welcome <pharo-users@lists.pharo.org <mailto:pharo-users@lists.pharo.org> > Subject: Re: [Pharo-users] OmniBase for Pharo 6 Esteban: it's working fine, I had to made a minor corrections on 2 FFI calls and now everithing seems to be working fine. For What I saw with Voyage-UnqLite only String Objects can be used to searilize; Omnibase allow to persist almost any kind of objects, thats the part I like about it. _____ De: Pharo-users <pharo-users-boun...@lists.pharo.org <mailto:pharo-users-boun...@lists.pharo.org> > en nombre de Esteban Lorenzano <esteba...@gmail.com <mailto:esteba...@gmail.com> > Enviado: jueves, 21 de junio de 2018 08:19 p. m. Para: Any question about pharo is welcome Asunto: Re: [Pharo-users] OmniBase for Pharo 6 I did it manually and I took like 5 min :P but this was really easy, just a bunch of FFI calls. Esteban > On 21 Jun 2018, at 15:31, Sean P. DeNigris <s...@clipperadams.com > <mailto:s...@clipperadams.com> > wrote: > > EstebanLM wrote >> I just made a “blind port”… migrated the old FFI to new UFFI > > Did you do this manually or use some migration tool? How long did it take? > > > > ----- > Cheers, > Sean > -- > Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html <http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html> Smalltalk - Pharo Smalltalk Users | Mailing List Archive forum.world.st <http://forum.world.st/> Pharo Smalltalk Users forum and mailing list archive. Pharo User Forum >