THE SAGA: “The Features I Suggested, Oracle Implemented — A Personal History”
This is a five-part series about two Oracle SQL features introduced in Oracle Database 23ai that are strikingly similar — in concept, motivation, and syntax — to suggestions I posted in the Oracle Community forums in July 2016, nearly a decade before they were implemented.
Also on July 2, 2016 — the same day I posted the GROUP BY OTHERS idea — I posted another suggestion to the Oracle Community: “Oracle Tagging for Objects”.
Here’s what I described:
“It’s more than comments, it consists in add indexable keywords that enable easily locate tables or other objects in database, like Mac OS and other systems allow to tag files.”
I proposed a TAGS keyword for DDL, with this example syntax:
CREATE TABLE example (a NUMBER, b NUMBER) TAGS ('Transactional'[,...]);
CREATE SEQUENCE seq_exemp ON example TAGS ('Transactional');
CREATE INDEX idx_oltp ON example TAGS ('Transactional');
And a way to query tags:
SELECT OBJECT_NAME, OBJECT_TYPE, TAG
FROM DBA_TAGS
WHERE TAG = 'Transactional';
I also proposed that tags could have key-value form:
TAGS ('Transactional', 'John');
Now look at Oracle 23ai’s Annotations clause, introduced in 2024:
CREATE TABLE example (a NUMBER, b NUMBER)
ANNOTATIONS (Transactional, Owner 'John');
SELECT object_name, annotation_name, annotation_value
FROM user_annotations_usage;
The concept: identical. The syntax: nearly identical. The query dictionary view: the same idea. The name changed from TAGS to ANNOTATIONS, the keyword changed from TAGS(...) to ANNOTATIONS(...), but everything else maps directly.
My 2016 idea was posted eight years before the implementation. The Oracle Ideas forum was active. People voted on ideas, product managers read them.
A mention in the documentation would be nice, nothing more. I think that’s fair, even for an idea implemented a decade later. Maybe especially for one implemented a decade later. Don’t you think?
Link to my original 2016 post: https://forums.oracle.com/ords/apexds/post/oracle-tagging-for-objects-9158
