Monday, October 16, 2006

Eclipse's Achilles' Heel

I've been on the Bugzilla mailing list for Eclipse bug #35779 for some time now. Guess which bug that is? Here's a hint: it was opened in March of 2003. Yes, it's our favorite bug, "Text Viewer and Editor needs to support word wrap".

Yesterday I saw on the mailing list that, to quote the dev assigned to this bug, "Sorry, but this won't make it into 3.3." Well, that's too bad. But wait—since the opening of the bug, we've been told:

  • "To be investigated after 3.0"
  • 'I will add this one as an investigation item to the 3.2 plan."
  • "Sorry, but this won't make it into 3.2."

And now, "Sorry, but this won't make it into 3.3." How very frustrating.

Apparently the difficulty with solving this problem intelligently lies in the fact that

it's not so simple to extend the rendering because this code is spread all over the place and somewhat coupled with the model, etc., so changes give a headache.

All right, very well, so it won't get into 3.3. But when will we get it? Eclipse is a very cool IDE: very extensible, useful, smart. But no line wrapping? Both VI and Emacs have that (though I will admit that Emacs' implementation of it is abominable). All of Microsoft's IDEs have had line wrapping for ages. jEdit has it (and I think its implementation is the best I've seen, but elastic tabstops would sure be cool, though I understand it's still a relatively new and generally unimplemented and untested idea).

I'm sorry if I sound like a broken record on this, but line wrapping is a show-stopping feature for me, and it's all the more frustrating for me when an IDE which is so good in other respects is missing such a fundamental feature.

Tuesday, September 5, 2006

CFQUERYPARAM and IN/NOT IN clauses

I discovered today, to my unpleasant surprise, that there is apparently a limit to the number of elements there can be in an SQL IN/NOT IN clause using cfqueryparam. I'm not sure of the limit, but I had an IN clause with some 5,898 primary keys in it, and I consistently got this exception from CF:
The DBMS returned an unspecified error.

This suggests to me that perhaps the JDBC driver or MS SQL Server 2005 itself has a limit on the number of items in an IN clause. This post at HouseOfFusion suggests that Oracle has a limit of 1,000 items, and that MS SQL Server’s limit is something around 2,100 items.

My workaround was to loop over the list of 5,898 items individually, like this:
WHERE ID IN (
<cfloop list="#Arguments.IDs#" index="id">
#id#<cfif id neq ListLast(Arguments.ID)>,</cfif>
</cfloop>
)

It’s not the greatest thing ever, I know. Hopefully I can use <cfqueryparam/> instead of the raw value in it. That’ll be a test for later.

tags: , , , , ,