Sleepy0521 commented on PR #160:
URL: 
https://github.com/apache/flink-connector-jdbc/pull/160#issuecomment-2817430890

   > I agree with @davidradl — `JdbcDynamicTableSource` should not have any 
direct reference to a specific dialect, and we need to add a unit test for 
this..
   > 
   > Since we're assuming that getLimitClause will always append the clause at 
the end of the query, I suggest introducing a new method in `JdbcDialect`:
   > 
   > ```
   > String addLimitClause(String query, long limit);
   > ```
   > 
   > We can then provide a default implementation in `AbstractDialect`:
   > 
   > ```
   > @Override
   > public String addLimitClause(String query, long limit) {
   >     return String.format("%s %s", query, dialect.getLimitClause(limit));
   > }
   > ```
   > 
   > Changing in `JdbcDynamicTableSource`
   > 
   > ```
   > if (limit >= 0) {
   >     query = dialect.addLimitClause(query, limit);
   > }
   > ```
   > 
   > For dialects like SQL Server, this method can be overridden to inject the 
limit clause appropriately. For example:
   > 
   > ```
   > // SqlServerDialect
   > @Override
   > public String addLimitClause(String query, long limit) {
   >     return query.replace("SELECT", String.format("SELECT TOP %s", limit));
   > }
   > ```
   > 
   > Optionally, the `if (limit >= 0)` check in `JdbcDynamicTableSource` could 
be moved into this new method for better encapsulation, but I’ve left it out 
here for simplicity.
   
   Good idea I commit again. please check it


-- 
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: issues-unsubscr...@flink.apache.org

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

Reply via email to