You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airflow.apache.org by "hussein-awala (via GitHub)" <gi...@apache.org> on 2023/06/18 14:03:12 UTC

[GitHub] [airflow] hussein-awala commented on a diff in pull request #31984: Check if sqlalchemy_scheme extra contains forbidden characters

hussein-awala commented on code in PR #31984:
URL: https://github.com/apache/airflow/pull/31984#discussion_r1233310952


##########
airflow/providers/microsoft/mssql/hooks/mssql.py:
##########
@@ -63,11 +63,10 @@ def connection_extra_lower(self) -> dict:
     @property
     def sqlalchemy_scheme(self) -> str:
         """Sqlalchemy scheme either from constructor, connection extras or default."""
-        return (
-            self._sqlalchemy_scheme
-            or self.connection_extra_lower.get("sqlalchemy_scheme")
-            or self.DEFAULT_SQLALCHEMY_SCHEME
-        )
+        extra_scheme = self.connection_extra_lower.get("sqlalchemy_scheme")
+        if not self._sqlalchemy_scheme and extra_scheme and (":" in extra_scheme or "/" in extra_scheme):
+            raise RuntimeError("sqlalchemy_scheme in connection extra should not contain : or / characters")
+        return self._sqlalchemy_scheme or extra_scheme or self.DEFAULT_SQLALCHEMY_SCHEME

Review Comment:
   > If the user has set sqlalchemy_scheme via constructor but wants to override via extras, will we not allow it?
   
   why does he need to override a very flexible value provided to the constructor by an extra provided in very less flexible way (connection).
   
   If he wants to use the connection scheme he can skip providing a value to the  constructor, and if he want to override the connection scheme, he can provide the new value to the constructor.
   We can easily create 10 instances of this hook, but we can easily create and manage 10 different connection. So for me it's perfect like that:
   constructor/hook params > connection extras > 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: commits-unsubscribe@airflow.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org