[
https://issues.apache.org/jira/browse/IGNITE-7362?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Igor Sapego updated IGNITE-7362:
--------------------------------
Description:
Third-party frameworks and ODBC bindings for different languages use metadata
requests results for columns (such as {{SQL_COLUMN_PRECISION}}) to truncate
varlen data, inserted by the user, which is only 64 by default.
{code:java}
<?php
ini_set("display_errors", 1);
error_reporting(E_ALL);
try {
$ignite = new PDO('odbc:Apache Ignite');
$ignite->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql = 'DROP TABLE IF EXISTS test';
$ignite->exec($sql);
$sql = 'CREATE TABLE IF NOT EXISTS test (id int PRIMARY KEY, userkey
VARCHAR(1000))';
$ignite->exec($sql);
$id = 1;
$varval = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do
elit, sed';
$dbs = $ignite->prepare("INSERT INTO test (id, userkey) VALUES ($id,
'$varval')");
$dbs->execute();
$dbs = $ignite->prepare("SELECT userkey from test where id=$id");
$dbs->execute();
$res = $dbs->fetchColumn();
assert($varval == $res);
} catch (PDOException $e) {
print "Error!: " . $e->getMessage() . "\n";
die();
}
?>
{code}
was:
Third-party frameworks and ODBC bindings for different languages use metadata
requests results for columns (such as {{SQL_COLUMN_PRECISION}}) to truncate
varlen data, inserted by the user, which is only 64 by default.
{code}
<?php
ini_set("display_errors", 1);
error_reporting(E_ALL);
try {
$ignite = new PDO('odbc:Apache Ignite');
$ignite->setAttribute(PDO::ATTR_ERRMODE,
PDO::ERRMODE_EXCEPTION);
$sql = 'CREATE TABLE IF NOT EXISTS test_md5 (id int PRIMARY
KEY, userkey
LONGVARCHAR, server LONGVARCHAR, tsession LONGVARCHAR, tpost LONGVARCHAR,
tget LONGVARCHAR, adddate int) WITH
"atomicity=transactional,cachegroup=somegroup"';
$ignite->exec($sql);
for($i=0; $i <= 10; $i++){
$dbs = $ignite->prepare("INSERT INTO test_md5 (id,
userkey, server,
tsession, tpost, tget, adddate) VALUES ($i, 'Lorem ipsum dolor sit amet,
consectetur adipiscing elit, sed do elit, sed', 'b', 'c', 'd', 'e', 1)");
$dbs->execute();
}
} catch (PDOException $e) {
print "Error!: " . $e->getMessage() . "\n";
die();
}
?>
{code}
> ODBC: Third party libraries truncate any inserted varlen data to ColumnSize
> ---------------------------------------------------------------------------
>
> Key: IGNITE-7362
> URL: https://issues.apache.org/jira/browse/IGNITE-7362
> Project: Ignite
> Issue Type: Bug
> Components: odbc
> Affects Versions: 2.3
> Reporter: Igor Sapego
> Assignee: Igor Sapego
> Priority: Major
> Fix For: 2.5
>
>
> Third-party frameworks and ODBC bindings for different languages use metadata
> requests results for columns (such as {{SQL_COLUMN_PRECISION}}) to truncate
> varlen data, inserted by the user, which is only 64 by default.
> {code:java}
> <?php
> ini_set("display_errors", 1);
> error_reporting(E_ALL);
> try {
> $ignite = new PDO('odbc:Apache Ignite');
> $ignite->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
> $sql = 'DROP TABLE IF EXISTS test';
> $ignite->exec($sql);
> $sql = 'CREATE TABLE IF NOT EXISTS test (id int PRIMARY KEY, userkey
> VARCHAR(1000))';
> $ignite->exec($sql);
> $id = 1;
> $varval = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed
> do elit, sed';
> $dbs = $ignite->prepare("INSERT INTO test (id, userkey) VALUES ($id,
> '$varval')");
> $dbs->execute();
> $dbs = $ignite->prepare("SELECT userkey from test where id=$id");
> $dbs->execute();
> $res = $dbs->fetchColumn();
> assert($varval == $res);
> } catch (PDOException $e) {
> print "Error!: " . $e->getMessage() . "\n";
> die();
> }
> ?>
> {code}
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)