Commit da3c3b90 authored by Olivier Bertrand's avatar Olivier Bertrand

Fix MDEV-12973: Blank columns querying SQL Server

Added support of NCHAR, NVARCHAR an ROWID JDBC types.
  modified:   storage/connect/jdbconn.cpp
parent 5b534a68
...@@ -121,13 +121,17 @@ int TranslateJDBCType(int stp, char *tn, int prec, int& len, char& v) ...@@ -121,13 +121,17 @@ int TranslateJDBCType(int stp, char *tn, int prec, int& len, char& v)
switch (stp) { switch (stp) {
case -1: // LONGVARCHAR case -1: // LONGVARCHAR
case -16: // LONGNVARCHAR (unicode)
if (GetTypeConv() != TPC_YES) if (GetTypeConv() != TPC_YES)
return TYPE_ERROR; return TYPE_ERROR;
else else
len = MY_MIN(abs(len), GetConvSize()); len = MY_MIN(abs(len), GetConvSize());
case 12: // VARCHAR case 12: // VARCHAR
case -9: // NVARCHAR (unicode)
v = 'V'; v = 'V';
case 1: // CHAR case 1: // CHAR
case -15: // NCHAR (unicode)
case -8: // ROWID
type = TYPE_STRING; type = TYPE_STRING;
break; break;
case 2: // NUMERIC case 2: // NUMERIC
...@@ -143,6 +147,7 @@ int TranslateJDBCType(int stp, char *tn, int prec, int& len, char& v) ...@@ -143,6 +147,7 @@ int TranslateJDBCType(int stp, char *tn, int prec, int& len, char& v)
break; break;
case -6: // TINYINT case -6: // TINYINT
case -7: // BIT case -7: // BIT
case 16: // BOOLEAN
type = TYPE_TINY; type = TYPE_TINY;
break; break;
case 6: // FLOAT case 6: // FLOAT
...@@ -178,6 +183,16 @@ int TranslateJDBCType(int stp, char *tn, int prec, int& len, char& v) ...@@ -178,6 +183,16 @@ int TranslateJDBCType(int stp, char *tn, int prec, int& len, char& v)
case 0: // NULL case 0: // NULL
case -2: // BINARY case -2: // BINARY
case -4: // LONGVARBINARY case -4: // LONGVARBINARY
case 70: // DATALINK
case 2000: // JAVA_OBJECT
case 2001: // DISTINCT
case 2002: // STRUCT
case 2003: // ARRAY
case 2004: // BLOB
case 2005: // CLOB
case 2006: // REF
case 2009: // SQLXML
case 2011: // NCLOB
default: default:
type = TYPE_ERROR; type = TYPE_ERROR;
len = 0; len = 0;
...@@ -1225,9 +1240,12 @@ void JDBConn::SetColumnValue(int rank, PSZ name, PVAL val) ...@@ -1225,9 +1240,12 @@ void JDBConn::SetColumnValue(int rank, PSZ name, PVAL val)
switch (ctyp) { switch (ctyp) {
case 12: // VARCHAR case 12: // VARCHAR
case -9: // NVARCHAR
case -1: // LONGVARCHAR case -1: // LONGVARCHAR
case 1: // CHAR case 1: // CHAR
case -15: // NCHAR
case 3: // DECIMAL case 3: // DECIMAL
case -8: // ROWID
if (jb && ctyp != 3) if (jb && ctyp != 3)
cn = (jstring)jb; cn = (jstring)jb;
else if (!gmID(g, chrfldid, "StringField", "(ILjava/lang/String;)Ljava/lang/String;")) else if (!gmID(g, chrfldid, "StringField", "(ILjava/lang/String;)Ljava/lang/String;"))
...@@ -1245,6 +1263,7 @@ void JDBConn::SetColumnValue(int rank, PSZ name, PVAL val) ...@@ -1245,6 +1263,7 @@ void JDBConn::SetColumnValue(int rank, PSZ name, PVAL val)
case 4: // INTEGER case 4: // INTEGER
case 5: // SMALLINT case 5: // SMALLINT
case -6: // TINYINT case -6: // TINYINT
case 16: // BOOLEAN
case -7: // BIT case -7: // BIT
if (!gmID(g, intfldid, "IntField", "(ILjava/lang/String;)I")) if (!gmID(g, intfldid, "IntField", "(ILjava/lang/String;)I"))
val->SetValue((int)env->CallIntMethod(job, intfldid, rank, jn)); val->SetValue((int)env->CallIntMethod(job, intfldid, rank, jn));
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment