You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@ignite.apache.org by "Igor Sapego (Jira)" <ji...@apache.org> on 2023/02/14 10:00:00 UTC

[jira] [Commented] (IGNITE-18722) C++ thin: inconsistent state SQL and direct KV api during tx

    [ https://issues.apache.org/jira/browse/IGNITE-18722?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17688415#comment-17688415 ] 

Igor Sapego commented on IGNITE-18722:
--------------------------------------

Hello, [~ct7]. This is a known limitation - current SQL implementation is not transactional, only KV API is affected by transactions.

> C++ thin: inconsistent state SQL and direct KV api during tx
> ------------------------------------------------------------
>
>                 Key: IGNITE-18722
>                 URL: https://issues.apache.org/jira/browse/IGNITE-18722
>             Project: Ignite
>          Issue Type: Bug
>          Components: sql, thin client
>    Affects Versions: 2.14
>         Environment: Windows 10 x64
> ignite 2.14.0
>            Reporter: Christopher Tenter
>            Priority: Major
>
> My cache config looks like this:
>  
> <bean class="org.apache.ignite.configuration.CacheConfiguration">
>       <!-- Set a cache name. -->
>       <property name="name" value="G3PrototypeChartLib"/>
>       <!-- Set cache mode. -->
>       <property name="cacheMode" value="REPLICATED"/>
>       <!-- Enable Transactions. -->
>       <property name="atomicityMode" value="TRANSACTIONAL"/>
>       <!-- Other cache configurations. -->
>       <property name="queryEntities">
>                         <list>
>                             <bean class="org.apache.ignite.cache.QueryEntity">
>                                 <property name="keyType" value="java.lang.String"/>
>                                 <property name="valueType" value="G3::VirtualFile"/>
>                                 <property name="tableName" value="vfs"/>
>                                 <property name="keyFieldName" value="virtualName"/>
>                                 <property name="fields">
>                                     <map>
>                                         <entry key="virtualName" value="java.lang.String"/>
>                                         <entry key="physicalName" value="java.lang.String"/>
>                                         <entry key="revId" value="java.lang.UUID"/>
>                                         <entry key="deleted" value="java.lang.Boolean"/>
>                                     </map>
>                                 </property>
>                             </bean>
>                         </list>
>                     </property>
>     </bean>
>  
>  # create cache
>  # start a tx on it
>  # write key-value pairs with the key-value api
>  # use sql query to read these pairs
>  
> The SQL queries cannot see the key-value pairs for as long as the transaction is open. After commit they become visible in SQL. It is problematic because I rely on the SQL query to iterate through the KV pairs, as there seems to be no other way to iterate a cache. This way I have to do additional bookkeeping of which pairs have changed in the tx and fix the SQL query results when a tx is running.
> Is this a cache config issue or intended behavior? A way to iterate the cache items in the key-value API would be appreciated too.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)