Github user ChinmaySKulkarni commented on the issue:
https://github.com/apache/phoenix/pull/295
@JamesRTaylor Ok cool. I've made the changes so checks are inside
_ensureTableCreated_. Please take a look now.
One thing that's confusing me is that inside our _init_ method at the
moment, if an upgrade is not required, we create all other SYSTEM tables,
however we don't map them to the SYSTEM namespace at that point.
As of now, when the server gets connected to for the first time i.e. no
SYSTEM tables exist, we call
_ensureSystemTablesMigratedToSystemNamespace_, but this just creates the
HBase SYSTEM namespace and returns without migrating tables since they haven't
been created yet. However, later on when we do create other SYSTEM tables, we
aren't migrating them to the SYSTEM namespace right away.
Now, as per the current design, whenever another client with NS-mapping
enabled connects to the server, we will migrate these SYSTEM tables to the
SYSTEM namespace when _ensureSystemTablesMigratedToSystemNamespace_ is called
within _init_ (with my PR, this will be called inside _ensureTableCreated_ when
the table is SYSTEM.CATALOG and NS-mapping is enabled, instead of in _init_).
My question is, shouldn't we map SYSTEM tables to the SYSTEM namespace
immediately after creating them?
---