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?
---