From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on polar.synack.me X-Spam-Level: X-Spam-Status: No, score=-0.3 required=5.0 tests=BAYES_00, REPLYTO_WITHOUT_TO_CC autolearn=no autolearn_force=no version=3.4.4 X-Google-Thread: 103376,c9d5fc258548b22a X-Google-NewGroupId: yes X-Google-Attributes: gida07f3367d7,domainid0,public,usenet X-Google-Language: ENGLISH,ASCII-7-bit Path: g2news1.google.com!news3.google.com!feeder.news-service.com!newsfeed.straub-nv.de!uucp.gnuu.de!newsfeed.arcor.de!newsspool4.arcor-online.net!news.arcor.de.POSTED!not-for-mail From: "Dmitry A. Kazakov" Subject: Re: How do I write directly to a memory address? Newsgroups: comp.lang.ada User-Agent: 40tude_Dialog/2.0.15.1 MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Reply-To: mailbox@dmitry-kazakov.de Organization: cbb software GmbH References: <67063a5b-f588-45ea-bf22-ca4ba0196ee6@l11g2000yqb.googlegroups.com> <31c357bd-c8dc-4583-a454-86d9c579e5f4@m13g2000yqb.googlegroups.com> <05a3673e-fb97-449c-94ed-1139eb085c32@x1g2000yqb.googlegroups.com> <4d4c232a$0$28967$882e7ee2@usenet-news.net> <4D4D6506.50909@obry.net> <4d50095f$0$22393$882e7ee2@usenet-news.net> <4d6d56c4$0$11509$882e7ee2@usenet-news.net> <16u9ka51wbukr$.1fj2sb73j9rv6.dlg@40tude.net> <4d6d627b$0$11509$882e7ee2@usenet-news.net> <29c4lixc0ght$.14kkfz1kij135.dlg@40tude.net> <4d6d6afb$0$11509$882e7ee2@usenet-news.net> <1gz9984wwizn5.r619fw4z9o56.dlg@40tude.net> <4d6e5614$0$21954$882e7ee2@usenet-news.net> <4d6e64f5$0$21954$882e7ee2@usenet-news.net> <4d6e811b$0$21956$882e7ee2@usenet-news.net> Date: Wed, 2 Mar 2011 19:04:12 +0100 Message-ID: <1bnko88u7cfiu$.1p6595qf6pjfn$.dlg@40tude.net> NNTP-Posting-Date: 02 Mar 2011 19:04:08 CET NNTP-Posting-Host: b34b6fc4.newsspool2.arcor-online.net X-Trace: DXC=T<@4Y8NY1[ On Wed, 02 Mar 2011 12:40:26 -0500, Hyman Rosen wrote: > On 3/2/2011 12:21 PM, Dmitry A. Kazakov wrote: > >> Of course it does. No Ada programmer would add anything to an actual >> parameter. > > The GNATColl code did so. Because they interfaced a PostreSQL client. >> Things are passed as-is in Ada. It was a requirement of untyped >> SQL to quote strings in a statement > > This is nonsense. Ada has exactly the same requirement. > In Ada, you cannot write > Ada.Text_IO.Put_Line (Hello, world!); > you must write > Ada.Text_IO.Put_Line ("Hello, world!"); Hello world! is not a string. > SQL is a type of programming language, and SQL statements that > involve literal strings must have them be quoted. Literal strings need not be quoted. Quotes is an integral part of the literal. The resulting string does not have quotes. When an Ada subprogram is called no quotes are required as in your example with Put_Line. A string object is passed as-is be it a literal or not. But interfacing SQL requires quotes because it requires a conversion of a native string object to its would be equivalent textual representation in the SQL syntax. This is a source of errors as expected, because it is untyped. There is no way the program can be checked for type errors. Either random string represent a legal SQL statement of the semantics nobody can tell, or not. That is to happen at run time. > Programmers > sometimes construct SQL statements dynamically and interpolate > data as string literals into the SQL, and then those must be > properly quoted. Things they need not to do when they writing in Ada. > But SQL interfaces also grant the ability to > build SQL statements with placeholder parameters where values > for those parameters are passed separately when the statements > are executed, and in that case the parameters are simply passed > as-is with no quoting required. Nope. The DB driver converts data types with often unpredictable results. There are complex charts describing [always] partial correspondence between C and SQL types when parameters are bound. This is the essence of being weakly typed. >>>> And if the interface were typed that could never happen. >>> >>> What prevented the GNATColl authors from providing such an >>> interface? >> >> PostreSQL. > > No, because GNATColl provided an interface to Ada programmers. > That interface was free to use any Ada design methodology and > type design that its creators wished to use, regardless of the > requirements of the Postgres programming interface. There was no error in how GNATColl was used by the OP. So the design methodology has indeed payed off. -- Regards, Dmitry A. Kazakov http://www.dmitry-kazakov.de