Copilot commented on code in PR #64321:
URL: https://github.com/apache/airflow/pull/64321#discussion_r3025332234


##########
providers/common/sql/src/airflow/providers/common/sql/operators/generic_transfer.pyi:
##########
@@ -55,6 +55,7 @@ class GenericTransfer(BaseOperator):
     preoperator: Incomplete
     insert_args: Incomplete
     page_size: Incomplete
+    deferrable: bool
     def __init__(
         self,

Review Comment:
   The public `.pyi` stub for `GenericTransfer` still does not include 
`paginated_sql_statement_clause` as an attribute/constructor parameter, even 
though the implementation and tests support it. This can break MyPy for 
provider code that uses custom pagination clauses. Please add 
`paginated_sql_statement_clause` to the stub (attribute and `__init__` 
signature) to match `generic_transfer.py`.



##########
providers/common/sql/src/airflow/providers/common/sql/operators/generic_transfer.pyi:
##########
@@ -68,6 +69,7 @@ class GenericTransfer(BaseOperator):
         preoperator: str | list[str] | None = None,
         insert_args: dict | None = None,
         page_size: int | None = None,
+        deferrable: bool = False,

Review Comment:
   In the `.pyi` stub, `deferrable` is declared with a default of `False`, but 
the runtime default is configuration-driven (`default_deferrable`). To avoid 
misleading API consumers, consider using an unspecified default in the stub 
(e.g., `deferrable: bool = ...`) or aligning the stub default with the 
implementation’s effective behavior.
   ```suggestion
           deferrable: bool = ...,
   ```



##########
providers/common/sql/src/airflow/providers/common/sql/operators/generic_transfer.py:
##########
@@ -90,6 +91,7 @@ def __init__(
         insert_args: dict | None = None,
         page_size: int | None = None,
         paginated_sql_statement_clause: str | None = None,
+        deferrable: bool = conf.getboolean("operators", "default_deferrable", 
fallback=False),
         **kwargs,
     ) -> None:

Review Comment:
   `deferrable` now defaults to `conf.getboolean("operators", 
"default_deferrable", fallback=False)`. Previously, pagination (`page_size` + 
single SQL string) always deferred; with the current default (commonly 
`False`), existing DAGs using `page_size` will switch to non-deferrable 
execution and occupy a worker slot. If the intention is to *add* a 
non-deferrable option without changing defaults, consider keeping the previous 
behavior (e.g., default `deferrable=True` for paginated mode, or accept 
`deferrable: bool | None = None` and treat `None` as “preserve legacy 
behavior”). Also add/adjust a unit test to lock in the intended default.



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