Subject Re: [firebird-support] UDF definition metadata on FB 2.0.3
Author Tom Munro Glass
On Wed, 17 Oct 2007, Helen Borrie wrote:
> At 12:51 PM 17/10/2007, you wrote:
> >But shouldn't LOWER be "LOWER"?
>
> If you defined it as "LOWER" then it is "LOWER". The database engine
> itself isn't capable of displaying anything on a screen. Did you do
> the system table queries?
>
> FYI, if an identifier is created using the double-quotes convention,
> it makes the identifier name case-sensitive. By contrast,
> identifiers created without the quotes are case-insensitive, i.e.,
> regardless of how you state them in your DDL, the engine stores them
> as upper-case. The engine will tolerate references to case-sensitive
> upper-case identifiers *without* the quoted identifiers, unless the
> identifier is also a reserved word.
>
> If you had defined your UDF with quotes, using "lower" instead of
> "LOWER", you would see lower in the displays, not LOWER. You could
> test the behaviour of your particular toolset by declaring (and
> dropping again afterwards) the UDF as "lower" (using quotes).
>
> I'm sure this couldn't possibly be confusing. ;-)
>
> >Anyway, I need to extract the metadata for the complete database, so
> >would you expect a tool like IBOConsole to do this correctly?
>
> Tools of the kind that IBOConsole is would be expected to extract
> metadata correctly. But "extracting metadata" and "displaying stuff"
> aren't the same job. We usually associate "extracting metadata" with
> an output script that can be used to reconstruct a database. So look
> at the extracted metadata and see what the tools do with the quoted
> identifiers. They are right if they put them in for identifiers that
> were declared with d/quotes, and wrong if they leave them out.
>
> In addition, it wouldn't be an absolute surprise if IBOConsole gave
> you metadata from a Fb 2 database with flaws since, as far as I know,
> nobody has compiled that program in recent years. You would want to
> be using a build over the underlying IBO version 4.8 data access
> components that work with Fb 2 databases. (If you have done such a
> build, then it should be reliable; although I don't know that
> IBOConsole was ever famous for extracting metadata in a usable order,
> i.e., dependency-aware.) If IBOConsole depends on its programmer's
> "hard-coded" knowledge of the structure of the system tables then,
> theoretically, it would only be "reliable" with a v.1.5 or earlier
> database.
>
> (I don't know how IBOConsole goes about the task of extracting
> metadata, btw. It's a derivative of a really klutzy piece of
> programming called IBConsole, written by a Borland trainee and
> distributed with the IB 6 beta in the milliennium year. In
> converting it to use the IBO data access layer, IBOConsole's author
> Lorenzo Mengoni did improve the original code in some places. It was
> a long time ago.)
>
> I use IB_SQL (always the latest build) for metadata extraction. the
> -x (extract) switch of isql does a good job, too. I just like
> IB_SQL's tool because it gives me alerts at the end of the script for
> things it is suspicious about. Other utility programs provide
> similar tools as well and the same goes for them: make sure you use
> a version that supports Fb 2.
>
> ./heLen
>
Thanks Helen and other for feedback on this - clearly IBOConsole is the
problem, so I will try other tools including FlameRobin.

Regards
Tom