WL#6389: Define and Implement API for Views

Affects: Server-8.0   —   Status: Complete   —   Priority: Medium

This worklog specifies interfaces of the following object types:
  - View

For the Abstract_table defition see WL#6382 (API for table objects).

For the framework class definitions see WL#7284.
NF1: No user visible changes.
NOTE: handling of attributes of properties and collection types
is described in WL#6380, section "Common API attribute guidelines".

NOTE: Abstract_table is specified in WL#6382.

NOTE: Dictionary_object, Entity_object, Weak_object are specified in
WL#7284.

NOTE: Properties is specified in WL#7284.

View
====

The View interface represents one view.

Base interfaces:
  - Abstract_table
  - Dictionary_object
  - Entity_object
  - Weak_object
  
Members:

  * Common attributes:

    - View definition statement in the original character set(s)

    - View definition statement in utf8 to be shown in INFORMATION_SCHEMA

    - CHECK OPTION value

    - Flag specifying if the view is updatable

    - View algorithm

    - Security type

    - Definer

  * References:

    - Weak-reference to the client collation which was in effect when the
      view was created

    - Weak-reference to the connection collation which was in effect when
      the view was created

  * Collections:

    - Ordered collection of view base tables (View_table_usage)

View_table
==========

The View_table interface represents one base table of a view.

Base interfaces:
  - Weak_object

Members:

  * Common attributes:

    - View base table catalog name

    - View base table schema name

    - View base table name

  * Member of the base table collection in View:

    - C++ reference to the view