Xref: utzoo comp.databases:3061 comp.software-eng:1789 Path: utzoo!attcan!utgpu!jarvis.csri.toronto.edu!rutgers!tut.cis.ohio-state.edu!ucbvax!mtxinu!rtech!squid!robf From: robf@squid.rtech.com (Robert Fair) Newsgroups: comp.databases,comp.software-eng Subject: Re: 4GL and Application Prototyping in Databases Keywords: 4GL DBMS prototype maintainability OSL QBF INGRES Message-ID: <3227@rtech.rtech.com> Date: 24 Jul 89 18:33:52 GMT References: <378@proexam.UUCP> <3190@rtech.rtech.com> Sender: news@rtech.rtech.com Reply-To: robf@squid.UUCP (Robert Fair) Organization: Relational Technology, Inc. Lines: 101 >From rtech!mtxinu!ucbvax!tut.cis.ohio-state.edu!rutgers!aramis.rutgers.edu!paul.rutgers.edu!yes.rutgers.edu!emuleomo Mon Jul 24 10:52:03 PDT 1989 > >In article <3190@rtech.rtech.com> Robert Fair writes, > >>What do you find missing ? >>OSL/4GL has: >>- All of SQL >>- Practically all the FRS/screen handling constructs from ESQL >>- Very high level constructs for screen handling, master/detail queries etc >>- Easy interfaces to other INGRES systems, plus the O/S >>- Pure 4GL procedures and frames, plus 3GL interface >>- plus 3GL-style flow control [IF/THEN/ELSEIF/ENDIF WHILE/DO/ENDWHILE] if > >you want it. > >What I find missing is this.. >1) You cannot use an SQL CURSOR in an ESQL/C proc called from an ABF frame. > Any attempt to do this results in an "Access violation in running image" > error. This was an error that also plagued the entire CS541 graduate class > in rutgers in the fall of '88. We have many users who successfully use ESQL/C cursors called from an ABF frame. There was a problem with dynamic linking in some early ports of 5.0 which failed with the Go option. The easy workaround was to Image the application, and regardless the problem was fixed way back. What version of INGRES are you on ?? >2) When I do master/detail queries and there is no next row, Ingres prints > "no next row" as the message. I have no choice of printing the message > I want. The whole point of a 4GL is that it is supposed to provide default error handling in cases like this. Why is the message so horrible ? >3) Also I cannot do a "previous" operation to see the previous row! This can > be very irritating, especially if you are converting a popular application > from lowly dBASE on a PC to multi-user Ingres on a UNIX box. This is not a problem specific to OSL - see all the recent mail recently about using tablefields etc as workarounds. >4) "Resume menu" does not work in OSL but works fine in ESQL/C. RESUME MENU works fine in current INGRES 5 and 6. People often get confused about when you can use this (for example you can't in a MENUITEM statement, since you are already on the menu it doen't make sense to resume to it) >5) Since OSL code is converted to EQUEL, why can't we embedd EQUEL statements > in OSL? That would have been REALLY NEAT!. OSL is no longer converted to EQUEL, it either gets interpreted for "Go" or is directly compiled to "C" for "Image". >I saw a DEMO of Ingres 6.0. I must say it looks good. However, I have not yet >used it. >>In most cases row level locking is not a big win - see the recent >>press comparing INGRES & Oracle, what happens is that the locking overhead >>increases so much with row locking that it cancels out the benefits >>of higher concurrancy, it turns out most often page locking is the >>best compromise [for those who don't know INGRES uses page or table level >>locking, as appropriate] > >I STRONGLY FEEL that row level locking is ESSENTIAL in a highly concurrent >application. If a DBMS does'nt have it, how do you ensure that only ONE >user is currently updating a given record in a table without locking the whole >table?? or the whole page??. We want to lock that record and that record alone! You may "STRONGLY FEEL" this but empirically this is much less important than other factors like disk throughput, caching etc. Page locking still gives you plenty fine granularity for most highly concurrent applications. >>INGRES has very dynamic ability to change the structure of tables, using >>the MODIFY command. If you want to add/delete whole columns from the >>database schema [SQL's ALTER TABLE] it can be done with about 3 regular >>SQL statements. > >Suppose you want to change a c10 fld to c20 or to c8 ?? What do you do? No problem, just use the regular built-in type conversion operators. There is an INGRES technical note describing all how to do this, as well as a section in the DBA Guide about it. >It seems like a strange OMISSION since the code can be written in >a few hours by RTI programmers! Thats the whole point - its really simple to create your own customized one, so other things which provided significant new functionality (like database procedures, popup windows etc) had higher priority. On your other complaints: If you have a problem or want to suggest an enhancement, call up RTI Tech Support through your contact - all enhancment suggestions are recorded (they're called SIRs in RTI-ese) and populer ones often get implemented. For example, most of the recent changes in ABF were prompted by user requests, from invisible fields through library support. Robert Fair Technical Support Relational Technology, Inc Disclaimer: These opinions are mine alone, and do not represent my employer, RTI, in any way.