[
https://issues.apache.org/jira/browse/DERBY-6340?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13789164#comment-13789164
]
Knut Anders Hatlen commented on DERBY-6340:
-------------------------------------------
DERBY-5901 might not be an issue for the implicitly created functions after
all. The built-in conversion functions (INT, CHAR, DOUBLE, ...) have special
handling in the parser, so they don't behave like the SIN function that's used
in the example in DERBY-5901.
Since the names of the built-in types are reserved keywords, user-defined
functions with the same name as a built-in type need to be quoted in order to
get CREATE FUNCTION to accept them. Conversely, when invoking a function with
the same name as a built-in type, the parser always knows whether to use the
built-in one (if the function name is a keyword) or look for a user-defined one
(if the function name is an identifier).
That is, {{VALUES INT(1)}} will always invoke the built-in function, regardless
of the existence of a user-defined function with the same name in the current
schema. And {{VALUES "INT"(1)}} will never invoke the built-in function, as the
function is referenced with an identifier rather than a keyword, regardless of
the existence of a user-defined function with that name.
So given the statement
CREATE TYPE SSN AS INT
a new function called "INT" will be created in the current schema. But its
existence will not affect any existing callers of the INT built-in conversion
function, I believe.
That doesn't help with the other issue, though. If you create a second type
that also maps to INT, such as {{CREATE SHOE_SIZE AS INT}}, it will attempt to
create yet another "INT" function, and Derby doesn't support that kind of
overloading yet.
In short, I think that means we could allow CREATE TYPE AS statements without
<cast to source> without worrying about DERBY-5901. But if we create a second
type in the same schema with the same source type, that second CREATE TYPE AS
statement must include <cast to source> and specify a non-conflicting name as
long as function overloading isn't implemented.
> Add support for CREATE TYPE AS <existing type> (synonym types)
> --------------------------------------------------------------
>
> Key: DERBY-6340
> URL: https://issues.apache.org/jira/browse/DERBY-6340
> Project: Derby
> Issue Type: Improvement
> Components: SQL
> Reporter: Dyre Tjeldvoll
> Assignee: Dyre Tjeldvoll
> Attachments: CreateTypeAs_fs_draft_2.html, CreateTypeAs_fs_draft.html
>
>
> The SQL standard (2003) chapter 11.41 <user-defined type definition> allows
> the creation of synonyms or aliases for an existing type: CREATE TYPE AS
> <predefined type>. By allowing this in Derby we would simplify migration
> from, and interoperation with, other databases.
--
This message was sent by Atlassian JIRA
(v6.1#6144)