You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@phoenix.apache.org by ja...@apache.org on 2014/12/05 18:20:10 UTC

svn commit: r1643358 - in /phoenix: phoenix-docs/src/docsrc/help/ site/publish/ site/publish/language/ site/source/src/site/markdown/

Author: jamestaylor
Date: Fri Dec  5 17:20:10 2014
New Revision: 1643358

URL: http://svn.apache.org/r1643358
Log:
Document all view limitations, add cascade option to drop reference

Modified:
    phoenix/phoenix-docs/src/docsrc/help/phoenix.csv
    phoenix/site/publish/language/datatypes.html
    phoenix/site/publish/language/functions.html
    phoenix/site/publish/language/index.html
    phoenix/site/publish/multi-tenancy.html
    phoenix/site/publish/views.html
    phoenix/site/source/src/site/markdown/multi-tenancy.md
    phoenix/site/source/src/site/markdown/views.md

Modified: phoenix/phoenix-docs/src/docsrc/help/phoenix.csv
URL: http://svn.apache.org/viewvc/phoenix/phoenix-docs/src/docsrc/help/phoenix.csv?rev=1643358&r1=1643357&r2=1643358&view=diff
==============================================================================
--- phoenix/phoenix-docs/src/docsrc/help/phoenix.csv (original)
+++ phoenix/phoenix-docs/src/docsrc/help/phoenix.csv Fri Dec  5 17:20:10 2014
@@ -94,14 +94,15 @@ CREATE TABLE IF NOT EXISTS ""my_case_sen
 "
 
 "Commands","DROP TABLE","
-DROP TABLE [IF EXISTS] tableRef
+DROP TABLE [IF EXISTS] tableRef [CASCADE]
 ","
-Drops a table. When dropping a table, by default the underlying HBase data and index tables are dropped. The phoenix.schema.dropMetaData
+Drops a table. The optional CASCADE keyword causes any views on the table to be dropped as well. When dropping a table, by default the underlying HBase data and index tables are dropped. The phoenix.schema.dropMetaData
 may be used to override this and keep the HBase table for point-in-time queries.
 
 ","
 DROP TABLE my_schema.my_table;
 DROP TABLE IF EXISTS my_table;
+DROP TABLE my_schema.my_table CASCADE;
 "
 
 "Commands","CREATE VIEW","
@@ -125,13 +126,14 @@ CREATE VIEW my_view_on_view
 "
 
 "Commands","DROP VIEW","
-DROP VIEW [IF EXISTS] tableRef
+DROP VIEW [IF EXISTS] tableRef [CASCADE]
 ","
-Drops a view. When dropping a view, the table data is not affected. However, index data for the view will be deleted.
+Drops a view. The optional CASCADE keyword causes any views derived from the view to be dropped as well. When dropping a view, the actual table data is not affected. However, index data for the view will be deleted.
 
 ","
 DROP VIEW my_view
 DROP VIEW IF EXISTS my_schema.my_view
+DROP VIEW IF EXISTS my_schema.my_view CASCADE
 "
 
 "Commands","CREATE SEQUENCE","

Modified: phoenix/site/publish/language/datatypes.html
URL: http://svn.apache.org/viewvc/phoenix/site/publish/language/datatypes.html?rev=1643358&r1=1643357&r2=1643358&view=diff
==============================================================================
--- phoenix/site/publish/language/datatypes.html (original)
+++ phoenix/site/publish/language/datatypes.html Fri Dec  5 17:20:10 2014
@@ -1,7 +1,7 @@
 
 <!DOCTYPE html>
 <!--
- Generated by Apache Maven Doxia at 2014-11-18
+ Generated by Apache Maven Doxia at 2014-12-05
  Rendered using Reflow Maven Skin 1.1.0 (http://andriusvelykis.github.io/reflow-maven-skin)
 -->
 <html  xml:lang="en" lang="en">

Modified: phoenix/site/publish/language/functions.html
URL: http://svn.apache.org/viewvc/phoenix/site/publish/language/functions.html?rev=1643358&r1=1643357&r2=1643358&view=diff
==============================================================================
--- phoenix/site/publish/language/functions.html (original)
+++ phoenix/site/publish/language/functions.html Fri Dec  5 17:20:10 2014
@@ -1,7 +1,7 @@
 
 <!DOCTYPE html>
 <!--
- Generated by Apache Maven Doxia at 2014-11-18
+ Generated by Apache Maven Doxia at 2014-12-05
  Rendered using Reflow Maven Skin 1.1.0 (http://andriusvelykis.github.io/reflow-maven-skin)
 -->
 <html  xml:lang="en" lang="en">

Modified: phoenix/site/publish/language/index.html
URL: http://svn.apache.org/viewvc/phoenix/site/publish/language/index.html?rev=1643358&r1=1643357&r2=1643358&view=diff
==============================================================================
--- phoenix/site/publish/language/index.html (original)
+++ phoenix/site/publish/language/index.html Fri Dec  5 17:20:10 2014
@@ -1,7 +1,7 @@
 
 <!DOCTYPE html>
 <!--
- Generated by Apache Maven Doxia at 2014-11-18
+ Generated by Apache Maven Doxia at 2014-12-05
  Rendered using Reflow Maven Skin 1.1.0 (http://andriusvelykis.github.io/reflow-maven-skin)
 -->
 <html  xml:lang="en" lang="en">
@@ -536,21 +536,21 @@ CREATE TABLE my_schema.my_table ( id BIG
 <h3 id="drop_table" class="notranslate">DROP TABLE</h3>
 <!-- railroad-start -->
 <pre name="bnf" style="display: none">
-DROP TABLE [IF EXISTS] <a href="index.html#table_ref">tableRef</a>
+DROP TABLE [IF EXISTS] <a href="index.html#table_ref">tableRef</a> [CASCADE]
 </pre>
 <div name="railroad">
-<table class="railroad"><tr class="railroad"><td class="d"><code class="c">DROP TABLE</code></td><td class="d"><table class="railroad"><tr class="railroad"><td class="ts"></td><td class="d">&nbsp;</td><td class="te"></td></tr><tr class="railroad"><td class="ls"></td><td class="d"><table class="railroad"><tr class="railroad"><td class="d"><code class="c">IF EXISTS</code></td></tr></table></td><td class="le"></td></tr></table></td><td class="d"><code class="c"><a href="index.html#table_ref">tableRef</a></code></td></tr></table>
+<table class="railroad"><tr class="railroad"><td class="d"><code class="c">DROP TABLE</code></td><td class="d"><table class="railroad"><tr class="railroad"><td class="ts"></td><td class="d">&nbsp;</td><td class="te"></td></tr><tr class="railroad"><td class="ls"></td><td class="d"><table class="railroad"><tr class="railroad"><td class="d"><code class="c">IF EXISTS</code></td></tr></table></td><td class="le"></td></tr></table></td><td class="d"><code class="c"><a href="index.html#table_ref">tableRef</a></code></td><td class="d"><table class="railroad"><tr class="railroad"><td class="ts"></td><td class="d">&nbsp;</td><td class="te"></td></tr><tr class="railroad"><td class="ls"></td><td class="d"><code class="c">CASCADE</code></td><td class="le"></td></tr></table></td></tr></table>
 </div>
 <!-- railroad-end -->
 <!-- syntax-start
 <pre>
-DROP TABLE [IF EXISTS] <a href="index.html#table_ref">tableRef</a>
+DROP TABLE [IF EXISTS] <a href="index.html#table_ref">tableRef</a> [CASCADE]
 </pre>
 syntax-end -->
-<p>Drops a table. When dropping a table, by default the underlying <code>HBase</code> data and index tables are dropped. The phoenix.schema.dropMetaData may be used to override this and keep the <code>HBase</code> table for point-in-time queries.</p>
+<p>Drops a table. The optional <code>CASCADE</code> keyword causes any views on the table to be dropped as well. When dropping a table, by default the underlying <code>HBase</code> data and index tables are dropped. The phoenix.schema.dropMetaData may be used to override this and keep the <code>HBase</code> table for point-in-time queries.</p>
 <p>Example:</p>
 <p class="notranslate">
-DROP TABLE my_schema.my_table;<br />DROP TABLE IF EXISTS my_table;</p>
+DROP TABLE my_schema.my_table;<br />DROP TABLE IF EXISTS my_table;<br />DROP TABLE my_schema.my_table CASCADE;</p>
 
 <h3 id="create_view" class="notranslate">CREATE VIEW</h3>
 <!-- railroad-start -->
@@ -580,21 +580,21 @@ CREATE VIEW &quot;my_hbase_table&quot;<b
 <h3 id="drop_view" class="notranslate">DROP VIEW</h3>
 <!-- railroad-start -->
 <pre name="bnf" style="display: none">
-DROP VIEW [IF EXISTS] <a href="index.html#table_ref">tableRef</a>
+DROP VIEW [IF EXISTS] <a href="index.html#table_ref">tableRef</a> [CASCADE]
 </pre>
 <div name="railroad">
-<table class="railroad"><tr class="railroad"><td class="d"><code class="c">DROP VIEW</code></td><td class="d"><table class="railroad"><tr class="railroad"><td class="ts"></td><td class="d">&nbsp;</td><td class="te"></td></tr><tr class="railroad"><td class="ls"></td><td class="d"><table class="railroad"><tr class="railroad"><td class="d"><code class="c">IF EXISTS</code></td></tr></table></td><td class="le"></td></tr></table></td><td class="d"><code class="c"><a href="index.html#table_ref">tableRef</a></code></td></tr></table>
+<table class="railroad"><tr class="railroad"><td class="d"><code class="c">DROP VIEW</code></td><td class="d"><table class="railroad"><tr class="railroad"><td class="ts"></td><td class="d">&nbsp;</td><td class="te"></td></tr><tr class="railroad"><td class="ls"></td><td class="d"><table class="railroad"><tr class="railroad"><td class="d"><code class="c">IF EXISTS</code></td></tr></table></td><td class="le"></td></tr></table></td><td class="d"><code class="c"><a href="index.html#table_ref">tableRef</a></code></td><td class="d"><table class="railroad"><tr class="railroad"><td class="ts"></td><td class="d">&nbsp;</td><td class="te"></td></tr><tr class="railroad"><td class="ls"></td><td class="d"><code class="c">CASCADE</code></td><td class="le"></td></tr></table></td></tr></table>
 </div>
 <!-- railroad-end -->
 <!-- syntax-start
 <pre>
-DROP VIEW [IF EXISTS] <a href="index.html#table_ref">tableRef</a>
+DROP VIEW [IF EXISTS] <a href="index.html#table_ref">tableRef</a> [CASCADE]
 </pre>
 syntax-end -->
-<p>Drops a view. When dropping a view, the table data is not affected. However, index data for the view will be deleted.</p>
+<p>Drops a view. The optional <code>CASCADE</code> keyword causes any views derived from the view to be dropped as well. When dropping a view, the actual table data is not affected. However, index data for the view will be deleted.</p>
 <p>Example:</p>
 <p class="notranslate">
-DROP VIEW my_view<br />DROP VIEW IF EXISTS my_schema.my_view</p>
+DROP VIEW my_view<br />DROP VIEW IF EXISTS my_schema.my_view<br />DROP VIEW IF EXISTS my_schema.my_view CASCADE</p>
 
 <h3 id="create_sequence" class="notranslate">CREATE SEQUENCE</h3>
 <!-- railroad-start -->

Modified: phoenix/site/publish/multi-tenancy.html
URL: http://svn.apache.org/viewvc/phoenix/site/publish/multi-tenancy.html?rev=1643358&r1=1643357&r2=1643358&view=diff
==============================================================================
--- phoenix/site/publish/multi-tenancy.html (original)
+++ phoenix/site/publish/multi-tenancy.html Fri Dec  5 17:20:10 2014
@@ -1,7 +1,7 @@
 
 <!DOCTYPE html>
 <!--
- Generated by Apache Maven Doxia at 2014-11-18
+ Generated by Apache Maven Doxia at 2014-12-05
  Rendered using Reflow Maven Skin 1.1.0 (http://andriusvelykis.github.io/reflow-maven-skin)
 -->
 <html  xml:lang="en" lang="en">
@@ -136,7 +136,7 @@
    <li>Multi-tenancy in Phoenix works via a combination of multi-tenant tables and tenant-specific connections (detailed below).</li> 
    <li>Tenants open tenant-specific connections to Phoenix. These connections can only access data that belongs to the tenant.</li> 
    <li>Tenants only see their own data in multi-tenant tables and can see all data in regular tables.</li> 
-   <li>In order to add their own columns, tenants create tanant-specific views on top of multi-tenant tables and add their own columns to the views.</li> 
+   <li>In order to add their own columns, tenants create tenant-specific views on top of multi-tenant tables and add their own columns to the views.</li> 
   </ul> 
  </div> 
  <div class="section"> 
@@ -167,20 +167,15 @@ Connection conn = DriverManager.getConne
  </div> 
  <div class="section"> 
   <h3 id="Tenant-specific_Views_optional">Tenant-specific Views (optional)</h3> 
-  <p>Tenant-specific views may only be created using tenant-specific connections. They are created the same way as views. The base table must be a multi-tenant table or another view that eventually points to one:</p> 
+  <p>Tenant-specific views may only be created using tenant-specific connections. They are created the same way as views, however the base table must be a multi-tenant table or another view that eventually points to one. Tenant-specific views are typically used when new columns and/or filter criteria, specific to that tenant, are required. Otherwise the base table may be used directly through a tenant-specific connection as described above.</p> 
+  <p>For example, a tenant-specific view may be defined as follows:</p> 
   <div class="source"> 
-   <pre>CREATE VIEW acme.event AS
-SELECT * FROM base.event;
-</pre> 
-  </div> 
-  <p>Alternately, a WHERE clause may be specified to further constrain the data as well:</p> 
-  <div class="source"> 
-   <pre>CREATE VIEW acme.login_event AS
+   <pre>CREATE VIEW acme.login_event(acme_user_id CHAR(15)) AS
 SELECT * FROM base.event
 WHERE event_type='L';
 </pre> 
   </div> 
-  <p>The tenant_id column is neither visible nor accessible to a tenant-specific view. Any reference to it will cause a ColumnNotFoundException. Just like any other Phoenix view, whether or not this view is updatable is based on the rules explained <a href="views.html#Updatable_Views">here</a>. In addition, indexes may be added to tenant-specific views just like to regular tables and views.</p> 
+  <p>The tenant_id column is neither visible nor accessible to a tenant-specific view. Any reference to it will cause a ColumnNotFoundException. Just like any other Phoenix view, whether or not this view is updatable is based on the rules explained <a href="views.html#Updatable_Views">here</a>. In addition, indexes may be added to tenant-specific views just like to regular tables and views (with <a class="externalLink" href="http://phoenix.apache.org/views.html#Limitations">these</a> limitations).</p> 
  </div> 
  <div class="section"> 
   <h3 id="Tenant_Data_Isolation">Tenant Data Isolation</h3> 

Modified: phoenix/site/publish/views.html
URL: http://svn.apache.org/viewvc/phoenix/site/publish/views.html?rev=1643358&r1=1643357&r2=1643358&view=diff
==============================================================================
--- phoenix/site/publish/views.html (original)
+++ phoenix/site/publish/views.html Fri Dec  5 17:20:10 2014
@@ -1,7 +1,7 @@
 
 <!DOCTYPE html>
 <!--
- Generated by Apache Maven Doxia at 2014-11-18
+ Generated by Apache Maven Doxia at 2014-12-05
  Rendered using Reflow Maven Skin 1.1.0 (http://andriusvelykis.github.io/reflow-maven-skin)
 -->
 <html  xml:lang="en" lang="en">
@@ -172,16 +172,19 @@ VALUES('John Doe', CURRENT_DATE(), NEXT
 </div> 
 <div class="section"> 
  <h2 id="Indexes_on_Views">Indexes on Views</h2> 
- <p>In addition, you may create an INDEX over a VIEW, just as with a TABLE. This is particularly useful to improve query performance over newly added columns on a VIEW, since it provides a way of doing point lookups based on these column values.</p> 
+ <p>In addition, you may create an INDEX over a VIEW, just as with a TABLE. This is particularly useful to improve query performance over newly added columns on a VIEW, since it provides a way of doing point lookups based on these column values. Note that until <a class="externalLink" href="https://issues.apache.org/jira/browse/PHOENIX-1499">PHOENIX-1499</a> gets implemented, an INDEX over a VIEW is only maintained if the updates are made through the VIEW (as opposed to through the underlying TABLE).</p> 
 </div> 
 <div class="section"> 
  <h2 id="Limitations">Limitations</h2> 
- <p>In our Phoenix 3.0 release, views have the following restrictions:</p> 
+ <p>Views have the following restrictions:</p> 
  <ol style="list-style-type: decimal"> 
-  <li>The primary key constraint may not be changed by a VIEW.</li> 
-  <li>A TABLE that has a VIEW may not be dropped, but instead all VIEWs must be dropped first. In the future, we may support the concept of a CASCADE delete.</li> 
-  <li>Single-table only - you may not create a VIEW over multiple, joined tables. This will be supported in a future release.</li> 
-  <li>All columns must be projected into a VIEW (i.e. only the CREATE VIEW … AS SELECT * syntax is supported). Note, however, you may drop non primary key columns inherited from the base table in a VIEW after it is created through the ALTER VIEW command. Providing a subset of columns and or expressions in the SELECT clause will be supported in a future release.</li> 
+  <li>An INDEX over a VIEW is only maintained if the updates are made through the VIEW. Updates made through the underlying TABLE will not be reflected in the index (<a class="externalLink" href="https://issues.apache.org/jira/browse/PHOENIX-1499">PHOENIX-1499</a>).</li> 
+  <li>The schema of a table may not be changed once it has VIEWs (<a class="externalLink" href="https://issues.apache.org/jira/browse/PHOENIX-1504">PHOENIX-1504</a>).</li> 
+  <li>The primary key constraint of the base TABLE may not be changed by a VIEW. In the future, adding to the primary key constraint may be possible (<a class="externalLink" href="https://issues.apache.org/jira/browse/PHOENIX-978">PHOENIX-978</a>).</li> 
+  <li>A VIEW may be defined over only a single table through a simple SELECT * query. You may not create a VIEW over multiple, joined tables nor over aggregations (<a class="externalLink" href="https://issues.apache.org/jira/browse/PHOENIX-1505">PHOENIX-1505</a>, <a class="externalLink" href="https://issues.apache.org/jira/browse/PHOENIX-1506">PHOENIX-1506</a>).</li> 
+  <li>If a VIEW is derived from another VIEW, the indexes from the base/derived VIEW will not be considered when executing queries (<a class="externalLink" href="https://issues.apache.org/jira/browse/PHOENIX-1367">PHOENIX-1367</a>).</li> 
+  <li>All columns must be projected into a VIEW (i.e. only CREATE VIEW … AS SELECT * is supported). Note, however, you may drop non primary key columns inherited from the base table in a VIEW after it is created through the ALTER VIEW command. Providing a subset of columns and or expressions in the SELECT clause will be supported in a future release (<a class="externalLink" href="https://issues.apache.org/jira/browse/PHOENIX-1507">PHOENIX-1507</a>).</li> 
+  <li>A TABLE that has a VIEW may not be dropped, but instead all VIEWs must be dropped first. As of the 3.2/4.2 release, <a class="externalLink" href="http://phoenix.apache.org/language/index.html#drop_table">DROP TABLE</a> and <a class="externalLink" href="http://phoenix.apache.org/language/index.html#drop_view">DROP VIEW</a> supports a CASCADE option which will cause all tenant-specific views to be dropped as well.</li> 
  </ol> 
 </div>
 			</div>

Modified: phoenix/site/source/src/site/markdown/multi-tenancy.md
URL: http://svn.apache.org/viewvc/phoenix/site/source/src/site/markdown/multi-tenancy.md?rev=1643358&r1=1643357&r2=1643358&view=diff
==============================================================================
--- phoenix/site/source/src/site/markdown/multi-tenancy.md (original)
+++ phoenix/site/source/src/site/markdown/multi-tenancy.md Fri Dec  5 17:20:10 2014
@@ -4,7 +4,7 @@
 * Multi-tenancy in Phoenix works via a combination of multi-tenant tables and tenant-specific connections (detailed below).
 * Tenants open tenant-specific connections to Phoenix. These connections can only access data that belongs to the tenant.
 * Tenants only see their own data in multi-tenant tables and can see all data in regular tables.
-* In order to add their own columns, tenants create tanant-specific views on top of multi-tenant tables and add their own columns to the views.
+* In order to add their own columns, tenants create tenant-specific views on top of multi-tenant tables and add their own columns to the views.
 
 ### Multi-tenant tables
 Multi-tenant tables in Phoenix are regular tables that are declared using the MULTI_TENANT=true DDL property. They work in conjuntion with tenant-specific connections (detailed below) to ensure that tenats only see their data in such tables. The first primary key column of multi-tenant tables identifies the tenant. For example:
@@ -28,18 +28,15 @@ For example, a tenant-specific connectio
     Connection conn = DriverManager.getConnection("localhost", props);
 
 ### Tenant-specific Views (optional)
-Tenant-specific views may only be created using tenant-specific connections. They are created the same way as views. The base table must be a multi-tenant table or another view that eventually points to one:
+Tenant-specific views may only be created using tenant-specific connections. They are created the same way as views, however the base table must be a multi-tenant table or another view that eventually points to one. Tenant-specific views are typically used when new columns and/or filter criteria, specific to that tenant, are required. Otherwise the base table may be used directly through a tenant-specific connection as described above.
 
-    CREATE VIEW acme.event AS
-    SELECT * FROM base.event;
+For example, a tenant-specific view may be defined as follows:
 
-Alternately, a WHERE clause may be specified to further constrain the data as well:
-
-    CREATE VIEW acme.login_event AS
+    CREATE VIEW acme.login_event(acme_user_id CHAR(15)) AS
     SELECT * FROM base.event
     WHERE event_type='L';
 
-The tenant_id column is neither visible nor accessible to a tenant-specific view. Any reference to it will cause a ColumnNotFoundException. Just like any other Phoenix view, whether or not this view is updatable is based on the rules explained [here](views.html#Updatable_Views). In addition, indexes may be added to tenant-specific views just like to regular tables and views.
+The tenant_id column is neither visible nor accessible to a tenant-specific view. Any reference to it will cause a ColumnNotFoundException. Just like any other Phoenix view, whether or not this view is updatable is based on the rules explained [here](views.html#Updatable_Views). In addition, indexes may be added to tenant-specific views just like to regular tables and views (with [these](http://phoenix.apache.org/views.html#Limitations) limitations).
 
 ### Tenant Data Isolation
 Any DML or query that is performed on multi-tenant tables using a tenant-specific connections is automatically constrained to only operate on the tenant’s data. For the upsert operation, this means that Phoenix automatically populates the tenantId column with the tenant’s id specified at connection-time. For querying and delete, a where clause is transparently added to constrain the operations to only see data belonging to the current tenant.

Modified: phoenix/site/source/src/site/markdown/views.md
URL: http://svn.apache.org/viewvc/phoenix/site/source/src/site/markdown/views.md?rev=1643358&r1=1643357&r2=1643358&view=diff
==============================================================================
--- phoenix/site/source/src/site/markdown/views.md (original)
+++ phoenix/site/source/src/site/markdown/views.md Fri Dec  5 17:20:10 2014
@@ -41,13 +41,16 @@ As expected, you may create a VIEW on an
 Note that the previous support for creating a read-only VIEW directly over an HBase table is still supported.
 
 ## Indexes on Views
-In addition, you may create an INDEX over a VIEW, just as with a TABLE. This is particularly useful to improve query performance over newly added columns on a VIEW, since it provides a way of doing point lookups based on these column values.
+In addition, you may create an INDEX over a VIEW, just as with a TABLE. This is particularly useful to improve query performance over newly added columns on a VIEW, since it provides a way of doing point lookups based on these column values. Note that until [PHOENIX-1499](https://issues.apache.org/jira/browse/PHOENIX-1499) gets implemented, an INDEX over a VIEW is only maintained if the updates are made through the VIEW (as opposed to through the underlying TABLE).
 
 ## Limitations
-In our Phoenix 3.0 release, views have the following restrictions:
+Views have the following restrictions:
 
-1. The primary key constraint may not be changed by a VIEW.
-2. A TABLE that has a VIEW may not be dropped, but instead all VIEWs must be dropped first. In the future, we may support the concept of a CASCADE delete.
-2. Single-table only - you may not create a VIEW over multiple, joined tables. This will be supported in a future release.
-3. All columns must be projected into a VIEW (i.e. only the CREATE VIEW ... AS SELECT * syntax is supported). Note, however, you may drop non primary key columns inherited from the base table in a VIEW after it is created through the ALTER VIEW command. Providing a subset of columns and or expressions in the SELECT clause will be supported in a future release.
+1. An INDEX over a VIEW is only maintained if the updates are made through the VIEW. Updates made through the underlying TABLE will not be reflected in the index ([PHOENIX-1499](https://issues.apache.org/jira/browse/PHOENIX-1499)).
+2. The schema of a table may not be changed once it has VIEWs ([PHOENIX-1504](https://issues.apache.org/jira/browse/PHOENIX-1504)).
+3. The primary key constraint of the base TABLE may not be changed by a VIEW. In the future, adding to the primary key constraint may be possible ([PHOENIX-978](https://issues.apache.org/jira/browse/PHOENIX-978)).
+4. A VIEW may be defined over only a single table through a simple SELECT * query. You may not create a VIEW over multiple, joined tables nor over aggregations ([PHOENIX-1505](https://issues.apache.org/jira/browse/PHOENIX-1505), [PHOENIX-1506](https://issues.apache.org/jira/browse/PHOENIX-1506)). 
+5. If a VIEW is derived from another VIEW, the indexes from the base/derived VIEW will not be considered when executing queries ([PHOENIX-1367](https://issues.apache.org/jira/browse/PHOENIX-1367)).
+6. All columns must be projected into a VIEW (i.e. only CREATE VIEW ... AS SELECT * is supported). Note, however, you may drop non primary key columns inherited from the base table in a VIEW after it is created through the ALTER VIEW command. Providing a subset of columns and or expressions in the SELECT clause will be supported in a future release ([PHOENIX-1507](https://issues.apache.org/jira/browse/PHOENIX-1507)).
+7. A TABLE that has a VIEW may not be dropped, but instead all VIEWs must be dropped first. As of the 3.2/4.2 release, [DROP TABLE](http://phoenix.apache.org/language/index.html#drop_table) and [DROP VIEW](http://phoenix.apache.org/language/index.html#drop_view) supports a CASCADE option which will cause all tenant-specific views to be dropped as well.