<h2 dir="auto">Bug Report</h2>
<h3 dir="auto">Which version of ShardingSphere did you use?</h3>
<p dir="auto">4.0.1</p>
<h3 dir="auto">Which project did you use? Sharding-JDBC or Sharding-Proxy?</h3>
<p dir="auto">Sharding-JDBC</p>
<h3 dir="auto">Expected behavior</h3>
<p dir="auto">I modify the Data ID of nacos: .shardingDataSource.config.schema.logic_db.rule content<br>
For example: actualDataNodes hope to change the configuration of the shard table</p>
<h3 dir="auto">Actual behavior</h3>
<p dir="auto">nothing happened</p>
<h3 dir="auto">Reason analyze (If you can)</h3>
<p dir="auto">not watch the key .shardingDataSource.config.schema.logic_db.rule</p>
<h3 dir="auto">Steps to reproduce the behavior, such as: SQL to execute, sharding rule configuration, when exception occur etc.</h3>
<p dir="auto">modify the Data ID of nacos: .shardingDataSource.config.schema.logic_db.rule content</p>
<h3 dir="auto">Example codes for reproduce this issue (such as a github link).</h3>
<p dir="auto">the spring xml</p>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="&lt;orchestraion:registry-center id=&quot;regCenter&quot; type=&quot;nacos&quot; server-lists=&quot;localhost:8848&quot; namespace=&quot;728acf9f-34fb-42fd-af25-984de5686535&quot; operation-timeout-milliseconds=&quot;3000&quot; max-retries=&quot;3&quot;/&gt;

&lt;orchestraion:sharding-data-source id=&quot;shardingDataSource&quot; registry-center-ref=&quot;regCenter&quot; overwrite=&quot;false&quot;/&gt;"><pre class="notranslate"><code class="notranslate">&lt;orchestraion:registry-center id="regCenter" type="nacos" server-lists="localhost:8848" namespace="728acf9f-34fb-42fd-af25-984de5686535" operation-timeout-milliseconds="3000" max-retries="3"/&gt;

&lt;orchestraion:sharding-data-source id="shardingDataSource" registry-center-ref="regCenter" overwrite="false"/&gt;
</code></pre></div>
<p dir="auto">the nacos  dataId:.shardingDataSource.config.schema.logic_db.rule content:</p>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="tables:
  log_process:
    actualDataNodes: dataSource.log_process,dataSource.log_process_2020_$-&gt;{4..12}
    keyGenerator:
      column: id
      props:
        worker.id: '421'
      type: SNOWFLAKE
    logicTable: log_process
    tableStrategy:
      standard:
        preciseAlgorithmClassName: com.xxx.base.shardingjdbc.shardingAlgorithm.IDPrecise
        shardingColumn: id
"><pre class="notranslate"><code class="notranslate">tables:
  log_process:
    actualDataNodes: dataSource.log_process,dataSource.log_process_2020_$-&gt;{4..12}
    keyGenerator:
      column: id
      props:
        worker.id: '421'
      type: SNOWFLAKE
    logicTable: log_process
    tableStrategy:
      standard:
        preciseAlgorithmClassName: com.xxx.base.shardingjdbc.shardingAlgorithm.IDPrecise
        shardingColumn: id

</code></pre></div>
<p dir="auto">I found that modifying .shardingDataSource.config.props is effective，but shardingDataSource.config.schema.logic_db.rule</p>
<h2 dir="auto">Bug Report</h2>
<p dir="auto">when execute sql that likes follow<br>
insert into product_source_list (product_code,store_code,primary_supplier,condition_no,supplier_code,return_mark,purchase_price,price_unit,order_unit,article_no,begin_time,expiration_time,type,creation_date,issued_time,external_id,archived,version) values (?, ?,?, ?,?, ?, ?, ?, ?,?,?,?,?,?,?,?,?,0) on duplicate key update product_code = if(@update_condition :=(issued_time &lt; values(issued_time)),values(product_code),product_code),store_code = if(@update_condition,values(store_code),store_code),supplier_code = if(@update_condition,values(supplier_code),supplier_code),return_mark = if(@update_condition,values(return_mark),return_mark),purchase_price = if(@update_condition,values(purchase_price),purchase_price),price_unit = if(@update_condition,values(price_unit),price_unit),order_unit = if(@update_condition,values(order_unit),order_unit),primary_supplier = if(@update_condition,values(primary_supplier),primary_supplier),article_no = if(@update_condition,values(article_no),article_no),begin_time = if(@update_condition,values(begin_time),begin_time),expiration_time = if(@update_condition,values(expiration_time),expiration_time),type = if(@update_condition,values(type),type),archived = if(@update_condition,values(archived),archived),external_id = if(@update_condition,values(external_id),external_id),version = if(@update_condition,version +1,version),issued_time = if(@update_condition,values(issued_time),issued_time)<br>
occurs IllegaStateException<br>
details:<br>
java.lang.IllegalStateException<br>
at com.google.common.base.Preconditions.checkState(Preconditions.java:158)<br>
at org.apache.shardingsphere.core.parse.core.extractor.util.ExtractorUtils.getFirstChildNode(ExtractorUtils.java:48)<br>
at org.apache.shardingsphere.core.parse.core.extractor.impl.common.column.ColumnExtractor.getColumnSegment(ColumnExtractor.java:45)<br>
at org.apache.shardingsphere.core.parse.core.extractor.impl.common.column.ColumnExtractor.extract(ColumnExtractor.java:41)<br>
at org.apache.shardingsphere.core.parse.core.extractor.impl.common.column.ColumnsExtractor.extract(ColumnsExtractor.java:44)<br>
at org.apache.shardingsphere.core.parse.core.extractor.SQLSegmentsExtractorEngine.extract(SQLSegmentsExtractorEngine.java:52)<br>
at org.apache.shardingsphere.core.parse.core.SQLParseKernel.parse(SQLParseKernel.java:62)<br>
at org.apache.shardingsphere.core.parse.SQLParseEngine.parse0(SQLParseEngine.java:71)<br>
at org.apache.shardingsphere.core.parse.SQLParseEngine.parse(SQLParseEngine.java:53)<br>
at org.apache.shardingsphere.core.route.router.masterslave.MasterSlaveRouter.route(MasterSlaveRouter.java:56)<br>
at org.apache.shardingsphere.shardingjdbc.jdbc.core.statement.MasterSlavePreparedStatement.(MasterSlavePreparedStatement.java:63)<br>
at org.apache.shardingsphere.shardingjdbc.jdbc.core.statement.MasterSlavePreparedStatement.(MasterSlavePreparedStatement.java:51)<br>
at org.apache.shardingsphere.shardingjdbc.jdbc.core.connection.MasterSlaveConnection.prepareStatement(MasterSlaveConnection.java:76)<br>
at org.springframework.jdbc.core.JdbcTemplate$SimplePreparedStatementCreator.createPreparedStatement(JdbcTemplate.java:1555)<br>
at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:614)<br>
at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:646)<br>
at org.springframework.jdbc.core.JdbcTemplate.batchUpdate(JdbcTemplate.java:935)<br>
at org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate.batchUpdate(NamedParameterJdbcTemplate.java:365)<br>
at com.cbest.platform.product.core.service.impl.ProductSourceListServiceImpl.saveOrUpdateIfNecessary(ProductSourceListServiceImpl.java:127)<br>
at com.cbest.platform.product.core.service.impl.ProductSourceListServiceImpl$$FastClassBySpringCGLIB$$78117739.invoke()<br>
at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218)<br>
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:749)<br>
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)<br>
at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:295)<br>
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:98)<br>
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)<br>
at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:688)<br>
at com.cbest.platform.product.core.service.impl.ProductSourceListServiceImpl$$EnhancerBySpringCGLIB$$d043c704.saveOrUpdateIfNecessary()<br>
at com.cbest.platform.product.job.SyncSourceListJob.execute(SyncSourceListJob.java:88)<br>
at com.xxl.job.core.thread.JobThread.run(JobThread.java:152)</p>
<h3 dir="auto">Which version of ShardingSphere did you use?</h3>
<p dir="auto">4.0.0-RC3</p>
<h3 dir="auto">Which project did you use? Sharding-JDBC or Sharding-Proxy?</h3>
<p dir="auto">Sharding-JDBC</p>
<h3 dir="auto">Expected behavior</h3>
<p dir="auto">insert into product_source_list (product_code,store_code,primary_supplier,condition_no,supplier_code,return_mark,purchase_price,price_unit,order_unit,article_no,begin_time,expiration_time,type,creation_date,issued_time,external_id,archived,version) values (?, ?,?, ?,?, ?, ?, ?, ?,?,?,?,?,?,?,?,?,0) on duplicate key update product_code = if(@update_condition :=(issued_time &lt; values(issued_time)),values(product_code),product_code),store_code = if(@update_condition,values(store_code),store_code),supplier_code = if(@update_condition,values(supplier_code),supplier_code),return_mark = if(@update_condition,values(return_mark),return_mark),purchase_price = if(@update_condition,values(purchase_price),purchase_price),price_unit = if(@update_condition,values(price_unit),price_unit),order_unit = if(@update_condition,values(order_unit),order_unit),primary_supplier = if(@update_condition,values(primary_supplier),primary_supplier),article_no = if(@update_condition,values(article_no),article_no),begin_time = if(@update_condition,values(begin_time),begin_time),expiration_time = if(@update_condition,values(expiration_time),expiration_time),type = if(@update_condition,values(type),type),archived = if(@update_condition,values(archived),archived),external_id = if(@update_condition,values(external_id),external_id),version = if(@update_condition,version +1,version),issued_time = if(@update_condition,values(issued_time),issued_time)<br>
should execute successfully</p>
<h3 dir="auto">Actual behavior</h3>
<h3 dir="auto">Reason analyze (If you can)</h3>
<h3 dir="auto">Steps to reproduce the behavior, such as: SQL to execute, sharding rule configuration, when exception occur etc.</h3>
<h3 dir="auto">Example codes for reproduce this issue (such as a github link).</h3>