DanielZhu58 opened a new pull request, #6717:
URL: https://github.com/apache/hive/pull/6717

   ### What changes were proposed in this pull request?
   <!--
   Please clarify what changes you are proposing. The purpose of this section 
is to outline the changes and how this PR fixes the issue. 
   If possible, please consider writing useful notes for better and faster 
reviews in your PR. See the examples below.
     1. If you refactor some codes with changing classes, showing the class 
hierarchy will help reviewers.
     2. If you fix some SQL features, you can provide some references of other 
DBMSes.
     3. If there is design documentation, please add the link.
     4. If there is a discussion in the mailing list, please add the link.
   -->
   This PR fixes CreateDatabaseHandler.java so that the managed directory for a 
database is always created, regardless of whether MANAGEDLOCATION is explicitly 
specified at database creation time.
   
   Previously, dbMgdPath was only set when the user explicitly passed a managed 
location URI; otherwise it was left null, and the managed directory creation 
logic (guarded by if (dbMgdPath != null)) was skipped entirely. This PR changes 
dbMgdPath to fall back to the already-computed defaultDbMgdPath when no managed 
location is explicitly specified, so the managed directory is always created 
using either the user-specified or the default path.
   
   As part of this fix, the duplicated directory-creation logic for the managed 
and external directories (each previously implemented as separate doAs + isDir 
+ mkdirs blocks) has been consolidated into a single private helper method, 
createDbDirectory, parameterized by the target path, whether to run as the 
login (admin) user or the current user, and a label used for logging/error 
messages.
   
   
   
   ### Why are the changes needed?
   <!--
   Please clarify why the changes are needed. For instance,
     1. If you propose a new API, clarify the use case for a new API.
     2. If you fix a bug, you can clarify why it is a bug.
   -->
   The correct behavior is for HMS to always create a managed directory path 
for a database, whether or not a managed location is explicitly specified — 
mirroring how the external directory is always created via a default fallback 
path. Without this fix, some databases end up with only an external directory 
and no managed directory, which can cause downstream failures for any operation 
that expects the managed directory to exist (e.g. copying files into it).
   
   ### Does this PR introduce _any_ user-facing change?
   <!--
   Note that it means *any* user-facing change including all aspects such as 
the documentation fix.
   If yes, please clarify the previous behavior and the change this PR proposes 
- provide the console output, description, screenshot and/or a reproducable 
example to show the behavior difference if possible.
   If possible, please also clarify if this is a user-facing change compared to 
the released Hive versions or within the unreleased branches such as master.
   If no, write 'No'.
   -->
   Yes. Previously, creating a database without an explicit MANAGEDLOCATION 
could result in no managed directory being created on the filesystem. After 
this change, the managed directory is always created at the default managed 
location if one is not explicitly specified.
   
   
   ### How was this patch tested?
   <!--
   If tests were added, say they were added here. Please make sure to add some 
test cases that check the changes thoroughly including negative and positive 
cases if possible.
   If it was tested in a way different from regular unit tests, please clarify 
how you tested step by step, ideally copy and paste-able, so that other 
reviewers can test and check, and descendants can verify in the future.
   If tests were not added, please describe why they were not added and/or why 
it was difficult to add.
   -->
   Unit tests and q tests.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to