[ https://issues.apache.org/jira/browse/HIVE-26555?focusedWorklogId=836537&page=com.atlassian.jira.plugin.system.issuetabpanels:worklog-tabpanel#worklog-836537 ]
ASF GitHub Bot logged work on HIVE-26555: ----------------------------------------- Author: ASF GitHub Bot Created on: 03/Jan/23 08:24 Start Date: 03/Jan/23 08:24 Worklog Time Spent: 10m Work Description: pudidic opened a new pull request, #3614: URL: https://github.com/apache/hive/pull/3614 ### What changes were proposed in this pull request? Introduces a read-only mode. ### Why are the changes needed? 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. ### Does this PR introduce _any_ user-facing change? #### 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. #### 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 ### How was this patch tested? * read_only_hook.q: USE, SHOW, DESC, DESCRIBE, EXPLAIN, SELECT * read_only_delete.q * read_only_insert.q Issue Time Tracking ------------------- Worklog Id: (was: 836537) Time Spent: 1.5h (was: 1h 20m) > 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 > Time Spent: 1.5h > 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)