Hi, Kirill,

1. ROWID in Oracle represents a physical reference to a particular row
in a table. An analogous construct in Ignite would be a combination of
groupId and link (partition + page + item inside the page), but the
link differs between different nodes, I think it's not what you
expect. Our goal is to keep the Ignite SQL dialect concise and avoid
importing all the built-in functions we can see in other DBMSes. If
it's an ANSI standard - it's ok to introduce a function. If it's not a
standard, but commonly used by other DBMSes - sometimes it's ok too.
But ROWID looks like an entity absolutely incompatible with Ignite.
You can implement it in your code as a UDF or extension.
2. ROWNUM it's another Oracle-only column with strange behaviour.
Mostly used for limiting query results (although we've got the LIMIT
keyword for this purpose). Moreover, it introduces constraints
regarding data distribution - we cannot compute ROWNUM across
distributed nodes. I think it makes more sense to support the standard
SQL window function ROW_NUMBER(), but not Oracle-specific ROWNUM.

чт, 26 февр. 2026 г. в 22:32, Vladislav Pyatkov <[email protected]>:


>
> Hi,
> I have an opinion.
>
>    - The rowId could be a way to retrieve an entry for the table by primary
>    key, whether the table has a single primary column or multiple ones.
>    Currently we have a pseudo-column _key, but it fits for an Ignite-aware
>    client. It is difficult to imagine using it in any JDBC client.
>    - About rowNum, I do not have a strong opinion, but if Oracle has this
>    ability, why do we not have the same?
>    But I think it's based on window functions, which are not supported
>    currently.
>
>
> On Thu, Feb 26, 2026 at 12:12 PM ткаленко кирилл <[email protected]>
> wrote:
>
> > Hello, igniters!
> >
> > To migrate a project to Ignite 2 (using Calcite), I'm missing two
> > pseudo-columns like in Oracle: rowid[1] and rownum[2]. Since it's not an
> > ANSI standard, they're missing, as expected.
> >
> > But I really need them, as there's some legacy code that I can't change.
> >
> > Any objections to me adding them?
> > If so, why, and what alternatives are there?
> >
> > [1] -
> > https://docs.oracle.com/en/database/oracle/oracle-database/26/sqlrf/ROWID-Pseudocolumn.html
> > [2] -
> > https://docs.oracle.com/en/database/oracle/oracle-database/26/sqlrf/ROWNUM-Pseudocolumn.html
> >
>
>
> --
> Vladislav Pyatkov

Reply via email to