[ 
https://issues.apache.org/jira/browse/HIVE-26555?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Teddy Choi updated HIVE-26555:
------------------------------
    Description: 
h1. Purpose

In failover/fail-back scenarios, a Hive database needs to be read-only, while 
other one is writable to keep a single source of truth.
h1. User-Facing Changes

Yes. EnforceReadOnlyDatabaseHook class implements ExecuteWithHookContext 
interface. hive.exec.pre.hooks needs to have the class name to initiate an 
instance. The "readonly" database property can be configured to turn it on and 
off.
h2. Allowed read operations

All read operations without any data/metadata change are allowed.
 * EXPLAIN
 * USE(or SWITCHDATABASE)
 * REPLDUMP
 * REPLSTATUS
 * EXPORT
 * KILL_QUERY
 * DESC prefix
 * SHOW prefix
 * QUERY with SELECT or EXPLAIN. INSERT, DELETE, UPDATE are disallowed.

h2. Allowed write operations

Most of write operations that change data/metadata are disallowed. There are 
few allowed exceptions. The first one is alter database to make a database 
writable. The second one is replication load to load a dumped database.
 * ALTER DATABASE db_name SET DBPROPERTIES without "readonly"="true".
 * REPLLOAD

h1. Tests
 * read_only_hook.q: USE, SHOW, DESC, DESCRIBE, EXPLAIN, SELECT
 * read_only_delete.q
 * read_only_insert.q

  was:
h1. Purpose

In failover/fail-back scenarios, a Hive database needs to be read-only, while 
other one is writable to keep a single source of truth.
h1. Design

Yes. EnforceReadOnlyDatabaseHook class implements ExecuteWithHookContext 
interface. hive.exec.pre.hooks needs to have the class name to initiate an 
instance. The "readonly" database property can be configured to turn it on and 
off.

Allowed operations prefixes
 * EXPLAIN
 * USE(or SWITCHDATABASE)
 * REPLDUMP
 * REPLSTATUS
 * EXPORT
 * KILL_QUERY
 * DESC
 * SHOW

h1. Tests
 * read_only_hook.q: USE, SHOW, DESC, DESCRIBE, EXPLAIN, SELECT
 * read_only_delete.q
 * read_only_insert.q


> Read-only mode for Hive database
> --------------------------------
>
>                 Key: HIVE-26555
>                 URL: https://issues.apache.org/jira/browse/HIVE-26555
>             Project: Hive
>          Issue Type: New Feature
>            Reporter: Teddy Choi
>            Assignee: Teddy Choi
>            Priority: Minor
>              Labels: pull-request-available
>             Fix For: 4.0.0-alpha-2
>
>          Time Spent: 40m
>  Remaining Estimate: 0h
>
> h1. Purpose
> In failover/fail-back scenarios, a Hive database needs to be read-only, while 
> other one is writable to keep a single source of truth.
> h1. User-Facing Changes
> Yes. EnforceReadOnlyDatabaseHook class implements ExecuteWithHookContext 
> interface. hive.exec.pre.hooks needs to have the class name to initiate an 
> instance. The "readonly" database property can be configured to turn it on 
> and off.
> h2. Allowed read operations
> All read operations without any data/metadata change are allowed.
>  * EXPLAIN
>  * USE(or SWITCHDATABASE)
>  * REPLDUMP
>  * REPLSTATUS
>  * EXPORT
>  * KILL_QUERY
>  * DESC prefix
>  * SHOW prefix
>  * QUERY with SELECT or EXPLAIN. INSERT, DELETE, UPDATE are disallowed.
> h2. Allowed write operations
> Most of write operations that change data/metadata are disallowed. There are 
> few allowed exceptions. The first one is alter database to make a database 
> writable. The second one is replication load to load a dumped database.
>  * ALTER DATABASE db_name SET DBPROPERTIES without "readonly"="true".
>  * REPLLOAD
> h1. Tests
>  * read_only_hook.q: USE, SHOW, DESC, DESCRIBE, EXPLAIN, SELECT
>  * read_only_delete.q
>  * read_only_insert.q



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to