[jira] [Commented] (IGNITE-11563) DELETE WHERE does not work in prepared statements

2020-07-13 Thread Christian Ehrlicher (Jira)


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

Christian Ehrlicher commented on IGNITE-11563:
--

Any progress on this? I think I also hit this problem with 2.8.1 so I assume 
the fix is not yet in :(

> DELETE WHERE does not work in prepared statements
> -
>
> Key: IGNITE-11563
> URL: https://issues.apache.org/jira/browse/IGNITE-11563
> Project: Ignite
>  Issue Type: Bug
>  Components: sql
>Affects Versions: 2.7
>Reporter: Stefan
>Priority: Minor
>  Time Spent: 10m
>  Remaining Estimate: 0h
>
> With SQL I cannot delete a row using a prepared statement. The following 
> statement is simply ignored:
>  {{DELETE}} {{FROM}} {{AnyTable WHERE}} {{id = ?}}
>  This happens with JDBC-Thin and with ODBC so I suspect that the cluster gets 
> the correct data but handles it wrong. By adding an always-true-condition it 
> works as expected:
>  {{DELETE}} {{FROM}} {{AnyTable WHERE}} {{id = id AND}} {{id = ?}}
>  I tested with a very simple table that was created with:
> {{CREATE TABLE testtable (}}
>  {{    "ID" NUMBER(19,0),}}
>  {{    "VALUE" VARCHAR2(255 CHAR),}}
>  {{    PRIMARY KEY (ID)}}
>  {{) WITH "template=replicated,cache_name=testtable"}}



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Commented] (IGNITE-11563) DELETE WHERE does not work in prepared statements

2019-04-12 Thread Pavel Kuznetsov (JIRA)


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

Pavel Kuznetsov commented on IGNITE-11563:
--

One more point to think: 
guess we decided to store internally decimal values with any scale. We have 
column with type {{decimal(19,5)}} , but in cache we store decimal with scale = 
7. We perform select returning this value - what should we do in this case: 
return value with greater scale (7) that specified in the type (5)? Or should 
we round it ( to scale = 5)? Jdbc spec says we should return full *precision* 
value. 

> DELETE WHERE does not work in prepared statements
> -
>
> Key: IGNITE-11563
> URL: https://issues.apache.org/jira/browse/IGNITE-11563
> Project: Ignite
>  Issue Type: Bug
>  Components: sql
>Affects Versions: 2.7
>Reporter: Stefan
>Assignee: Pavel Kuznetsov
>Priority: Minor
>  Time Spent: 10m
>  Remaining Estimate: 0h
>
> With SQL I cannot delete a row using a prepared statement. The following 
> statement is simply ignored:
>  {{DELETE}} {{FROM}} {{AnyTable WHERE}} {{id = ?}}
>  This happens with JDBC-Thin and with ODBC so I suspect that the cluster gets 
> the correct data but handles it wrong. By adding an always-true-condition it 
> works as expected:
>  {{DELETE}} {{FROM}} {{AnyTable WHERE}} {{id = id AND}} {{id = ?}}
>  I tested with a very simple table that was created with:
> {{CREATE TABLE testtable (}}
>  {{    "ID" NUMBER(19,0),}}
>  {{    "VALUE" VARCHAR2(255 CHAR),}}
>  {{    PRIMARY KEY (ID)}}
>  {{) WITH "template=replicated,cache_name=testtable"}}



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)


[jira] [Commented] (IGNITE-11563) DELETE WHERE does not work in prepared statements

2019-04-11 Thread Andrew Mashenkov (JIRA)


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

Andrew Mashenkov commented on IGNITE-11563:
---

[~pkouznet],
 # Rounding\cast value to column scale-precision by default with an option to 
disable this behavior looks acceptable. Let's make this like MsSql goes.
 # It seems we can do nothing for cache API for now, but just point to decimal 
limitations in Ignite documentation . 
We could compare 2 decimals with rounding up to some common scale, but it is 
impossible due to key are compares as byte[]. Even if we found a solution to 
compare decimal fields without deserialization, comparing key binary objects 
field-by-field will hit performance too much.

> DELETE WHERE does not work in prepared statements
> -
>
> Key: IGNITE-11563
> URL: https://issues.apache.org/jira/browse/IGNITE-11563
> Project: Ignite
>  Issue Type: Bug
>  Components: sql
>Affects Versions: 2.7
>Reporter: Stefan
>Assignee: Pavel Kuznetsov
>Priority: Minor
>  Time Spent: 10m
>  Remaining Estimate: 0h
>
> With SQL I cannot delete a row using a prepared statement. The following 
> statement is simply ignored:
>  {{DELETE}} {{FROM}} {{AnyTable WHERE}} {{id = ?}}
>  This happens with JDBC-Thin and with ODBC so I suspect that the cluster gets 
> the correct data but handles it wrong. By adding an always-true-condition it 
> works as expected:
>  {{DELETE}} {{FROM}} {{AnyTable WHERE}} {{id = id AND}} {{id = ?}}
>  I tested with a very simple table that was created with:
> {{CREATE TABLE testtable (}}
>  {{    "ID" NUMBER(19,0),}}
>  {{    "VALUE" VARCHAR2(255 CHAR),}}
>  {{    PRIMARY KEY (ID)}}
>  {{) WITH "template=replicated,cache_name=testtable"}}



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)


[jira] [Commented] (IGNITE-11563) DELETE WHERE does not work in prepared statements

2019-04-10 Thread Pavel Kuznetsov (JIRA)


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

Pavel Kuznetsov commented on IGNITE-11563:
--

So we cannot find the value in the cache except full scan which is slow for the 
PK lookup.

What I think we can do
Let's treat scale of the decimal part of the column type: If user defined 
column type as {{DECIMAL(19, 5)}} we should store internally decimal number 
with 5 digits after point.

as [1]:
{quote}For decimal and numeric data types, SQL Server considers each 
combination of precision and scale as a different data type. For example, 
decimal(5,5) and decimal(5,0) are considered different data types.{quote}

If user specified value with more scale digits, let's raise error, as H2 does. 
MsSQL uses rounding by default, though. But it rises error if special system 
property is set (also see [1])

What to do with the decimal keys, that have been inserted using cache api - 
open question. In this case full scans would include some "weird" records. 
Could we forbid such puts (with different scale)? Another option - is to add 
filter condition in the indexes. 

[1] 
https://docs.microsoft.com/en-us/sql/t-sql/data-types/decimal-and-numeric-transact-sql?view=sql-server-2017
 

> DELETE WHERE does not work in prepared statements
> -
>
> Key: IGNITE-11563
> URL: https://issues.apache.org/jira/browse/IGNITE-11563
> Project: Ignite
>  Issue Type: Bug
>  Components: sql
>Affects Versions: 2.7
>Reporter: Stefan
>Assignee: Pavel Kuznetsov
>Priority: Minor
>  Time Spent: 10m
>  Remaining Estimate: 0h
>
> With SQL I cannot delete a row using a prepared statement. The following 
> statement is simply ignored:
>  {{DELETE}} {{FROM}} {{AnyTable WHERE}} {{id = ?}}
>  This happens with JDBC-Thin and with ODBC so I suspect that the cluster gets 
> the correct data but handles it wrong. By adding an always-true-condition it 
> works as expected:
>  {{DELETE}} {{FROM}} {{AnyTable WHERE}} {{id = id AND}} {{id = ?}}
>  I tested with a very simple table that was created with:
> {{CREATE TABLE testtable (}}
>  {{    "ID" NUMBER(19,0),}}
>  {{    "VALUE" VARCHAR2(255 CHAR),}}
>  {{    PRIMARY KEY (ID)}}
>  {{) WITH "template=replicated,cache_name=testtable"}}



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)


[jira] [Commented] (IGNITE-11563) DELETE WHERE does not work in prepared statements

2019-04-10 Thread Pavel Kuznetsov (JIRA)


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

Pavel Kuznetsov commented on IGNITE-11563:
--

bug is that we use {{BPlusTree#findOne}} that has the same issue with 
BigDecimal 1 and 1.0
https://github.com/apache/ignite/blob/af041491423cc2c91668de3790a81e3631bcfa5c/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/database/H2TreeIndex.java#L353

> DELETE WHERE does not work in prepared statements
> -
>
> Key: IGNITE-11563
> URL: https://issues.apache.org/jira/browse/IGNITE-11563
> Project: Ignite
>  Issue Type: Bug
>  Components: sql
>Affects Versions: 2.7
>Reporter: Stefan
>Assignee: Pavel Kuznetsov
>Priority: Minor
>  Time Spent: 10m
>  Remaining Estimate: 0h
>
> With SQL I cannot delete a row using a prepared statement. The following 
> statement is simply ignored:
>  {{DELETE}} {{FROM}} {{AnyTable WHERE}} {{id = ?}}
>  This happens with JDBC-Thin and with ODBC so I suspect that the cluster gets 
> the correct data but handles it wrong. By adding an always-true-condition it 
> works as expected:
>  {{DELETE}} {{FROM}} {{AnyTable WHERE}} {{id = id AND}} {{id = ?}}
>  I tested with a very simple table that was created with:
> {{CREATE TABLE testtable (}}
>  {{    "ID" NUMBER(19,0),}}
>  {{    "VALUE" VARCHAR2(255 CHAR),}}
>  {{    PRIMARY KEY (ID)}}
>  {{) WITH "template=replicated,cache_name=testtable"}}



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)


[jira] [Commented] (IGNITE-11563) DELETE WHERE does not work in prepared statements

2019-04-09 Thread Pavel Kuznetsov (JIRA)


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

Pavel Kuznetsov commented on IGNITE-11563:
--

Fast update conversion is fixed. Got another delete issue: if double (or 
string) argument is passed, only in partitioned mode, delete operation could do 
nothing.
{code:java}
execute("CREATE TABLE TEST_TABLE (" +
"ID DECIMAL(19,1)," +
"VALUE VARCHAR2(255 CHAR)," +
"PRIMARY KEY (ID))with \"template=partitioned\"");

execute("INSERT INTO TEST_TABLE (id, value) VALUES (1, 'this row should 
be deleted'), (2, 'value')");

Object one = 1.0d;
execute("DELETE FROM TEST_TABLE WHERE ID = ? AND VALUE = 'this row 
should be deleted'", one);
   
List> expRows = Collections.singletonList(asList(new 
BigDecimal(2), "value"));
   
assertEqualsCollections("Argument of class " + 
one.getClass().getSimpleName() + " is converted incorrectly",
expRows, execute("SELECT * FROM TEST_TABLE ORDER BY ID"));
{code}

research shown that select generated for this delete also doesn't work.


> DELETE WHERE does not work in prepared statements
> -
>
> Key: IGNITE-11563
> URL: https://issues.apache.org/jira/browse/IGNITE-11563
> Project: Ignite
>  Issue Type: Bug
>  Components: sql
>Affects Versions: 2.7
>Reporter: Stefan
>Assignee: Pavel Kuznetsov
>Priority: Minor
>  Time Spent: 10m
>  Remaining Estimate: 0h
>
> With SQL I cannot delete a row using a prepared statement. The following 
> statement is simply ignored:
>  {{DELETE}} {{FROM}} {{AnyTable WHERE}} {{id = ?}}
>  This happens with JDBC-Thin and with ODBC so I suspect that the cluster gets 
> the correct data but handles it wrong. By adding an always-true-condition it 
> works as expected:
>  {{DELETE}} {{FROM}} {{AnyTable WHERE}} {{id = id AND}} {{id = ?}}
>  I tested with a very simple table that was created with:
> {{CREATE TABLE testtable (}}
>  {{    "ID" NUMBER(19,0),}}
>  {{    "VALUE" VARCHAR2(255 CHAR),}}
>  {{    PRIMARY KEY (ID)}}
>  {{) WITH "template=replicated,cache_name=testtable"}}



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)


[jira] [Commented] (IGNITE-11563) DELETE WHERE does not work in prepared statements

2019-04-07 Thread Pavel Kuznetsov (JIRA)


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

Pavel Kuznetsov commented on IGNITE-11563:
--

nb: for the query 
{code}
DELETE FROM TEST_TABLE WHERE ID = ? AND VALUE = 'this row should be deleted'
{code}

Fast delete is not used, but it should.

> DELETE WHERE does not work in prepared statements
> -
>
> Key: IGNITE-11563
> URL: https://issues.apache.org/jira/browse/IGNITE-11563
> Project: Ignite
>  Issue Type: Bug
>  Components: sql
>Affects Versions: 2.7
>Reporter: Stefan
>Assignee: Pavel Kuznetsov
>Priority: Minor
>  Time Spent: 10m
>  Remaining Estimate: 0h
>
> With SQL I cannot delete a row using a prepared statement. The following 
> statement is simply ignored:
>  {{DELETE}} {{FROM}} {{AnyTable WHERE}} {{id = ?}}
>  This happens with JDBC-Thin and with ODBC so I suspect that the cluster gets 
> the correct data but handles it wrong. By adding an always-true-condition it 
> works as expected:
>  {{DELETE}} {{FROM}} {{AnyTable WHERE}} {{id = id AND}} {{id = ?}}
>  I tested with a very simple table that was created with:
> {{CREATE TABLE testtable (}}
>  {{    "ID" NUMBER(19,0),}}
>  {{    "VALUE" VARCHAR2(255 CHAR),}}
>  {{    PRIMARY KEY (ID)}}
>  {{) WITH "template=replicated,cache_name=testtable"}}



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)


[jira] [Commented] (IGNITE-11563) DELETE WHERE does not work in prepared statements

2019-04-03 Thread Ignite TC Bot (JIRA)


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

Ignite TC Bot commented on IGNITE-11563:


{panel:title=--> Run :: All: No blockers 
found!|borderStyle=dashed|borderColor=#ccc|titleBGColor=#D6F7C1}{panel}
[TeamCity *--> Run :: All* 
Results|https://ci.ignite.apache.org/viewLog.html?buildId=3501046&buildTypeId=IgniteTests24Java8_RunAll]

> DELETE WHERE does not work in prepared statements
> -
>
> Key: IGNITE-11563
> URL: https://issues.apache.org/jira/browse/IGNITE-11563
> Project: Ignite
>  Issue Type: Bug
>  Components: sql
>Affects Versions: 2.7
>Reporter: Stefan
>Assignee: Pavel Kuznetsov
>Priority: Minor
>  Time Spent: 10m
>  Remaining Estimate: 0h
>
> With SQL I cannot delete a row using a prepared statement. The following 
> statement is simply ignored:
>  {{DELETE}} {{FROM}} {{AnyTable WHERE}} {{id = ?}}
>  This happens with JDBC-Thin and with ODBC so I suspect that the cluster gets 
> the correct data but handles it wrong. By adding an always-true-condition it 
> works as expected:
>  {{DELETE}} {{FROM}} {{AnyTable WHERE}} {{id = id AND}} {{id = ?}}
>  I tested with a very simple table that was created with:
> {{CREATE TABLE testtable (}}
>  {{    "ID" NUMBER(19,0),}}
>  {{    "VALUE" VARCHAR2(255 CHAR),}}
>  {{    PRIMARY KEY (ID)}}
>  {{) WITH "template=replicated,cache_name=testtable"}}



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)


[jira] [Commented] (IGNITE-11563) DELETE WHERE does not work in prepared statements

2019-04-01 Thread Pavel Kuznetsov (JIRA)


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

Pavel Kuznetsov commented on IGNITE-11563:
--

This is not client-specific bug, reproducible using native sql. Key point is to 
use sql positional parameters inside DELETE query.

> DELETE WHERE does not work in prepared statements
> -
>
> Key: IGNITE-11563
> URL: https://issues.apache.org/jira/browse/IGNITE-11563
> Project: Ignite
>  Issue Type: Bug
>  Components: sql
>Affects Versions: 2.7
>Reporter: Stefan
>Assignee: Pavel Kuznetsov
>Priority: Minor
>
> With SQL I cannot delete a row using a prepared statement. The following 
> statement is simply ignored:
>  {{DELETE}} {{FROM}} {{AnyTable WHERE}} {{id = ?}}
>  This happens with JDBC-Thin and with ODBC so I suspect that the cluster gets 
> the correct data but handles it wrong. By adding an always-true-condition it 
> works as expected:
>  {{DELETE}} {{FROM}} {{AnyTable WHERE}} {{id = id AND}} {{id = ?}}
>  I tested with a very simple table that was created with:
> {{CREATE TABLE testtable (}}
>  {{    "ID" NUMBER(19,0),}}
>  {{    "VALUE" VARCHAR2(255 CHAR),}}
>  {{    PRIMARY KEY (ID)}}
>  {{) WITH "template=replicated,cache_name=testtable"}}



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)


[jira] [Commented] (IGNITE-11563) DELETE WHERE does not work in prepared statements

2019-04-01 Thread Pavel Kuznetsov (JIRA)


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

Pavel Kuznetsov commented on IGNITE-11563:
--

Reproduced.

> DELETE WHERE does not work in prepared statements
> -
>
> Key: IGNITE-11563
> URL: https://issues.apache.org/jira/browse/IGNITE-11563
> Project: Ignite
>  Issue Type: Bug
>  Components: sql
>Affects Versions: 2.7
>Reporter: Stefan
>Assignee: Pavel Kuznetsov
>Priority: Minor
>
> With SQL I cannot delete a row using a prepared statement. The following 
> statement is simply ignored:
>  {{DELETE}} {{FROM}} {{AnyTable WHERE}} {{id = ?}}
>  This happens with JDBC-Thin and with ODBC so I suspect that the cluster gets 
> the correct data but handles it wrong. By adding an always-true-condition it 
> works as expected:
>  {{DELETE}} {{FROM}} {{AnyTable WHERE}} {{id = id AND}} {{id = ?}}
>  I tested with a very simple table that was created with:
> {{CREATE TABLE testtable (}}
>  {{    "ID" NUMBER(19,0),}}
>  {{    "VALUE" VARCHAR2(255 CHAR),}}
>  {{    PRIMARY KEY (ID)}}
>  {{) WITH "template=replicated,cache_name=testtable"}}



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)