zach-overflow opened a new pull request, #58584:
URL: https://github.com/apache/airflow/pull/58584

   <!--
    Licensed to the Apache Software Foundation (ASF) under one
    or more contributor license agreements.  See the NOTICE file
    distributed with this work for additional information
    regarding copyright ownership.  The ASF licenses this file
    to you under the Apache License, Version 2.0 (the
    "License"); you may not use this file except in compliance
    with the License.  You may obtain a copy of the License at
   
      http://www.apache.org/licenses/LICENSE-2.0
   
    Unless required by applicable law or agreed to in writing,
    software distributed under the License is distributed on an
    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
    KIND, either express or implied.  See the License for the
    specific language governing permissions and limitations
    under the License.
    -->
   
   <!--
   Thank you for contributing! Please make sure that your code changes
   are covered with tests. And in case of new features or big changes
   remember to adjust the documentation.
   
   Feel free to ping committers for the review!
   
   In case of an existing issue, reference it using one of the following:
   
   closes: #ISSUE
   related: #ISSUE
   
   How to write a good git commit message:
   http://chris.beams.io/posts/git-commit/
   -->
   
   
   
   <!-- Please keep an empty line above the dashes. -->
   ---
   
   **Related Issues**: None that I'm aware of. Happy to open one to go along 
with this PR if that is preferable.
   
   ## What?
   * Add a new `airflow db would-migrate` command to the CLI, which Check if a 
migration would take place in the given environment and configuration, but does 
not execute the migration. Exits with an exit code of `0` when there are no 
pending migrations expected / detected, otherwise has an exit code of `123` 
when a pending migration is detected / expected.
   
   ## Why?
   * As far as I'm aware, `airflow db migrate --show-sql-only` is the only way 
to  check if a migration is expected or not; however, there are a few scenarios 
and reasons that existing command is not sufficient:
       * When running `airflow db migrate --show-sql-only` from another script, 
the output of that command is not particularly machine-readable (it currently 
prints out a cat if there's no migration anticipated).
       * Feels slightly less error-prone to check if a migration would happen 
by using a different command, rather than the migration command itself. In 
other words, this is less risky than accidentally submitting `airflow db 
migrate` with the `--show-sql-only` accidentally missing.
       * Surfacing this information via the exit code makes for a pretty 
straightforward integration with any bash scripts, for example: 
           ```shell
           airflow db would-migrate -q
           migration_expected=$?
           if [[ $migration_expected -eq 123 ]]; then
             echo "airflow db migrate would cause a migration"
             # do extra stuff here
           fi
           ```
   
   ## Testing
   * Ran `breeze testing core-tests --test-type CLI --run-db-tests-only 
--backend postgres airflow-core/tests/unit/cli`
   * `prek`
   * Verified the CLI behavior inside of a `breeze` shell session.


-- 
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]

Reply via email to