This is an automated email from the ASF dual-hosted git repository.

davsclaus pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git


The following commit(s) were added to refs/heads/main by this push:
     new 65123ab6ccd CAMEL-21845: camel-sql - Improve performance of batch 
inserts (#17390)
65123ab6ccd is described below

commit 65123ab6ccd5b62c69edb81aff52bb2b3c54245f
Author: Claus Ibsen <claus.ib...@gmail.com>
AuthorDate: Fri Mar 7 15:33:11 2025 +0000

    CAMEL-21845: camel-sql - Improve performance of batch inserts (#17390)
    
    * CAMEL-21845: camel-sql - Improve performance of batch inserts
---
 .../org/apache/camel/catalog/components/sql.json   |  66 +++++----
 .../component/sql/SqlComponentConfigurer.java      |  12 ++
 .../camel/component/sql/SqlEndpointConfigurer.java |  12 ++
 .../camel/component/sql/SqlEndpointUriFactory.java |   4 +-
 .../org/apache/camel/component/sql/sql.json        |  66 +++++----
 .../camel/component/sql/DefaultSqlEndpoint.java    |  21 +++
 .../apache/camel/component/sql/SqlComponent.java   |  37 +++++
 .../apache/camel/component/sql/SqlConsumer.java    |   4 +
 .../apache/camel/component/sql/SqlEndpoint.java    |  15 ++
 .../apache/camel/component/sql/SqlProducer.java    |  41 +++++-
 .../component/sql/SqlConsumerFetchSizeTest.java    |  87 +++++++++++
 .../component/sql/SqlProducerFetchSizeTest.java    |  87 +++++++++++
 .../ROOT/pages/camel-4x-upgrade-guide-4_10.adoc    |   7 +
 .../ROOT/pages/camel-4x-upgrade-guide-4_11.adoc    |   7 +
 .../component/dsl/SqlComponentBuilderFactory.java  |  43 ++++++
 .../endpoint/dsl/SqlEndpointBuilderFactory.java    | 160 +++++++++++++++++++++
 16 files changed, 601 insertions(+), 68 deletions(-)

diff --git 
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/sql.json
 
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/sql.json
index 7594b0197ef..1e4bcc94236 100644
--- 
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/sql.json
+++ 
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/sql.json
@@ -26,13 +26,15 @@
   "componentProperties": {
     "dataSource": { "index": 0, "kind": "property", "displayName": "Data 
Source", "group": "common", "label": "", "required": false, "type": "object", 
"javaType": "javax.sql.DataSource", "deprecated": false, "autowired": true, 
"secret": false, "description": "Sets the DataSource to use to communicate with 
the database." },
     "bridgeErrorHandler": { "index": 1, "kind": "property", "displayName": 
"Bridge Error Handler", "group": "consumer", "label": "consumer", "required": 
false, "type": "boolean", "javaType": "boolean", "deprecated": false, 
"autowired": false, "secret": false, "defaultValue": false, "description": 
"Allows for bridging the consumer to the Camel routing Error Handler, which 
mean any exceptions (if possible) occurred while the Camel consumer is trying 
to pickup incoming messages, or the like [...]
-    "lazyStartProducer": { "index": 2, "kind": "property", "displayName": 
"Lazy Start Producer", "group": "producer", "label": "producer", "required": 
false, "type": "boolean", "javaType": "boolean", "deprecated": false, 
"autowired": false, "secret": false, "defaultValue": false, "description": 
"Whether the producer should be started lazy (on the first message). By 
starting lazy you can use this to allow CamelContext and routes to startup in 
situations where a producer may otherwise fail [...]
-    "autowiredEnabled": { "index": 3, "kind": "property", "displayName": 
"Autowired Enabled", "group": "advanced", "label": "advanced", "required": 
false, "type": "boolean", "javaType": "boolean", "deprecated": false, 
"autowired": false, "secret": false, "defaultValue": true, "description": 
"Whether autowiring is enabled. This is used for automatic autowiring options 
(the option must be marked as autowired) by looking up in the registry to find 
if there is a single instance of matching t [...]
-    "rowMapperFactory": { "index": 4, "kind": "property", "displayName": "Row 
Mapper Factory", "group": "advanced", "label": "advanced", "required": false, 
"type": "object", "javaType": 
"org.apache.camel.component.sql.RowMapperFactory", "deprecated": false, 
"autowired": true, "secret": false, "description": "Factory for creating 
RowMapper" },
-    "serviceLocationEnabled": { "index": 5, "kind": "property", "displayName": 
"Service Location Enabled", "group": "advanced", "label": "advanced", 
"required": false, "type": "boolean", "javaType": "boolean", "deprecated": 
false, "autowired": false, "secret": false, "defaultValue": true, 
"description": "Whether to detect the network address location of the JMS 
broker on startup. This information is gathered via reflection on the 
ConnectionFactory, and is vendor specific. This option can [...]
-    "usePlaceholder": { "index": 6, "kind": "property", "displayName": "Use 
Placeholder", "group": "advanced", "label": "advanced", "required": false, 
"type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": 
false, "secret": false, "defaultValue": true, "description": "Sets whether to 
use placeholder and replace all placeholder characters with sign in the SQL 
queries. This option is default true" },
-    "healthCheckConsumerEnabled": { "index": 7, "kind": "property", 
"displayName": "Health Check Consumer Enabled", "group": "health", "label": 
"health", "required": false, "type": "boolean", "javaType": "boolean", 
"deprecated": false, "autowired": false, "secret": false, "defaultValue": true, 
"description": "Used for enabling or disabling all consumer based health checks 
from this component" },
-    "healthCheckProducerEnabled": { "index": 8, "kind": "property", 
"displayName": "Health Check Producer Enabled", "group": "health", "label": 
"health", "required": false, "type": "boolean", "javaType": "boolean", 
"deprecated": false, "autowired": false, "secret": false, "defaultValue": true, 
"description": "Used for enabling or disabling all producer based health checks 
from this component. Notice: Camel has by default disabled all producer based 
health-checks. You can turn on producer [...]
+    "batchAutoCommitDisabled": { "index": 2, "kind": "property", 
"displayName": "Batch Auto Commit Disabled", "group": "producer", "label": 
"producer", "required": false, "type": "boolean", "javaType": "boolean", 
"deprecated": false, "autowired": false, "secret": false, "defaultValue": true, 
"description": "Whether to optimize batch by turning off auto-commit which can 
dramatic improve performance, and instead execute as a manual commit after the 
entire batch operation is complete" },
+    "lazyStartProducer": { "index": 3, "kind": "property", "displayName": 
"Lazy Start Producer", "group": "producer", "label": "producer", "required": 
false, "type": "boolean", "javaType": "boolean", "deprecated": false, 
"autowired": false, "secret": false, "defaultValue": false, "description": 
"Whether the producer should be started lazy (on the first message). By 
starting lazy you can use this to allow CamelContext and routes to startup in 
situations where a producer may otherwise fail [...]
+    "autowiredEnabled": { "index": 4, "kind": "property", "displayName": 
"Autowired Enabled", "group": "advanced", "label": "advanced", "required": 
false, "type": "boolean", "javaType": "boolean", "deprecated": false, 
"autowired": false, "secret": false, "defaultValue": true, "description": 
"Whether autowiring is enabled. This is used for automatic autowiring options 
(the option must be marked as autowired) by looking up in the registry to find 
if there is a single instance of matching t [...]
+    "fetchSize": { "index": 5, "kind": "property", "displayName": "Fetch 
Size", "group": "advanced", "label": "advanced", "required": false, "type": 
"integer", "javaType": "int", "deprecated": false, "autowired": false, 
"secret": false, "description": "Gives the JDBC driver a hint as to the number 
of rows that should be fetched from the database when more rows are needed for 
ResultSet objects generated by this Statement. If the value specified is zero, 
then the hint is ignored. The defau [...]
+    "rowMapperFactory": { "index": 6, "kind": "property", "displayName": "Row 
Mapper Factory", "group": "advanced", "label": "advanced", "required": false, 
"type": "object", "javaType": 
"org.apache.camel.component.sql.RowMapperFactory", "deprecated": false, 
"autowired": true, "secret": false, "description": "Factory for creating 
RowMapper" },
+    "serviceLocationEnabled": { "index": 7, "kind": "property", "displayName": 
"Service Location Enabled", "group": "advanced", "label": "advanced", 
"required": false, "type": "boolean", "javaType": "boolean", "deprecated": 
false, "autowired": false, "secret": false, "defaultValue": true, 
"description": "Whether to detect the network address location of the JMS 
broker on startup. This information is gathered via reflection on the 
ConnectionFactory, and is vendor specific. This option can [...]
+    "usePlaceholder": { "index": 8, "kind": "property", "displayName": "Use 
Placeholder", "group": "advanced", "label": "advanced", "required": false, 
"type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": 
false, "secret": false, "defaultValue": true, "description": "Sets whether to 
use placeholder and replace all placeholder characters with sign in the SQL 
queries. This option is default true" },
+    "healthCheckConsumerEnabled": { "index": 9, "kind": "property", 
"displayName": "Health Check Consumer Enabled", "group": "health", "label": 
"health", "required": false, "type": "boolean", "javaType": "boolean", 
"deprecated": false, "autowired": false, "secret": false, "defaultValue": true, 
"description": "Used for enabling or disabling all consumer based health checks 
from this component" },
+    "healthCheckProducerEnabled": { "index": 10, "kind": "property", 
"displayName": "Health Check Producer Enabled", "group": "health", "label": 
"health", "required": false, "type": "boolean", "javaType": "boolean", 
"deprecated": false, "autowired": false, "secret": false, "defaultValue": true, 
"description": "Used for enabling or disabling all producer based health checks 
from this component. Notice: Camel has by default disabled all producer based 
health-checks. You can turn on produce [...]
   },
   "headers": {
     "CamelSqlQuery": { "index": 0, "kind": "header", "displayName": "", 
"group": "producer", "label": "producer", "required": false, "javaType": 
"String", "deprecated": false, "deprecationNote": "", "autowired": false, 
"secret": false, "description": "Query to execute. This query takes precedence 
over the query specified in the endpoint URI. Note that query parameters in the 
header _are_ represented by a instead of a pass:# symbol", "constantName": 
"org.apache.camel.component.sql.SqlCons [...]
@@ -68,29 +70,31 @@
     "pollStrategy": { "index": 20, "kind": "parameter", "displayName": "Poll 
Strategy", "group": "consumer (advanced)", "label": "consumer,advanced", 
"required": false, "type": "object", "javaType": 
"org.apache.camel.spi.PollingConsumerPollStrategy", "deprecated": false, 
"autowired": false, "secret": false, "description": "A pluggable 
org.apache.camel.PollingConsumerPollingStrategy allowing you to provide your 
custom implementation to control error handling usually occurred during the po 
[...]
     "processingStrategy": { "index": 21, "kind": "parameter", "displayName": 
"Processing Strategy", "group": "consumer (advanced)", "label": 
"consumer,advanced", "required": false, "type": "object", "javaType": 
"org.apache.camel.component.sql.SqlProcessingStrategy", "deprecated": false, 
"autowired": false, "secret": false, "description": "Allows to plugin to use a 
custom org.apache.camel.component.sql.SqlProcessingStrategy to execute queries 
when the consumer has processed the rows\/batch." },
     "batch": { "index": 22, "kind": "parameter", "displayName": "Batch", 
"group": "producer", "label": "producer", "required": false, "type": "boolean", 
"javaType": "boolean", "deprecated": false, "autowired": false, "secret": 
false, "defaultValue": false, "description": "Enables or disables batch mode" },
-    "noop": { "index": 23, "kind": "parameter", "displayName": "Noop", 
"group": "producer", "label": "producer", "required": false, "type": "boolean", 
"javaType": "boolean", "deprecated": false, "autowired": false, "secret": 
false, "defaultValue": false, "description": "If set, will ignore the results 
of the SQL query and use the existing IN message as the OUT message for the 
continuation of processing" },
-    "useMessageBodyForSql": { "index": 24, "kind": "parameter", "displayName": 
"Use Message Body For Sql", "group": "producer", "label": "producer", 
"required": false, "type": "boolean", "javaType": "boolean", "deprecated": 
false, "autowired": false, "secret": false, "defaultValue": false, 
"description": "Whether to use the message body as the SQL and then headers for 
parameters. If this option is enabled then the SQL in the uri is not used. Note 
that query parameters in the message body [...]
-    "lazyStartProducer": { "index": 25, "kind": "parameter", "displayName": 
"Lazy Start Producer", "group": "producer (advanced)", "label": 
"producer,advanced", "required": false, "type": "boolean", "javaType": 
"boolean", "deprecated": false, "autowired": false, "secret": false, 
"defaultValue": false, "description": "Whether the producer should be started 
lazy (on the first message). By starting lazy you can use this to allow 
CamelContext and routes to startup in situations where a produ [...]
-    "alwaysPopulateStatement": { "index": 26, "kind": "parameter", 
"displayName": "Always Populate Statement", "group": "advanced", "label": 
"advanced", "required": false, "type": "boolean", "javaType": "boolean", 
"deprecated": false, "autowired": false, "secret": false, "defaultValue": 
false, "description": "If enabled then the populateStatement method from 
org.apache.camel.component.sql.SqlPrepareStatementStrategy is always invoked, 
also if there is no expected parameters to be prepare [...]
-    "parametersCount": { "index": 27, "kind": "parameter", "displayName": 
"Parameters Count", "group": "advanced", "label": "advanced", "required": 
false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": 
false, "secret": false, "description": "If set greater than zero, then Camel 
will use this count value of parameters to replace instead of querying via JDBC 
metadata API. This is useful if the JDBC vendor could not return correct 
parameters count, then user may ove [...]
-    "placeholder": { "index": 28, "kind": "parameter", "displayName": 
"Placeholder", "group": "advanced", "label": "advanced", "required": false, 
"type": "string", "javaType": "java.lang.String", "deprecated": false, 
"autowired": false, "secret": false, "defaultValue": "#", "description": 
"Specifies a character that will be replaced to in SQL query. Notice, that it 
is simple String.replaceAll() operation and no SQL parsing is involved (quoted 
strings will also change)." },
-    "prepareStatementStrategy": { "index": 29, "kind": "parameter", 
"displayName": "Prepare Statement Strategy", "group": "advanced", "label": 
"advanced", "required": false, "type": "object", "javaType": 
"org.apache.camel.component.sql.SqlPrepareStatementStrategy", "deprecated": 
false, "autowired": false, "secret": false, "description": "Allows to plugin to 
use a custom org.apache.camel.component.sql.SqlPrepareStatementStrategy to 
control preparation of the query and prepared statement." },
-    "rowMapperFactory": { "index": 30, "kind": "parameter", "displayName": 
"Row Mapper Factory", "group": "advanced", "label": "advanced", "required": 
false, "type": "object", "javaType": 
"org.apache.camel.component.sql.RowMapperFactory", "deprecated": false, 
"autowired": false, "secret": false, "description": "Factory for creating 
RowMapper" },
-    "templateOptions": { "index": 31, "kind": "parameter", "displayName": 
"Template Options", "group": "advanced", "label": "advanced", "required": 
false, "type": "object", "javaType": "java.util.Map<java.lang.String, 
java.lang.Object>", "prefix": "template.", "multiValue": true, "deprecated": 
false, "autowired": false, "secret": false, "description": "Configures the 
Spring JdbcTemplate with the key\/values from the Map" },
-    "usePlaceholder": { "index": 32, "kind": "parameter", "displayName": "Use 
Placeholder", "group": "advanced", "label": "advanced", "required": false, 
"type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": 
false, "secret": false, "defaultValue": true, "description": "Sets whether to 
use placeholder and replace all placeholder characters with sign in the SQL 
queries." },
-    "backoffErrorThreshold": { "index": 33, "kind": "parameter", 
"displayName": "Backoff Error Threshold", "group": "scheduler", "label": 
"consumer,scheduler", "required": false, "type": "integer", "javaType": "int", 
"deprecated": false, "autowired": false, "secret": false, "description": "The 
number of subsequent error polls (failed due some error) that should happen 
before the backoffMultipler should kick-in." },
-    "backoffIdleThreshold": { "index": 34, "kind": "parameter", "displayName": 
"Backoff Idle Threshold", "group": "scheduler", "label": "consumer,scheduler", 
"required": false, "type": "integer", "javaType": "int", "deprecated": false, 
"autowired": false, "secret": false, "description": "The number of subsequent 
idle polls that should happen before the backoffMultipler should kick-in." },
-    "backoffMultiplier": { "index": 35, "kind": "parameter", "displayName": 
"Backoff Multiplier", "group": "scheduler", "label": "consumer,scheduler", 
"required": false, "type": "integer", "javaType": "int", "deprecated": false, 
"autowired": false, "secret": false, "description": "To let the scheduled 
polling consumer backoff if there has been a number of subsequent idles\/errors 
in a row. The multiplier is then the number of polls that will be skipped 
before the next actual attempt is h [...]
-    "delay": { "index": 36, "kind": "parameter", "displayName": "Delay", 
"group": "scheduler", "label": "consumer,scheduler", "required": false, "type": 
"integer", "javaType": "long", "deprecated": false, "autowired": false, 
"secret": false, "defaultValue": 500, "description": "Milliseconds before the 
next poll." },
-    "greedy": { "index": 37, "kind": "parameter", "displayName": "Greedy", 
"group": "scheduler", "label": "consumer,scheduler", "required": false, "type": 
"boolean", "javaType": "boolean", "deprecated": false, "autowired": false, 
"secret": false, "defaultValue": false, "description": "If greedy is enabled, 
then the ScheduledPollConsumer will run immediately again, if the previous run 
polled 1 or more messages." },
-    "initialDelay": { "index": 38, "kind": "parameter", "displayName": 
"Initial Delay", "group": "scheduler", "label": "consumer,scheduler", 
"required": false, "type": "integer", "javaType": "long", "deprecated": false, 
"autowired": false, "secret": false, "defaultValue": 1000, "description": 
"Milliseconds before the first poll starts." },
-    "repeatCount": { "index": 39, "kind": "parameter", "displayName": "Repeat 
Count", "group": "scheduler", "label": "consumer,scheduler", "required": false, 
"type": "integer", "javaType": "long", "deprecated": false, "autowired": false, 
"secret": false, "defaultValue": 0, "description": "Specifies a maximum limit 
of number of fires. So if you set it to 1, the scheduler will only fire once. 
If you set it to 5, it will only fire five times. A value of zero or negative 
means fire forever." },
-    "runLoggingLevel": { "index": 40, "kind": "parameter", "displayName": "Run 
Logging Level", "group": "scheduler", "label": "consumer,scheduler", 
"required": false, "type": "object", "javaType": 
"org.apache.camel.LoggingLevel", "enum": [ "TRACE", "DEBUG", "INFO", "WARN", 
"ERROR", "OFF" ], "deprecated": false, "autowired": false, "secret": false, 
"defaultValue": "TRACE", "description": "The consumer logs a start\/complete 
log line when it polls. This option allows you to configure the l [...]
-    "scheduledExecutorService": { "index": 41, "kind": "parameter", 
"displayName": "Scheduled Executor Service", "group": "scheduler", "label": 
"consumer,scheduler", "required": false, "type": "object", "javaType": 
"java.util.concurrent.ScheduledExecutorService", "deprecated": false, 
"autowired": false, "secret": false, "description": "Allows for configuring a 
custom\/shared thread pool to use for the consumer. By default each consumer 
has its own single threaded thread pool." },
-    "scheduler": { "index": 42, "kind": "parameter", "displayName": 
"Scheduler", "group": "scheduler", "label": "consumer,scheduler", "required": 
false, "type": "object", "javaType": "java.lang.Object", "deprecated": false, 
"autowired": false, "secret": false, "defaultValue": "none", "description": "To 
use a cron scheduler from either camel-spring or camel-quartz component. Use 
value spring or quartz for built in scheduler" },
-    "schedulerProperties": { "index": 43, "kind": "parameter", "displayName": 
"Scheduler Properties", "group": "scheduler", "label": "consumer,scheduler", 
"required": false, "type": "object", "javaType": 
"java.util.Map<java.lang.String, java.lang.Object>", "prefix": "scheduler.", 
"multiValue": true, "deprecated": false, "autowired": false, "secret": false, 
"description": "To configure additional properties when using a custom 
scheduler or any of the Quartz, Spring based scheduler." },
-    "startScheduler": { "index": 44, "kind": "parameter", "displayName": 
"Start Scheduler", "group": "scheduler", "label": "consumer,scheduler", 
"required": false, "type": "boolean", "javaType": "boolean", "deprecated": 
false, "autowired": false, "secret": false, "defaultValue": true, 
"description": "Whether the scheduler should be auto started." },
-    "timeUnit": { "index": 45, "kind": "parameter", "displayName": "Time 
Unit", "group": "scheduler", "label": "consumer,scheduler", "required": false, 
"type": "object", "javaType": "java.util.concurrent.TimeUnit", "enum": [ 
"NANOSECONDS", "MICROSECONDS", "MILLISECONDS", "SECONDS", "MINUTES", "HOURS", 
"DAYS" ], "deprecated": false, "autowired": false, "secret": false, 
"defaultValue": "MILLISECONDS", "description": "Time unit for initialDelay and 
delay options." },
-    "useFixedDelay": { "index": 46, "kind": "parameter", "displayName": "Use 
Fixed Delay", "group": "scheduler", "label": "consumer,scheduler", "required": 
false, "type": "boolean", "javaType": "boolean", "deprecated": false, 
"autowired": false, "secret": false, "defaultValue": true, "description": 
"Controls if fixed delay or fixed rate is used. See ScheduledExecutorService in 
JDK for details." }
+    "batchAutoCommitDisabled": { "index": 23, "kind": "parameter", 
"displayName": "Batch Auto Commit Disabled", "group": "producer", "label": 
"producer", "required": false, "type": "boolean", "javaType": "boolean", 
"deprecated": false, "autowired": false, "secret": false, "defaultValue": true, 
"description": "Whether to optimize batch by turning off auto-commit which can 
dramatic improve performance, and instead execute as a manual commit after the 
entire batch operation is complete" },
+    "noop": { "index": 24, "kind": "parameter", "displayName": "Noop", 
"group": "producer", "label": "producer", "required": false, "type": "boolean", 
"javaType": "boolean", "deprecated": false, "autowired": false, "secret": 
false, "defaultValue": false, "description": "If set, will ignore the results 
of the SQL query and use the existing IN message as the OUT message for the 
continuation of processing" },
+    "useMessageBodyForSql": { "index": 25, "kind": "parameter", "displayName": 
"Use Message Body For Sql", "group": "producer", "label": "producer", 
"required": false, "type": "boolean", "javaType": "boolean", "deprecated": 
false, "autowired": false, "secret": false, "defaultValue": false, 
"description": "Whether to use the message body as the SQL and then headers for 
parameters. If this option is enabled then the SQL in the uri is not used. Note 
that query parameters in the message body [...]
+    "lazyStartProducer": { "index": 26, "kind": "parameter", "displayName": 
"Lazy Start Producer", "group": "producer (advanced)", "label": 
"producer,advanced", "required": false, "type": "boolean", "javaType": 
"boolean", "deprecated": false, "autowired": false, "secret": false, 
"defaultValue": false, "description": "Whether the producer should be started 
lazy (on the first message). By starting lazy you can use this to allow 
CamelContext and routes to startup in situations where a produ [...]
+    "alwaysPopulateStatement": { "index": 27, "kind": "parameter", 
"displayName": "Always Populate Statement", "group": "advanced", "label": 
"advanced", "required": false, "type": "boolean", "javaType": "boolean", 
"deprecated": false, "autowired": false, "secret": false, "defaultValue": 
false, "description": "If enabled then the populateStatement method from 
org.apache.camel.component.sql.SqlPrepareStatementStrategy is always invoked, 
also if there is no expected parameters to be prepare [...]
+    "fetchSize": { "index": 28, "kind": "parameter", "displayName": "Fetch 
Size", "group": "advanced", "label": "advanced", "required": false, "type": 
"integer", "javaType": "int", "deprecated": false, "autowired": false, 
"secret": false, "description": "Gives the JDBC driver a hint as to the number 
of rows that should be fetched from the database when more rows are needed for 
ResultSet objects generated by this Statement. If the value specified is zero, 
then the hint is ignored. The def [...]
+    "parametersCount": { "index": 29, "kind": "parameter", "displayName": 
"Parameters Count", "group": "advanced", "label": "advanced", "required": 
false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": 
false, "secret": false, "description": "If set greater than zero, then Camel 
will use this count value of parameters to replace instead of querying via JDBC 
metadata API. This is useful if the JDBC vendor could not return correct 
parameters count, then user may ove [...]
+    "placeholder": { "index": 30, "kind": "parameter", "displayName": 
"Placeholder", "group": "advanced", "label": "advanced", "required": false, 
"type": "string", "javaType": "java.lang.String", "deprecated": false, 
"autowired": false, "secret": false, "defaultValue": "#", "description": 
"Specifies a character that will be replaced to in SQL query. Notice, that it 
is simple String.replaceAll() operation and no SQL parsing is involved (quoted 
strings will also change)." },
+    "prepareStatementStrategy": { "index": 31, "kind": "parameter", 
"displayName": "Prepare Statement Strategy", "group": "advanced", "label": 
"advanced", "required": false, "type": "object", "javaType": 
"org.apache.camel.component.sql.SqlPrepareStatementStrategy", "deprecated": 
false, "autowired": false, "secret": false, "description": "Allows to plugin to 
use a custom org.apache.camel.component.sql.SqlPrepareStatementStrategy to 
control preparation of the query and prepared statement." },
+    "rowMapperFactory": { "index": 32, "kind": "parameter", "displayName": 
"Row Mapper Factory", "group": "advanced", "label": "advanced", "required": 
false, "type": "object", "javaType": 
"org.apache.camel.component.sql.RowMapperFactory", "deprecated": false, 
"autowired": false, "secret": false, "description": "Factory for creating 
RowMapper" },
+    "templateOptions": { "index": 33, "kind": "parameter", "displayName": 
"Template Options", "group": "advanced", "label": "advanced", "required": 
false, "type": "object", "javaType": "java.util.Map<java.lang.String, 
java.lang.Object>", "prefix": "template.", "multiValue": true, "deprecated": 
false, "autowired": false, "secret": false, "description": "Configures the 
Spring JdbcTemplate with the key\/values from the Map" },
+    "usePlaceholder": { "index": 34, "kind": "parameter", "displayName": "Use 
Placeholder", "group": "advanced", "label": "advanced", "required": false, 
"type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": 
false, "secret": false, "defaultValue": true, "description": "Sets whether to 
use placeholder and replace all placeholder characters with sign in the SQL 
queries." },
+    "backoffErrorThreshold": { "index": 35, "kind": "parameter", 
"displayName": "Backoff Error Threshold", "group": "scheduler", "label": 
"consumer,scheduler", "required": false, "type": "integer", "javaType": "int", 
"deprecated": false, "autowired": false, "secret": false, "description": "The 
number of subsequent error polls (failed due some error) that should happen 
before the backoffMultipler should kick-in." },
+    "backoffIdleThreshold": { "index": 36, "kind": "parameter", "displayName": 
"Backoff Idle Threshold", "group": "scheduler", "label": "consumer,scheduler", 
"required": false, "type": "integer", "javaType": "int", "deprecated": false, 
"autowired": false, "secret": false, "description": "The number of subsequent 
idle polls that should happen before the backoffMultipler should kick-in." },
+    "backoffMultiplier": { "index": 37, "kind": "parameter", "displayName": 
"Backoff Multiplier", "group": "scheduler", "label": "consumer,scheduler", 
"required": false, "type": "integer", "javaType": "int", "deprecated": false, 
"autowired": false, "secret": false, "description": "To let the scheduled 
polling consumer backoff if there has been a number of subsequent idles\/errors 
in a row. The multiplier is then the number of polls that will be skipped 
before the next actual attempt is h [...]
+    "delay": { "index": 38, "kind": "parameter", "displayName": "Delay", 
"group": "scheduler", "label": "consumer,scheduler", "required": false, "type": 
"integer", "javaType": "long", "deprecated": false, "autowired": false, 
"secret": false, "defaultValue": 500, "description": "Milliseconds before the 
next poll." },
+    "greedy": { "index": 39, "kind": "parameter", "displayName": "Greedy", 
"group": "scheduler", "label": "consumer,scheduler", "required": false, "type": 
"boolean", "javaType": "boolean", "deprecated": false, "autowired": false, 
"secret": false, "defaultValue": false, "description": "If greedy is enabled, 
then the ScheduledPollConsumer will run immediately again, if the previous run 
polled 1 or more messages." },
+    "initialDelay": { "index": 40, "kind": "parameter", "displayName": 
"Initial Delay", "group": "scheduler", "label": "consumer,scheduler", 
"required": false, "type": "integer", "javaType": "long", "deprecated": false, 
"autowired": false, "secret": false, "defaultValue": 1000, "description": 
"Milliseconds before the first poll starts." },
+    "repeatCount": { "index": 41, "kind": "parameter", "displayName": "Repeat 
Count", "group": "scheduler", "label": "consumer,scheduler", "required": false, 
"type": "integer", "javaType": "long", "deprecated": false, "autowired": false, 
"secret": false, "defaultValue": 0, "description": "Specifies a maximum limit 
of number of fires. So if you set it to 1, the scheduler will only fire once. 
If you set it to 5, it will only fire five times. A value of zero or negative 
means fire forever." },
+    "runLoggingLevel": { "index": 42, "kind": "parameter", "displayName": "Run 
Logging Level", "group": "scheduler", "label": "consumer,scheduler", 
"required": false, "type": "object", "javaType": 
"org.apache.camel.LoggingLevel", "enum": [ "TRACE", "DEBUG", "INFO", "WARN", 
"ERROR", "OFF" ], "deprecated": false, "autowired": false, "secret": false, 
"defaultValue": "TRACE", "description": "The consumer logs a start\/complete 
log line when it polls. This option allows you to configure the l [...]
+    "scheduledExecutorService": { "index": 43, "kind": "parameter", 
"displayName": "Scheduled Executor Service", "group": "scheduler", "label": 
"consumer,scheduler", "required": false, "type": "object", "javaType": 
"java.util.concurrent.ScheduledExecutorService", "deprecated": false, 
"autowired": false, "secret": false, "description": "Allows for configuring a 
custom\/shared thread pool to use for the consumer. By default each consumer 
has its own single threaded thread pool." },
+    "scheduler": { "index": 44, "kind": "parameter", "displayName": 
"Scheduler", "group": "scheduler", "label": "consumer,scheduler", "required": 
false, "type": "object", "javaType": "java.lang.Object", "deprecated": false, 
"autowired": false, "secret": false, "defaultValue": "none", "description": "To 
use a cron scheduler from either camel-spring or camel-quartz component. Use 
value spring or quartz for built in scheduler" },
+    "schedulerProperties": { "index": 45, "kind": "parameter", "displayName": 
"Scheduler Properties", "group": "scheduler", "label": "consumer,scheduler", 
"required": false, "type": "object", "javaType": 
"java.util.Map<java.lang.String, java.lang.Object>", "prefix": "scheduler.", 
"multiValue": true, "deprecated": false, "autowired": false, "secret": false, 
"description": "To configure additional properties when using a custom 
scheduler or any of the Quartz, Spring based scheduler." },
+    "startScheduler": { "index": 46, "kind": "parameter", "displayName": 
"Start Scheduler", "group": "scheduler", "label": "consumer,scheduler", 
"required": false, "type": "boolean", "javaType": "boolean", "deprecated": 
false, "autowired": false, "secret": false, "defaultValue": true, 
"description": "Whether the scheduler should be auto started." },
+    "timeUnit": { "index": 47, "kind": "parameter", "displayName": "Time 
Unit", "group": "scheduler", "label": "consumer,scheduler", "required": false, 
"type": "object", "javaType": "java.util.concurrent.TimeUnit", "enum": [ 
"NANOSECONDS", "MICROSECONDS", "MILLISECONDS", "SECONDS", "MINUTES", "HOURS", 
"DAYS" ], "deprecated": false, "autowired": false, "secret": false, 
"defaultValue": "MILLISECONDS", "description": "Time unit for initialDelay and 
delay options." },
+    "useFixedDelay": { "index": 48, "kind": "parameter", "displayName": "Use 
Fixed Delay", "group": "scheduler", "label": "consumer,scheduler", "required": 
false, "type": "boolean", "javaType": "boolean", "deprecated": false, 
"autowired": false, "secret": false, "defaultValue": true, "description": 
"Controls if fixed delay or fixed rate is used. See ScheduledExecutorService in 
JDK for details." }
   }
 }
diff --git 
a/components/camel-sql/src/generated/java/org/apache/camel/component/sql/SqlComponentConfigurer.java
 
b/components/camel-sql/src/generated/java/org/apache/camel/component/sql/SqlComponentConfigurer.java
index 1f9d62383c0..f04aba0caa6 100644
--- 
a/components/camel-sql/src/generated/java/org/apache/camel/component/sql/SqlComponentConfigurer.java
+++ 
b/components/camel-sql/src/generated/java/org/apache/camel/component/sql/SqlComponentConfigurer.java
@@ -25,10 +25,14 @@ public class SqlComponentConfigurer extends 
PropertyConfigurerSupport implements
         switch (ignoreCase ? name.toLowerCase() : name) {
         case "autowiredenabled":
         case "autowiredEnabled": 
target.setAutowiredEnabled(property(camelContext, boolean.class, value)); 
return true;
+        case "batchautocommitdisabled":
+        case "batchAutoCommitDisabled": 
target.setBatchAutoCommitDisabled(property(camelContext, boolean.class, 
value)); return true;
         case "bridgeerrorhandler":
         case "bridgeErrorHandler": 
target.setBridgeErrorHandler(property(camelContext, boolean.class, value)); 
return true;
         case "datasource":
         case "dataSource": target.setDataSource(property(camelContext, 
javax.sql.DataSource.class, value)); return true;
+        case "fetchsize":
+        case "fetchSize": target.setFetchSize(property(camelContext, 
int.class, value)); return true;
         case "healthcheckconsumerenabled":
         case "healthCheckConsumerEnabled": 
target.setHealthCheckConsumerEnabled(property(camelContext, boolean.class, 
value)); return true;
         case "healthcheckproducerenabled":
@@ -55,10 +59,14 @@ public class SqlComponentConfigurer extends 
PropertyConfigurerSupport implements
         switch (ignoreCase ? name.toLowerCase() : name) {
         case "autowiredenabled":
         case "autowiredEnabled": return boolean.class;
+        case "batchautocommitdisabled":
+        case "batchAutoCommitDisabled": return boolean.class;
         case "bridgeerrorhandler":
         case "bridgeErrorHandler": return boolean.class;
         case "datasource":
         case "dataSource": return javax.sql.DataSource.class;
+        case "fetchsize":
+        case "fetchSize": return int.class;
         case "healthcheckconsumerenabled":
         case "healthCheckConsumerEnabled": return boolean.class;
         case "healthcheckproducerenabled":
@@ -81,10 +89,14 @@ public class SqlComponentConfigurer extends 
PropertyConfigurerSupport implements
         switch (ignoreCase ? name.toLowerCase() : name) {
         case "autowiredenabled":
         case "autowiredEnabled": return target.isAutowiredEnabled();
+        case "batchautocommitdisabled":
+        case "batchAutoCommitDisabled": return 
target.isBatchAutoCommitDisabled();
         case "bridgeerrorhandler":
         case "bridgeErrorHandler": return target.isBridgeErrorHandler();
         case "datasource":
         case "dataSource": return target.getDataSource();
+        case "fetchsize":
+        case "fetchSize": return target.getFetchSize();
         case "healthcheckconsumerenabled":
         case "healthCheckConsumerEnabled": return 
target.isHealthCheckConsumerEnabled();
         case "healthcheckproducerenabled":
diff --git 
a/components/camel-sql/src/generated/java/org/apache/camel/component/sql/SqlEndpointConfigurer.java
 
b/components/camel-sql/src/generated/java/org/apache/camel/component/sql/SqlEndpointConfigurer.java
index f4d10612e14..6805419d4f9 100644
--- 
a/components/camel-sql/src/generated/java/org/apache/camel/component/sql/SqlEndpointConfigurer.java
+++ 
b/components/camel-sql/src/generated/java/org/apache/camel/component/sql/SqlEndpointConfigurer.java
@@ -34,6 +34,8 @@ public class SqlEndpointConfigurer extends 
PropertyConfigurerSupport implements
         case "backoffmultiplier":
         case "backoffMultiplier": 
target.setBackoffMultiplier(property(camelContext, int.class, value)); return 
true;
         case "batch": target.setBatch(property(camelContext, boolean.class, 
value)); return true;
+        case "batchautocommitdisabled":
+        case "batchAutoCommitDisabled": 
target.setBatchAutoCommitDisabled(property(camelContext, boolean.class, 
value)); return true;
         case "breakbatchonconsumefail":
         case "breakBatchOnConsumeFail": 
target.setBreakBatchOnConsumeFail(property(camelContext, boolean.class, 
value)); return true;
         case "bridgeerrorhandler":
@@ -47,6 +49,8 @@ public class SqlEndpointConfigurer extends 
PropertyConfigurerSupport implements
         case "exchangePattern": 
target.setExchangePattern(property(camelContext, 
org.apache.camel.ExchangePattern.class, value)); return true;
         case "expectedupdatecount":
         case "expectedUpdateCount": 
target.setExpectedUpdateCount(property(camelContext, int.class, value)); return 
true;
+        case "fetchsize":
+        case "fetchSize": target.setFetchSize(property(camelContext, 
int.class, value)); return true;
         case "greedy": target.setGreedy(property(camelContext, boolean.class, 
value)); return true;
         case "initialdelay":
         case "initialDelay": target.setInitialDelay(property(camelContext, 
long.class, value)); return true;
@@ -130,6 +134,8 @@ public class SqlEndpointConfigurer extends 
PropertyConfigurerSupport implements
         case "backoffmultiplier":
         case "backoffMultiplier": return int.class;
         case "batch": return boolean.class;
+        case "batchautocommitdisabled":
+        case "batchAutoCommitDisabled": return boolean.class;
         case "breakbatchonconsumefail":
         case "breakBatchOnConsumeFail": return boolean.class;
         case "bridgeerrorhandler":
@@ -143,6 +149,8 @@ public class SqlEndpointConfigurer extends 
PropertyConfigurerSupport implements
         case "exchangePattern": return org.apache.camel.ExchangePattern.class;
         case "expectedupdatecount":
         case "expectedUpdateCount": return int.class;
+        case "fetchsize":
+        case "fetchSize": return int.class;
         case "greedy": return boolean.class;
         case "initialdelay":
         case "initialDelay": return long.class;
@@ -222,6 +230,8 @@ public class SqlEndpointConfigurer extends 
PropertyConfigurerSupport implements
         case "backoffmultiplier":
         case "backoffMultiplier": return target.getBackoffMultiplier();
         case "batch": return target.isBatch();
+        case "batchautocommitdisabled":
+        case "batchAutoCommitDisabled": return 
target.isBatchAutoCommitDisabled();
         case "breakbatchonconsumefail":
         case "breakBatchOnConsumeFail": return 
target.isBreakBatchOnConsumeFail();
         case "bridgeerrorhandler":
@@ -235,6 +245,8 @@ public class SqlEndpointConfigurer extends 
PropertyConfigurerSupport implements
         case "exchangePattern": return target.getExchangePattern();
         case "expectedupdatecount":
         case "expectedUpdateCount": return target.getExpectedUpdateCount();
+        case "fetchsize":
+        case "fetchSize": return target.getFetchSize();
         case "greedy": return target.isGreedy();
         case "initialdelay":
         case "initialDelay": return target.getInitialDelay();
diff --git 
a/components/camel-sql/src/generated/java/org/apache/camel/component/sql/SqlEndpointUriFactory.java
 
b/components/camel-sql/src/generated/java/org/apache/camel/component/sql/SqlEndpointUriFactory.java
index b2f450002f1..34e417f5aa8 100644
--- 
a/components/camel-sql/src/generated/java/org/apache/camel/component/sql/SqlEndpointUriFactory.java
+++ 
b/components/camel-sql/src/generated/java/org/apache/camel/component/sql/SqlEndpointUriFactory.java
@@ -23,13 +23,14 @@ public class SqlEndpointUriFactory extends 
org.apache.camel.support.component.En
     private static final Set<String> SECRET_PROPERTY_NAMES;
     private static final Set<String> MULTI_VALUE_PREFIXES;
     static {
-        Set<String> props = new HashSet<>(47);
+        Set<String> props = new HashSet<>(49);
         props.add("allowNamedParameters");
         props.add("alwaysPopulateStatement");
         props.add("backoffErrorThreshold");
         props.add("backoffIdleThreshold");
         props.add("backoffMultiplier");
         props.add("batch");
+        props.add("batchAutoCommitDisabled");
         props.add("breakBatchOnConsumeFail");
         props.add("bridgeErrorHandler");
         props.add("dataSource");
@@ -37,6 +38,7 @@ public class SqlEndpointUriFactory extends 
org.apache.camel.support.component.En
         props.add("exceptionHandler");
         props.add("exchangePattern");
         props.add("expectedUpdateCount");
+        props.add("fetchSize");
         props.add("greedy");
         props.add("initialDelay");
         props.add("lazyStartProducer");
diff --git 
a/components/camel-sql/src/generated/resources/META-INF/org/apache/camel/component/sql/sql.json
 
b/components/camel-sql/src/generated/resources/META-INF/org/apache/camel/component/sql/sql.json
index 7594b0197ef..1e4bcc94236 100644
--- 
a/components/camel-sql/src/generated/resources/META-INF/org/apache/camel/component/sql/sql.json
+++ 
b/components/camel-sql/src/generated/resources/META-INF/org/apache/camel/component/sql/sql.json
@@ -26,13 +26,15 @@
   "componentProperties": {
     "dataSource": { "index": 0, "kind": "property", "displayName": "Data 
Source", "group": "common", "label": "", "required": false, "type": "object", 
"javaType": "javax.sql.DataSource", "deprecated": false, "autowired": true, 
"secret": false, "description": "Sets the DataSource to use to communicate with 
the database." },
     "bridgeErrorHandler": { "index": 1, "kind": "property", "displayName": 
"Bridge Error Handler", "group": "consumer", "label": "consumer", "required": 
false, "type": "boolean", "javaType": "boolean", "deprecated": false, 
"autowired": false, "secret": false, "defaultValue": false, "description": 
"Allows for bridging the consumer to the Camel routing Error Handler, which 
mean any exceptions (if possible) occurred while the Camel consumer is trying 
to pickup incoming messages, or the like [...]
-    "lazyStartProducer": { "index": 2, "kind": "property", "displayName": 
"Lazy Start Producer", "group": "producer", "label": "producer", "required": 
false, "type": "boolean", "javaType": "boolean", "deprecated": false, 
"autowired": false, "secret": false, "defaultValue": false, "description": 
"Whether the producer should be started lazy (on the first message). By 
starting lazy you can use this to allow CamelContext and routes to startup in 
situations where a producer may otherwise fail [...]
-    "autowiredEnabled": { "index": 3, "kind": "property", "displayName": 
"Autowired Enabled", "group": "advanced", "label": "advanced", "required": 
false, "type": "boolean", "javaType": "boolean", "deprecated": false, 
"autowired": false, "secret": false, "defaultValue": true, "description": 
"Whether autowiring is enabled. This is used for automatic autowiring options 
(the option must be marked as autowired) by looking up in the registry to find 
if there is a single instance of matching t [...]
-    "rowMapperFactory": { "index": 4, "kind": "property", "displayName": "Row 
Mapper Factory", "group": "advanced", "label": "advanced", "required": false, 
"type": "object", "javaType": 
"org.apache.camel.component.sql.RowMapperFactory", "deprecated": false, 
"autowired": true, "secret": false, "description": "Factory for creating 
RowMapper" },
-    "serviceLocationEnabled": { "index": 5, "kind": "property", "displayName": 
"Service Location Enabled", "group": "advanced", "label": "advanced", 
"required": false, "type": "boolean", "javaType": "boolean", "deprecated": 
false, "autowired": false, "secret": false, "defaultValue": true, 
"description": "Whether to detect the network address location of the JMS 
broker on startup. This information is gathered via reflection on the 
ConnectionFactory, and is vendor specific. This option can [...]
-    "usePlaceholder": { "index": 6, "kind": "property", "displayName": "Use 
Placeholder", "group": "advanced", "label": "advanced", "required": false, 
"type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": 
false, "secret": false, "defaultValue": true, "description": "Sets whether to 
use placeholder and replace all placeholder characters with sign in the SQL 
queries. This option is default true" },
-    "healthCheckConsumerEnabled": { "index": 7, "kind": "property", 
"displayName": "Health Check Consumer Enabled", "group": "health", "label": 
"health", "required": false, "type": "boolean", "javaType": "boolean", 
"deprecated": false, "autowired": false, "secret": false, "defaultValue": true, 
"description": "Used for enabling or disabling all consumer based health checks 
from this component" },
-    "healthCheckProducerEnabled": { "index": 8, "kind": "property", 
"displayName": "Health Check Producer Enabled", "group": "health", "label": 
"health", "required": false, "type": "boolean", "javaType": "boolean", 
"deprecated": false, "autowired": false, "secret": false, "defaultValue": true, 
"description": "Used for enabling or disabling all producer based health checks 
from this component. Notice: Camel has by default disabled all producer based 
health-checks. You can turn on producer [...]
+    "batchAutoCommitDisabled": { "index": 2, "kind": "property", 
"displayName": "Batch Auto Commit Disabled", "group": "producer", "label": 
"producer", "required": false, "type": "boolean", "javaType": "boolean", 
"deprecated": false, "autowired": false, "secret": false, "defaultValue": true, 
"description": "Whether to optimize batch by turning off auto-commit which can 
dramatic improve performance, and instead execute as a manual commit after the 
entire batch operation is complete" },
+    "lazyStartProducer": { "index": 3, "kind": "property", "displayName": 
"Lazy Start Producer", "group": "producer", "label": "producer", "required": 
false, "type": "boolean", "javaType": "boolean", "deprecated": false, 
"autowired": false, "secret": false, "defaultValue": false, "description": 
"Whether the producer should be started lazy (on the first message). By 
starting lazy you can use this to allow CamelContext and routes to startup in 
situations where a producer may otherwise fail [...]
+    "autowiredEnabled": { "index": 4, "kind": "property", "displayName": 
"Autowired Enabled", "group": "advanced", "label": "advanced", "required": 
false, "type": "boolean", "javaType": "boolean", "deprecated": false, 
"autowired": false, "secret": false, "defaultValue": true, "description": 
"Whether autowiring is enabled. This is used for automatic autowiring options 
(the option must be marked as autowired) by looking up in the registry to find 
if there is a single instance of matching t [...]
+    "fetchSize": { "index": 5, "kind": "property", "displayName": "Fetch 
Size", "group": "advanced", "label": "advanced", "required": false, "type": 
"integer", "javaType": "int", "deprecated": false, "autowired": false, 
"secret": false, "description": "Gives the JDBC driver a hint as to the number 
of rows that should be fetched from the database when more rows are needed for 
ResultSet objects generated by this Statement. If the value specified is zero, 
then the hint is ignored. The defau [...]
+    "rowMapperFactory": { "index": 6, "kind": "property", "displayName": "Row 
Mapper Factory", "group": "advanced", "label": "advanced", "required": false, 
"type": "object", "javaType": 
"org.apache.camel.component.sql.RowMapperFactory", "deprecated": false, 
"autowired": true, "secret": false, "description": "Factory for creating 
RowMapper" },
+    "serviceLocationEnabled": { "index": 7, "kind": "property", "displayName": 
"Service Location Enabled", "group": "advanced", "label": "advanced", 
"required": false, "type": "boolean", "javaType": "boolean", "deprecated": 
false, "autowired": false, "secret": false, "defaultValue": true, 
"description": "Whether to detect the network address location of the JMS 
broker on startup. This information is gathered via reflection on the 
ConnectionFactory, and is vendor specific. This option can [...]
+    "usePlaceholder": { "index": 8, "kind": "property", "displayName": "Use 
Placeholder", "group": "advanced", "label": "advanced", "required": false, 
"type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": 
false, "secret": false, "defaultValue": true, "description": "Sets whether to 
use placeholder and replace all placeholder characters with sign in the SQL 
queries. This option is default true" },
+    "healthCheckConsumerEnabled": { "index": 9, "kind": "property", 
"displayName": "Health Check Consumer Enabled", "group": "health", "label": 
"health", "required": false, "type": "boolean", "javaType": "boolean", 
"deprecated": false, "autowired": false, "secret": false, "defaultValue": true, 
"description": "Used for enabling or disabling all consumer based health checks 
from this component" },
+    "healthCheckProducerEnabled": { "index": 10, "kind": "property", 
"displayName": "Health Check Producer Enabled", "group": "health", "label": 
"health", "required": false, "type": "boolean", "javaType": "boolean", 
"deprecated": false, "autowired": false, "secret": false, "defaultValue": true, 
"description": "Used for enabling or disabling all producer based health checks 
from this component. Notice: Camel has by default disabled all producer based 
health-checks. You can turn on produce [...]
   },
   "headers": {
     "CamelSqlQuery": { "index": 0, "kind": "header", "displayName": "", 
"group": "producer", "label": "producer", "required": false, "javaType": 
"String", "deprecated": false, "deprecationNote": "", "autowired": false, 
"secret": false, "description": "Query to execute. This query takes precedence 
over the query specified in the endpoint URI. Note that query parameters in the 
header _are_ represented by a instead of a pass:# symbol", "constantName": 
"org.apache.camel.component.sql.SqlCons [...]
@@ -68,29 +70,31 @@
     "pollStrategy": { "index": 20, "kind": "parameter", "displayName": "Poll 
Strategy", "group": "consumer (advanced)", "label": "consumer,advanced", 
"required": false, "type": "object", "javaType": 
"org.apache.camel.spi.PollingConsumerPollStrategy", "deprecated": false, 
"autowired": false, "secret": false, "description": "A pluggable 
org.apache.camel.PollingConsumerPollingStrategy allowing you to provide your 
custom implementation to control error handling usually occurred during the po 
[...]
     "processingStrategy": { "index": 21, "kind": "parameter", "displayName": 
"Processing Strategy", "group": "consumer (advanced)", "label": 
"consumer,advanced", "required": false, "type": "object", "javaType": 
"org.apache.camel.component.sql.SqlProcessingStrategy", "deprecated": false, 
"autowired": false, "secret": false, "description": "Allows to plugin to use a 
custom org.apache.camel.component.sql.SqlProcessingStrategy to execute queries 
when the consumer has processed the rows\/batch." },
     "batch": { "index": 22, "kind": "parameter", "displayName": "Batch", 
"group": "producer", "label": "producer", "required": false, "type": "boolean", 
"javaType": "boolean", "deprecated": false, "autowired": false, "secret": 
false, "defaultValue": false, "description": "Enables or disables batch mode" },
-    "noop": { "index": 23, "kind": "parameter", "displayName": "Noop", 
"group": "producer", "label": "producer", "required": false, "type": "boolean", 
"javaType": "boolean", "deprecated": false, "autowired": false, "secret": 
false, "defaultValue": false, "description": "If set, will ignore the results 
of the SQL query and use the existing IN message as the OUT message for the 
continuation of processing" },
-    "useMessageBodyForSql": { "index": 24, "kind": "parameter", "displayName": 
"Use Message Body For Sql", "group": "producer", "label": "producer", 
"required": false, "type": "boolean", "javaType": "boolean", "deprecated": 
false, "autowired": false, "secret": false, "defaultValue": false, 
"description": "Whether to use the message body as the SQL and then headers for 
parameters. If this option is enabled then the SQL in the uri is not used. Note 
that query parameters in the message body [...]
-    "lazyStartProducer": { "index": 25, "kind": "parameter", "displayName": 
"Lazy Start Producer", "group": "producer (advanced)", "label": 
"producer,advanced", "required": false, "type": "boolean", "javaType": 
"boolean", "deprecated": false, "autowired": false, "secret": false, 
"defaultValue": false, "description": "Whether the producer should be started 
lazy (on the first message). By starting lazy you can use this to allow 
CamelContext and routes to startup in situations where a produ [...]
-    "alwaysPopulateStatement": { "index": 26, "kind": "parameter", 
"displayName": "Always Populate Statement", "group": "advanced", "label": 
"advanced", "required": false, "type": "boolean", "javaType": "boolean", 
"deprecated": false, "autowired": false, "secret": false, "defaultValue": 
false, "description": "If enabled then the populateStatement method from 
org.apache.camel.component.sql.SqlPrepareStatementStrategy is always invoked, 
also if there is no expected parameters to be prepare [...]
-    "parametersCount": { "index": 27, "kind": "parameter", "displayName": 
"Parameters Count", "group": "advanced", "label": "advanced", "required": 
false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": 
false, "secret": false, "description": "If set greater than zero, then Camel 
will use this count value of parameters to replace instead of querying via JDBC 
metadata API. This is useful if the JDBC vendor could not return correct 
parameters count, then user may ove [...]
-    "placeholder": { "index": 28, "kind": "parameter", "displayName": 
"Placeholder", "group": "advanced", "label": "advanced", "required": false, 
"type": "string", "javaType": "java.lang.String", "deprecated": false, 
"autowired": false, "secret": false, "defaultValue": "#", "description": 
"Specifies a character that will be replaced to in SQL query. Notice, that it 
is simple String.replaceAll() operation and no SQL parsing is involved (quoted 
strings will also change)." },
-    "prepareStatementStrategy": { "index": 29, "kind": "parameter", 
"displayName": "Prepare Statement Strategy", "group": "advanced", "label": 
"advanced", "required": false, "type": "object", "javaType": 
"org.apache.camel.component.sql.SqlPrepareStatementStrategy", "deprecated": 
false, "autowired": false, "secret": false, "description": "Allows to plugin to 
use a custom org.apache.camel.component.sql.SqlPrepareStatementStrategy to 
control preparation of the query and prepared statement." },
-    "rowMapperFactory": { "index": 30, "kind": "parameter", "displayName": 
"Row Mapper Factory", "group": "advanced", "label": "advanced", "required": 
false, "type": "object", "javaType": 
"org.apache.camel.component.sql.RowMapperFactory", "deprecated": false, 
"autowired": false, "secret": false, "description": "Factory for creating 
RowMapper" },
-    "templateOptions": { "index": 31, "kind": "parameter", "displayName": 
"Template Options", "group": "advanced", "label": "advanced", "required": 
false, "type": "object", "javaType": "java.util.Map<java.lang.String, 
java.lang.Object>", "prefix": "template.", "multiValue": true, "deprecated": 
false, "autowired": false, "secret": false, "description": "Configures the 
Spring JdbcTemplate with the key\/values from the Map" },
-    "usePlaceholder": { "index": 32, "kind": "parameter", "displayName": "Use 
Placeholder", "group": "advanced", "label": "advanced", "required": false, 
"type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": 
false, "secret": false, "defaultValue": true, "description": "Sets whether to 
use placeholder and replace all placeholder characters with sign in the SQL 
queries." },
-    "backoffErrorThreshold": { "index": 33, "kind": "parameter", 
"displayName": "Backoff Error Threshold", "group": "scheduler", "label": 
"consumer,scheduler", "required": false, "type": "integer", "javaType": "int", 
"deprecated": false, "autowired": false, "secret": false, "description": "The 
number of subsequent error polls (failed due some error) that should happen 
before the backoffMultipler should kick-in." },
-    "backoffIdleThreshold": { "index": 34, "kind": "parameter", "displayName": 
"Backoff Idle Threshold", "group": "scheduler", "label": "consumer,scheduler", 
"required": false, "type": "integer", "javaType": "int", "deprecated": false, 
"autowired": false, "secret": false, "description": "The number of subsequent 
idle polls that should happen before the backoffMultipler should kick-in." },
-    "backoffMultiplier": { "index": 35, "kind": "parameter", "displayName": 
"Backoff Multiplier", "group": "scheduler", "label": "consumer,scheduler", 
"required": false, "type": "integer", "javaType": "int", "deprecated": false, 
"autowired": false, "secret": false, "description": "To let the scheduled 
polling consumer backoff if there has been a number of subsequent idles\/errors 
in a row. The multiplier is then the number of polls that will be skipped 
before the next actual attempt is h [...]
-    "delay": { "index": 36, "kind": "parameter", "displayName": "Delay", 
"group": "scheduler", "label": "consumer,scheduler", "required": false, "type": 
"integer", "javaType": "long", "deprecated": false, "autowired": false, 
"secret": false, "defaultValue": 500, "description": "Milliseconds before the 
next poll." },
-    "greedy": { "index": 37, "kind": "parameter", "displayName": "Greedy", 
"group": "scheduler", "label": "consumer,scheduler", "required": false, "type": 
"boolean", "javaType": "boolean", "deprecated": false, "autowired": false, 
"secret": false, "defaultValue": false, "description": "If greedy is enabled, 
then the ScheduledPollConsumer will run immediately again, if the previous run 
polled 1 or more messages." },
-    "initialDelay": { "index": 38, "kind": "parameter", "displayName": 
"Initial Delay", "group": "scheduler", "label": "consumer,scheduler", 
"required": false, "type": "integer", "javaType": "long", "deprecated": false, 
"autowired": false, "secret": false, "defaultValue": 1000, "description": 
"Milliseconds before the first poll starts." },
-    "repeatCount": { "index": 39, "kind": "parameter", "displayName": "Repeat 
Count", "group": "scheduler", "label": "consumer,scheduler", "required": false, 
"type": "integer", "javaType": "long", "deprecated": false, "autowired": false, 
"secret": false, "defaultValue": 0, "description": "Specifies a maximum limit 
of number of fires. So if you set it to 1, the scheduler will only fire once. 
If you set it to 5, it will only fire five times. A value of zero or negative 
means fire forever." },
-    "runLoggingLevel": { "index": 40, "kind": "parameter", "displayName": "Run 
Logging Level", "group": "scheduler", "label": "consumer,scheduler", 
"required": false, "type": "object", "javaType": 
"org.apache.camel.LoggingLevel", "enum": [ "TRACE", "DEBUG", "INFO", "WARN", 
"ERROR", "OFF" ], "deprecated": false, "autowired": false, "secret": false, 
"defaultValue": "TRACE", "description": "The consumer logs a start\/complete 
log line when it polls. This option allows you to configure the l [...]
-    "scheduledExecutorService": { "index": 41, "kind": "parameter", 
"displayName": "Scheduled Executor Service", "group": "scheduler", "label": 
"consumer,scheduler", "required": false, "type": "object", "javaType": 
"java.util.concurrent.ScheduledExecutorService", "deprecated": false, 
"autowired": false, "secret": false, "description": "Allows for configuring a 
custom\/shared thread pool to use for the consumer. By default each consumer 
has its own single threaded thread pool." },
-    "scheduler": { "index": 42, "kind": "parameter", "displayName": 
"Scheduler", "group": "scheduler", "label": "consumer,scheduler", "required": 
false, "type": "object", "javaType": "java.lang.Object", "deprecated": false, 
"autowired": false, "secret": false, "defaultValue": "none", "description": "To 
use a cron scheduler from either camel-spring or camel-quartz component. Use 
value spring or quartz for built in scheduler" },
-    "schedulerProperties": { "index": 43, "kind": "parameter", "displayName": 
"Scheduler Properties", "group": "scheduler", "label": "consumer,scheduler", 
"required": false, "type": "object", "javaType": 
"java.util.Map<java.lang.String, java.lang.Object>", "prefix": "scheduler.", 
"multiValue": true, "deprecated": false, "autowired": false, "secret": false, 
"description": "To configure additional properties when using a custom 
scheduler or any of the Quartz, Spring based scheduler." },
-    "startScheduler": { "index": 44, "kind": "parameter", "displayName": 
"Start Scheduler", "group": "scheduler", "label": "consumer,scheduler", 
"required": false, "type": "boolean", "javaType": "boolean", "deprecated": 
false, "autowired": false, "secret": false, "defaultValue": true, 
"description": "Whether the scheduler should be auto started." },
-    "timeUnit": { "index": 45, "kind": "parameter", "displayName": "Time 
Unit", "group": "scheduler", "label": "consumer,scheduler", "required": false, 
"type": "object", "javaType": "java.util.concurrent.TimeUnit", "enum": [ 
"NANOSECONDS", "MICROSECONDS", "MILLISECONDS", "SECONDS", "MINUTES", "HOURS", 
"DAYS" ], "deprecated": false, "autowired": false, "secret": false, 
"defaultValue": "MILLISECONDS", "description": "Time unit for initialDelay and 
delay options." },
-    "useFixedDelay": { "index": 46, "kind": "parameter", "displayName": "Use 
Fixed Delay", "group": "scheduler", "label": "consumer,scheduler", "required": 
false, "type": "boolean", "javaType": "boolean", "deprecated": false, 
"autowired": false, "secret": false, "defaultValue": true, "description": 
"Controls if fixed delay or fixed rate is used. See ScheduledExecutorService in 
JDK for details." }
+    "batchAutoCommitDisabled": { "index": 23, "kind": "parameter", 
"displayName": "Batch Auto Commit Disabled", "group": "producer", "label": 
"producer", "required": false, "type": "boolean", "javaType": "boolean", 
"deprecated": false, "autowired": false, "secret": false, "defaultValue": true, 
"description": "Whether to optimize batch by turning off auto-commit which can 
dramatic improve performance, and instead execute as a manual commit after the 
entire batch operation is complete" },
+    "noop": { "index": 24, "kind": "parameter", "displayName": "Noop", 
"group": "producer", "label": "producer", "required": false, "type": "boolean", 
"javaType": "boolean", "deprecated": false, "autowired": false, "secret": 
false, "defaultValue": false, "description": "If set, will ignore the results 
of the SQL query and use the existing IN message as the OUT message for the 
continuation of processing" },
+    "useMessageBodyForSql": { "index": 25, "kind": "parameter", "displayName": 
"Use Message Body For Sql", "group": "producer", "label": "producer", 
"required": false, "type": "boolean", "javaType": "boolean", "deprecated": 
false, "autowired": false, "secret": false, "defaultValue": false, 
"description": "Whether to use the message body as the SQL and then headers for 
parameters. If this option is enabled then the SQL in the uri is not used. Note 
that query parameters in the message body [...]
+    "lazyStartProducer": { "index": 26, "kind": "parameter", "displayName": 
"Lazy Start Producer", "group": "producer (advanced)", "label": 
"producer,advanced", "required": false, "type": "boolean", "javaType": 
"boolean", "deprecated": false, "autowired": false, "secret": false, 
"defaultValue": false, "description": "Whether the producer should be started 
lazy (on the first message). By starting lazy you can use this to allow 
CamelContext and routes to startup in situations where a produ [...]
+    "alwaysPopulateStatement": { "index": 27, "kind": "parameter", 
"displayName": "Always Populate Statement", "group": "advanced", "label": 
"advanced", "required": false, "type": "boolean", "javaType": "boolean", 
"deprecated": false, "autowired": false, "secret": false, "defaultValue": 
false, "description": "If enabled then the populateStatement method from 
org.apache.camel.component.sql.SqlPrepareStatementStrategy is always invoked, 
also if there is no expected parameters to be prepare [...]
+    "fetchSize": { "index": 28, "kind": "parameter", "displayName": "Fetch 
Size", "group": "advanced", "label": "advanced", "required": false, "type": 
"integer", "javaType": "int", "deprecated": false, "autowired": false, 
"secret": false, "description": "Gives the JDBC driver a hint as to the number 
of rows that should be fetched from the database when more rows are needed for 
ResultSet objects generated by this Statement. If the value specified is zero, 
then the hint is ignored. The def [...]
+    "parametersCount": { "index": 29, "kind": "parameter", "displayName": 
"Parameters Count", "group": "advanced", "label": "advanced", "required": 
false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": 
false, "secret": false, "description": "If set greater than zero, then Camel 
will use this count value of parameters to replace instead of querying via JDBC 
metadata API. This is useful if the JDBC vendor could not return correct 
parameters count, then user may ove [...]
+    "placeholder": { "index": 30, "kind": "parameter", "displayName": 
"Placeholder", "group": "advanced", "label": "advanced", "required": false, 
"type": "string", "javaType": "java.lang.String", "deprecated": false, 
"autowired": false, "secret": false, "defaultValue": "#", "description": 
"Specifies a character that will be replaced to in SQL query. Notice, that it 
is simple String.replaceAll() operation and no SQL parsing is involved (quoted 
strings will also change)." },
+    "prepareStatementStrategy": { "index": 31, "kind": "parameter", 
"displayName": "Prepare Statement Strategy", "group": "advanced", "label": 
"advanced", "required": false, "type": "object", "javaType": 
"org.apache.camel.component.sql.SqlPrepareStatementStrategy", "deprecated": 
false, "autowired": false, "secret": false, "description": "Allows to plugin to 
use a custom org.apache.camel.component.sql.SqlPrepareStatementStrategy to 
control preparation of the query and prepared statement." },
+    "rowMapperFactory": { "index": 32, "kind": "parameter", "displayName": 
"Row Mapper Factory", "group": "advanced", "label": "advanced", "required": 
false, "type": "object", "javaType": 
"org.apache.camel.component.sql.RowMapperFactory", "deprecated": false, 
"autowired": false, "secret": false, "description": "Factory for creating 
RowMapper" },
+    "templateOptions": { "index": 33, "kind": "parameter", "displayName": 
"Template Options", "group": "advanced", "label": "advanced", "required": 
false, "type": "object", "javaType": "java.util.Map<java.lang.String, 
java.lang.Object>", "prefix": "template.", "multiValue": true, "deprecated": 
false, "autowired": false, "secret": false, "description": "Configures the 
Spring JdbcTemplate with the key\/values from the Map" },
+    "usePlaceholder": { "index": 34, "kind": "parameter", "displayName": "Use 
Placeholder", "group": "advanced", "label": "advanced", "required": false, 
"type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": 
false, "secret": false, "defaultValue": true, "description": "Sets whether to 
use placeholder and replace all placeholder characters with sign in the SQL 
queries." },
+    "backoffErrorThreshold": { "index": 35, "kind": "parameter", 
"displayName": "Backoff Error Threshold", "group": "scheduler", "label": 
"consumer,scheduler", "required": false, "type": "integer", "javaType": "int", 
"deprecated": false, "autowired": false, "secret": false, "description": "The 
number of subsequent error polls (failed due some error) that should happen 
before the backoffMultipler should kick-in." },
+    "backoffIdleThreshold": { "index": 36, "kind": "parameter", "displayName": 
"Backoff Idle Threshold", "group": "scheduler", "label": "consumer,scheduler", 
"required": false, "type": "integer", "javaType": "int", "deprecated": false, 
"autowired": false, "secret": false, "description": "The number of subsequent 
idle polls that should happen before the backoffMultipler should kick-in." },
+    "backoffMultiplier": { "index": 37, "kind": "parameter", "displayName": 
"Backoff Multiplier", "group": "scheduler", "label": "consumer,scheduler", 
"required": false, "type": "integer", "javaType": "int", "deprecated": false, 
"autowired": false, "secret": false, "description": "To let the scheduled 
polling consumer backoff if there has been a number of subsequent idles\/errors 
in a row. The multiplier is then the number of polls that will be skipped 
before the next actual attempt is h [...]
+    "delay": { "index": 38, "kind": "parameter", "displayName": "Delay", 
"group": "scheduler", "label": "consumer,scheduler", "required": false, "type": 
"integer", "javaType": "long", "deprecated": false, "autowired": false, 
"secret": false, "defaultValue": 500, "description": "Milliseconds before the 
next poll." },
+    "greedy": { "index": 39, "kind": "parameter", "displayName": "Greedy", 
"group": "scheduler", "label": "consumer,scheduler", "required": false, "type": 
"boolean", "javaType": "boolean", "deprecated": false, "autowired": false, 
"secret": false, "defaultValue": false, "description": "If greedy is enabled, 
then the ScheduledPollConsumer will run immediately again, if the previous run 
polled 1 or more messages." },
+    "initialDelay": { "index": 40, "kind": "parameter", "displayName": 
"Initial Delay", "group": "scheduler", "label": "consumer,scheduler", 
"required": false, "type": "integer", "javaType": "long", "deprecated": false, 
"autowired": false, "secret": false, "defaultValue": 1000, "description": 
"Milliseconds before the first poll starts." },
+    "repeatCount": { "index": 41, "kind": "parameter", "displayName": "Repeat 
Count", "group": "scheduler", "label": "consumer,scheduler", "required": false, 
"type": "integer", "javaType": "long", "deprecated": false, "autowired": false, 
"secret": false, "defaultValue": 0, "description": "Specifies a maximum limit 
of number of fires. So if you set it to 1, the scheduler will only fire once. 
If you set it to 5, it will only fire five times. A value of zero or negative 
means fire forever." },
+    "runLoggingLevel": { "index": 42, "kind": "parameter", "displayName": "Run 
Logging Level", "group": "scheduler", "label": "consumer,scheduler", 
"required": false, "type": "object", "javaType": 
"org.apache.camel.LoggingLevel", "enum": [ "TRACE", "DEBUG", "INFO", "WARN", 
"ERROR", "OFF" ], "deprecated": false, "autowired": false, "secret": false, 
"defaultValue": "TRACE", "description": "The consumer logs a start\/complete 
log line when it polls. This option allows you to configure the l [...]
+    "scheduledExecutorService": { "index": 43, "kind": "parameter", 
"displayName": "Scheduled Executor Service", "group": "scheduler", "label": 
"consumer,scheduler", "required": false, "type": "object", "javaType": 
"java.util.concurrent.ScheduledExecutorService", "deprecated": false, 
"autowired": false, "secret": false, "description": "Allows for configuring a 
custom\/shared thread pool to use for the consumer. By default each consumer 
has its own single threaded thread pool." },
+    "scheduler": { "index": 44, "kind": "parameter", "displayName": 
"Scheduler", "group": "scheduler", "label": "consumer,scheduler", "required": 
false, "type": "object", "javaType": "java.lang.Object", "deprecated": false, 
"autowired": false, "secret": false, "defaultValue": "none", "description": "To 
use a cron scheduler from either camel-spring or camel-quartz component. Use 
value spring or quartz for built in scheduler" },
+    "schedulerProperties": { "index": 45, "kind": "parameter", "displayName": 
"Scheduler Properties", "group": "scheduler", "label": "consumer,scheduler", 
"required": false, "type": "object", "javaType": 
"java.util.Map<java.lang.String, java.lang.Object>", "prefix": "scheduler.", 
"multiValue": true, "deprecated": false, "autowired": false, "secret": false, 
"description": "To configure additional properties when using a custom 
scheduler or any of the Quartz, Spring based scheduler." },
+    "startScheduler": { "index": 46, "kind": "parameter", "displayName": 
"Start Scheduler", "group": "scheduler", "label": "consumer,scheduler", 
"required": false, "type": "boolean", "javaType": "boolean", "deprecated": 
false, "autowired": false, "secret": false, "defaultValue": true, 
"description": "Whether the scheduler should be auto started." },
+    "timeUnit": { "index": 47, "kind": "parameter", "displayName": "Time 
Unit", "group": "scheduler", "label": "consumer,scheduler", "required": false, 
"type": "object", "javaType": "java.util.concurrent.TimeUnit", "enum": [ 
"NANOSECONDS", "MICROSECONDS", "MILLISECONDS", "SECONDS", "MINUTES", "HOURS", 
"DAYS" ], "deprecated": false, "autowired": false, "secret": false, 
"defaultValue": "MILLISECONDS", "description": "Time unit for initialDelay and 
delay options." },
+    "useFixedDelay": { "index": 48, "kind": "parameter", "displayName": "Use 
Fixed Delay", "group": "scheduler", "label": "consumer,scheduler", "required": 
false, "type": "boolean", "javaType": "boolean", "deprecated": false, 
"autowired": false, "secret": false, "defaultValue": true, "description": 
"Controls if fixed delay or fixed rate is used. See ScheduledExecutorService in 
JDK for details." }
   }
 }
diff --git 
a/components/camel-sql/src/main/java/org/apache/camel/component/sql/DefaultSqlEndpoint.java
 
b/components/camel-sql/src/main/java/org/apache/camel/component/sql/DefaultSqlEndpoint.java
index 473d1ed24ee..a8565aca61d 100644
--- 
a/components/camel-sql/src/main/java/org/apache/camel/component/sql/DefaultSqlEndpoint.java
+++ 
b/components/camel-sql/src/main/java/org/apache/camel/component/sql/DefaultSqlEndpoint.java
@@ -63,6 +63,10 @@ public abstract class DefaultSqlEndpoint extends 
DefaultPollingEndpoint implemen
     @UriParam(label = "consumer,advanced",
               description = "Allows to plugin to use a custom 
org.apache.camel.component.sql.SqlProcessingStrategy to execute queries when 
the consumer has processed the rows/batch.")
     private SqlProcessingStrategy processingStrategy;
+    @UriParam(label = "advanced",
+              description = "Gives the JDBC driver a hint as to the number of 
rows that should be fetched from the database when more rows are needed for 
ResultSet objects generated by this Statement. If the value specified is zero, 
then the hint is ignored. The default value is zero."
+                            + " This is important for processing large result 
sets: Setting this higher than the default value will increase processing speed 
at the cost of memory consumption; setting this lower can avoid transferring 
row data that will never be read by the application.")
+    private int fetchSize;
     @UriParam(label = "advanced",
               description = "Allows to plugin to use a custom 
org.apache.camel.component.sql.SqlPrepareStatementStrategy to control 
preparation of the query and prepared statement.")
     private SqlPrepareStatementStrategy prepareStatementStrategy;
@@ -199,6 +203,23 @@ public abstract class DefaultSqlEndpoint extends 
DefaultPollingEndpoint implemen
         this.maxMessagesPerPoll = maxMessagesPerPoll;
     }
 
+    public int getFetchSize() {
+        return fetchSize;
+    }
+
+    /**
+     * Gives the JDBC driver a hint as to the number of rows that should be 
fetched from the database when more rows are
+     * needed for ResultSet objects generated by this Statement. If the value 
specified is zero, then the hint is
+     * ignored. The default value is zero.
+     *
+     * This is important for processing large result sets: Setting this higher 
than the default value will increase
+     * processing speed at the cost of memory consumption; setting this lower 
can avoid transferring row data that will
+     * never be read by the application.
+     */
+    public void setFetchSize(int fetchSize) {
+        this.fetchSize = fetchSize;
+    }
+
     public SqlProcessingStrategy getProcessingStrategy() {
         return processingStrategy;
     }
diff --git 
a/components/camel-sql/src/main/java/org/apache/camel/component/sql/SqlComponent.java
 
b/components/camel-sql/src/main/java/org/apache/camel/component/sql/SqlComponent.java
index 7f92e5092b3..507ab55eb00 100644
--- 
a/components/camel-sql/src/main/java/org/apache/camel/component/sql/SqlComponent.java
+++ 
b/components/camel-sql/src/main/java/org/apache/camel/component/sql/SqlComponent.java
@@ -49,6 +49,13 @@ public class SqlComponent extends HealthCheckComponent {
                             + " This option can be used to turn this off.",
               defaultValue = "true")
     private boolean serviceLocationEnabled = true;
+    @Metadata(label = "producer", defaultValue = "true",
+              description = "Whether to optimize batch by turning off 
auto-commit which can dramatic improve performance, and instead execute as a 
manual commit after the entire batch operation is complete")
+    private boolean batchAutoCommitDisabled = true;
+    @Metadata(label = "advanced",
+              description = "Gives the JDBC driver a hint as to the number of 
rows that should be fetched from the database when more rows are needed for 
ResultSet objects generated by this Statement. If the value specified is zero, 
then the hint is ignored. The default value is zero."
+                            + " This is important for processing large result 
sets: Setting this higher than the default value will increase processing speed 
at the cost of memory consumption; setting this lower can avoid transferring 
row data that will never be read by the application.")
+    private int fetchSize;
 
     public SqlComponent() {
     }
@@ -106,6 +113,8 @@ public class SqlComponent extends HealthCheckComponent {
 
         // create endpoint
         SqlEndpoint endpoint = new SqlEndpoint(uri, this);
+        endpoint.setBatchAutoCommitDisabled(isBatchAutoCommitDisabled());
+        endpoint.setFetchSize(getFetchSize());
         endpoint.setServiceLocationEnabled(serviceLocationEnabled);
         endpoint.setQuery(query);
         endpoint.setPlaceholder(parameterPlaceholderSubstitute);
@@ -185,4 +194,32 @@ public class SqlComponent extends HealthCheckComponent {
         this.serviceLocationEnabled = serviceLocationEnabled;
     }
 
+    public boolean isBatchAutoCommitDisabled() {
+        return batchAutoCommitDisabled;
+    }
+
+    /**
+     * Whether to optimize batch by turning off auto-commit which can dramatic 
improve performance, and instead execute
+     * as a manual commit after the entire batch operation is complete
+     */
+    public void setBatchAutoCommitDisabled(boolean batchAutoCommitDisabled) {
+        this.batchAutoCommitDisabled = batchAutoCommitDisabled;
+    }
+
+    public int getFetchSize() {
+        return fetchSize;
+    }
+
+    /**
+     * Gives the JDBC driver a hint as to the number of rows that should be 
fetched from the database when more rows are
+     * needed for ResultSet objects generated by this Statement. If the value 
specified is zero, then the hint is
+     * ignored. The default value is zero.
+     *
+     * This is important for processing large result sets: Setting this higher 
than the default value will increase
+     * processing speed at the cost of memory consumption; setting this lower 
can avoid transferring row data that will
+     * never be read by the application.
+     */
+    public void setFetchSize(int fetchSize) {
+        this.fetchSize = fetchSize;
+    }
 }
diff --git 
a/components/camel-sql/src/main/java/org/apache/camel/component/sql/SqlConsumer.java
 
b/components/camel-sql/src/main/java/org/apache/camel/component/sql/SqlConsumer.java
index 2c3132338d8..1ae2d6ecbce 100644
--- 
a/components/camel-sql/src/main/java/org/apache/camel/component/sql/SqlConsumer.java
+++ 
b/components/camel-sql/src/main/java/org/apache/camel/component/sql/SqlConsumer.java
@@ -141,6 +141,10 @@ public class SqlConsumer extends 
ScheduledBatchPollingConsumer {
         final PreparedStatementCallback<Integer> callback = new 
PreparedStatementCallback<Integer>() {
             @Override
             public Integer doInPreparedStatement(PreparedStatement ps) throws 
SQLException, DataAccessException {
+                if (getEndpoint().getFetchSize() > 0) {
+                    ps.setFetchSize(getEndpoint().getFetchSize());
+                }
+
                 Queue<DataHolder> answer = new LinkedList<>();
 
                 int expected = parametersCount > 0 ? parametersCount : 
ps.getParameterMetaData().getParameterCount();
diff --git 
a/components/camel-sql/src/main/java/org/apache/camel/component/sql/SqlEndpoint.java
 
b/components/camel-sql/src/main/java/org/apache/camel/component/sql/SqlEndpoint.java
index be0aad03b47..fd6affe1e4d 100644
--- 
a/components/camel-sql/src/main/java/org/apache/camel/component/sql/SqlEndpoint.java
+++ 
b/components/camel-sql/src/main/java/org/apache/camel/component/sql/SqlEndpoint.java
@@ -23,6 +23,7 @@ import org.apache.camel.Processor;
 import org.apache.camel.Producer;
 import org.apache.camel.spi.Metadata;
 import org.apache.camel.spi.UriEndpoint;
+import org.apache.camel.spi.UriParam;
 import org.apache.camel.spi.UriPath;
 import org.apache.camel.util.UnsafeUriCharactersEncoder;
 
@@ -36,6 +37,9 @@ public class SqlEndpoint extends DefaultSqlEndpoint {
     @UriPath(description = "Sets the SQL query to perform. You can externalize 
the query by using file: or classpath: as prefix and specify the location of 
the file.")
     @Metadata(required = true, supportFileReference = true, largeInput = true, 
inputLanguage = "sql")
     private String query;
+    @UriParam(label = "producer", defaultValue = "true",
+              description = "Whether to optimize batch by turning off 
auto-commit which can dramatic improve performance, and instead execute as a 
manual commit after the entire batch operation is complete")
+    private boolean batchAutoCommitDisabled = true;
 
     public SqlEndpoint() {
     }
@@ -94,4 +98,15 @@ public class SqlEndpoint extends DefaultSqlEndpoint {
         this.query = query;
     }
 
+    public boolean isBatchAutoCommitDisabled() {
+        return batchAutoCommitDisabled;
+    }
+
+    /**
+     * Whether to optimize batch by turning off auto-commit which can dramatic 
improve performance, and instead execute
+     * as a manual commit after the entire batch operation is complete
+     */
+    public void setBatchAutoCommitDisabled(boolean batchAutoCommitDisabled) {
+        this.batchAutoCommitDisabled = batchAutoCommitDisabled;
+    }
 }
diff --git 
a/components/camel-sql/src/main/java/org/apache/camel/component/sql/SqlProducer.java
 
b/components/camel-sql/src/main/java/org/apache/camel/component/sql/SqlProducer.java
index 3bcc5359ea1..3a771c290a4 100644
--- 
a/components/camel-sql/src/main/java/org/apache/camel/component/sql/SqlProducer.java
+++ 
b/components/camel-sql/src/main/java/org/apache/camel/component/sql/SqlProducer.java
@@ -52,12 +52,14 @@ public class SqlProducer extends DefaultProducer {
     private final boolean alwaysPopulateStatement;
     private final SqlPrepareStatementStrategy sqlPrepareStatementStrategy;
     private final boolean useMessageBodyForSql;
+    private final boolean manualCommit;
     private int parametersCount;
 
     public SqlProducer(SqlEndpoint endpoint, String query, JdbcTemplate 
jdbcTemplate,
                        SqlPrepareStatementStrategy sqlPrepareStatementStrategy,
                        boolean batch, boolean alwaysPopulateStatement, boolean 
useMessageBodyForSql) {
         super(endpoint);
+        this.manualCommit = endpoint.isBatchAutoCommitDisabled();
         this.jdbcTemplate = jdbcTemplate;
         this.sqlPrepareStatementStrategy = sqlPrepareStatementStrategy;
         this.query = query;
@@ -154,14 +156,38 @@ public class SqlProducer extends DefaultProducer {
                 try {
                     populateStatement(ps, exchange, sql, preparedQuery);
                     boolean isResultSet = false;
+                    boolean restoreAutoCommit = true;
 
                     if (batch) {
-                        int[] updateCounts = ps.executeBatch();
-                        int total = 0;
-                        for (int count : updateCounts) {
-                            total += count;
+                        if (manualCommit) {
+                            // optimize batch by turning off auto-commit
+                            restoreAutoCommit = 
ps.getConnection().getAutoCommit();
+                            ps.getConnection().setAutoCommit(false);
+                        }
+                        try {
+                            int[] updateCounts = ps.executeBatch();
+                            int total = 0;
+                            for (int count : updateCounts) {
+                                total += count;
+                            }
+                            
exchange.getIn().setHeader(SqlConstants.SQL_UPDATE_COUNT, total);
+                            if (manualCommit) {
+                                // optimize batch by commit after done
+                                ps.getConnection().commit();
+                            }
+                        } catch (Exception e) {
+                            if (manualCommit) {
+                                // we failed so rollback
+                                ps.getConnection().rollback();
+                            }
+                            throw e;
+                        } finally {
+                            if (manualCommit && restoreAutoCommit) {
+                                // restore auto commit on connection as it may 
be used
+                                // in another kind of query (connection 
pooling)
+                                ps.getConnection().setAutoCommit(true);
+                            }
                         }
-                        
exchange.getIn().setHeader(SqlConstants.SQL_UPDATE_COUNT, total);
                     } else {
                         isResultSet = ps.execute();
                         if (isResultSet) {
@@ -250,6 +276,11 @@ public class SqlProducer extends DefaultProducer {
 
     private void populateStatement(PreparedStatement ps, Exchange exchange, 
String sql, String preparedQuery)
             throws SQLException {
+
+        if (getEndpoint().getFetchSize() > 0) {
+            ps.setFetchSize(getEndpoint().getFetchSize());
+        }
+
         int expected;
         if (parametersCount > 0) {
             expected = parametersCount;
diff --git 
a/components/camel-sql/src/test/java/org/apache/camel/component/sql/SqlConsumerFetchSizeTest.java
 
b/components/camel-sql/src/test/java/org/apache/camel/component/sql/SqlConsumerFetchSizeTest.java
new file mode 100644
index 00000000000..29e6f164649
--- /dev/null
+++ 
b/components/camel-sql/src/test/java/org/apache/camel/component/sql/SqlConsumerFetchSizeTest.java
@@ -0,0 +1,87 @@
+/*
+ * 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.
+ */
+package org.apache.camel.component.sql;
+
+import java.util.List;
+import java.util.Map;
+
+import org.apache.camel.Exchange;
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.component.mock.MockEndpoint;
+import org.apache.camel.test.junit5.CamelTestSupport;
+import org.junit.jupiter.api.Test;
+import org.springframework.jdbc.datasource.embedded.EmbeddedDatabase;
+import org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseBuilder;
+import org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseType;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
+public class SqlConsumerFetchSizeTest extends CamelTestSupport {
+
+    private EmbeddedDatabase db;
+
+    @Override
+    public void doPreSetup() throws Exception {
+        db = new EmbeddedDatabaseBuilder()
+                .setName(getClass().getSimpleName())
+                .setType(EmbeddedDatabaseType.H2)
+                .addScript("sql/createAndPopulateDatabase.sql").build();
+
+    }
+
+    @Override
+    public void doPostTearDown() throws Exception {
+        if (db != null) {
+            db.shutdown();
+        }
+    }
+
+    @Test
+    public void testConsume() throws Exception {
+        MockEndpoint mock = getMockEndpoint("mock:result");
+        mock.expectedMinimumMessageCount(3);
+
+        MockEndpoint.assertIsSatisfied(context);
+
+        List<Exchange> exchanges = mock.getReceivedExchanges();
+        assertTrue(exchanges.size() >= 3);
+
+        assertEquals(1, exchanges.get(0).getIn().getBody(Map.class).get("ID"));
+        assertEquals("Camel", 
exchanges.get(0).getIn().getBody(Map.class).get("PROJECT"));
+        assertEquals(2, exchanges.get(1).getIn().getBody(Map.class).get("ID"));
+        assertEquals("AMQ", 
exchanges.get(1).getIn().getBody(Map.class).get("PROJECT"));
+        assertEquals(3, exchanges.get(2).getIn().getBody(Map.class).get("ID"));
+        assertEquals("Linux", 
exchanges.get(2).getIn().getBody(Map.class).get("PROJECT"));
+    }
+
+    @Override
+    protected RouteBuilder createRouteBuilder() {
+        return new RouteBuilder() {
+            @Override
+            public void configure() {
+                // required for the sql component
+                SqlComponent sql = getContext().getComponent("sql", 
SqlComponent.class);
+                sql.setDataSource(db);
+                sql.setFetchSize(10);
+
+                from("sql:select * from projects order by 
id?initialDelay=0&delay=50")
+                        .to("mock:result");
+            }
+        };
+    }
+}
diff --git 
a/components/camel-sql/src/test/java/org/apache/camel/component/sql/SqlProducerFetchSizeTest.java
 
b/components/camel-sql/src/test/java/org/apache/camel/component/sql/SqlProducerFetchSizeTest.java
new file mode 100644
index 00000000000..49f580572b1
--- /dev/null
+++ 
b/components/camel-sql/src/test/java/org/apache/camel/component/sql/SqlProducerFetchSizeTest.java
@@ -0,0 +1,87 @@
+/*
+ * 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.
+ */
+package org.apache.camel.component.sql;
+
+import java.util.List;
+import java.util.Map;
+
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.component.mock.MockEndpoint;
+import org.apache.camel.test.junit5.CamelTestSupport;
+import org.junit.jupiter.api.AfterAll;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.Test;
+import org.springframework.jdbc.datasource.embedded.EmbeddedDatabase;
+import org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseBuilder;
+import org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseType;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+
+public class SqlProducerFetchSizeTest extends CamelTestSupport {
+
+    static EmbeddedDatabase db;
+
+    @BeforeAll
+    public static void setupDatabase() {
+        db = new EmbeddedDatabaseBuilder()
+                .setName(SqlProducerFetchSizeTest.class.getSimpleName())
+                .setType(EmbeddedDatabaseType.H2)
+                .addScript("sql/createAndPopulateDatabase.sql").build();
+    }
+
+    @AfterAll
+    public static void cleanupDatabase() {
+        if (db != null) {
+            db.shutdown();
+        }
+    }
+
+    @Test
+    public void testFetchSize() throws InterruptedException {
+        MockEndpoint mock = getMockEndpoint("mock:query");
+        mock.expectedMessageCount(1);
+
+        template.requestBody("direct:query", new String[] { "Camel", "AMQ" });
+
+        MockEndpoint.assertIsSatisfied(context);
+
+        List list = 
mock.getReceivedExchanges().get(0).getIn().getBody(List.class);
+        assertEquals(2, list.size());
+        Map row = (Map) list.get(0);
+        assertEquals("Camel", row.get("PROJECT"));
+        row = (Map) list.get(1);
+        assertEquals("AMQ", row.get("PROJECT"));
+    }
+
+    @Override
+    protected RouteBuilder createRouteBuilder() {
+        return new RouteBuilder() {
+            @Override
+            public void configure() {
+                // required for the sql component
+                SqlComponent sql = getContext().getComponent("sql", 
SqlComponent.class);
+                sql.setDataSource(db);
+                sql.setFetchSize(10);
+
+                from("direct:query")
+                        .to("sql:classpath:sql/selectProjectsInBody.sql")
+                        .to("log:query")
+                        .to("mock:query");
+            }
+        };
+    }
+}
diff --git 
a/docs/user-manual/modules/ROOT/pages/camel-4x-upgrade-guide-4_10.adoc 
b/docs/user-manual/modules/ROOT/pages/camel-4x-upgrade-guide-4_10.adoc
index 7fd56f991b1..9d2f5d7609b 100644
--- a/docs/user-manual/modules/ROOT/pages/camel-4x-upgrade-guide-4_10.adoc
+++ b/docs/user-manual/modules/ROOT/pages/camel-4x-upgrade-guide-4_10.adoc
@@ -23,6 +23,13 @@ When MDC is enabled, then the WireTap and OnCompletion (in 
parallel mode) will n
 context when creating threads to process the exchanges. This makes these EIPs 
similar to how
 other EIPs such as Multicast EIP already does this.
 
+=== camel-sql
+
+When inserting or updating many rows in `batch=true` mode (producer) then this 
component
+has been optimized to execute the entire batch operation in a single 
transaction; by turning off auto-commit
+on the SQL Connection, and doing a manual `commit` or `rollback`. This can 
dramatically improve performance
+on some databases. The old behaviour can be restored by setting the 
`batchAutoCommitDisabled=false` on the component or endpoint.
+
 == Upgrading from 4.10.0 to 4.10.1
 
 === camel-api
diff --git 
a/docs/user-manual/modules/ROOT/pages/camel-4x-upgrade-guide-4_11.adoc 
b/docs/user-manual/modules/ROOT/pages/camel-4x-upgrade-guide-4_11.adoc
index 5d0b7ec757d..4462efaaa59 100644
--- a/docs/user-manual/modules/ROOT/pages/camel-4x-upgrade-guide-4_11.adoc
+++ b/docs/user-manual/modules/ROOT/pages/camel-4x-upgrade-guide-4_11.adoc
@@ -78,3 +78,10 @@ work in more situations out of the box.
 From this version onward the `export` command add the 
`camel-observability-services` dependency (which includes telemetry, metrics, 
health and JMX management services out of the box).
 
 The `--health` and `--metrics` flags of `run` command have been deprecated in 
favor of the newly `--observe` flag which add the 
`camel-observability-services` dependency (hence including telemetry, metrics, 
health and JMX management out of the box). For the run command, this has to be 
explicitly enabled (ie, `camel run  ... --observe`).
+
+=== camel-sql
+
+When inserting or updating many rows in `batch=true` mode (producer) then this 
component
+has been optimized to execute the entire batch operation in a single 
transaction; by turning off auto-commit
+on the SQL Connection, and doing a manual `commit` or `rollback`. This can 
dramatically improve performance
+on some databases. The old behaviour can be restored by setting the 
`batchAutoCommitDisabled=false` on the component or endpoint.
diff --git 
a/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/SqlComponentBuilderFactory.java
 
b/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/SqlComponentBuilderFactory.java
index 2a9f78c6800..df2f9b38d9b 100644
--- 
a/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/SqlComponentBuilderFactory.java
+++ 
b/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/SqlComponentBuilderFactory.java
@@ -94,6 +94,25 @@ public interface SqlComponentBuilderFactory {
         }
     
         
+        /**
+         * Whether to optimize batch by turning off auto-commit which can
+         * dramatic improve performance, and instead execute as a manual commit
+         * after the entire batch operation is complete.
+         * 
+         * The option is a: &lt;code&gt;boolean&lt;/code&gt; type.
+         * 
+         * Default: true
+         * Group: producer
+         * 
+         * @param batchAutoCommitDisabled the value to set
+         * @return the dsl builder
+         */
+        default SqlComponentBuilder batchAutoCommitDisabled(boolean 
batchAutoCommitDisabled) {
+            doSetProperty("batchAutoCommitDisabled", batchAutoCommitDisabled);
+            return this;
+        }
+    
+        
         /**
          * Whether the producer should be started lazy (on the first message).
          * By starting lazy you can use this to allow CamelContext and routes 
to
@@ -140,6 +159,28 @@ public interface SqlComponentBuilderFactory {
             return this;
         }
     
+        /**
+         * Gives the JDBC driver a hint as to the number of rows that should be
+         * fetched from the database when more rows are needed for ResultSet
+         * objects generated by this Statement. If the value specified is zero,
+         * then the hint is ignored. The default value is zero. This is
+         * important for processing large result sets: Setting this higher than
+         * the default value will increase processing speed at the cost of
+         * memory consumption; setting this lower can avoid transferring row
+         * data that will never be read by the application.
+         * 
+         * The option is a: &lt;code&gt;int&lt;/code&gt; type.
+         * 
+         * Group: advanced
+         * 
+         * @param fetchSize the value to set
+         * @return the dsl builder
+         */
+        default SqlComponentBuilder fetchSize(int fetchSize) {
+            doSetProperty("fetchSize", fetchSize);
+            return this;
+        }
+    
         /**
          * Factory for creating RowMapper.
          * 
@@ -248,8 +289,10 @@ public interface SqlComponentBuilderFactory {
             switch (name) {
             case "dataSource": ((SqlComponent) 
component).setDataSource((javax.sql.DataSource) value); return true;
             case "bridgeErrorHandler": ((SqlComponent) 
component).setBridgeErrorHandler((boolean) value); return true;
+            case "batchAutoCommitDisabled": ((SqlComponent) 
component).setBatchAutoCommitDisabled((boolean) value); return true;
             case "lazyStartProducer": ((SqlComponent) 
component).setLazyStartProducer((boolean) value); return true;
             case "autowiredEnabled": ((SqlComponent) 
component).setAutowiredEnabled((boolean) value); return true;
+            case "fetchSize": ((SqlComponent) component).setFetchSize((int) 
value); return true;
             case "rowMapperFactory": ((SqlComponent) 
component).setRowMapperFactory((org.apache.camel.component.sql.RowMapperFactory)
 value); return true;
             case "serviceLocationEnabled": ((SqlComponent) 
component).setServiceLocationEnabled((boolean) value); return true;
             case "usePlaceholder": ((SqlComponent) 
component).setUsePlaceholder((boolean) value); return true;
diff --git 
a/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/SqlEndpointBuilderFactory.java
 
b/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/SqlEndpointBuilderFactory.java
index 0e9676e8e96..c1b25fcc227 100644
--- 
a/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/SqlEndpointBuilderFactory.java
+++ 
b/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/SqlEndpointBuilderFactory.java
@@ -1189,6 +1189,48 @@ public interface SqlEndpointBuilderFactory {
             doSetProperty("alwaysPopulateStatement", alwaysPopulateStatement);
             return this;
         }
+        /**
+         * Gives the JDBC driver a hint as to the number of rows that should be
+         * fetched from the database when more rows are needed for ResultSet
+         * objects generated by this Statement. If the value specified is zero,
+         * then the hint is ignored. The default value is zero. This is
+         * important for processing large result sets: Setting this higher than
+         * the default value will increase processing speed at the cost of
+         * memory consumption; setting this lower can avoid transferring row
+         * data that will never be read by the application.
+         * 
+         * The option is a: <code>int</code> type.
+         * 
+         * Group: advanced
+         * 
+         * @param fetchSize the value to set
+         * @return the dsl builder
+         */
+        default AdvancedSqlEndpointConsumerBuilder fetchSize(int fetchSize) {
+            doSetProperty("fetchSize", fetchSize);
+            return this;
+        }
+        /**
+         * Gives the JDBC driver a hint as to the number of rows that should be
+         * fetched from the database when more rows are needed for ResultSet
+         * objects generated by this Statement. If the value specified is zero,
+         * then the hint is ignored. The default value is zero. This is
+         * important for processing large result sets: Setting this higher than
+         * the default value will increase processing speed at the cost of
+         * memory consumption; setting this lower can avoid transferring row
+         * data that will never be read by the application.
+         * 
+         * The option will be converted to a <code>int</code> type.
+         * 
+         * Group: advanced
+         * 
+         * @param fetchSize the value to set
+         * @return the dsl builder
+         */
+        default AdvancedSqlEndpointConsumerBuilder fetchSize(String fetchSize) 
{
+            doSetProperty("fetchSize", fetchSize);
+            return this;
+        }
         /**
          * If set greater than zero, then Camel will use this count value of
          * parameters to replace instead of querying via JDBC metadata API. 
This
@@ -1601,6 +1643,40 @@ public interface SqlEndpointBuilderFactory {
             doSetProperty("batch", batch);
             return this;
         }
+        /**
+         * Whether to optimize batch by turning off auto-commit which can
+         * dramatic improve performance, and instead execute as a manual commit
+         * after the entire batch operation is complete.
+         * 
+         * The option is a: <code>boolean</code> type.
+         * 
+         * Default: true
+         * Group: producer
+         * 
+         * @param batchAutoCommitDisabled the value to set
+         * @return the dsl builder
+         */
+        default SqlEndpointProducerBuilder batchAutoCommitDisabled(boolean 
batchAutoCommitDisabled) {
+            doSetProperty("batchAutoCommitDisabled", batchAutoCommitDisabled);
+            return this;
+        }
+        /**
+         * Whether to optimize batch by turning off auto-commit which can
+         * dramatic improve performance, and instead execute as a manual commit
+         * after the entire batch operation is complete.
+         * 
+         * The option will be converted to a <code>boolean</code> type.
+         * 
+         * Default: true
+         * Group: producer
+         * 
+         * @param batchAutoCommitDisabled the value to set
+         * @return the dsl builder
+         */
+        default SqlEndpointProducerBuilder batchAutoCommitDisabled(String 
batchAutoCommitDisabled) {
+            doSetProperty("batchAutoCommitDisabled", batchAutoCommitDisabled);
+            return this;
+        }
         /**
          * If set, will ignore the results of the SQL query and use the 
existing
          * IN message as the OUT message for the continuation of processing.
@@ -1765,6 +1841,48 @@ public interface SqlEndpointBuilderFactory {
             doSetProperty("alwaysPopulateStatement", alwaysPopulateStatement);
             return this;
         }
+        /**
+         * Gives the JDBC driver a hint as to the number of rows that should be
+         * fetched from the database when more rows are needed for ResultSet
+         * objects generated by this Statement. If the value specified is zero,
+         * then the hint is ignored. The default value is zero. This is
+         * important for processing large result sets: Setting this higher than
+         * the default value will increase processing speed at the cost of
+         * memory consumption; setting this lower can avoid transferring row
+         * data that will never be read by the application.
+         * 
+         * The option is a: <code>int</code> type.
+         * 
+         * Group: advanced
+         * 
+         * @param fetchSize the value to set
+         * @return the dsl builder
+         */
+        default AdvancedSqlEndpointProducerBuilder fetchSize(int fetchSize) {
+            doSetProperty("fetchSize", fetchSize);
+            return this;
+        }
+        /**
+         * Gives the JDBC driver a hint as to the number of rows that should be
+         * fetched from the database when more rows are needed for ResultSet
+         * objects generated by this Statement. If the value specified is zero,
+         * then the hint is ignored. The default value is zero. This is
+         * important for processing large result sets: Setting this higher than
+         * the default value will increase processing speed at the cost of
+         * memory consumption; setting this lower can avoid transferring row
+         * data that will never be read by the application.
+         * 
+         * The option will be converted to a <code>int</code> type.
+         * 
+         * Group: advanced
+         * 
+         * @param fetchSize the value to set
+         * @return the dsl builder
+         */
+        default AdvancedSqlEndpointProducerBuilder fetchSize(String fetchSize) 
{
+            doSetProperty("fetchSize", fetchSize);
+            return this;
+        }
         /**
          * If set greater than zero, then Camel will use this count value of
          * parameters to replace instead of querying via JDBC metadata API. 
This
@@ -2201,6 +2319,48 @@ public interface SqlEndpointBuilderFactory {
             doSetProperty("alwaysPopulateStatement", alwaysPopulateStatement);
             return this;
         }
+        /**
+         * Gives the JDBC driver a hint as to the number of rows that should be
+         * fetched from the database when more rows are needed for ResultSet
+         * objects generated by this Statement. If the value specified is zero,
+         * then the hint is ignored. The default value is zero. This is
+         * important for processing large result sets: Setting this higher than
+         * the default value will increase processing speed at the cost of
+         * memory consumption; setting this lower can avoid transferring row
+         * data that will never be read by the application.
+         * 
+         * The option is a: <code>int</code> type.
+         * 
+         * Group: advanced
+         * 
+         * @param fetchSize the value to set
+         * @return the dsl builder
+         */
+        default AdvancedSqlEndpointBuilder fetchSize(int fetchSize) {
+            doSetProperty("fetchSize", fetchSize);
+            return this;
+        }
+        /**
+         * Gives the JDBC driver a hint as to the number of rows that should be
+         * fetched from the database when more rows are needed for ResultSet
+         * objects generated by this Statement. If the value specified is zero,
+         * then the hint is ignored. The default value is zero. This is
+         * important for processing large result sets: Setting this higher than
+         * the default value will increase processing speed at the cost of
+         * memory consumption; setting this lower can avoid transferring row
+         * data that will never be read by the application.
+         * 
+         * The option will be converted to a <code>int</code> type.
+         * 
+         * Group: advanced
+         * 
+         * @param fetchSize the value to set
+         * @return the dsl builder
+         */
+        default AdvancedSqlEndpointBuilder fetchSize(String fetchSize) {
+            doSetProperty("fetchSize", fetchSize);
+            return this;
+        }
         /**
          * If set greater than zero, then Camel will use this count value of
          * parameters to replace instead of querying via JDBC metadata API. 
This

Reply via email to