Blog This!   Lee Geistlinger's Web Log
Blog Home
Blog Archives
LittleGhost Home

E-mail: geistlinger AT gmail.com

Loading
Pic 'O the Day
Top 10 Lists
Everyone loves lists
Reviews
Books, Movies and so on
Blogroll
Feed Me!

XML Feed

Feeds I Read

My Online Aggregator

Theme
• Default
• Spring
• Summer
• Autumn
• Winter
• Black & White
• Gray & White
• MT-ish
• Classic
Listening To...
Evidence of Efforts

This page is powered by Blogger. Isn't yours?

Valid CSS!

[Valid RSS]

Recent Posts
 Tuesday, May 04, 2004
mySQL/Perl Gripes

Last entry I whined about Perl's appalling lack of a trim() function.

I forgot to add another Perl pet peeve: No comment blocks.

With most languages, you can place a "/*" before a code block and "*/" after the code block and have all lines - one to (no limit) commented out. (Note: Hopefully, it's understood that the code comment open/close characters are sans quotation marks...).

Perl, in its infinite wisdom, does not allow this.

Each line must be commented with a pound sign: #

Example:


=======
PHP
=======
/*
// all five lines here are commented out
$myVar = " Foo Bar ";
$myVar = trim($myVar); // now "Foo Bar"; full trim
$myVar = ltrim($myVar); // now "Foo Bar "; left trim
$myVar = rtrim($myVar); // now " Foo Bar"; right trim
*/

======
Perl
======
# Note how I have to prepend EACH line with the pound sign,
# even multiple lines of comments, such as these two....
# $myVar = " Foo Bar ";
# $myVar =~ s/^\s+|\s+$/; # returns "Foo Bar"


OK, no big dealie for these examples, but let's take a real-world Perl example I was just working on.

I was doing a dataload, and - before I actually fired the SQL - I had several blocks of processing code and was printing out this or that line so I could see all was well.

Once we get to that point, then fire SQL.

I got to that point, but something barfed on the DB side. So I wanted to back out this or that block of processing code and print some additional debug statements.

But - to cut out any code block - I had to either:

Again - with most coding languages, you just wrap the code block in the "begin/end comment" characters. Done.

Ick. I think (not certain...) that Perl 6 is supposed to support multi-line comment tags, but ... too late. Lots of pre-v6 code out there that doesn't have this support. Lots.

MySQL Rant

While I've gotten over my initial reaction to mySQL ("It's not a real database! Hell, Access has better ANSI support!") and have grown quite fond of this DB, it still keeps biting me in the ass.

Note: I'm currently running v3.23x, simply because that's what's supported out on shared hosting sites (that I have to work with). Version 4 fixes - to a degree - the problem I'm going to bitch about right now.

I have square marks on my forehead from banging my head on the keyboard trying to make the following work in mySQL

UPDATE
table_1 (column_name)
SET
table_1.column_name = table_2.another_column_name
WHERE
table_l.id = table_2.id

Trivial, ja?

Nope.

Can't do multi-table updates in pre v4.0.4 mySQL.

Ouch.

So, I had to write a script that pulled data from second table, stored (array) and then updated the first table.

Yes, this is solved now - in the v4 types, but subselects still are not (v4.1 will address this; won't be a stable release until about November 2004).

In other words: MySQL is making great strides, but v3.23 - the current standard for most sites today - "offers" significant limitations.

But mySQL is moving in a good direction. Good. Because it does have some nice features.

Please just give me what I expect from any database!

End rants.

- Posted by Lee at 1:01 PM Permalink #
^Top | Top Ten Home | Blog This! Home | Blog This! Archives