proposal: Support Unicode host variable in ECPG
Hello,
This is a new requirement comes from some customers hoping the ECPG can
support Unicode host variable which can compatible with the same feature in
Oracle Pro*C.
https://docs.oracle.com/database/121/LNPCC/pc_05adv.htm#LNPCC3273
By using this Unicode data type, user can define Unicode variables in ECPG
application in windows platform, save the content of the Unicode host
variables into the database as database character set or get the content
from the database into the Unicode host variables.
Requirements
============
1. support utext keyword in ECPG
The utext is used to define the Unicode host variable in ECPG application
in windows platform.
2. support UVARCHAR keyword in ECPG
The UVARCHAR is used to define the Unicode vary length host variable in
ECPG application in windows platform.
3. Saving the content of the Unicode variables into the database as
database character set or getting the content from the database into the
Unicode variables.
4. Firstly can only consider the UTF8 as database character set and UTF16
as the Unicode format for host variable. A datatype convert will be done
between the UTF8 and UTF16 by ECPG.
5. Since Unicode has big-endian and little-endian format, a environment
variable is used to identify them and do the endianness convert accordingly.
Usage
============
int main() {
EXEC SQL BEGIN DECLARE SECTION;
utext employee[20] ; /* define Unicode host variable */
UVARCHAR address[50] ; /* defin a vary length Unicode host
variable */
EXEC SQL END DECLARE SECTION;
...
EXEC SQL CREATE TABLE emp (ename char(20), address varchar(50));
/* UTF8 is the database character set */
EXEC SQL INSERT INTO emp (ename) VALUES ('Mike', '1 sydney, NSW') ;
/* Database character set converted to Unicode */
EXEC SQL SELECT ename INTO :employee FROM emp ;
/* Database character set converted to Unicode */
EXEC SQL SELECT address INTO :address FROM emp ;
wprintf(L"employee name is %s\n",employee);
wprintf(L"employee address is %s\n", address.attr);
DELETE * FROM emp;
/* Unicode converted to Database character */
EXEC SQL INSERT INTO emp (ename,address) VALUES (:employee, :address);
EXEC SQL DROP TABLE emp;
EXEC SQL DISCONNECT ALL;
}
--
Regards,
Jing Wang
Fujitsu Australia
Hi,
I would like to provide the patch file that ECPG can support the
utf16/utf32 unicode host variable type. This feature is used to compatible
the same feature in Oracle's. Please find Oracle's feature in the [1]https://docs.oracle.com/database/121/LNPCC/pc_05adv.htm#LNPCC3273.
[1]: https://docs.oracle.com/database/121/LNPCC/pc_05adv.htm#LNPCC3273
Regards,
Jing Wang
Fujitsu Australia
Attachments:
ecpg_utext_v0.1.patchapplication/octet-stream; name=ecpg_utext_v0.1.patchDownload
diff --git a/src/backend/utils/mb/encnames.c b/src/backend/utils/mb/encnames.c
index 12b61cd..76e2e20 100644
--- a/src/backend/utils/mb/encnames.c
+++ b/src/backend/utils/mb/encnames.c
@@ -402,6 +402,53 @@ const pg_enc2gettext pg_enc2gettext_tbl[] =
{0, NULL}
};
+const pg_encmaxlen pg_encmaxlen_tbl[] =
+{
+ {PG_SQL_ASCII, 1},
+ {PG_EUC_JP, 1},
+ {PG_EUC_CN, 1},
+ {PG_EUC_KR, 1},
+ {PG_EUC_TW, 1},
+ {PG_EUC_JIS_2004, 1},
+ {PG_UTF8, 4},
+ {PG_MULE_INTERNAL, 1},
+ {PG_LATIN1, 1},
+ {PG_LATIN2, 1},
+ {PG_LATIN3, 1},
+ {PG_LATIN4, 1},
+ {PG_LATIN5, 1},
+ {PG_LATIN6, 1},
+ {PG_LATIN7, 1},
+ {PG_LATIN8, 1},
+ {PG_LATIN9, 1},
+ {PG_LATIN10, 1},
+ {PG_WIN1256, 1},
+ {PG_WIN1258, 1},
+ {PG_WIN866, 1},
+ {PG_WIN874, 1},
+ {PG_KOI8R, 1},
+ {PG_WIN1251, 1},
+ {PG_WIN1252, 1},
+ {PG_ISO_8859_5, 1},
+ {PG_ISO_8859_6, 1},
+ {PG_ISO_8859_7, 1},
+ {PG_ISO_8859_8, 1},
+ {PG_WIN1250, 1},
+ {PG_WIN1253, 1},
+ {PG_WIN1254, 1},
+ {PG_WIN1255, 1},
+ {PG_WIN1256, 1},
+ {PG_WIN1257, 1},
+ {PG_KOI8U, 1},
+ {PG_SJIS, 2},
+ {PG_BIG5, 2},
+ {PG_GBK, 2},
+ {PG_UHC, 2},
+ {PG_GB18030, 4},
+ {PG_JOHAB, 3},
+ {PG_SHIFT_JIS_2004, 2},
+ {0, 0}
+};
#ifndef FRONTEND
diff --git a/src/include/mb/pg_wchar.h b/src/include/mb/pg_wchar.h
index d57ef01..8f345ed 100644
--- a/src/include/mb/pg_wchar.h
+++ b/src/include/mb/pg_wchar.h
@@ -334,6 +334,14 @@ typedef struct pg_enc2gettext
extern const pg_enc2gettext pg_enc2gettext_tbl[];
+typedef struct pg_encmaxlen
+{
+ pg_enc encoding;
+ int len;
+} pg_encmaxlen;
+
+extern const pg_encmaxlen pg_encmaxlen_tbl[];
+
/*
* Encoding names for ICU
*/
diff --git a/src/interfaces/ecpg/ecpglib/Makefile b/src/interfaces/ecpg/ecpglib/Makefile
index fbb1407..0fd43d4 100644
--- a/src/interfaces/ecpg/ecpglib/Makefile
+++ b/src/interfaces/ecpg/ecpglib/Makefile
@@ -26,7 +26,7 @@ override CFLAGS += $(PTHREAD_CFLAGS)
LIBS := $(filter-out -lpgport, $(LIBS))
OBJS= execute.o typename.o descriptor.o sqlda.o data.o error.o prepare.o memory.o \
- connect.o misc.o path.o pgstrcasecmp.o \
+ connect.o misc.o path.o pgstrcasecmp.o convertutf.o \
$(filter snprintf.o strlcpy.o win32setlocale.o isinf.o, $(LIBOBJS)) $(WIN32RES)
# thread.c is needed only for non-WIN32 implementation of path.c
diff --git a/src/interfaces/ecpg/ecpglib/convertutf.c b/src/interfaces/ecpg/ecpglib/convertutf.c
new file mode 100644
index 0000000..03bb617
--- /dev/null
+++ b/src/interfaces/ecpg/ecpglib/convertutf.c
@@ -0,0 +1,180 @@
+/*
+/* src/interfaces/ecpg/ecpglib/convertutf.c */
+
+#include "convertutf.h"
+#include "c.h"
+#ifdef CVTUTF_DEBUG
+#include <stdio.h>
+#endif
+#include <iconv.h>
+#include <errno.h>
+
+#ifndef false
+#define false 0
+#endif
+
+#ifndef true
+#define true 1
+#endif
+
+static bool is_little_endian(void);
+
+/* Return true if utext string is null*/
+bool utext_is_null(char *source)
+{
+#if defined(WIN32)
+ if(*(short int*)source == 0)
+#else
+ if(*(int*)source == 0)
+#endif
+ return true;
+
+ return false;
+}
+
+
+/*****
+ * Get the UTF32 or UTF16 string length by characters.
+ * Four bytes UTF16 consider it as 2 characters.
+ * maxlen means the max character length of the unicode string.
+ * if maxlen = 0, then get the length until find the 0x0000.
+ */
+long get_utext_length(char *source, unsigned int maxlen)
+{
+ long len = 0;
+
+ while(1)
+ {
+#if defined(WIN32)
+ if ((short)(*source) == 0x00)
+#else
+ if ((int)(*source) == 0x00)
+#endif
+ break;
+
+ len++;
+ source += UNICODE_CH_LEN;
+
+ if(maxlen && len>=maxlen)
+ return maxlen;
+ }
+
+ return len;
+}
+
+ConversionResult
+convert_func(char *from_code, char *to_code, char *from, size_t from_len, char *to, size_t to_len, int *real_len)
+{
+ iconv_t cd;
+ int len = to_len;
+ ConversionResult ret = conversionOK;
+
+ //cd = iconv_open("UTF-16LE","SHIFT-JIS");
+ cd = iconv_open(to_code,from_code);
+
+ if((cd) == (iconv_t) -1)
+ return conversionUnsupported;
+
+ if(iconv(cd, &from, &from_len, &to, &to_len) == -1)
+ {
+ int num = 0;
+
+#if defined(WIN32)
+ num = GetLastError();
+ if (num ==0 && to_len == 0 && from_len > 0)
+ num = E2BIG;
+#else
+ num = errno;
+#endif
+
+ if(num == E2BIG)
+ ret = targetExhausted;
+ else
+ ret = sourceIllegal;
+ }
+ else
+ {
+ if(real_len)
+ *real_len = (len - to_len);
+ }
+
+ iconv_close(cd);
+
+ return ret;
+}
+
+/*
+ * This function return the need converted length by bytes.
+ */
+int get_converted_length(char *from_code, char *to_code, char *from, size_t from_len)
+{
+ iconv_t cd;
+ size_t to_len = from_len *4;
+ int max_len;
+ int convert_ret;
+ char buffer[512]={0};
+ char *to = buffer;
+ bool need_free = false;
+
+ if (to_len > 512)
+ {
+ to = (char*)malloc(to_len);
+ memset(to,0,to_len);
+ need_free = true;
+ }
+
+ max_len = to_len;
+
+ cd = iconv_open(to_code,from_code);
+ if((cd) == (iconv_t) -1)
+ return conversionUnsupported;
+
+ convert_ret = (int)iconv(cd, &from, &from_len, &to, &to_len);
+
+ iconv_close(cd);
+
+ if(need_free)
+ free(to);
+
+ if(convert_ret==-1)
+ return convert_ret;
+
+ return (max_len - to_len);
+}
+
+/*****
+ * Return the unicode encoding name based on the platform
+ */
+char *
+get_utext_encoding()
+{
+#if defined(WIN32)
+ if(is_little_endian())
+ return "UTF-16LE";
+ else
+ return "UTF-16BE";
+#else
+ if(is_little_endian())
+ return "UTF32LE";
+ else
+ return "UTF32BE";
+#endif
+}
+
+/*
+ * Check which type of endianness format supported by the machine
+ * Return:
+ * True -- little endian
+ * False -- big endian
+ *
+ */
+static bool
+is_little_endian()
+{
+ int n = 1;
+
+ if(*(char *)&n == 1)
+ return true;
+
+ return false;
+}
diff --git a/src/interfaces/ecpg/ecpglib/data.c b/src/interfaces/ecpg/ecpglib/data.c
index a2f3916..509329e 100644
--- a/src/interfaces/ecpg/ecpglib/data.c
+++ b/src/interfaces/ecpg/ecpglib/data.c
@@ -15,6 +15,7 @@
#include "pgtypes_date.h"
#include "pgtypes_timestamp.h"
#include "pgtypes_interval.h"
+#include "convertutf.h"
/* returns true if character c is a delimiter for the given array type */
static bool
@@ -235,6 +236,8 @@ ecpg_get_data(const PGresult *results, int act_tuple, int act_field, int lineno,
case ECPGt_unsigned_char:
case ECPGt_varchar:
case ECPGt_string:
+ case ECPGt_utext:
+ case ECPGt_uvarchar:
break;
default:
@@ -506,7 +509,110 @@ ecpg_get_data(const PGresult *results, int act_tuple, int act_field, int lineno,
pval += size;
}
break;
+ case ECPGt_utext:
+ {
+ int real_len = 0;
+ int utext_len = 0;
+ char *str = (char *) (var + offset * act_tuple);
+ char *encoding = NULL;
+ int pval_len = size;
+ int to_len;
+ char *dest_encoding = get_utext_encoding();
+ int dest_character_size = UNICODE_CH_LEN;
+
+ ConversionResult convert_ret;
+
+ /* Here will be modified later by setting length according to encoding */
+ to_len = varcharsize>0?offset:size*dest_character_size;
+
+ /* Check the PGCLIENTENCODING */
+ encoding = PQGetEncodingName(PQGetEncodingFromPGres(results));
+ if(encoding == NULL)
+ {
+ ecpg_raise(lineno, ECPG_CLIENT_ENCODING_ERROR, ECPG_SQLSTATE_ECPG_INTERNAL_ERROR, NULL);
+ return false;
+ }
+
+ /*
+ * If varcharsize is unknown and the offset is that of
+ * char *, then this variable represents the array of
+ * character pointers. So, use extra indirection.
+ */
+ if (varcharsize == 0 && offset == sizeof(char *))
+ str = *(char **) str;
+
+ /*
+ * Don't know the real size of the utext pointer,
+ * so set the offset to be needed size.
+ * For utext pointer to pointer host variable with
+ * uninitialized the offset will be set zero as input
+ * parameter.
+ * For utext pointer host varaible the varcharsize is
+ * zero and offset is not.
+ */
+ if (varcharsize == 0 || offset == 0)
+ {
+ real_len = get_converted_length(encoding,dest_encoding,pval,pval_len);
+ to_len = offset = real_len;
+ memset(str,0,offset+dest_character_size);
+ }
+ else
+ memset(str,0,offset);
+
+ /* Start to convert encoding to UTF16 */
+ convert_ret = convert_func(encoding,dest_encoding, pval,pval_len,str,to_len,&real_len);
+ if (convert_ret == sourceIllegal || convert_ret == conversionUnsupported)
+ {
+ ecpg_raise(lineno, ECPG_ENCODING_ERROR, ECPG_SQLSTATE_ECPG_ENCODING_ERROR, NULL);
+ return false;
+ }
+ else if (convert_ret == targetExhausted)
+ {
+ real_len = get_converted_length(encoding,dest_encoding,pval,pval_len);
+ if(real_len == -1)
+ {
+ ecpg_raise(lineno, ECPG_ENCODING_ERROR, ECPG_SQLSTATE_ECPG_ENCODING_ERROR, NULL);
+ return false;
+ }
+ }
+
+ utext_len = real_len/dest_character_size;
+ /*
+ * If the need bytes by UTF16 string is larger than the
+ * length of host variable, set the ind variable
+ */
+ if (varcharsize > 0 && varcharsize < utext_len)
+ {
+ /* truncation */
+ switch (ind_type)
+ {
+ case ECPGt_short:
+ case ECPGt_unsigned_short:
+ *((short *) (ind + ind_offset * act_tuple)) = utext_len;
+ break;
+ case ECPGt_int:
+ case ECPGt_unsigned_int:
+ *((int *) (ind + ind_offset * act_tuple)) = utext_len;
+ break;
+ case ECPGt_long:
+ case ECPGt_unsigned_long:
+ *((long *) (ind + ind_offset * act_tuple)) = utext_len;
+ break;
+#ifdef HAVE_LONG_LONG_INT
+ case ECPGt_long_long:
+ case ECPGt_unsigned_long_long:
+ *((long long int *) (ind + ind_offset * act_tuple)) = utext_len;
+ break;
+#endif /* HAVE_LONG_LONG_INT */
+ default:
+ break;
+ }
+ sqlca->sqlwarn[0] = sqlca->sqlwarn[1] = 'W';
+ }
+ pval += size;
+ }
+ break;
case ECPGt_varchar:
{
struct ECPGgeneric_varchar *variable =
@@ -554,6 +660,87 @@ ecpg_get_data(const PGresult *results, int act_tuple, int act_field, int lineno,
}
break;
+ case ECPGt_uvarchar:
+ {
+ int real_len = 0;
+ int utext_len = 0;
+ int to_len = 0;
+ int pval_len = size;
+ char *encoding = NULL;
+ ConversionResult convert_ret = conversionOK;
+ struct ECPGgeneric_varchar *variable =
+ (struct ECPGgeneric_varchar *) (var + offset * act_tuple);
+
+ char *str = (char *) (variable->arr);
+
+ char *dest_encoding = get_utext_encoding();
+ int dest_character_size = UNICODE_CH_LEN;
+
+ memset((char*)variable, 0, offset);
+
+ /* Check the PGCLIENTENCODING */
+ encoding = PQGetEncodingName(PQGetEncodingFromPGres(results));
+ if(encoding == NULL)
+ {
+ ecpg_raise(lineno, ECPG_CLIENT_ENCODING_ERROR, ECPG_SQLSTATE_ECPG_INTERNAL_ERROR, NULL);
+ return false;
+ }
+
+ to_len = offset-sizeof(int);
+
+ /* Start to convert encoding to UTF16 or UTF32 */
+ convert_ret = convert_func(encoding,dest_encoding, pval,pval_len,str,to_len,&real_len);
+
+ if (convert_ret == sourceIllegal || convert_ret == conversionUnsupported)
+ {
+ ecpg_raise(lineno, ECPG_ENCODING_ERROR, ECPG_SQLSTATE_ECPG_ENCODING_ERROR, NULL);
+ return false;
+ }
+ else if (convert_ret == targetExhausted)
+ {
+ real_len = get_converted_length(encoding,dest_encoding,pval,pval_len);
+ if(real_len == -1)
+ {
+ ecpg_raise(lineno, ECPG_ENCODING_ERROR, ECPG_SQLSTATE_ECPG_ENCODING_ERROR, NULL);
+ return false;
+ }
+ }
+
+ /* Get the actual length of UTF16 characters */
+ utext_len = real_len/dest_character_size;
+ variable->len = Min(utext_len,varcharsize);
+
+ if (utext_len > varcharsize)
+ {
+ /* truncation */
+ switch (ind_type)
+ {
+ case ECPGt_short:
+ case ECPGt_unsigned_short:
+ *((short *) (ind + ind_offset * act_tuple)) = utext_len;
+ break;
+ case ECPGt_int:
+ case ECPGt_unsigned_int:
+ *((int *) (ind + ind_offset * act_tuple)) = utext_len;
+ break;
+ case ECPGt_long:
+ case ECPGt_unsigned_long:
+ *((long *) (ind + ind_offset * act_tuple)) = utext_len;
+ break;
+#ifdef HAVE_LONG_LONG_INT
+ case ECPGt_long_long:
+ case ECPGt_unsigned_long_long:
+ *((long long int *) (ind + ind_offset * act_tuple)) = utext_len;
+ break;
+#endif /* HAVE_LONG_LONG_INT */
+ default:
+ break;
+ }
+ sqlca->sqlwarn[0] = sqlca->sqlwarn[1] = 'W';
+ }
+ pval += size;
+ }
+ break;
case ECPGt_decimal:
case ECPGt_numeric:
for (endptr = pval; *endptr && *endptr != ',' && *endptr != '}'; endptr++);
diff --git a/src/interfaces/ecpg/ecpglib/error.c b/src/interfaces/ecpg/ecpglib/error.c
index f34ae4a..80979d5 100644
--- a/src/interfaces/ecpg/ecpglib/error.c
+++ b/src/interfaces/ecpg/ecpglib/error.c
@@ -40,6 +40,16 @@ ecpg_raise(int line, int code, const char *sqlstate, const char *str)
ecpg_gettext("out of memory on line %d"), line);
break;
+ case ECPG_ENCODING_ERROR:
+ snprintf(sqlca->sqlerrm.sqlerrmc, sizeof(sqlca->sqlerrm.sqlerrmc),
+
+ /*
+ * translator: this string will be truncated at 149 characters
+ * expanded.
+ */
+ ecpg_gettext("encoding conversion error on line %d"), line);
+ break;
+
case ECPG_UNSUPPORTED:
snprintf(sqlca->sqlerrm.sqlerrmc, sizeof(sqlca->sqlerrm.sqlerrmc),
/*------
@@ -200,6 +210,15 @@ ecpg_raise(int line, int code, const char *sqlstate, const char *str)
ecpg_gettext("could not connect to database \"%s\" on line %d"), str, line);
break;
+ case ECPG_CLIENT_ENCODING_ERROR:
+ snprintf(sqlca->sqlerrm.sqlerrmc, sizeof(sqlca->sqlerrm.sqlerrmc),
+
+ /*
+ * translator: this string will be truncated at 149 characters
+ * expanded.
+ */
+ ecpg_gettext("Failed to get client encoding name on line %d"),line);
+ break;
default:
snprintf(sqlca->sqlerrm.sqlerrmc, sizeof(sqlca->sqlerrm.sqlerrmc),
/*------
diff --git a/src/interfaces/ecpg/ecpglib/execute.c b/src/interfaces/ecpg/ecpglib/execute.c
index 50f831a..1e331d0 100644
--- a/src/interfaces/ecpg/ecpglib/execute.c
+++ b/src/interfaces/ecpg/ecpglib/execute.c
@@ -33,7 +33,10 @@
#include "pgtypes_date.h"
#include "pgtypes_timestamp.h"
#include "pgtypes_interval.h"
+#include "convertutf.h"
+static int ecpg_do_utext_encoding(struct variable * var, int client_encoding,int lineno);
+static int ecpg_do_uvachar_encoding(struct variable * var, int client_encoding,int lineno);
/*
* This function returns a newly malloced string that has ' and \
* escaped.
@@ -88,6 +91,11 @@ free_variable(struct variable *var)
while (var)
{
+ if (var->alloc_inf == 1)
+ ecpg_free(var->value);
+ if (var->ind_alloc_inf == 1)
+ ecpg_free(var->ind_value);
+
var_next = var->next;
ecpg_free(var);
var = var_next;
@@ -382,9 +390,83 @@ ecpg_store_result(const PGresult *results, int act_field,
len = var->offset * ntuples;
}
break;
+ case ECPGt_utext:
+ {
+ char *pval;
+ int pval_len;
+ int unicode_str_len;
+
+ char *src_encoding;
+ char *dest_encoding = get_utext_encoding();
+
+ /* Check the PGCLIENTENCODING */
+ src_encoding = PQGetEncodingName(PQGetEncodingFromPGres(results));
+ if(src_encoding == NULL)
+ {
+ ecpg_raise(stmt->lineno, ECPG_CLIENT_ENCODING_ERROR, ECPG_SQLSTATE_ECPG_INTERNAL_ERROR, NULL);
+ return false;
+ }
+
+ if (!var->varcharsize && !var->arrsize)
+ {
+ /* special mode for handling utext **foo=0 */
+ for (act_tuple = 0; act_tuple < ntuples; act_tuple++)
+ {
+ pval = (char *) PQgetvalue(results, act_tuple, act_field);
+ pval_len = PQgetlength(results, act_tuple, act_field);
+
+ unicode_str_len = get_converted_length(src_encoding,dest_encoding,pval,pval_len);
+ if(unicode_str_len == -1)
+ {
+ ecpg_raise(stmt->lineno, ECPG_ENCODING_ERROR, ECPG_SQLSTATE_ECPG_ENCODING_ERROR, NULL);
+ return false;
+ }
+
+ len += unicode_str_len + UNICODE_CH_LEN;
+ }
+ len += (ntuples + 1) * sizeof(char *);
+ }
+ else
+ {
+ var->varcharsize = 0;
+ /* check strlen for each tuple */
+ for (act_tuple = 0; act_tuple < ntuples; act_tuple++)
+ {
+ pval = (char *) PQgetvalue(results, act_tuple, act_field);
+ pval_len = PQgetlength(results, act_tuple, act_field);
+
+ unicode_str_len = get_converted_length(src_encoding,dest_encoding,pval,pval_len);
+ if(unicode_str_len == -1)
+ {
+ ecpg_raise(stmt->lineno, ECPG_ENCODING_ERROR, ECPG_SQLSTATE_ECPG_ENCODING_ERROR, NULL);
+ return false;
+ }
+
+ /* utf16_str_len indicates the utf16 string length by bytes */
+ unicode_str_len = unicode_str_len + UNICODE_CH_LEN;
+
+ if (unicode_str_len > var->varcharsize)
+ var->varcharsize = unicode_str_len;
+ }
+
+ /* Here offset is the utf16 length by bytes,
+ * so no need using '*' as used in char
+ */
+ var->offset = var->varcharsize;
+
+ /* varcharsize contains number of characters so divided by UNICODE_CH_LEN*/
+ var->varcharsize = var->varcharsize/UNICODE_CH_LEN;
+
+ len = var->offset * ntuples;
+ }
+ }
+ break;
case ECPGt_varchar:
len = ntuples * (var->varcharsize + sizeof(int));
break;
+ case ECPGt_uvarchar:
+ len = ntuples * (var->varcharsize*2 + sizeof(int));
+ break;
default:
len = var->offset * ntuples;
break;
@@ -416,7 +498,7 @@ ecpg_store_result(const PGresult *results, int act_field,
/* fill the variable with the tuple(s) */
if (!var->varcharsize && !var->arrsize &&
- (var->type == ECPGt_char || var->type == ECPGt_unsigned_char || var->type == ECPGt_string))
+ (var->type == ECPGt_char || var->type == ECPGt_unsigned_char || var->type == ECPGt_string || var->type == ECPGt_utext))
{
/* special mode for handling char**foo=0 */
@@ -437,7 +519,10 @@ ecpg_store_result(const PGresult *results, int act_field,
else
{
*current_string = current_data_location;
- current_data_location += len;
+ if(var->type == ECPGt_utext)
+ current_data_location += (get_utext_length(current_data_location,0)+1)*UNICODE_CH_LEN;
+ else
+ current_data_location += len;
current_string++;
}
}
@@ -772,6 +857,7 @@ ecpg_store_input(const int lineno, const bool force_indicator, const struct vari
case ECPGt_char:
case ECPGt_unsigned_char:
case ECPGt_string:
+ case ECPGt_utext:
{
/* set slen to string length if type is char * */
int slen = (var->varcharsize == 0) ? strlen((char *) var->value) : (unsigned int) var->varcharsize;
@@ -807,6 +893,7 @@ ecpg_store_input(const int lineno, const bool force_indicator, const struct vari
}
break;
case ECPGt_varchar:
+ case ECPGt_uvarchar:
{
struct ECPGgeneric_varchar *variable =
(struct ECPGgeneric_varchar *) (var->value);
@@ -1754,6 +1841,7 @@ ecpg_do_prologue(int lineno, const int compat, const int force_indicator,
enum ECPGttype type;
struct variable **list;
char *prepname;
+ int outparam = 0;
*stmt_out = NULL;
@@ -1869,7 +1957,10 @@ ecpg_do_prologue(int lineno, const int compat, const int force_indicator,
while (type != ECPGt_EORT)
{
if (type == ECPGt_EOIT)
+ {
+ outparam = 1;
list = &(stmt->outlist);
+ }
else
{
struct variable *var,
@@ -1900,6 +1991,39 @@ ecpg_do_prologue(int lineno, const int compat, const int force_indicator,
else
var->value = var->pointer;
+ if (var->type == ECPGt_utext)
+ {
+ if(outparam == 0 &&
+ ecpg_do_utext_encoding(var, PQGetEncodingFromPGconn(con->connection),lineno) == -1)
+ {
+ if ( NULL != var )
+ {
+ ecpg_free(var);
+ var = NULL;
+ }
+
+ ecpg_do_epilogue(stmt);
+
+ return false;
+ }
+ }
+ else if(var->type == ECPGt_uvarchar)
+ {
+ if(outparam == 0 &&
+ ecpg_do_uvachar_encoding(var, PQGetEncodingFromPGconn(con->connection),lineno) == -1)
+ {
+ if ( NULL != var )
+ {
+ ecpg_free(var);
+ var = NULL;
+ }
+
+ ecpg_do_epilogue(stmt);
+
+ return false;
+ }
+ }
+
/*
* negative values are used to indicate an array without given
* bounds
@@ -2049,3 +2173,217 @@ ECPGdo_descriptor(int line, const char *connection,
ECPGt_descriptor, descriptor, 0L, 0L, 0L,
ECPGt_NO_INDICATOR, NULL, 0L, 0L, 0L, ECPGt_EORT);
}
+
+/*
+ * Translate the var->value with type utext into a new value with ECPGCLIENT encoding
+ * and save it into ptr.
+ * The var->offset is changed to bytes unit.
+ * Success: return 0;
+ * Failure: return -1
+ */
+static int
+ecpg_do_utext_encoding(struct variable * var, int client_encoding,int lineno)
+{
+
+ int i;
+ int src_offset;
+ char *src_offset_start = NULL;
+ int dest_offset;
+ char *dest_offset_start = NULL;
+ char *dest;
+ int dest_length;
+ long varcharsize = 0;
+ int arrsize;
+ ConversionResult convert_ret;
+ int dest_character_len;
+
+ char *encoding = NULL;
+ char *utext_encoding = get_utext_encoding();
+
+ arrsize = var->arrsize;
+
+ /*
+ * For utext type variable, the var->offset indicate the how many bytes
+ * in one element in array.
+ * utext is 2 bytes type in windows platform
+ */
+ src_offset = var->offset;
+
+ if (utext_is_null(var->value))
+ {
+ /* Go to here means the content in the utext host varailbe is NULL,
+ * so no need convert it */
+ var->varcharsize = 1;
+ return 0;
+ }
+
+ encoding = PQGetEncodingName(client_encoding);
+ if(encoding == NULL)
+ {
+ ecpg_raise(lineno, ECPG_CLIENT_ENCODING_ERROR, ECPG_SQLSTATE_ECPG_INTERNAL_ERROR, NULL);
+ return false;
+ }
+
+ /*
+ * For the pointer variable varcharsize is zero so have to get the real
+ * varcharsize from the get_utext_length.
+ */
+ if(var->varcharsize == 0)
+ {
+ varcharsize = get_utext_length(var->value,0);
+ if (varcharsize == 0)
+ {
+ /* Go to here means the content in the pointer is NULL,
+ * so no need convert it */
+ var->varcharsize = 1;
+ return 0;
+ }
+ else
+ src_offset = varcharsize * UNICODE_CH_LEN;
+ }
+ else
+ varcharsize = var->varcharsize;
+
+ dest_character_len = PQGenEncodingMaxLen(client_encoding);
+
+ dest_length = var->arrsize * varcharsize *dest_character_len;
+ dest_offset = varcharsize *dest_character_len;
+
+ dest = ecpg_alloc(dest_length, lineno);
+ if (!dest)
+ return -1;
+
+ memset(dest, 0, dest_length);
+
+ src_offset_start = var->value;
+ dest_offset_start = dest;
+
+ /* Convert the string offset by offset */
+ for(i=0; i<arrsize; i++)
+ {
+ convert_ret = convert_func(utext_encoding,
+ encoding,
+ src_offset_start,
+ src_offset,
+ dest_offset_start,
+ dest_offset,
+ NULL);
+
+ if(convert_ret == sourceIllegal)
+ {
+ ecpg_raise(lineno, ECPG_ENCODING_ERROR,
+ ECPG_SQLSTATE_ECPG_ENCODING_ERROR, NULL);
+
+ if ( NULL != dest )
+ {
+ ecpg_free(dest);
+ dest = NULL;
+ }
+ return -1;
+ }
+
+ src_offset_start += src_offset;
+ dest_offset_start += dest_offset;
+ }
+
+ var->offset = dest_offset;
+ var->varcharsize = dest_offset;
+ var->value = dest;
+
+ return 0;
+}
+
+
+/*
+ * Translate the var->value with type uvarchar into a new value with ECPGCLIENT encoding
+ * and save it into ptr.
+ * The var->offset is changed to bytes unit.
+ * Success: return 0;
+ * Failure: return -1
+ */
+static int
+ecpg_do_uvachar_encoding(struct variable * var, int client_encoding,int lineno)
+{
+
+ int i;
+ int src_offset;
+ char *src_offset_start = NULL;
+ int dest_offset;
+ char *dest_offset_start = NULL;
+ char *dest;
+ int dest_length;
+ int final_len = 0;
+ int arrsize;
+ ConversionResult convert_ret;
+ int dest_character_len;
+
+ char *encoding = NULL;
+ int num;
+ int num_bytes = 0;
+ char *utext_encoding = get_utext_encoding();
+
+ arrsize = var->arrsize;
+
+ dest_character_len = PQGenEncodingMaxLen(client_encoding);
+ dest_offset = (var->varcharsize *dest_character_len +sizeof(int));
+ dest_length = dest_offset *arrsize;
+
+ dest = ecpg_alloc(dest_length, lineno);
+ if (!dest)
+ return -1;
+
+ memset(dest, 0, dest_length);
+
+ src_offset = var->offset;
+ src_offset_start = var->value;
+ dest_offset_start = dest;
+
+ encoding = PQGetEncodingName(client_encoding);
+ if(encoding == NULL)
+ {
+ ecpg_raise(lineno, ECPG_CLIENT_ENCODING_ERROR, ECPG_SQLSTATE_ECPG_INTERNAL_ERROR, NULL);
+ return false;
+ }
+
+ /* Convert the string offset by offset */
+ for(i=0; i<arrsize; i++)
+ {
+ /* The num is the acctual number of character in one element */
+ num = *((int*)src_offset_start);
+
+ /* 2 means the 2 bytes occupied by every character */
+ num_bytes = num * UNICODE_CH_LEN;
+
+ convert_ret = convert_func(utext_encoding,
+ encoding,
+ src_offset_start+sizeof(int),
+ num_bytes,
+ dest_offset_start+sizeof(int),
+ dest_offset,
+ &final_len);
+
+ if(convert_ret == sourceIllegal)
+ {
+ ecpg_raise(lineno, ECPG_ENCODING_ERROR,
+ ECPG_SQLSTATE_ECPG_ENCODING_ERROR, NULL);
+
+ if ( NULL != dest )
+ {
+ ecpg_free(dest);
+ dest = NULL;
+ }
+ return -1;
+ }
+
+ *((int*)dest_offset_start)=final_len;
+ src_offset_start += src_offset;
+ dest_offset_start += dest_offset;
+ }
+
+ var->offset = dest_offset;
+ var->varcharsize = dest_offset;
+ var->value = dest;
+
+ return 0;
+}
+
diff --git a/src/interfaces/ecpg/ecpglib/extern.h b/src/interfaces/ecpg/ecpglib/extern.h
index 91c7367..a9e501f 100644
--- a/src/interfaces/ecpg/ecpglib/extern.h
+++ b/src/interfaces/ecpg/ecpglib/extern.h
@@ -122,6 +122,8 @@ struct variable
long ind_varcharsize;
long ind_arrsize;
long ind_offset;
+ int alloc_inf;
+ int ind_alloc_inf;
struct variable *next;
};
@@ -219,5 +221,6 @@ void ecpg_set_native_sqlda(int, struct sqlda_struct **, const PGresult *, int,
/* implementation-defined internal errors of ecpg */
#define ECPG_SQLSTATE_ECPG_INTERNAL_ERROR "YE000"
#define ECPG_SQLSTATE_ECPG_OUT_OF_MEMORY "YE001"
+#define ECPG_SQLSTATE_ECPG_ENCODING_ERROR "YE002"
#endif /* _ECPG_LIB_EXTERN_H */
diff --git a/src/interfaces/ecpg/ecpglib/misc.c b/src/interfaces/ecpg/ecpglib/misc.c
index 2084d7f..dc4331e 100644
--- a/src/interfaces/ecpg/ecpglib/misc.c
+++ b/src/interfaces/ecpg/ecpglib/misc.c
@@ -369,6 +369,21 @@ ECPGset_noind_null(enum ECPGttype type, void *ptr)
case ECPGt_timestamp:
memset((char *) ptr, 0xff, sizeof(timestamp));
break;
+ case ECPGt_utext:
+#if defined(WIN32)
+ memset(ptr, 0x00, 2);
+#else
+ memset(ptr, 0x00, 4);
+#endif
+ break;
+ case ECPGt_uvarchar:
+#if defined(WIN32)
+ memset(((struct ECPGgeneric_varchar *) ptr)->arr, 0x00, 2);
+#else
+ memset(((struct ECPGgeneric_varchar *) ptr)->arr, 0x00, 4);
+#endif
+ ((struct ECPGgeneric_varchar *) ptr)->len = 0;
+ break;
default:
break;
}
@@ -442,6 +457,18 @@ ECPGis_noind_null(enum ECPGttype type, void *ptr)
case ECPGt_timestamp:
return _check(ptr, sizeof(timestamp));
break;
+ case ECPGt_utext:
+#if defined(WIN32)
+ if (*((short int *) ptr) == 0)
+#else
+ if (*((int *) ptr) == 0)
+#endif
+ return true;
+ break;
+ case ECPGt_uvarchar:
+ if (((struct ECPGgeneric_varchar *) ptr)->len == 0)
+ return true;
+ break;
default:
break;
}
diff --git a/src/interfaces/ecpg/ecpglib/typename.c b/src/interfaces/ecpg/ecpglib/typename.c
index 48587e4..aec3ac2 100644
--- a/src/interfaces/ecpg/ecpglib/typename.c
+++ b/src/interfaces/ecpg/ecpglib/typename.c
@@ -47,6 +47,10 @@ ecpg_type_name(enum ECPGttype typ)
return "bool";
case ECPGt_varchar:
return "varchar";
+ case ECPGt_utext:
+ return "utext";
+ case ECPGt_uvarchar:
+ return "uvarchar";
case ECPGt_char_variable:
return "char";
case ECPGt_decimal:
diff --git a/src/interfaces/ecpg/include/convertutf.h b/src/interfaces/ecpg/include/convertutf.h
new file mode 100644
index 0000000..7bddf40
--- /dev/null
+++ b/src/interfaces/ecpg/include/convertutf.h
@@ -0,0 +1,42 @@
+#ifndef ConvertUTF_INCLUDED
+#define ConvertUTF_INCLUDED
+#include <stddef.h>
+#include "c.h"
+
+/* define unicode character length by bytes */
+#if defined(WIN32)
+#define UNICODE_CH_LEN 2
+#else
+#define UNICODE_CH_LEN 4
+#endif
+
+typedef enum
+{
+ conversionOK, /* conversion successful */
+ sourceExhausted, /* partial character in source, but hit end */
+ targetExhausted, /* insuff. room in target for conversion */
+ sourceIllegal, /* source sequence is illegal/malformed */
+ conversionUnsupported /* Don't support this type convert */
+} ConversionResult;
+
+/* This is for C++ and does no harm in C */
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+bool utext_is_null(char *source);
+long get_utext_length(char *source, unsigned int maxlen);
+
+ConversionResult convert_func(char *from_code, char *to_code,
+ char *from, size_t from_len,
+ char *to, size_t to_len, int *real_len);
+
+int get_converted_length(char *from_code, char *to_code, char *from, size_t from_len);
+char *get_utext_encoding(void);
+#ifdef __cplusplus
+}
+#endif
+
+/* --------------------------------------------------------------------- */
+
+#endif /* ConvertUTF_INCLUDED */
diff --git a/src/interfaces/ecpg/include/ecpgerrno.h b/src/interfaces/ecpg/include/ecpgerrno.h
index c4bc526..6d13065 100644
--- a/src/interfaces/ecpg/include/ecpgerrno.h
+++ b/src/interfaces/ecpg/include/ecpgerrno.h
@@ -44,6 +44,8 @@
#define ECPG_UNKNOWN_DESCRIPTOR_ITEM -242
#define ECPG_VAR_NOT_NUMERIC -243
#define ECPG_VAR_NOT_CHAR -244
+#define ECPG_ENCODING_ERROR -250
+#define ECPG_CLIENT_ENCODING_ERROR -301
/* finally the backend error messages, they start at 400 */
#define ECPG_PGSQL -400
diff --git a/src/interfaces/ecpg/include/ecpglib.h b/src/interfaces/ecpg/include/ecpglib.h
index 536b750..d546c49 100644
--- a/src/interfaces/ecpg/include/ecpglib.h
+++ b/src/interfaces/ecpg/include/ecpglib.h
@@ -11,13 +11,24 @@
#include "ecpgtype.h"
#include "sqlca.h"
#include <string.h>
-
+#if defined(WIN32)
+#include <windows.h>
+#endif
#ifdef ENABLE_NLS
extern char *ecpg_gettext(const char *msgid) pg_attribute_format_arg(1);
#else
#define ecpg_gettext(x) (x)
#endif
+#if defined ECPG_ENABLE_UTEXT
+#if defined(WIN32)
+typedef WCHAR utext;
+#else
+#include <wchar.h>
+typedef wchar_t utext;
+#endif
+#endif
+
#ifndef __cplusplus
#ifndef bool
#define bool char
diff --git a/src/interfaces/ecpg/include/ecpgtype.h b/src/interfaces/ecpg/include/ecpgtype.h
index 38fb3b6..0316a84 100644
--- a/src/interfaces/ecpg/include/ecpgtype.h
+++ b/src/interfaces/ecpg/include/ecpgtype.h
@@ -63,7 +63,9 @@ enum ECPGttype
ECPGt_EORT, /* End of result types. */
ECPGt_NO_INDICATOR, /* no indicator */
ECPGt_string, /* trimmed (char *) type */
- ECPGt_sqlda /* C struct descriptor */
+ ECPGt_sqlda, /* C struct descriptor */
+ ECPGt_utext,
+ ECPGt_uvarchar
};
/* descriptor items */
@@ -88,7 +90,7 @@ enum ECPGdtype
ECPGd_cardinality
};
-#define IS_SIMPLE_TYPE(type) (((type) >= ECPGt_char && (type) <= ECPGt_interval) || ((type) == ECPGt_string))
+#define IS_SIMPLE_TYPE(type) (((type) >= ECPGt_char && (type) <= ECPGt_interval) || ((type) == ECPGt_string) || ((type) == ECPGt_utext) || ((type) == ECPGt_uvarchar))
/* we also have to handle different statement types */
enum ECPG_statement_type
diff --git a/src/interfaces/ecpg/preproc/ecpg.c b/src/interfaces/ecpg/preproc/ecpg.c
index 536185f..0efdaff 100644
--- a/src/interfaces/ecpg/preproc/ecpg.c
+++ b/src/interfaces/ecpg/preproc/ecpg.c
@@ -10,6 +10,7 @@
#include "getopt_long.h"
#include "extern.h"
+#include "mb/pg_wchar.h"
int ret_value = 0;
bool autocommit = false,
@@ -18,7 +19,8 @@ bool autocommit = false,
force_indicator = true,
questionmarks = false,
regression_mode = false,
- auto_prepare = false;
+ auto_prepare = false,
+ enable_utext = false;
char *output_filename;
@@ -54,6 +56,7 @@ help(const char *progname)
" \"no_indicator\", \"prepare\", \"questionmarks\"\n"));
printf(_(" --regression run in regression testing mode\n"));
printf(_(" -t turn on autocommit of transactions\n"));
+ printf(_(" --enable-utext enable unicode feature\n"));
printf(_(" -V, --version output version information, then exit\n"));
printf(_(" -?, --help show this help, then exit\n"));
printf(_("\nIf no output file is specified, the name is formed by adding .c to the\n"
@@ -112,11 +115,13 @@ add_preprocessor_define(char *define)
}
#define ECPG_GETOPT_LONG_REGRESSION 1
+#define ECPG_GETOPT_LONG_ENABLE_UTEXT 2
int
main(int argc, char *const argv[])
{
static struct option ecpg_options[] = {
{"regression", no_argument, NULL, ECPG_GETOPT_LONG_REGRESSION},
+ {"enable-utext", no_argument, NULL, ECPG_GETOPT_LONG_ENABLE_UTEXT},
{NULL, 0, NULL, 0}
};
@@ -237,6 +242,9 @@ main(int argc, char *const argv[])
fprintf(stderr, _("%s: parser debug support (-d) not available\n"),
progname);
#endif
+ case ECPG_GETOPT_LONG_ENABLE_UTEXT:
+ enable_utext = true;
+ break;
break;
default:
fprintf(stderr, _("Try \"%s --help\" for more information.\n"), argv[0]);
@@ -434,7 +442,11 @@ main(int argc, char *const argv[])
if (header_mode == false)
{
- fprintf(base_yyout, "/* These include files are added by the preprocessor */\n#include <ecpglib.h>\n#include <ecpgerrno.h>\n#include <sqlca.h>\n");
+ fprintf(base_yyout, "/* These include files are added by the preprocessor */\n");
+
+ if(enable_utext)
+ fprintf(base_yyout, "#define ECPG_ENABLE_UTEXT 1\n");
+ fprintf(base_yyout, "#include <ecpglib.h>\n#include <ecpgerrno.h>\n#include <sqlca.h>\n");
/* add some compatibility headers */
if (INFORMIX_MODE)
diff --git a/src/interfaces/ecpg/preproc/ecpg.header b/src/interfaces/ecpg/preproc/ecpg.header
index 8921bcb..304aea4 100644
--- a/src/interfaces/ecpg/preproc/ecpg.header
+++ b/src/interfaces/ecpg/preproc/ecpg.header
@@ -6,6 +6,7 @@
#include "extern.h"
#include "ecpg_config.h"
+#include "mb/pg_wchar.h"
#include <unistd.h>
/* Location tracking support --- simpler than bison's default */
@@ -46,6 +47,7 @@ static char pacounter_buffer[sizeof(int) * CHAR_BIT * 10 / 3]; /* a rough guess
static struct this_type actual_type[STRUCT_DEPTH];
static char *actual_startline[STRUCT_DEPTH];
static int varchar_counter = 1;
+static int uvarchar_counter = 1;
/* temporarily store struct members while creating the data structure */
struct ECPGstruct_member *struct_member_list[STRUCT_DEPTH] = { NULL };
@@ -137,7 +139,7 @@ cat2_str(char *str1, char *str2)
char * res_str = (char *)mm_alloc(strlen(str1) + strlen(str2) + 2);
strcpy(res_str, str1);
- if (strlen(str1) != 0 && strlen(str2) != 0)
+ if (strlen(str1) != 0 && strlen(str2) != 0 && strcmp(str1,"L") != 0)
strcat(res_str, " ");
strcat(res_str, str2);
free(str1);
@@ -288,7 +290,9 @@ adjust_outofscope_cursor_vars(struct cursor *cur)
else if ((ptr->variable->type->type != ECPGt_varchar
&& ptr->variable->type->type != ECPGt_char
&& ptr->variable->type->type != ECPGt_unsigned_char
- && ptr->variable->type->type != ECPGt_string)
+ && ptr->variable->type->type != ECPGt_string
+ && ptr->variable->type->type != ECPGt_utext
+ && ptr->variable->type->type != ECPGt_uvarchar)
&& atoi(ptr->variable->type->size) > 1)
{
newvar = new_variable(cat_str(4, mm_strdup("("),
@@ -304,7 +308,9 @@ adjust_outofscope_cursor_vars(struct cursor *cur)
else if ((ptr->variable->type->type == ECPGt_varchar
|| ptr->variable->type->type == ECPGt_char
|| ptr->variable->type->type == ECPGt_unsigned_char
- || ptr->variable->type->type == ECPGt_string)
+ || ptr->variable->type->type == ECPGt_string
+ || ptr->variable->type->type == ECPGt_utext
+ || ptr->variable->type->type == ECPGt_uvarchar)
&& atoi(ptr->variable->type->size) > 1)
{
newvar = new_variable(cat_str(4, mm_strdup("("),
@@ -315,7 +321,7 @@ adjust_outofscope_cursor_vars(struct cursor *cur)
ptr->variable->type->size,
ptr->variable->type->counter),
0);
- if (ptr->variable->type->type == ECPGt_varchar)
+ if (ptr->variable->type->type == ECPGt_varchar || ptr->variable->type->type == ECPGt_uvarchar)
var_ptr = true;
}
else if (ptr->variable->type->type == ECPGt_struct
@@ -565,6 +571,8 @@ add_typedef(char *name, char *dimension, char *length, enum ECPGttype type_enum,
type_enum != ECPGt_char &&
type_enum != ECPGt_unsigned_char &&
type_enum != ECPGt_string &&
+ type_enum != ECPGt_utext &&
+ type_enum != ECPGt_uvarchar &&
atoi(this->type->type_index) >= 0)
mmerror(PARSE_ERROR, ET_ERROR, "multidimensional arrays for simple data types are not supported");
diff --git a/src/interfaces/ecpg/preproc/ecpg.tokens b/src/interfaces/ecpg/preproc/ecpg.tokens
index 68ba925..2072382 100644
--- a/src/interfaces/ecpg/preproc/ecpg.tokens
+++ b/src/interfaces/ecpg/preproc/ecpg.tokens
@@ -21,7 +21,8 @@
S_DOTPOINT S_EQUAL S_EXTERN S_INC S_LSHIFT S_MEMPOINT
S_MEMBER S_MOD S_MUL S_NEQUAL S_OR S_REGISTER S_RSHIFT
S_STATIC S_SUB S_VOLATILE
- S_TYPEDEF
+ S_TYPEDEF UTEXT
%token CSTRING CVARIABLE CPP_LINE IP
%token DOLCONST ECONST NCONST UCONST UIDENT
+%token UVARCHAR
diff --git a/src/interfaces/ecpg/preproc/ecpg.trailer b/src/interfaces/ecpg/preproc/ecpg.trailer
index f60a620..4984aec 100644
--- a/src/interfaces/ecpg/preproc/ecpg.trailer
+++ b/src/interfaces/ecpg/preproc/ecpg.trailer
@@ -186,7 +186,7 @@ user_name: RoleId
type = argsinsert->variable->type->u.element->type;
/* handle varchars */
- if (type == ECPGt_varchar)
+ if (type == ECPGt_varchar || type == ECPGt_uvarchar)
$$ = make2_str(mm_strdup(argsinsert->variable->name), mm_strdup(".arr"));
else
$$ = mm_strdup(argsinsert->variable->name);
@@ -213,9 +213,11 @@ char_variable: cvariable
case ECPGt_char:
case ECPGt_unsigned_char:
case ECPGt_string:
+ case ECPGt_utext:
$$ = $1;
break;
case ECPGt_varchar:
+ case ECPGt_uvarchar:
$$ = make2_str($1, mm_strdup(".arr"));
break;
default:
@@ -550,6 +552,22 @@ var_type: simple_type
$$.type_index = mm_strdup("-1");
$$.type_sizeof = NULL;
}
+ else if (strcmp($1, "uvarchar") == 0 && enable_utext)
+ {
+ $$.type_enum = ECPGt_uvarchar;
+ $$.type_str = EMPTY;
+ $$.type_dimension = mm_strdup("-1");
+ $$.type_index = mm_strdup("-1");
+ $$.type_sizeof = NULL;
+ }
+ else if (strcmp($1, "utext") == 0 && enable_utext)
+ {
+ $$.type_enum = ECPGt_utext;
+ $$.type_str = EMPTY;
+ $$.type_dimension = mm_strdup("-1");
+ $$.type_index = mm_strdup("-1");
+ $$.type_sizeof = NULL;
+ }
else if (strcmp($1, "float") == 0)
{
$$.type_enum = ECPGt_float;
@@ -627,7 +645,7 @@ var_type: simple_type
/* this is for typedef'ed types */
struct typedefs *this = get_typedef($1);
- $$.type_str = (this->type->type_enum == ECPGt_varchar) ? EMPTY : mm_strdup(this->name);
+ $$.type_str = (this->type->type_enum == ECPGt_varchar || this->type->type_enum == ECPGt_uvarchar) ? EMPTY : mm_strdup(this->name);
$$.type_enum = this->type->type_enum;
$$.type_dimension = this->type->type_dimension;
$$.type_index = this->type->type_index;
@@ -838,7 +856,7 @@ variable_list: variable
{ $$ = $1; }
| variable_list ',' variable
{
- if (actual_type[struct_level].type_enum == ECPGt_varchar)
+ if (actual_type[struct_level].type_enum == ECPGt_varchar || actual_type[struct_level].type_enum == ECPGt_uvarchar)
$$ = cat_str(3, $1, mm_strdup(";"), $3);
else
$$ = cat_str(3, $1, mm_strdup(","), $3);
@@ -890,7 +908,52 @@ variable: opt_pointer ECPGColLabel opt_array_bounds opt_bit_field opt_initialize
$$ = cat_str(8, make2_str(mm_strdup(" struct varchar_"), vcn), mm_strdup(" { int len; char arr["), mm_strdup(length), mm_strdup("]; } "), mm_strdup($2), dim_str, $4, $5);
varchar_counter++;
break;
+ case ECPGt_uvarchar:
+ if (atoi(dimension) < 0)
+ type = ECPGmake_simple_type(actual_type[struct_level].type_enum, length, uvarchar_counter);
+ else
+ type = ECPGmake_array_type(ECPGmake_simple_type(actual_type[struct_level].type_enum, length, uvarchar_counter), dimension);
+ if (strcmp(dimension, "0") == 0 || abs(atoi(dimension)) == 1)
+ dim_str=mm_strdup("");
+ else
+ dim_str=cat_str(3, mm_strdup("["), mm_strdup(dimension), mm_strdup("]"));
+ /* cannot check for atoi <= 0 because a defined constant will yield 0 here as well */
+ if (atoi(length) < 0 || strcmp(length, "0") == 0)
+ mmerror(PARSE_ERROR, ET_ERROR, "pointers to uvarchar are not implemented");
+
+ /* make sure varchar struct name is unique by adding a unique counter to its definition */
+ vcn = (char *) mm_alloc(sizeof(int) * CHAR_BIT * 10 / 3);
+ sprintf(vcn, "%d", uvarchar_counter);
+ if (strcmp(dimension, "0") == 0)
+ $$ = cat_str(7, make2_str(mm_strdup(" struct uvarchar_"), vcn), mm_strdup(" { int len; utext arr["), mm_strdup(length), mm_strdup("]; } *"), mm_strdup($2), $4, $5);
+ else
+ $$ = cat_str(8, make2_str(mm_strdup(" struct uvarchar_"), vcn), mm_strdup(" { int len; utext arr["), mm_strdup(length), mm_strdup("]; } "), mm_strdup($2), dim_str, $4, $5);
+ uvarchar_counter++;
+ break;
+ case ECPGt_utext:
+ if (atoi(dimension) == -1)
+ {
+ int i = strlen($5);
+
+ if (atoi(length) == -1 && i > 0) /* char <var>[] = "string" */
+ {
+ /* if we have an initializer but no string size set, let's use the initializer's length */
+ free(length);
+ length = mm_alloc(i+sizeof("sizeof()"));
+ #if defined(WIN32)
+ sprintf(length, "sizeof(%s)/2", $5+2);
+ #else
+ sprintf(length, "sizeof(%s)/4", $5+2);
+ #endif
+ }
+ type = ECPGmake_simple_type(actual_type[struct_level].type_enum, length, 0);
+ }
+ else
+ type = ECPGmake_array_type(ECPGmake_simple_type(actual_type[struct_level].type_enum, length, 0), dimension);
+
+ $$ = cat_str(6, mm_strdup("utext"), $1, mm_strdup($2), $3.str, $4, $5);
+ break;
case ECPGt_char:
case ECPGt_unsigned_char:
case ECPGt_string:
@@ -1354,6 +1417,7 @@ ECPGVar: SQL_VAR
break;
case ECPGt_varchar:
+ case ECPGt_uvarchar:
if (atoi(dimension) == -1)
type = ECPGmake_simple_type($5.type_enum, length, 0);
else
@@ -1363,6 +1427,7 @@ ECPGVar: SQL_VAR
case ECPGt_char:
case ECPGt_unsigned_char:
case ECPGt_string:
+ case ECPGt_utext:
if (atoi(dimension) == -1)
type = ECPGmake_simple_type($5.type_enum, length, 0);
else
@@ -1504,6 +1569,8 @@ ECPGKeywords_vanames: SQL_BREAK { $$ = mm_strdup("break"); }
| SQL_SQLPRINT { $$ = mm_strdup("sqlprint"); }
| SQL_SQLWARNING { $$ = mm_strdup("sqlwarning"); }
| SQL_STOP { $$ = mm_strdup("stop"); }
+ | UVARCHAR { $$ = mm_strdup("uvarchar"); }
+ | UTEXT { $$ = mm_strdup("utext"); }
;
ECPGKeywords_rest: SQL_CONNECT { $$ = mm_strdup("connect"); }
@@ -1854,6 +1921,8 @@ c_anything: ecpg_ident { $$ = $1; }
| TO { $$ = mm_strdup("to"); }
| UNION { $$ = mm_strdup("union"); }
| VARCHAR { $$ = mm_strdup("varchar"); }
+ | UVARCHAR { $$ = mm_strdup("uvarchar"); }
+ | UTEXT { $$ = mm_strdup("utext"); }
| '[' { $$ = mm_strdup("["); }
| ']' { $$ = mm_strdup("]"); }
| '=' { $$ = mm_strdup("="); }
diff --git a/src/interfaces/ecpg/preproc/ecpg.type b/src/interfaces/ecpg/preproc/ecpg.type
index 9497b91..3a95f9f 100644
--- a/src/interfaces/ecpg/preproc/ecpg.type
+++ b/src/interfaces/ecpg/preproc/ecpg.type
@@ -128,6 +128,8 @@
%type <str> SCONST
%type <str> UCONST
%type <str> UIDENT
+%type <str> UTEXT
+%type <str> UVARCHAR
%type <struct_union> s_struct_union_symbol
diff --git a/src/interfaces/ecpg/preproc/extern.h b/src/interfaces/ecpg/preproc/extern.h
index 2c35426..d612977 100644
--- a/src/interfaces/ecpg/preproc/extern.h
+++ b/src/interfaces/ecpg/preproc/extern.h
@@ -25,7 +25,8 @@ extern bool autocommit,
force_indicator,
questionmarks,
regression_mode,
- auto_prepare;
+ auto_prepare,
+ enable_utext;
extern int braces_open,
ret_value,
struct_level,
diff --git a/src/interfaces/ecpg/preproc/pgc.l b/src/interfaces/ecpg/preproc/pgc.l
index fc450f3..1acea33 100644
--- a/src/interfaces/ecpg/preproc/pgc.l
+++ b/src/interfaces/ecpg/preproc/pgc.l
@@ -246,6 +246,8 @@ less_equals "<="
greater_equals ">="
less_greater "<>"
not_equals "!="
+utext [uU][tT][eE][xX][tT]
+uvarchar [uU][vV][aA][rR][cC][hH][aA][rR]
/*
* "self" is the set of chars that should be returned as single-character
@@ -770,6 +772,10 @@ cppline {space}*#([^i][A-Za-z]*|{if}|{ifdef}|{ifndef}|{import})((\/\*[^*/]*\*+
base_yylval.str = mm_strdup(yytext+1);
return CVARIABLE;
}
+<C>{utext} { return(UTEXT); }
+<C,C_SQL>{uvarchar} {
+ return(UVARCHAR);
+ }
<SQL>{identifier} {
const ScanKeyword *keyword;
diff --git a/src/interfaces/ecpg/preproc/type.c b/src/interfaces/ecpg/preproc/type.c
index 256a3c3..649fcb2 100644
--- a/src/interfaces/ecpg/preproc/type.c
+++ b/src/interfaces/ecpg/preproc/type.c
@@ -175,6 +175,12 @@ get_type(enum ECPGttype type)
break;
case ECPGt_varchar:
return "ECPGt_varchar";
+ case ECPGt_utext:
+ /* FEP Feature - Unicode */
+ return ("ECPGt_utext");
+ case ECPGt_uvarchar:
+ /* FEP Feature - Unicode */
+ return ("ECPGt_uvarchar");
case ECPGt_NO_INDICATOR: /* no indicator */
return "ECPGt_NO_INDICATOR";
break;
@@ -454,6 +460,50 @@ ECPGdump_a_simple(FILE *o, const char *name, enum ECPGttype type,
else
sprintf(offset, "sizeof(struct varchar)");
break;
+ case ECPGt_uvarchar:
+
+ /*
+ * we have to use the pointer except for arrays with given
+ * bounds
+ */
+ if (((atoi(arrsize) > 0) ||
+ (atoi(arrsize) == 0 && strcmp(arrsize, "0") != 0)) &&
+ size == NULL)
+ sprintf(variable, "(%s%s)", prefix ? prefix : "", name);
+ else
+ sprintf(variable, "&(%s%s)", prefix ? prefix : "", name);
+
+ /*
+ * If we created a varchar structure automatically, counter is
+ * greater than 0.
+ */
+ if (counter)
+ sprintf(offset, "sizeof(struct uvarchar_%d)", counter);
+ else
+ sprintf(offset, "sizeof(struct uvarchar)");
+ break;
+ case ECPGt_utext:
+ {
+ char *sizeof_name = "utext";
+
+ /*
+ * we have to use the pointer except for arrays with given
+ * bounds, ecpglib will distinguish between * and []
+ */
+ if ((atoi(varcharsize) > 1 ||
+ (atoi(arrsize) > 0) ||
+ (atoi(varcharsize) == 0 && strcmp(varcharsize, "0") != 0) ||
+ (atoi(arrsize) == 0 && strcmp(arrsize, "0") != 0))
+ && size == NULL)
+ {
+ sprintf(variable, "(%s%s)", prefix ? prefix : "", name);
+ }
+ else
+ sprintf(variable, "&(%s%s)", prefix ? prefix : "", name);
+
+ sprintf(offset, "(%s)*sizeof(%s)", strcmp(varcharsize, "0") == 0 ? "1" : varcharsize, sizeof_name);
+ break;
+ }
case ECPGt_char:
case ECPGt_unsigned_char:
case ECPGt_char_variable:
diff --git a/src/interfaces/ecpg/preproc/variable.c b/src/interfaces/ecpg/preproc/variable.c
index 39bf3b2..8f681c9 100644
--- a/src/interfaces/ecpg/preproc/variable.c
+++ b/src/interfaces/ecpg/preproc/variable.c
@@ -535,7 +535,7 @@ adjust_array(enum ECPGttype type_enum, char **dimension, char **length, char *ty
"multilevel pointers (more than 2 levels) are not supported; found %d levels", pointer_len),
pointer_len);
- if (pointer_len > 1 && type_enum != ECPGt_char && type_enum != ECPGt_unsigned_char && type_enum != ECPGt_string)
+ if (pointer_len > 1 && type_enum != ECPGt_char && type_enum != ECPGt_unsigned_char && type_enum != ECPGt_string && type_enum != ECPGt_utext)
mmfatal(PARSE_ERROR, "pointer to pointer is not supported for this data type");
if (pointer_len > 1 && (atoi(*length) >= 0 || atoi(*dimension) >= 0))
@@ -560,6 +560,7 @@ adjust_array(enum ECPGttype type_enum, char **dimension, char **length, char *ty
break;
case ECPGt_varchar:
+ case ECPGt_uvarchar:
/* pointer has to get dimension 0 */
if (pointer_len)
*dimension = mm_strdup("0");
@@ -573,6 +574,7 @@ adjust_array(enum ECPGttype type_enum, char **dimension, char **length, char *ty
break;
case ECPGt_char:
+ case ECPGt_utext:
case ECPGt_unsigned_char:
case ECPGt_string:
/* char ** */
diff --git a/src/interfaces/ecpg/test/ecpg_schedule b/src/interfaces/ecpg/test/ecpg_schedule
index cff4eeb..04d80a5 100644
--- a/src/interfaces/ecpg/test/ecpg_schedule
+++ b/src/interfaces/ecpg/test/ecpg_schedule
@@ -49,6 +49,8 @@ test: sql/quote
test: sql/show
test: sql/insupd
test: sql/parser
+test: sql/utext
+test: sql/uvarchar
test: thread/thread
test: thread/thread_implicit
test: thread/prep
diff --git a/src/interfaces/ecpg/test/ecpg_schedule_tcp b/src/interfaces/ecpg/test/ecpg_schedule_tcp
index 77481b5..fdd0e14 100644
--- a/src/interfaces/ecpg/test/ecpg_schedule_tcp
+++ b/src/interfaces/ecpg/test/ecpg_schedule_tcp
@@ -47,6 +47,8 @@ test: sql/quote
test: sql/show
test: sql/insupd
test: sql/parser
+test: sql/utext
+test: sql/uvarchar
test: thread/thread
test: thread/thread_implicit
test: thread/prep
diff --git a/src/interfaces/ecpg/test/expected/sql-utext.c b/src/interfaces/ecpg/test/expected/sql-utext.c
new file mode 100644
index 0000000..fdaec97
--- /dev/null
+++ b/src/interfaces/ecpg/test/expected/sql-utext.c
@@ -0,0 +1,4451 @@
+/* Processed by ecpg (regression mode) */
+/* These include files are added by the preprocessor */
+#define ECPG_ENABLE_UTEXT 1
+#include <ecpglib.h>
+#include <ecpgerrno.h>
+#include <sqlca.h>
+/* End of automatic include section */
+#define ECPGdebug(X,Y) ECPGdebug((X)+100,(Y))
+
+#line 1 "utext.pgc"
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <wchar.h>
+
+#line 1 "regression.h"
+
+
+
+
+
+
+#line 5 "utext.pgc"
+
+
+#define test(msg) printf("\n%s\n",msg)
+#define VAR_SIZE 20
+#define ARRAY_SIZE 4
+#define P_VAR_SIZE 22
+
+
+/* Following is UTF8 and UTF16/UTF32 characters mapping table */
+/*太𠮷𠜱平洋𠱓大西洋印度洋北冰洋
+utf16
+0x592A 0xD842 0xDFB7 0xD841 0xDF31 0x5E73 0x6D0B 0xD843
+0xDC53 0x5927 0x897F 0x6D0B 0x5370 0x5EA6 0x6D0B 0x5317
+0x51B0 0x6D0B 0x0000,0x0000
+
+utf32
+0x592A 0x20BB7 0x20731 0x5E73 0x6D0B 0x20C53 0x5927 0x897F
+0x6D0B 0x5370 0x5EA6 0x6D0B 0x5317 0x51B0 0x6D0B
+*/
+
+/*足球篮球羽毛球乒乓球橄榄球棒球冰球
+utf16
+0x8DB3,0x7403,0x7BEE,0x7403,0x7FBD,0x6BDB,0x7403,0x4E52,
+0x4E53,0x7403,0x6A44,0x6984,0x7403,0x68D2,0x7403,0x51B0,
+0x7403,0x0000,0x0000,0x0000
+
+utf32
+0x8DB3 0x7403 0x7BEE 0x7403 0x7FBD 0x6BDB 0x7403 0x4E52
+0x4E53 0x7403 0x6A44 0x6984 0x7403 0x68D2 0x7403 0x51B0
+0x7403
+*/
+
+/*世界杯每隔四年就会举行一次每次𠲖个球队
+utf16
+0x4E16 0x754C 0x676F 0x6BCF 0x9694 0x56DB 0x5E74 0x5C31
+0x4F1A 0x4E3E 0x884C 0x4E00 0x6B21 0x6BCF 0x6B21 0xD843
+0xDC96 0x4E2A 0x7403 0x961F
+
+utf32
+0x4E16 0x754C 0x676F 0x6BCF 0x9694 0x56DB 0x5E74 0x5C31
+0x4F1A 0x4E3E 0x884C 0x4E00 0x6B21 0x6BCF 0x6B21 0x20C96
+0x4E2A 0x7403 0x961F
+*/
+
+/* 亚洲欧洲非洲大洋洲北美洲南美洲南极洲没有北极洲
+0x4E9A,0x6D32,0x6B27,0x6D32,0x975E,0x6D32,0x5927,0x6D0B,
+0x6D32,0x5317,0x7F8E,0x6D32,0x5357,0x7F8E,0x6D32,0x5357,
+0x6781,0x6D32,0x6CA1,0x6709,0x5317,0x6781,0x6D32
+*/
+/* 太𠮷
+0x592A 0xD842 0xDFB7
+*/
+void init_var(void);
+void test_var_1(void);
+void test_var_2(void);
+void test_var_3(void);
+void test_var_4(void);
+void test_var_5(void);
+void test_var_6(void);
+void test_var_7(void);
+void test_var_8(void);
+void test_var_9(void);
+void test_var_10(void);
+void test_var_11(void);
+void test_var_12(void);
+void test_var_13(void);
+void test_var_14(void);
+void test_var_15(void);
+void test_var_16(void);
+void test_array_1(void);
+void test_array_2(void);
+void test_array_3(void);
+void test_array_4(void);
+void test_array_5(void);
+void test_array_6(void);
+void test_array_7(void);
+void test_array_8(void);
+void test_array_9(void);
+void test_array_10(void);
+void test_array_11(void);
+void test_array_12(void);
+void test_array_13(void);
+void test_array_14(void);
+void test_array_15(void);
+void test_array_16(void);
+void test_pvar_1(void);
+void test_pvar_2(void);
+void test_pvar_3(void);
+void test_pvar_4(void);
+void test_pvar_5(void);
+void test_pvar_6(void);
+void test_pvar_7(void);
+void test_pvar_8(void);
+void test_pvar_9(void);
+void test_pvar_10(void);
+void test_pvar_11(void);
+void test_pvar_12(void);
+void test_pvar_13(void);
+void test_pvar_14(void);
+void test_pvar_15(void);
+void test_pvar_16(void);
+void test_pvar_17(void);
+void test_pvar_18(void);
+void test_pvar_19(void);
+void test_pp_var_1(void);
+void test_pp_var_2(void);
+void test_pp_var_3(void);
+void test_desc_1(void);
+void test_all(void);
+
+void print_utext(utext *utext_var);
+void print_utext_str(utext *utext_var);
+void print_utext_ind(int utext_var_ind);
+void print_utext_size(utext *utext_var,int size);
+void print_array(void *array, int array_size, int var_size);
+void print_array_with_index(int index);
+int test_init(void);
+void test_finish(void);
+void init_table_value(void);
+
+/* exec sql begin declare section */
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 126 "utext.pgc"
+ int utext_var_size = 20 ;
+
+#line 127 "utext.pgc"
+ int utext_array_size = 4 ;
+
+#line 128 "utext.pgc"
+ int count = 0 ;
+
+#line 129 "utext.pgc"
+ int total_tuples = 0 ;
+
+#line 130 "utext.pgc"
+ int i ;
+
+#line 131 "utext.pgc"
+ char char_var [ 10 ] = { 0xF0 , 0x90 , 0x90 , 0xB7 } ;
+
+#line 133 "utext.pgc"
+ utext utext_var [ VAR_SIZE ] ;
+
+#line 134 "utext.pgc"
+ utext utext_array [ ARRAY_SIZE ] [ VAR_SIZE ] ;
+
+#line 135 "utext.pgc"
+ utext utext_input_var [ 20 ] = { 0x592a , 0xd842 , 0xdfb7 , 0x0000 } ;
+
+#line 136 "utext.pgc"
+ utext * p_utext_var = NULL ;
+
+#line 139 "utext.pgc"
+ int utext_var_ind ;
+
+#line 140 "utext.pgc"
+ int count_array [ 4 ] = { 1 , 2 , 3 , 4 } ;
+/* exec sql end declare section */
+#line 142 "utext.pgc"
+
+
+void print_utext(utext *utext_var)
+{
+ int i;
+ printf("======print utext_var content======\n");
+ for(i=0; i<VAR_SIZE; i++)
+ {
+ printf ("0x%08X ", utext_var[i]);
+ if(i>6 && (i+1)%8==0)
+ printf("\n");
+ }
+ printf("\n======End utext_var content======\n");
+}
+
+void print_utext_str(utext *utext_var)
+{
+ int i=0;
+ printf("======print utext_var_str content======\n");
+ if (utext_var==0)
+ {
+ printf("utext_var is NULL\n");
+ printf("\n======End utext_var_str content======\n");
+ return;
+ }
+ while(utext_var[i] != 0)
+ {
+ printf ("0x%08X ", utext_var[i]);
+ if(i>6 && (i+1)%8==0)
+ printf("\n");
+ i++;
+ if(i>100)
+ break;
+ }
+ printf("\n======End utext_var_str content======\n");
+}
+
+void print_utext_size(utext *utext_var,int size)
+{
+ int i;
+ printf("======print utext_var content======\n");
+ for(i=0; i<size; i++)
+ {
+ printf ("0x%08X ", utext_var[i]);
+ if(i>6 && (i+1)%8==0)
+ printf("\n");
+ }
+ printf("\n======End utext_var content======\n");
+}
+
+void print_utext_ind(int utext_var_ind)
+{
+ printf("utext_var_ind = %d\n",utext_var_ind);
+}
+void print_array(void *array, int array_size, int var_size)
+{
+ int i,j;
+
+ for(i=0; i<array_size; i++)
+ {
+ utext *utext_array = &((utext*)array)[i*var_size];
+
+ printf ("---->array[%d]:\n", i);
+
+ for(j=0; j<var_size; j++)
+ {
+ printf ("0x%08X ", utext_array[j]);
+ if(j>6 && (j+1)%8==0)
+ printf("\n");
+ }
+ printf("\n");
+ }
+
+ printf("\n");
+}
+
+int test_init()
+{
+ p_utext_var = (utext*)malloc(P_VAR_SIZE*sizeof(utext));
+ if(!p_utext_var)
+ {
+ printf("Error: failed allco memory for p_utext_var. \n");
+ return -1;
+ }
+
+ { ECPGconnect(__LINE__, 0, "ecpg1_regression" , NULL, NULL , NULL, 0); }
+#line 227 "utext.pgc"
+
+
+ { ECPGsetcommit(__LINE__, "on", NULL);}
+#line 229 "utext.pgc"
+
+ /* exec sql whenever sql_warning sqlprint ; */
+#line 230 "utext.pgc"
+
+ /* exec sql whenever sqlerror sqlprint ; */
+#line 231 "utext.pgc"
+
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "set client_encoding = 'UTF8'", ECPGt_EOIT, ECPGt_EORT);
+#line 233 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 233 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 233 "utext.pgc"
+
+
+ //initialization of test table
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "create table if not exists tb1 ( Item varchar , count integer )", ECPGt_EOIT, ECPGt_EORT);
+#line 236 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 236 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 236 "utext.pgc"
+
+
+ init_table_value();
+
+ return 0;
+}
+
+void test_finish()
+{
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "drop table tb1", ECPGt_EOIT, ECPGt_EORT);
+#line 245 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 245 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 245 "utext.pgc"
+
+ { ECPGdisconnect(__LINE__, "ALL");
+#line 246 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 246 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 246 "utext.pgc"
+
+}
+
+void init_table_value()
+{
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "truncate tb1", ECPGt_EOIT, ECPGt_EORT);
+#line 251 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 251 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 251 "utext.pgc"
+
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "insert into tb1 values ( '太𠮷𠜱平洋𠱓大西洋印度洋北冰洋' , 1 )", ECPGt_EOIT, ECPGt_EORT);
+#line 253 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 253 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 253 "utext.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "insert into tb1 values ( '足球篮球羽毛球乒乓球橄榄球棒球冰球' , 2 )", ECPGt_EOIT, ECPGt_EORT);
+#line 254 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 254 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 254 "utext.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "insert into tb1 values ( '世界杯每隔四年就会举行一次每次𠲖个球队' , 3 )", ECPGt_EOIT, ECPGt_EORT);
+#line 255 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 255 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 255 "utext.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "insert into tb1 values ( '亚洲欧洲非洲大洋洲北美洲南美洲南极洲没有北极洲' , 4 )", ECPGt_EOIT, ECPGt_EORT);
+#line 256 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 256 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 256 "utext.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "insert into tb1 ( count ) values ( 8 )", ECPGt_EOIT, ECPGt_EORT);
+#line 257 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 257 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 257 "utext.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "insert into tb1 ( count ) values ( 9 )", ECPGt_EOIT, ECPGt_EORT);
+#line 258 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 258 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 258 "utext.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "insert into tb1 ( count ) values ( 10 )", ECPGt_EOIT, ECPGt_EORT);
+#line 259 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 259 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 259 "utext.pgc"
+
+}
+
+void init_var()
+{
+ count = 0;
+ memset(utext_var,'a',sizeof(utext_var));
+ memset(utext_array,'a',sizeof(utext_array));
+ memset(p_utext_var,'a',P_VAR_SIZE*sizeof(utext));
+}
+
+//simple select into utext var
+void test_var_1()
+{
+ test("test_var_1: simple select into utext var");
+ init_var();
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "select Item from tb1 where count = 1", ECPGt_EOIT,
+ ECPGt_utext,(utext_var),(long)VAR_SIZE,(long)1,(VAR_SIZE)*sizeof(utext),
+ ECPGt_int,&(utext_var_ind),(long)1,(long)1,sizeof(int), ECPGt_EORT);
+#line 276 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 276 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 276 "utext.pgc"
+
+ print_utext(utext_var);
+ print_utext_ind(utext_var_ind);
+ init_var();
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "select Item from tb1 where count = 2", ECPGt_EOIT,
+ ECPGt_utext,(utext_var),(long)VAR_SIZE,(long)1,(VAR_SIZE)*sizeof(utext),
+ ECPGt_int,&(utext_var_ind),(long)1,(long)1,sizeof(int), ECPGt_EORT);
+#line 281 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 281 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 281 "utext.pgc"
+
+ print_utext(utext_var);
+ print_utext_ind(utext_var_ind);
+ init_var();
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "select Item from tb1 where count = 3", ECPGt_EOIT,
+ ECPGt_utext,(utext_var),(long)VAR_SIZE,(long)1,(VAR_SIZE)*sizeof(utext),
+ ECPGt_int,&(utext_var_ind),(long)1,(long)1,sizeof(int), ECPGt_EORT);
+#line 286 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 286 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 286 "utext.pgc"
+
+ print_utext(utext_var);
+ print_utext_ind(utext_var_ind);
+ init_var();
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "select Item from tb1 where count = 4", ECPGt_EOIT,
+ ECPGt_utext,(utext_var),(long)VAR_SIZE,(long)1,(VAR_SIZE)*sizeof(utext),
+ ECPGt_int,&(utext_var_ind),(long)1,(long)1,sizeof(int), ECPGt_EORT);
+#line 291 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 291 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 291 "utext.pgc"
+
+ print_utext(utext_var);
+ print_utext_ind(utext_var_ind);
+ init_var();
+}
+
+
+//simple select using utext var
+void test_var_2()
+{
+ test("test_var_2: simple select using utext var");
+ init_var();
+
+ count = 0;
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "select Item from tb1 where count = 1", ECPGt_EOIT,
+ ECPGt_utext,(utext_var),(long)VAR_SIZE,(long)1,(VAR_SIZE)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
+#line 305 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 305 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 305 "utext.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "select count from tb1 where Item = $1 ",
+ ECPGt_utext,(utext_var),(long)VAR_SIZE,(long)1,(VAR_SIZE)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT,
+ ECPGt_int,&(count),(long)1,(long)1,sizeof(int),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
+#line 306 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 306 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 306 "utext.pgc"
+
+ printf ("count=%d for '太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'\n", count);
+
+ count = 0;
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "select Item from tb1 where count = 3", ECPGt_EOIT,
+ ECPGt_utext,(utext_var),(long)VAR_SIZE,(long)1,(VAR_SIZE)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
+#line 310 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 310 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 310 "utext.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "select count from tb1 where Item = $1 ",
+ ECPGt_utext,(utext_var),(long)VAR_SIZE,(long)1,(VAR_SIZE)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT,
+ ECPGt_int,&(count),(long)1,(long)1,sizeof(int),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
+#line 311 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 311 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 311 "utext.pgc"
+
+ printf ("count=%d for '世界杯每隔四年就会举行一次每次𠲖个球队'\n", count);
+}
+
+//simple update using utext var
+void test_var_3()
+{
+ test("test_var_3: simple update using utext var");
+ init_var();
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "select Item from tb1 where count = 1", ECPGt_EOIT,
+ ECPGt_utext,(utext_var),(long)VAR_SIZE,(long)1,(VAR_SIZE)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
+#line 321 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 321 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 321 "utext.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "update tb1 set Item = $1 where count = 2",
+ ECPGt_utext,(utext_var),(long)VAR_SIZE,(long)1,(VAR_SIZE)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT);
+#line 322 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 322 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 322 "utext.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "update tb1 set Item = $1 where count = 3",
+ ECPGt_utext,(utext_var),(long)VAR_SIZE,(long)1,(VAR_SIZE)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT);
+#line 323 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 323 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 323 "utext.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "select count ( * ) from tb1 where Item = '太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'", ECPGt_EOIT,
+ ECPGt_int,&(count),(long)1,(long)1,sizeof(int),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
+#line 324 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 324 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 324 "utext.pgc"
+
+ printf ("found %d rows for Item='太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'\n", count);
+
+ init_table_value();
+}
+
+//simple delete using utext var
+void test_var_4()
+{
+ test("test_var_4 : simple delete using utext var");
+ init_var();
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "select Item from tb1 where count = 1", ECPGt_EOIT,
+ ECPGt_utext,(utext_var),(long)VAR_SIZE,(long)1,(VAR_SIZE)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
+#line 336 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 336 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 336 "utext.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "delete from tb1 where Item = $1 ",
+ ECPGt_utext,(utext_var),(long)VAR_SIZE,(long)1,(VAR_SIZE)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT);
+#line 337 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 337 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 337 "utext.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "select count ( * ) from tb1 where Item = '太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'", ECPGt_EOIT,
+ ECPGt_int,&(count),(long)1,(long)1,sizeof(int),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
+#line 338 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 338 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 338 "utext.pgc"
+
+ printf ("found %d rows for Item='太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'\n", count);
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "select Item from tb1 where count = 3", ECPGt_EOIT,
+ ECPGt_utext,(utext_var),(long)VAR_SIZE,(long)1,(VAR_SIZE)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
+#line 341 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 341 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 341 "utext.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "delete from tb1 where Item = $1 ",
+ ECPGt_utext,(utext_var),(long)VAR_SIZE,(long)1,(VAR_SIZE)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT);
+#line 342 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 342 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 342 "utext.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "select count ( * ) from tb1 where Item = '世界杯每隔四年就会举行一次每次𠲖个球队'", ECPGt_EOIT,
+ ECPGt_int,&(count),(long)1,(long)1,sizeof(int),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
+#line 343 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 343 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 343 "utext.pgc"
+
+ printf ("found %d rows for Item='世界杯每隔四年就会举行一次每次𠲖个球队'\n", count);
+
+ init_table_value();
+}
+
+//simple insert using utext var
+void test_var_5()
+{
+ test("test_var_5 : simple insert using utext");
+ init_var();
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "select Item from tb1 where count = 1", ECPGt_EOIT,
+ ECPGt_utext,(utext_var),(long)VAR_SIZE,(long)1,(VAR_SIZE)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
+#line 355 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 355 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 355 "utext.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "insert into tb1 values ( $1 , 11 )",
+ ECPGt_utext,(utext_var),(long)VAR_SIZE,(long)1,(VAR_SIZE)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT);
+#line 356 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 356 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 356 "utext.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "select count ( * ) from tb1 where Item = '太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'", ECPGt_EOIT,
+ ECPGt_int,&(count),(long)1,(long)1,sizeof(int),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
+#line 357 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 357 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 357 "utext.pgc"
+
+ printf ("found %d rows for Item='太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'\n", count);
+
+ init_var();
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "select Item from tb1 where count = 3", ECPGt_EOIT,
+ ECPGt_utext,(utext_var),(long)VAR_SIZE,(long)1,(VAR_SIZE)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
+#line 361 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 361 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 361 "utext.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "insert into tb1 values ( $1 , 13 )",
+ ECPGt_utext,(utext_var),(long)VAR_SIZE,(long)1,(VAR_SIZE)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT);
+#line 362 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 362 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 362 "utext.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "select count ( * ) from tb1 where Item = '世界杯每隔四年就会举行一次每次𠲖个球队'", ECPGt_EOIT,
+ ECPGt_int,&(count),(long)1,(long)1,sizeof(int),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
+#line 363 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 363 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 363 "utext.pgc"
+
+ printf ("found %d rows for Item='世界杯每隔四年就会举行一次每次𠲖个球队'\n", count);
+
+ init_table_value();
+}
+
+//prepared select into utext var
+void test_var_6()
+{
+ test("test_var_6 : prepared select into utext var");
+ init_var();
+
+ { ECPGprepare(__LINE__, NULL, 0, "stmt", "SELECT Item FROM tb1 WHERE Count=?");
+#line 375 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 375 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 375 "utext.pgc"
+
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_execute, "stmt",
+ ECPGt_const,"1",(long)1,(long)1,strlen("1"),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT,
+ ECPGt_utext,(utext_var),(long)VAR_SIZE,(long)1,(VAR_SIZE)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
+#line 377 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 377 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 377 "utext.pgc"
+
+ print_utext(utext_var);
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_execute, "stmt",
+ ECPGt_const,"3",(long)1,(long)1,strlen("3"),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT,
+ ECPGt_utext,(utext_var),(long)VAR_SIZE,(long)1,(VAR_SIZE)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
+#line 380 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 380 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 380 "utext.pgc"
+
+ print_utext(utext_var);
+
+ { ECPGdeallocate(__LINE__, 0, NULL, "stmt");
+#line 383 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 383 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 383 "utext.pgc"
+
+}
+
+//prepared select using utext var
+void test_var_7()
+{
+ test("test_var_7 : prepared select using utext var");
+ init_var();
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "select Item from tb1 where count = 3", ECPGt_EOIT,
+ ECPGt_utext,(utext_var),(long)VAR_SIZE,(long)1,(VAR_SIZE)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
+#line 392 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 392 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 392 "utext.pgc"
+
+
+ { ECPGprepare(__LINE__, NULL, 0, "stmt", "SELECT Count FROM tb1 WHERE Item=?");
+#line 394 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 394 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 394 "utext.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_execute, "stmt",
+ ECPGt_utext,(utext_var),(long)VAR_SIZE,(long)1,(VAR_SIZE)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT,
+ ECPGt_int,&(count),(long)1,(long)1,sizeof(int),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
+#line 395 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 395 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 395 "utext.pgc"
+
+
+ printf ("count=%d for Item='世界杯每隔四年就会举行一次每次𠲖个球队'\n", count);
+ { ECPGdeallocate(__LINE__, 0, NULL, "stmt");
+#line 398 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 398 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 398 "utext.pgc"
+
+}
+
+//prepared update using utext var
+void test_var_8()
+{
+ test("test_var_8 : prepared update using utext var");
+ init_var();
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "select Item from tb1 where count = 3", ECPGt_EOIT,
+ ECPGt_utext,(utext_var),(long)VAR_SIZE,(long)1,(VAR_SIZE)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
+#line 407 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 407 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 407 "utext.pgc"
+
+
+ { ECPGprepare(__LINE__, NULL, 0, "stmt", "UPDATE tb1 SET Item=? WHERE Count=?");
+#line 409 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 409 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 409 "utext.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_execute, "stmt",
+ ECPGt_utext,(utext_var),(long)VAR_SIZE,(long)1,(VAR_SIZE)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L,
+ ECPGt_const,"1",(long)1,(long)1,strlen("1"),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT);
+#line 410 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 410 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 410 "utext.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_execute, "stmt",
+ ECPGt_utext,(utext_var),(long)VAR_SIZE,(long)1,(VAR_SIZE)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L,
+ ECPGt_const,"2",(long)1,(long)1,strlen("2"),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT);
+#line 411 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 411 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 411 "utext.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "select count ( * ) from tb1 where Item = '世界杯每隔四年就会举行一次每次𠲖个球队'", ECPGt_EOIT,
+ ECPGt_int,&(count),(long)1,(long)1,sizeof(int),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
+#line 412 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 412 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 412 "utext.pgc"
+
+
+ printf ("found %d rows for Item='世界杯每隔四年就会举行一次每次𠲖个球队'\n", count);
+ { ECPGdeallocate(__LINE__, 0, NULL, "stmt");
+#line 415 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 415 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 415 "utext.pgc"
+
+
+ init_table_value();
+}
+
+//prepared delete using utext var
+void test_var_9()
+{
+ test("test_var_9 : prepared delete using utext var");
+ init_var();
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "select Item from tb1 where count = 3", ECPGt_EOIT,
+ ECPGt_utext,(utext_var),(long)VAR_SIZE,(long)1,(VAR_SIZE)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
+#line 426 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 426 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 426 "utext.pgc"
+
+
+ { ECPGprepare(__LINE__, NULL, 0, "stmt", "DELETE FROM tb1 WHERE Item=?");
+#line 428 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 428 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 428 "utext.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_execute, "stmt",
+ ECPGt_utext,(utext_var),(long)VAR_SIZE,(long)1,(VAR_SIZE)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT);
+#line 429 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 429 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 429 "utext.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "select count ( * ) from tb1 where Item = '世界杯每隔四年就会举行一次每次𠲖个球队'", ECPGt_EOIT,
+ ECPGt_int,&(count),(long)1,(long)1,sizeof(int),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
+#line 430 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 430 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 430 "utext.pgc"
+
+
+ printf ("found %d rows for Item='世界杯每隔四年就会举行一次每次𠲖个球队'\n", count);
+ { ECPGdeallocate(__LINE__, 0, NULL, "stmt");
+#line 433 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 433 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 433 "utext.pgc"
+
+
+ init_table_value();
+}
+
+//prepared insert using utext var
+void test_var_10()
+{
+ test("test_var_10 : prepared insert using utext var");
+ init_var();
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "select Item from tb1 where count = 3", ECPGt_EOIT,
+ ECPGt_utext,(utext_var),(long)VAR_SIZE,(long)1,(VAR_SIZE)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
+#line 444 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 444 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 444 "utext.pgc"
+
+
+ { ECPGprepare(__LINE__, NULL, 0, "stmt", "INSERT INTO tb1 values (?, 13)");
+#line 446 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 446 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 446 "utext.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_execute, "stmt",
+ ECPGt_utext,(utext_var),(long)VAR_SIZE,(long)1,(VAR_SIZE)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT);
+#line 447 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 447 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 447 "utext.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "select count ( * ) from tb1 where Item = '世界杯每隔四年就会举行一次每次𠲖个球队'", ECPGt_EOIT,
+ ECPGt_int,&(count),(long)1,(long)1,sizeof(int),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
+#line 448 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 448 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 448 "utext.pgc"
+
+
+ printf ("found %d rows for Item='世界杯每隔四年就会举行一次每次𠲖个球队'\n", count);
+ { ECPGdeallocate(__LINE__, 0, NULL, "stmt");
+#line 451 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 451 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 451 "utext.pgc"
+
+
+ init_table_value();
+}
+
+//Open cursor using utext var
+void test_var_11()
+{
+ test("test_var_11 : Open cursor using utext var");
+ init_var();
+
+ { ECPGsetcommit(__LINE__, "off", NULL);
+#line 462 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 462 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 462 "utext.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "select Item from tb1 where count = 3", ECPGt_EOIT,
+ ECPGt_utext,(utext_var),(long)VAR_SIZE,(long)1,(VAR_SIZE)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
+#line 463 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 463 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 463 "utext.pgc"
+
+
+ { ECPGprepare(__LINE__, NULL, 0, "stmt", "SELECT Count FROM tb1 WHERE Item=?");
+#line 465 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 465 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 465 "utext.pgc"
+
+ /* declare cursor_var_11 cursor for $1 */
+#line 466 "utext.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "declare cursor_var_11 cursor for $1",
+ ECPGt_char_variable,(ECPGprepared_statement(NULL, "stmt", __LINE__)),(long)1,(long)1,(1)*sizeof(char),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L,
+ ECPGt_utext,(utext_var),(long)VAR_SIZE,(long)1,(VAR_SIZE)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT);
+#line 467 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 467 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 467 "utext.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "fetch cursor_var_11", ECPGt_EOIT,
+ ECPGt_int,&(count),(long)1,(long)1,sizeof(int),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
+#line 468 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 468 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 468 "utext.pgc"
+
+ printf ("count=%d for Item='世界杯每隔四年就会举行一次每次𠲖个球队'\n", count);
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "close cursor_var_11", ECPGt_EOIT, ECPGt_EORT);
+#line 470 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 470 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 470 "utext.pgc"
+
+ { ECPGdeallocate(__LINE__, 0, NULL, "stmt");
+#line 471 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 471 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 471 "utext.pgc"
+
+ { ECPGsetcommit(__LINE__, "on", NULL);
+#line 472 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 472 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 472 "utext.pgc"
+
+}
+
+//Fecth cursor into utext var
+void test_var_12()
+{
+ test("test_var_12 : Fecth cursor into utext var");
+ init_var();
+
+ { ECPGsetcommit(__LINE__, "off", NULL);
+#line 481 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 481 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 481 "utext.pgc"
+
+ { ECPGprepare(__LINE__, NULL, 0, "stmt", "SELECT Item FROM tb1 WHERE Count=1");
+#line 482 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 482 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 482 "utext.pgc"
+
+ /* declare cursor_var_12 cursor for $1 */
+#line 483 "utext.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "declare cursor_var_12 cursor for $1",
+ ECPGt_char_variable,(ECPGprepared_statement(NULL, "stmt", __LINE__)),(long)1,(long)1,(1)*sizeof(char),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT);
+#line 484 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 484 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 484 "utext.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "fetch cursor_var_12", ECPGt_EOIT,
+ ECPGt_utext,(utext_var),(long)VAR_SIZE,(long)1,(VAR_SIZE)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
+#line 485 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 485 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 485 "utext.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "close cursor_var_12", ECPGt_EOIT, ECPGt_EORT);
+#line 486 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 486 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 486 "utext.pgc"
+
+
+ print_utext(utext_var);
+
+ { ECPGdeallocate(__LINE__, 0, NULL, "stmt");
+#line 490 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 490 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 490 "utext.pgc"
+
+ { ECPGsetcommit(__LINE__, "on", NULL);
+#line 491 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 491 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 491 "utext.pgc"
+
+}
+
+//simple insert utext var with L string inited
+void test_var_13()
+{
+/* exec sql begin declare section */
+
+
+#line 498 "utext.pgc"
+ utext utext_local_var [] = L"足球篮球羽毛球" ;
+/* exec sql end declare section */
+#line 499 "utext.pgc"
+
+ test("test_var_13 : simple insert utext var with L string inited");
+ init_var();
+
+ print_utext_str(utext_local_var);
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "insert into tb1 values ( $1 , 16 )",
+ ECPGt_utext,(utext_local_var),(long)sizeof(L"足球篮球羽毛球")/4,(long)1,(sizeof(L"足球篮球羽毛球")/4)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT);
+#line 505 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 505 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 505 "utext.pgc"
+
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "select Item from tb1 where count = 16", ECPGt_EOIT,
+ ECPGt_utext,(utext_var),(long)VAR_SIZE,(long)1,(VAR_SIZE)*sizeof(utext),
+ ECPGt_int,&(utext_var_ind),(long)1,(long)1,sizeof(int), ECPGt_EORT);
+#line 507 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 507 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 507 "utext.pgc"
+
+ print_utext(utext_var);
+ print_utext_ind(utext_var_ind);
+ init_var();
+ init_table_value();
+}
+
+//Open cursor using utext var directly in WHERE Clause
+void test_var_14()
+{
+/* exec sql begin declare section */
+
+
+#line 518 "utext.pgc"
+ utext utext_local_var [ 20 + 1 ] ;
+/* exec sql end declare section */
+#line 519 "utext.pgc"
+
+ memset(utext_local_var,'a',sizeof(utext_local_var));
+
+ test("test_var_14 : Open cursor using utext var directly in WHERE Clause");
+ init_var();
+
+ { ECPGsetcommit(__LINE__, "off", NULL);
+#line 525 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 525 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 525 "utext.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "select Item from tb1 where count = 3", ECPGt_EOIT,
+ ECPGt_utext,(utext_local_var),(long)20 + 1,(long)1,(20 + 1)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
+#line 526 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 526 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 526 "utext.pgc"
+
+ ECPGset_var( 0, ( utext_local_var ), __LINE__);\
+ /* declare cursor_var_14 cursor for select count from tb1 where Item = $1 */
+#line 527 "utext.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "declare cursor_var_14 cursor for select count from tb1 where Item = $1 ",
+ ECPGt_utext,(utext_local_var),(long)20 + 1,(long)1,(20 + 1)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT);
+#line 528 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 528 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 528 "utext.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "fetch cursor_var_14", ECPGt_EOIT,
+ ECPGt_int,&(count),(long)1,(long)1,sizeof(int),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
+#line 529 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 529 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 529 "utext.pgc"
+
+ printf ("count=%d for Item='世界杯每隔四年就会举行一次每次𠲖个球队'\n", count);
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "close cursor_var_14", ECPGt_EOIT, ECPGt_EORT);
+#line 532 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 532 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 532 "utext.pgc"
+
+
+ { ECPGsetcommit(__LINE__, "on", NULL);
+#line 534 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 534 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 534 "utext.pgc"
+
+}
+
+//Test utext_var working with NULL without indicator
+void test_var_15()
+{
+/* exec sql begin declare section */
+
+
+#line 541 "utext.pgc"
+ utext utext_local_var [ 20 + 1 ] ;
+/* exec sql end declare section */
+#line 542 "utext.pgc"
+
+ test("test_var_15 : Test utext_var working with NULL without indicator");
+
+ memset(utext_local_var,'a',sizeof(utext_local_var));
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "select Item from tb1 where count = 8", ECPGt_EOIT,
+ ECPGt_utext,(utext_local_var),(long)20 + 1,(long)1,(20 + 1)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
+#line 546 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 546 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 546 "utext.pgc"
+
+ print_utext(utext_local_var);
+
+ memset(utext_local_var,0x00,sizeof(utext_local_var));
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "insert into tb1 values ( $1 , 18 )",
+ ECPGt_utext,(utext_local_var),(long)20 + 1,(long)1,(20 + 1)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT);
+#line 550 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 550 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 550 "utext.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "insert into tb1 values ( $1 , 19 )",
+ ECPGt_utext,(utext_local_var),(long)20 + 1,(long)1,(20 + 1)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT);
+#line 551 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 551 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 551 "utext.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "insert into tb1 values ( $1 , 20 )",
+ ECPGt_utext,(utext_local_var),(long)20 + 1,(long)1,(20 + 1)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT);
+#line 552 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 552 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 552 "utext.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "select count ( * ) from tb1 where Item is null", ECPGt_EOIT,
+ ECPGt_int,&(count),(long)1,(long)1,sizeof(int),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
+#line 553 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 553 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 553 "utext.pgc"
+
+ printf ("found %d rows for Item being NULL\n", count);
+
+ init_table_value();
+}
+
+//utext_var working with NULL with indicator
+void test_var_16()
+{
+/* exec sql begin declare section */
+
+
+
+#line 563 "utext.pgc"
+ utext utext_local_var [ 20 + 1 ] ;
+
+#line 564 "utext.pgc"
+ int utext_var_ind = - 1 ;
+/* exec sql end declare section */
+#line 565 "utext.pgc"
+
+ test("test_var_16 : Test utext_var working with NULL with indicator");
+
+ memset(utext_local_var,'a',sizeof(utext_local_var));
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "select Item from tb1 where count = 8", ECPGt_EOIT,
+ ECPGt_utext,(utext_local_var),(long)20 + 1,(long)1,(20 + 1)*sizeof(utext),
+ ECPGt_int,&(utext_var_ind),(long)1,(long)1,sizeof(int), ECPGt_EORT);
+#line 569 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 569 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 569 "utext.pgc"
+
+ print_utext(utext_local_var);
+ print_utext_ind(utext_var_ind);
+
+ memset(utext_local_var,0x00,sizeof(utext_local_var));
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "insert into tb1 values ( $1 , 18 )",
+ ECPGt_utext,(utext_local_var),(long)20 + 1,(long)1,(20 + 1)*sizeof(utext),
+ ECPGt_int,&(utext_var_ind),(long)1,(long)1,sizeof(int), ECPGt_EOIT, ECPGt_EORT);
+#line 574 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 574 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 574 "utext.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "insert into tb1 values ( $1 , 19 )",
+ ECPGt_utext,(utext_local_var),(long)20 + 1,(long)1,(20 + 1)*sizeof(utext),
+ ECPGt_int,&(utext_var_ind),(long)1,(long)1,sizeof(int), ECPGt_EOIT, ECPGt_EORT);
+#line 575 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 575 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 575 "utext.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "insert into tb1 values ( $1 , 20 )",
+ ECPGt_utext,(utext_local_var),(long)20 + 1,(long)1,(20 + 1)*sizeof(utext),
+ ECPGt_int,&(utext_var_ind),(long)1,(long)1,sizeof(int), ECPGt_EOIT, ECPGt_EORT);
+#line 576 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 576 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 576 "utext.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "select count ( * ) from tb1 where Item is null", ECPGt_EOIT,
+ ECPGt_int,&(count),(long)1,(long)1,sizeof(int),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
+#line 577 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 577 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 577 "utext.pgc"
+
+ printf ("found %d rows for Item being NULL\n", count);
+
+ init_table_value();
+}
+
+
+//simple select into utext array
+void test_array_1()
+{
+ test("test_array_1 : simple select into utext array ");
+ init_var();
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "select Item from tb1 where count <= 3", ECPGt_EOIT,
+ ECPGt_utext,(utext_array),(long)VAR_SIZE,(long)ARRAY_SIZE,(VAR_SIZE)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
+#line 590 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 590 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 590 "utext.pgc"
+
+
+ print_array(utext_array,ARRAY_SIZE,VAR_SIZE);
+ init_var();
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "select Item from tb1 where count = 1", ECPGt_EOIT,
+ ECPGt_utext,(utext_array[0]),(long)VAR_SIZE,(long)1,(VAR_SIZE)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
+#line 595 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 595 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 595 "utext.pgc"
+
+ print_array(utext_array,ARRAY_SIZE,VAR_SIZE);
+ init_var();
+}
+
+//simple select using utext array
+void test_array_2()
+{
+ test("test_array_2 : simple select using array");
+ init_var();
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "select Item from tb1 where count <= 3", ECPGt_EOIT,
+ ECPGt_utext,(utext_array),(long)VAR_SIZE,(long)ARRAY_SIZE,(VAR_SIZE)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
+#line 606 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 606 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 606 "utext.pgc"
+
+
+ count = 0;
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "select count from tb1 where Item = $1 ",
+ ECPGt_utext,(utext_array[0]),(long)VAR_SIZE,(long)1,(VAR_SIZE)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT,
+ ECPGt_int,&(count),(long)1,(long)1,sizeof(int),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
+#line 609 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 609 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 609 "utext.pgc"
+
+ printf ("count=%d for '太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'\n", count);
+
+ count = 0;
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "select count from tb1 where Item = $1 ",
+ ECPGt_utext,(utext_array[2]),(long)VAR_SIZE,(long)1,(VAR_SIZE)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT,
+ ECPGt_int,&(count),(long)1,(long)1,sizeof(int),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
+#line 613 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 613 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 613 "utext.pgc"
+
+ printf ("count=%d for '世界杯每隔四年就会举行一次每次𠲖个球队'\n", count);
+}
+
+//simple update using utext array
+void test_array_3()
+{
+ test("test_array_3 : simple update using utext array");
+ init_var();
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "select Item from tb1 where count <= 3", ECPGt_EOIT,
+ ECPGt_utext,(utext_array),(long)VAR_SIZE,(long)ARRAY_SIZE,(VAR_SIZE)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
+#line 623 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 623 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 623 "utext.pgc"
+
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "update tb1 set Item = $1 where count = 1",
+ ECPGt_utext,(utext_array[2]),(long)VAR_SIZE,(long)1,(VAR_SIZE)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT);
+#line 625 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 625 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 625 "utext.pgc"
+
+
+ count = 0;
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "select count ( * ) from tb1 where Item = '太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'", ECPGt_EOIT,
+ ECPGt_int,&(count),(long)1,(long)1,sizeof(int),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
+#line 628 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 628 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 628 "utext.pgc"
+
+ printf ("find %d rows for Item='太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'\n", count);
+
+ count = 0;
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "select count ( * ) from tb1 where Item = '世界杯每隔四年就会举行一次每次𠲖个球队'", ECPGt_EOIT,
+ ECPGt_int,&(count),(long)1,(long)1,sizeof(int),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
+#line 632 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 632 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 632 "utext.pgc"
+
+ printf ("find %d rows for Item='世界杯每隔四年就会举行一次每次𠲖个球队'\n", count);
+
+ init_table_value();
+}
+
+//simple delete using utext array
+void test_array_4()
+{
+ test("test_array_4 : simple delete using utext array");
+ init_var();
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "select Item from tb1 where count <= 3", ECPGt_EOIT,
+ ECPGt_utext,(utext_array),(long)VAR_SIZE,(long)ARRAY_SIZE,(VAR_SIZE)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
+#line 644 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 644 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 644 "utext.pgc"
+
+
+ count = 100;
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "delete from tb1 where Item = $1 ",
+ ECPGt_utext,(utext_array[0]),(long)VAR_SIZE,(long)1,(VAR_SIZE)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT);
+#line 647 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 647 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 647 "utext.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "select count ( * ) from tb1 where Item = '太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'", ECPGt_EOIT,
+ ECPGt_int,&(count),(long)1,(long)1,sizeof(int),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
+#line 648 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 648 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 648 "utext.pgc"
+
+ printf ("found %d rows for Item='太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'\n", count);
+
+ count = 100;
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "delete from tb1 where Item = $1 ",
+ ECPGt_utext,(utext_array[2]),(long)VAR_SIZE,(long)1,(VAR_SIZE)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT);
+#line 652 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 652 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 652 "utext.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "select count ( * ) from tb1 where Item = '世界杯每隔四年就会举行一次每次𠲖个球队'", ECPGt_EOIT,
+ ECPGt_int,&(count),(long)1,(long)1,sizeof(int),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
+#line 653 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 653 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 653 "utext.pgc"
+
+ printf ("found %d rows for Item='世界杯每隔四年就会举行一次每次𠲖个球队'\n", count);
+
+ init_table_value();
+}
+
+//simple insert using utext array
+void test_array_5()
+{
+ test("test_array_5 : simple insert using utext array");
+ init_var();
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "select Item from tb1 where count <= 3", ECPGt_EOIT,
+ ECPGt_utext,(utext_array),(long)VAR_SIZE,(long)ARRAY_SIZE,(VAR_SIZE)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
+#line 665 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 665 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 665 "utext.pgc"
+
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "insert into tb1 values ( $1 , 11 )",
+ ECPGt_utext,(utext_array[0]),(long)VAR_SIZE,(long)1,(VAR_SIZE)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT);
+#line 667 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 667 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 667 "utext.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "select count ( * ) from tb1 where Item = '太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'", ECPGt_EOIT,
+ ECPGt_int,&(count),(long)1,(long)1,sizeof(int),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
+#line 668 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 668 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 668 "utext.pgc"
+
+ printf ("found %d rows for Item='太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'\n", count);
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "insert into tb1 values ( $1 , 13 )",
+ ECPGt_utext,(utext_array[2]),(long)VAR_SIZE,(long)1,(VAR_SIZE)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT);
+#line 671 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 671 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 671 "utext.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "select count ( * ) from tb1 where Item = '世界杯每隔四年就会举行一次每次𠲖个球队'", ECPGt_EOIT,
+ ECPGt_int,&(count),(long)1,(long)1,sizeof(int),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
+#line 672 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 672 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 672 "utext.pgc"
+
+ printf ("found %d rows for Item='世界杯每隔四年就会举行一次每次𠲖个球队'\n", count);
+
+ init_table_value();
+}
+
+//prepared select into utext array
+void test_array_6()
+{
+ test("test_array_6 : prepared select into utext array");
+ init_var();
+
+ { ECPGprepare(__LINE__, NULL, 0, "stmt", "SELECT Item FROM tb1 WHERE Count<=?");
+#line 684 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 684 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 684 "utext.pgc"
+
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_execute, "stmt",
+ ECPGt_const,"4",(long)1,(long)1,strlen("4"),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT,
+ ECPGt_utext,(utext_array),(long)VAR_SIZE,(long)ARRAY_SIZE,(VAR_SIZE)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
+#line 686 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 686 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 686 "utext.pgc"
+
+
+ print_array(utext_array,ARRAY_SIZE,VAR_SIZE);
+
+ { ECPGdeallocate(__LINE__, 0, NULL, "stmt");
+#line 690 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 690 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 690 "utext.pgc"
+
+}
+
+//prepared select using utext array
+void test_array_7()
+{
+ test("test_array_7 : prepared select using utext array");
+ init_var();
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "select Item from tb1 where count <= 3", ECPGt_EOIT,
+ ECPGt_utext,(utext_array),(long)VAR_SIZE,(long)ARRAY_SIZE,(VAR_SIZE)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
+#line 698 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 698 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 698 "utext.pgc"
+
+
+ count = 0;
+ { ECPGprepare(__LINE__, NULL, 0, "stmt", "SELECT Count FROM tb1 WHERE Item=?");
+#line 701 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 701 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 701 "utext.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_execute, "stmt",
+ ECPGt_utext,(utext_array[0]),(long)VAR_SIZE,(long)1,(VAR_SIZE)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT,
+ ECPGt_int,&(count),(long)1,(long)1,sizeof(int),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
+#line 702 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 702 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 702 "utext.pgc"
+
+
+ printf ("count=%d for Item='世界杯每隔四年就会举行一次每次𠲖个球队'\n", count);
+ { ECPGdeallocate(__LINE__, 0, NULL, "stmt");
+#line 705 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 705 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 705 "utext.pgc"
+
+}
+
+//prepared update using utext array
+void test_array_8()
+{
+ test("test_array_8 : prepared update using utext array");
+ init_var();
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "select Item from tb1 where count <= 3", ECPGt_EOIT,
+ ECPGt_utext,(utext_array),(long)VAR_SIZE,(long)ARRAY_SIZE,(VAR_SIZE)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
+#line 713 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 713 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 713 "utext.pgc"
+
+
+ { ECPGprepare(__LINE__, NULL, 0, "stmt", "UPDATE tb1 SET Item=? WHERE Count=?");
+#line 715 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 715 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 715 "utext.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_execute, "stmt",
+ ECPGt_utext,(utext_array[0]),(long)VAR_SIZE,(long)1,(VAR_SIZE)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L,
+ ECPGt_const,"2",(long)1,(long)1,strlen("2"),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT);
+#line 716 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 716 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 716 "utext.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_execute, "stmt",
+ ECPGt_utext,(utext_array[0]),(long)VAR_SIZE,(long)1,(VAR_SIZE)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L,
+ ECPGt_const,"3",(long)1,(long)1,strlen("3"),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT);
+#line 717 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 717 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 717 "utext.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "select count ( * ) from tb1 where Item = '太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'", ECPGt_EOIT,
+ ECPGt_int,&(count),(long)1,(long)1,sizeof(int),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
+#line 718 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 718 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 718 "utext.pgc"
+
+
+ printf ("found %d rows for Item='太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'\n", count);
+ { ECPGdeallocate(__LINE__, 0, NULL, "stmt");
+#line 721 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 721 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 721 "utext.pgc"
+
+
+ init_table_value();
+}
+
+//prepared delete using utext array
+void test_array_9()
+{
+ test("test_array_9 : prepared delete using utext array");
+ init_var();
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "select Item from tb1 where count <= 3", ECPGt_EOIT,
+ ECPGt_utext,(utext_array),(long)VAR_SIZE,(long)ARRAY_SIZE,(VAR_SIZE)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
+#line 731 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 731 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 731 "utext.pgc"
+
+
+ count = 0;
+ { ECPGprepare(__LINE__, NULL, 0, "stmt", "DELETE FROM tb1 WHERE Item=?");
+#line 734 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 734 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 734 "utext.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_execute, "stmt",
+ ECPGt_utext,(utext_array[0]),(long)VAR_SIZE,(long)1,(VAR_SIZE)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT);
+#line 735 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 735 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 735 "utext.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "select count ( * ) from tb1 where Item = '太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'", ECPGt_EOIT,
+ ECPGt_int,&(count),(long)1,(long)1,sizeof(int),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
+#line 736 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 736 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 736 "utext.pgc"
+
+
+ printf ("found %d rows for Item='太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'\n", count);
+ { ECPGdeallocate(__LINE__, 0, NULL, "stmt");
+#line 739 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 739 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 739 "utext.pgc"
+
+
+ init_table_value();
+}
+
+//prepared insert using utext array
+void test_array_10()
+{
+ test("test_array_10 : prepared insert using utext array");
+ init_var();
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "select Item from tb1 where count <= 3", ECPGt_EOIT,
+ ECPGt_utext,(utext_array),(long)VAR_SIZE,(long)ARRAY_SIZE,(VAR_SIZE)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
+#line 749 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 749 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 749 "utext.pgc"
+
+
+ { ECPGprepare(__LINE__, NULL, 0, "stmt", "INSERT INTO tb1 values (?, ?)");
+#line 751 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 751 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 751 "utext.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_execute, "stmt",
+ ECPGt_utext,(utext_array[2]),(long)VAR_SIZE,(long)1,(VAR_SIZE)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L,
+ ECPGt_const,"13",(long)2,(long)1,strlen("13"),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT);
+#line 752 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 752 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 752 "utext.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_execute, "stmt",
+ ECPGt_utext,(utext_array[2]),(long)VAR_SIZE,(long)1,(VAR_SIZE)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L,
+ ECPGt_const,"15",(long)2,(long)1,strlen("15"),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT);
+#line 753 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 753 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 753 "utext.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "select count ( * ) from tb1 where Item = '世界杯每隔四年就会举行一次每次𠲖个球队'", ECPGt_EOIT,
+ ECPGt_int,&(count),(long)1,(long)1,sizeof(int),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
+#line 754 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 754 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 754 "utext.pgc"
+
+
+ printf ("found %d rows for Item='世界杯每隔四年就会举行一次每次𠲖个球队'\n", count);
+ { ECPGdeallocate(__LINE__, 0, NULL, "stmt");
+#line 757 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 757 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 757 "utext.pgc"
+
+
+ init_table_value();
+}
+
+//Open cursor using utext array
+void test_array_11()
+{
+ test("test_array_11 : Open cursor using utext array");
+ init_var();
+
+ { ECPGsetcommit(__LINE__, "off", NULL);
+#line 768 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 768 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 768 "utext.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "select Item from tb1 where count <= 3", ECPGt_EOIT,
+ ECPGt_utext,(utext_array),(long)VAR_SIZE,(long)ARRAY_SIZE,(VAR_SIZE)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
+#line 769 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 769 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 769 "utext.pgc"
+
+
+ { ECPGprepare(__LINE__, NULL, 0, "stmt", "SELECT Count FROM tb1 WHERE Item=?");
+#line 771 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 771 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 771 "utext.pgc"
+
+ /* declare cursor_array_11 cursor for $1 */
+#line 772 "utext.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "declare cursor_array_11 cursor for $1",
+ ECPGt_char_variable,(ECPGprepared_statement(NULL, "stmt", __LINE__)),(long)1,(long)1,(1)*sizeof(char),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L,
+ ECPGt_utext,(utext_array[2]),(long)VAR_SIZE,(long)1,(VAR_SIZE)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT);
+#line 773 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 773 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 773 "utext.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "fetch cursor_array_11", ECPGt_EOIT,
+ ECPGt_int,&(count),(long)1,(long)1,sizeof(int),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
+#line 774 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 774 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 774 "utext.pgc"
+
+ printf ("count=%d for Item='世界杯每隔四年就会举行一次每次𠲖个球队'\n", count);
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "close cursor_array_11", ECPGt_EOIT, ECPGt_EORT);
+#line 776 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 776 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 776 "utext.pgc"
+
+ { ECPGdeallocate(__LINE__, 0, NULL, "stmt");
+#line 777 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 777 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 777 "utext.pgc"
+
+ { ECPGsetcommit(__LINE__, "on", NULL);
+#line 778 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 778 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 778 "utext.pgc"
+
+}
+
+//Fecth cursor into utext array
+void test_array_12()
+{
+ test("test_array_12 : Fecth cursor into utext array");
+ init_var();
+
+ { ECPGsetcommit(__LINE__, "off", NULL);
+#line 787 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 787 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 787 "utext.pgc"
+
+ { ECPGprepare(__LINE__, NULL, 0, "stmt", "SELECT Item FROM tb1 WHERE Count<=3");
+#line 788 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 788 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 788 "utext.pgc"
+
+ /* declare cursor_array_12 cursor for $1 */
+#line 789 "utext.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "declare cursor_array_12 cursor for $1",
+ ECPGt_char_variable,(ECPGprepared_statement(NULL, "stmt", __LINE__)),(long)1,(long)1,(1)*sizeof(char),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT);
+#line 790 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 790 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 790 "utext.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "fetch cursor_array_12", ECPGt_EOIT,
+ ECPGt_utext,(utext_array[0]),(long)VAR_SIZE,(long)1,(VAR_SIZE)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
+#line 791 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 791 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 791 "utext.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "fetch cursor_array_12", ECPGt_EOIT,
+ ECPGt_utext,(utext_array[1]),(long)VAR_SIZE,(long)1,(VAR_SIZE)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
+#line 792 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 792 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 792 "utext.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "fetch cursor_array_12", ECPGt_EOIT,
+ ECPGt_utext,(utext_array[2]),(long)VAR_SIZE,(long)1,(VAR_SIZE)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
+#line 793 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 793 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 793 "utext.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "close cursor_array_12", ECPGt_EOIT, ECPGt_EORT);
+#line 794 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 794 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 794 "utext.pgc"
+
+
+ print_array(utext_array,ARRAY_SIZE,VAR_SIZE);
+
+ { ECPGdeallocate(__LINE__, 0, NULL, "stmt");
+#line 798 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 798 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 798 "utext.pgc"
+
+ { ECPGsetcommit(__LINE__, "on", NULL);
+#line 799 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 799 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 799 "utext.pgc"
+
+}
+
+//Insert array with L string inited
+void test_array_13()
+{
+/* exec sql begin declare section */
+
+
+#line 806 "utext.pgc"
+ utext utext_array13 [ 4 ] [ VAR_SIZE ] = { L"太𠮷𠜱平洋𠱓大西洋印度洋北冰洋" , L"足球篮球羽毛球乒乓球橄榄球棒球冰球" , L"世界杯每隔四年就会举行一次" } ;
+/* exec sql end declare section */
+#line 807 "utext.pgc"
+
+
+ test("test_array_13 : Insert array with L string inited");
+ init_var();
+
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "insert into tb1 values ( $1 , 20 )",
+ ECPGt_utext,(utext_array13[0]),(long)VAR_SIZE,(long)1,(VAR_SIZE)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT);
+#line 813 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 813 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 813 "utext.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "insert into tb1 values ( $1 , 21 )",
+ ECPGt_utext,(utext_array13[1]),(long)VAR_SIZE,(long)1,(VAR_SIZE)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT);
+#line 814 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 814 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 814 "utext.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "insert into tb1 values ( $1 , 22 )",
+ ECPGt_utext,(utext_array13[2]),(long)VAR_SIZE,(long)1,(VAR_SIZE)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT);
+#line 815 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 815 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 815 "utext.pgc"
+
+
+ init_var();
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "select Item from tb1 where count <= 22 and count >= 20", ECPGt_EOIT,
+ ECPGt_utext,(utext_array),(long)VAR_SIZE,(long)ARRAY_SIZE,(VAR_SIZE)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
+#line 818 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 818 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 818 "utext.pgc"
+
+ print_array(utext_array,3,VAR_SIZE);
+ init_table_value();
+}
+
+//Open cursor using utext array directly in WHERE Clause
+void test_array_14()
+{
+/* exec sql begin declare section */
+
+
+#line 827 "utext.pgc"
+ utext utext_local_array [ 4 ] [ 20 + 1 ] ;
+/* exec sql end declare section */
+#line 828 "utext.pgc"
+
+
+ test("test_array_14 : Open cursor using utext array directly in WHERE Clause");
+ memset(utext_local_array,'a',sizeof(utext_local_array));
+
+ { ECPGsetcommit(__LINE__, "off", NULL);
+#line 833 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 833 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 833 "utext.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "select Item from tb1 where count <= 3", ECPGt_EOIT,
+ ECPGt_utext,(utext_local_array),(long)20 + 1,(long)4,(20 + 1)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
+#line 834 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 834 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 834 "utext.pgc"
+
+
+ ECPGset_var( 1, ( utext_local_array[2] ), __LINE__);\
+ /* declare cursor_array_14 cursor for select count from tb1 where Item = $1 */
+#line 836 "utext.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "declare cursor_array_14 cursor for select count from tb1 where Item = $1 ",
+ ECPGt_utext,(utext_local_array[2]),(long)20 + 1,(long)1,(20 + 1)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT);
+#line 837 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 837 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 837 "utext.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "fetch cursor_array_14", ECPGt_EOIT,
+ ECPGt_int,&(count),(long)1,(long)1,sizeof(int),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
+#line 838 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 838 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 838 "utext.pgc"
+
+ printf ("count=%d for Item='世界杯每隔四年就会举行一次每次𠲖个球队'\n", count);
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "close cursor_array_14", ECPGt_EOIT, ECPGt_EORT);
+#line 840 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 840 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 840 "utext.pgc"
+
+
+ { ECPGsetcommit(__LINE__, "on", NULL);
+#line 842 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 842 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 842 "utext.pgc"
+
+}
+
+
+//utext array working with NULL without using indicator
+void test_array_15()
+{
+/* exec sql begin declare section */
+
+
+#line 850 "utext.pgc"
+ utext utext_local_array [ 3 ] [ 20 ] ;
+/* exec sql end declare section */
+#line 851 "utext.pgc"
+
+ test("test_array_15 : Test utext array working with NULL without using indicator");
+ memset(utext_local_array,'a',sizeof(utext_local_array));
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "select Item from tb1 where count >= 8 and count <= 10", ECPGt_EOIT,
+ ECPGt_utext,(utext_local_array),(long)20,(long)3,(20)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
+#line 855 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 855 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 855 "utext.pgc"
+
+
+ print_array((void**)utext_local_array,3,20);
+
+ memset(utext_local_array,0x00,sizeof(utext_local_array));
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "insert into tb1 values ( $1 , 18 )",
+ ECPGt_utext,(utext_local_array[0]),(long)20,(long)1,(20)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT);
+#line 860 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 860 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 860 "utext.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "insert into tb1 values ( $1 , 19 )",
+ ECPGt_utext,(utext_local_array[1]),(long)20,(long)1,(20)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT);
+#line 861 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 861 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 861 "utext.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "insert into tb1 values ( $1 , 20 )",
+ ECPGt_utext,(utext_local_array[2]),(long)20,(long)1,(20)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT);
+#line 862 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 862 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 862 "utext.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "select count ( * ) from tb1 where Item is null", ECPGt_EOIT,
+ ECPGt_int,&(count),(long)1,(long)1,sizeof(int),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
+#line 863 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 863 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 863 "utext.pgc"
+
+ printf ("found %d rows for Item being NULL\n", count);
+
+ init_table_value();
+}
+
+//utext array working with NULL using indicator
+void test_array_16()
+{
+/* exec sql begin declare section */
+
+
+
+#line 873 "utext.pgc"
+ utext utext_local_array [ 3 ] [ 20 ] ;
+
+#line 874 "utext.pgc"
+ int utext_array_ind [ 3 ] ;
+/* exec sql end declare section */
+#line 875 "utext.pgc"
+
+ test("test_array_16 : Test utext array working with NULL using indicator");
+ memset(utext_local_array,'a',sizeof(utext_local_array));
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "select Item from tb1 where count >= 8 and count <= 10", ECPGt_EOIT,
+ ECPGt_utext,(utext_local_array),(long)20,(long)3,(20)*sizeof(utext),
+ ECPGt_int,(utext_array_ind),(long)1,(long)3,sizeof(int), ECPGt_EORT);
+#line 879 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 879 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 879 "utext.pgc"
+
+
+ print_array((void**)utext_local_array,3,20);
+ print_utext_ind(utext_array_ind[0]);
+ print_utext_ind(utext_array_ind[1]);
+ print_utext_ind(utext_array_ind[2]);
+
+ memset(utext_local_array,0x00,sizeof(utext_local_array));
+ utext_array_ind[0]=-1;
+ utext_array_ind[1]=-1;
+ utext_array_ind[2]=-1;
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "insert into tb1 values ( $1 , 18 )",
+ ECPGt_utext,(utext_local_array[0]),(long)20,(long)1,(20)*sizeof(utext),
+ ECPGt_int,&(utext_array_ind[0]),(long)1,(long)1,sizeof(int), ECPGt_EOIT, ECPGt_EORT);
+#line 890 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 890 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 890 "utext.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "insert into tb1 values ( $1 , 19 )",
+ ECPGt_utext,(utext_local_array[1]),(long)20,(long)1,(20)*sizeof(utext),
+ ECPGt_int,&(utext_array_ind[1]),(long)1,(long)1,sizeof(int), ECPGt_EOIT, ECPGt_EORT);
+#line 891 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 891 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 891 "utext.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "insert into tb1 values ( $1 , 20 )",
+ ECPGt_utext,(utext_local_array[2]),(long)20,(long)1,(20)*sizeof(utext),
+ ECPGt_int,&(utext_array_ind[2]),(long)1,(long)1,sizeof(int), ECPGt_EOIT, ECPGt_EORT);
+#line 892 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 892 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 892 "utext.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "select count ( * ) from tb1 where Item is null", ECPGt_EOIT,
+ ECPGt_int,&(count),(long)1,(long)1,sizeof(int),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
+#line 893 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 893 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 893 "utext.pgc"
+
+ printf ("found %d rows for Item being NULL\n", count);
+
+ init_table_value();
+}
+
+
+//simple select into utext pointer
+void test_pvar_1()
+{
+ test("test_pvar_1 : simple select into utext pointer");
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "select Item from tb1 where count = 1", ECPGt_EOIT,
+ ECPGt_utext,&(p_utext_var),(long)0,(long)1,(1)*sizeof(utext),
+ ECPGt_int,&(utext_var_ind),(long)1,(long)1,sizeof(int), ECPGt_EORT);
+#line 904 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 904 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 904 "utext.pgc"
+
+ print_utext(p_utext_var);
+ print_utext_ind(utext_var_ind);
+ init_var();
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "select Item from tb1 where count = 2", ECPGt_EOIT,
+ ECPGt_utext,&(p_utext_var),(long)0,(long)1,(1)*sizeof(utext),
+ ECPGt_int,&(utext_var_ind),(long)1,(long)1,sizeof(int), ECPGt_EORT);
+#line 909 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 909 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 909 "utext.pgc"
+
+ print_utext(p_utext_var);
+ print_utext_ind(utext_var_ind);
+ init_var();
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "select Item from tb1 where count = 3", ECPGt_EOIT,
+ ECPGt_utext,&(p_utext_var),(long)0,(long)1,(1)*sizeof(utext),
+ ECPGt_int,&(utext_var_ind),(long)1,(long)1,sizeof(int), ECPGt_EORT);
+#line 914 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 914 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 914 "utext.pgc"
+
+ print_utext(p_utext_var);
+ print_utext_ind(utext_var_ind);
+ init_var();
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "select Item from tb1 where count = 4", ECPGt_EOIT,
+ ECPGt_utext,&(p_utext_var),(long)0,(long)1,(1)*sizeof(utext),
+ ECPGt_int,&(utext_var_ind),(long)1,(long)1,sizeof(int), ECPGt_EORT);
+#line 919 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 919 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 919 "utext.pgc"
+
+ print_utext(p_utext_var);
+ print_utext_ind(utext_var_ind);
+ init_var();
+
+ init_table_value();
+}
+
+
+//simple select using utext pointer
+void test_pvar_2()
+{
+ test("test_pvar_2 : simple select using utext pointer");
+ init_var();
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "select Item from tb1 where count = 1", ECPGt_EOIT,
+ ECPGt_utext,&(p_utext_var),(long)0,(long)1,(1)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
+#line 934 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 934 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 934 "utext.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "select count from tb1 where Item = $1 ",
+ ECPGt_utext,&(p_utext_var),(long)0,(long)1,(1)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT,
+ ECPGt_int,&(count),(long)1,(long)1,sizeof(int),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
+#line 935 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 935 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 935 "utext.pgc"
+
+ printf ("count=%d for '太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'\n", count);
+
+ init_var();
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "select Item from tb1 where count = 3", ECPGt_EOIT,
+ ECPGt_utext,&(p_utext_var),(long)0,(long)1,(1)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
+#line 939 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 939 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 939 "utext.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "select count from tb1 where Item = $1 ",
+ ECPGt_utext,&(p_utext_var),(long)0,(long)1,(1)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT,
+ ECPGt_int,&(count),(long)1,(long)1,sizeof(int),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
+#line 940 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 940 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 940 "utext.pgc"
+
+ printf ("count=%d for '世界杯每隔四年就会举行一次每次𠲖个球队'\n", count);
+}
+
+
+//simple update using utext pointer
+void test_pvar_3()
+{
+ test("test_pvar_3 : simple update using utext pointer");
+ init_var();
+
+ count = 0;
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "select Item from tb1 where count = 1", ECPGt_EOIT,
+ ECPGt_utext,&(p_utext_var),(long)0,(long)1,(1)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
+#line 952 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 952 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 952 "utext.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "update tb1 set Item = $1 where count = 2",
+ ECPGt_utext,&(p_utext_var),(long)0,(long)1,(1)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT);
+#line 953 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 953 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 953 "utext.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "update tb1 set Item = $1 where count = 3",
+ ECPGt_utext,&(p_utext_var),(long)0,(long)1,(1)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT);
+#line 954 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 954 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 954 "utext.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "select count ( * ) from tb1 where Item = '太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'", ECPGt_EOIT,
+ ECPGt_int,&(count),(long)1,(long)1,sizeof(int),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
+#line 955 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 955 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 955 "utext.pgc"
+
+ printf ("found %d rows for Item='太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'\n", count);
+
+ init_table_value();
+}
+
+//simple delete using utext pointer
+void test_pvar_4()
+{
+ test("test_pvar_4 : simple delete using utext pointer");
+ init_var();
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "select Item from tb1 where count = 1", ECPGt_EOIT,
+ ECPGt_utext,&(p_utext_var),(long)0,(long)1,(1)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
+#line 967 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 967 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 967 "utext.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "delete from tb1 where Item = $1 ",
+ ECPGt_utext,&(p_utext_var),(long)0,(long)1,(1)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT);
+#line 968 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 968 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 968 "utext.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "select count ( * ) from tb1 where Item = '太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'", ECPGt_EOIT,
+ ECPGt_int,&(count),(long)1,(long)1,sizeof(int),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
+#line 969 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 969 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 969 "utext.pgc"
+
+ printf ("found %d rows for Item='太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'\n", count);
+
+ init_var();
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "select Item from tb1 where count = 3", ECPGt_EOIT,
+ ECPGt_utext,&(p_utext_var),(long)0,(long)1,(1)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
+#line 973 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 973 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 973 "utext.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "delete from tb1 where Item = $1 ",
+ ECPGt_utext,&(p_utext_var),(long)0,(long)1,(1)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT);
+#line 974 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 974 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 974 "utext.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "select count ( * ) from tb1 where Item = '世界杯每隔四年就会举行一次每次𠲖个球队'", ECPGt_EOIT,
+ ECPGt_int,&(count),(long)1,(long)1,sizeof(int),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
+#line 975 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 975 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 975 "utext.pgc"
+
+ printf ("found %d rows for Item='世界杯每隔四年就会举行一次每次𠲖个球队'\n", count);
+
+ init_table_value();
+}
+
+//simple insert using utext pointer
+void test_pvar_5()
+{
+ test("test_pvar_5 : simple insert using utext pointer");
+ init_var();
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "select Item from tb1 where count = 3", ECPGt_EOIT,
+ ECPGt_utext,&(p_utext_var),(long)0,(long)1,(1)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
+#line 987 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 987 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 987 "utext.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "insert into tb1 values ( $1 , 13 )",
+ ECPGt_utext,&(p_utext_var),(long)0,(long)1,(1)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT);
+#line 988 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 988 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 988 "utext.pgc"
+
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "select count ( * ) from tb1 where Item = '世界杯每隔四年就会举行一次每次𠲖个球队'", ECPGt_EOIT,
+ ECPGt_int,&(count),(long)1,(long)1,sizeof(int),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
+#line 990 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 990 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 990 "utext.pgc"
+
+ printf ("found %d rows for Item='世界杯每隔四年就会举行一次每次𠲖个球队'\n", count);
+
+ init_table_value();
+}
+
+//prepared select into utext pointer
+void test_pvar_6()
+{
+ test("test_pvar_6 : prepared select into utext pointer");
+ init_var();
+
+ { ECPGprepare(__LINE__, NULL, 0, "stmt", "SELECT Item FROM tb1 WHERE Count=?");
+#line 1002 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 1002 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 1002 "utext.pgc"
+
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_execute, "stmt",
+ ECPGt_const,"1",(long)1,(long)1,strlen("1"),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT,
+ ECPGt_utext,&(p_utext_var),(long)0,(long)1,(1)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
+#line 1004 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 1004 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 1004 "utext.pgc"
+
+ print_utext(p_utext_var);
+
+ init_var();
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_execute, "stmt",
+ ECPGt_const,"3",(long)1,(long)1,strlen("3"),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT,
+ ECPGt_utext,&(p_utext_var),(long)0,(long)1,(1)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
+#line 1008 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 1008 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 1008 "utext.pgc"
+
+ print_utext(p_utext_var);
+ init_table_value();
+
+ { ECPGdeallocate(__LINE__, 0, NULL, "stmt");
+#line 1012 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 1012 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 1012 "utext.pgc"
+
+
+}
+
+//prepared select using utext pointer
+void test_pvar_7()
+{
+ test("test_pvar_7 : prepared select using utext pointer");
+ init_var();
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "select Item from tb1 where count = 3", ECPGt_EOIT,
+ ECPGt_utext,&(p_utext_var),(long)0,(long)1,(1)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
+#line 1022 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 1022 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 1022 "utext.pgc"
+
+
+ { ECPGprepare(__LINE__, NULL, 0, "stmt", "SELECT Count FROM tb1 WHERE Item=?");
+#line 1024 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 1024 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 1024 "utext.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_execute, "stmt",
+ ECPGt_utext,&(p_utext_var),(long)0,(long)1,(1)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT,
+ ECPGt_int,&(count),(long)1,(long)1,sizeof(int),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
+#line 1025 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 1025 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 1025 "utext.pgc"
+
+
+ printf ("count=%d for Item='世界杯每隔四年就会举行一次每次𠲖个球队'\n", count);
+ { ECPGdeallocate(__LINE__, 0, NULL, "stmt");
+#line 1028 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 1028 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 1028 "utext.pgc"
+
+}
+
+//prepared update using utext pointer
+void test_pvar_8()
+{
+ test("test_pvar_8 : prepared update using utext pointer");
+ init_var();
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "select Item from tb1 where count = 3", ECPGt_EOIT,
+ ECPGt_utext,&(p_utext_var),(long)0,(long)1,(1)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
+#line 1037 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 1037 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 1037 "utext.pgc"
+
+
+ { ECPGprepare(__LINE__, NULL, 0, "stmt", "UPDATE tb1 SET Item=? WHERE Count=?");
+#line 1039 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 1039 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 1039 "utext.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_execute, "stmt",
+ ECPGt_utext,&(p_utext_var),(long)0,(long)1,(1)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L,
+ ECPGt_const,"1",(long)1,(long)1,strlen("1"),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT);
+#line 1040 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 1040 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 1040 "utext.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_execute, "stmt",
+ ECPGt_utext,&(p_utext_var),(long)0,(long)1,(1)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L,
+ ECPGt_const,"2",(long)1,(long)1,strlen("2"),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT);
+#line 1041 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 1041 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 1041 "utext.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "select count ( * ) from tb1 where Item = '世界杯每隔四年就会举行一次每次𠲖个球队'", ECPGt_EOIT,
+ ECPGt_int,&(count),(long)1,(long)1,sizeof(int),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
+#line 1042 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 1042 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 1042 "utext.pgc"
+
+
+ printf ("found %d rows for Item='世界杯每隔四年就会举行一次每次𠲖个球队'\n", count);
+ { ECPGdeallocate(__LINE__, 0, NULL, "stmt");
+#line 1045 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 1045 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 1045 "utext.pgc"
+
+
+ init_table_value();
+}
+
+//prepared delete using utext pointer
+void test_pvar_9()
+{
+ test("test_pvar_9 : prepared delete using utext pointer");
+ init_var();
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "select Item from tb1 where count = 3", ECPGt_EOIT,
+ ECPGt_utext,&(p_utext_var),(long)0,(long)1,(1)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
+#line 1056 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 1056 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 1056 "utext.pgc"
+
+
+ { ECPGprepare(__LINE__, NULL, 0, "stmt", "DELETE FROM tb1 WHERE Item=?");
+#line 1058 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 1058 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 1058 "utext.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_execute, "stmt",
+ ECPGt_utext,&(p_utext_var),(long)0,(long)1,(1)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT);
+#line 1059 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 1059 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 1059 "utext.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "select count ( * ) from tb1 where Item = '世界杯每隔四年就会举行一次每次𠲖个球队'", ECPGt_EOIT,
+ ECPGt_int,&(count),(long)1,(long)1,sizeof(int),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
+#line 1060 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 1060 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 1060 "utext.pgc"
+
+
+ printf ("found %d rows for Item='世界杯每隔四年就会举行一次每次𠲖个球队'\n", count);
+ { ECPGdeallocate(__LINE__, 0, NULL, "stmt");
+#line 1063 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 1063 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 1063 "utext.pgc"
+
+
+ init_table_value();
+}
+
+//prepared insert using utext pointer
+void test_pvar_10()
+{
+ test("test_pvar_10 : prepared insert using utext pointer");
+ init_var();
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "select Item from tb1 where count = 3", ECPGt_EOIT,
+ ECPGt_utext,&(p_utext_var),(long)0,(long)1,(1)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
+#line 1074 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 1074 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 1074 "utext.pgc"
+
+
+ { ECPGprepare(__LINE__, NULL, 0, "stmt", "INSERT INTO tb1 values (?, 13)");
+#line 1076 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 1076 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 1076 "utext.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_execute, "stmt",
+ ECPGt_utext,&(p_utext_var),(long)0,(long)1,(1)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT);
+#line 1077 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 1077 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 1077 "utext.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "select count ( * ) from tb1 where Item = '世界杯每隔四年就会举行一次每次𠲖个球队'", ECPGt_EOIT,
+ ECPGt_int,&(count),(long)1,(long)1,sizeof(int),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
+#line 1078 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 1078 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 1078 "utext.pgc"
+
+
+ printf ("found %d rows for Item='世界杯每隔四年就会举行一次每次𠲖个球队'\n", count);
+ { ECPGdeallocate(__LINE__, 0, NULL, "stmt");
+#line 1081 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 1081 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 1081 "utext.pgc"
+
+
+ init_table_value();
+}
+
+//Open cursor using utext pointer
+void test_pvar_11()
+{
+ test("test_pvar_11 : Open cursor using utext pointer");
+ init_var();
+
+ { ECPGsetcommit(__LINE__, "off", NULL);
+#line 1092 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 1092 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 1092 "utext.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "select Item from tb1 where count = 3", ECPGt_EOIT,
+ ECPGt_utext,&(p_utext_var),(long)0,(long)1,(1)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
+#line 1093 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 1093 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 1093 "utext.pgc"
+
+
+ { ECPGprepare(__LINE__, NULL, 0, "stmt", "SELECT Count FROM tb1 WHERE Item=?");
+#line 1095 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 1095 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 1095 "utext.pgc"
+
+ /* declare cursor_pvar_11 cursor for $1 */
+#line 1096 "utext.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "declare cursor_pvar_11 cursor for $1",
+ ECPGt_char_variable,(ECPGprepared_statement(NULL, "stmt", __LINE__)),(long)1,(long)1,(1)*sizeof(char),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L,
+ ECPGt_utext,&(p_utext_var),(long)0,(long)1,(1)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT);
+#line 1097 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 1097 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 1097 "utext.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "fetch cursor_pvar_11", ECPGt_EOIT,
+ ECPGt_int,&(count),(long)1,(long)1,sizeof(int),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
+#line 1098 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 1098 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 1098 "utext.pgc"
+
+ printf ("count=%d for Item='世界杯每隔四年就会举行一次每次𠲖个球队'\n", count);
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "close cursor_pvar_11", ECPGt_EOIT, ECPGt_EORT);
+#line 1100 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 1100 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 1100 "utext.pgc"
+
+ { ECPGdeallocate(__LINE__, 0, NULL, "stmt");
+#line 1101 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 1101 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 1101 "utext.pgc"
+
+ { ECPGsetcommit(__LINE__, "on", NULL);
+#line 1102 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 1102 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 1102 "utext.pgc"
+
+}
+
+//Fecth cursor into utext pointer
+void test_pvar_12()
+{
+ test("test_pvar_12 : Fecth cursor into utext pointer");
+ init_var();
+
+ { ECPGsetcommit(__LINE__, "off", NULL);
+#line 1111 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 1111 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 1111 "utext.pgc"
+
+ { ECPGprepare(__LINE__, NULL, 0, "stmt", "SELECT Item FROM tb1 WHERE Count=1");
+#line 1112 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 1112 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 1112 "utext.pgc"
+
+ /* declare cursor_pvar_12 cursor for $1 */
+#line 1113 "utext.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "declare cursor_pvar_12 cursor for $1",
+ ECPGt_char_variable,(ECPGprepared_statement(NULL, "stmt", __LINE__)),(long)1,(long)1,(1)*sizeof(char),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT);
+#line 1114 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 1114 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 1114 "utext.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "fetch cursor_pvar_12", ECPGt_EOIT,
+ ECPGt_utext,&(p_utext_var),(long)0,(long)1,(1)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
+#line 1115 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 1115 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 1115 "utext.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "close cursor_pvar_12", ECPGt_EOIT, ECPGt_EORT);
+#line 1116 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 1116 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 1116 "utext.pgc"
+
+
+ print_utext(p_utext_var);
+
+ { ECPGdeallocate(__LINE__, 0, NULL, "stmt");
+#line 1120 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 1120 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 1120 "utext.pgc"
+
+ { ECPGsetcommit(__LINE__, "on", NULL);
+#line 1121 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 1121 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 1121 "utext.pgc"
+
+}
+
+//simple insert utext pointer with L string inited
+void test_pvar_13()
+{
+/* exec sql begin declare section */
+
+
+#line 1128 "utext.pgc"
+ utext * utext_local_pvar = L"太𠮷𠜱平洋𠱓大西洋印度洋北冰洋" ;
+/* exec sql end declare section */
+#line 1129 "utext.pgc"
+
+ test("test_pvar_13 : simple insert utext pointer with L string inited");
+ init_var();
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "insert into tb1 values ( $1 , 16 )",
+ ECPGt_utext,&(utext_local_pvar),(long)0,(long)1,(1)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT);
+#line 1133 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 1133 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 1133 "utext.pgc"
+
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "select Item from tb1 where count = 16", ECPGt_EOIT,
+ ECPGt_utext,(utext_var),(long)VAR_SIZE,(long)1,(VAR_SIZE)*sizeof(utext),
+ ECPGt_int,&(utext_var_ind),(long)1,(long)1,sizeof(int), ECPGt_EORT);
+#line 1135 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 1135 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 1135 "utext.pgc"
+
+ print_utext(utext_var);
+ print_utext_ind(utext_var_ind);
+ init_var();
+ init_table_value();
+}
+
+//Open cursor using utext var directly in WHERE Clause
+void test_pvar_14()
+{
+/* exec sql begin declare section */
+
+
+#line 1146 "utext.pgc"
+ utext * utext_local_pvar ;
+/* exec sql end declare section */
+#line 1147 "utext.pgc"
+
+ utext_local_pvar = (utext*)malloc(P_VAR_SIZE*sizeof(utext));
+ memset(utext_local_pvar,'a',P_VAR_SIZE*sizeof(utext));
+
+ test("test_pvar_14 : Open cursor using utext var directly in WHERE Clause");
+ init_var();
+
+ { ECPGsetcommit(__LINE__, "off", NULL);
+#line 1154 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 1154 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 1154 "utext.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "select Item from tb1 where count = 3", ECPGt_EOIT,
+ ECPGt_utext,&(utext_local_pvar),(long)0,(long)1,(1)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
+#line 1155 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 1155 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 1155 "utext.pgc"
+
+
+ ECPGset_var( 2, &( utext_local_pvar ), __LINE__);\
+ /* declare cursor_pvar_14 cursor for select count from tb1 where Item = $1 */
+#line 1157 "utext.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "declare cursor_pvar_14 cursor for select count from tb1 where Item = $1 ",
+ ECPGt_utext,&(utext_local_pvar),(long)0,(long)1,(1)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT);
+#line 1158 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 1158 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 1158 "utext.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "fetch cursor_pvar_14", ECPGt_EOIT,
+ ECPGt_int,&(count),(long)1,(long)1,sizeof(int),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
+#line 1159 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 1159 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 1159 "utext.pgc"
+
+ printf ("count=%d for Item='世界杯每隔四年就会举行一次每次𠲖个球队'\n", count);
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "close cursor_pvar_14", ECPGt_EOIT, ECPGt_EORT);
+#line 1161 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 1161 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 1161 "utext.pgc"
+
+
+ { ECPGsetcommit(__LINE__, "on", NULL);
+#line 1163 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 1163 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 1163 "utext.pgc"
+
+}
+
+
+//utext pointer working with NULL without using indicator
+void test_pvar_15()
+{
+/* exec sql begin declare section */
+
+
+#line 1171 "utext.pgc"
+ utext * utext_local_pvar ;
+/* exec sql end declare section */
+#line 1172 "utext.pgc"
+
+ utext_local_pvar = (utext*)malloc(P_VAR_SIZE*sizeof(utext));
+ memset(utext_local_pvar,'a',P_VAR_SIZE*sizeof(utext));
+
+ test("test_pvar_15 : Test utext pointer working with NULL without using indicator");
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "select Item from tb1 where count = 8", ECPGt_EOIT,
+ ECPGt_utext,&(utext_local_pvar),(long)0,(long)1,(1)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
+#line 1178 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 1178 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 1178 "utext.pgc"
+
+
+ print_utext(utext_local_pvar);
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "insert into tb1 values ( $1 , 18 )",
+ ECPGt_utext,&(utext_local_pvar),(long)0,(long)1,(1)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT);
+#line 1182 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 1182 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 1182 "utext.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "insert into tb1 values ( $1 , 19 )",
+ ECPGt_utext,&(utext_local_pvar),(long)0,(long)1,(1)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT);
+#line 1183 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 1183 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 1183 "utext.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "insert into tb1 values ( $1 , 20 )",
+ ECPGt_utext,&(utext_local_pvar),(long)0,(long)1,(1)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT);
+#line 1184 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 1184 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 1184 "utext.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "select count ( * ) from tb1 where Item is null", ECPGt_EOIT,
+ ECPGt_int,&(count),(long)1,(long)1,sizeof(int),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
+#line 1185 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 1185 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 1185 "utext.pgc"
+
+ printf ("found %d rows for Item being NULL\n", count);
+
+ init_table_value();
+}
+
+//utext pointer working with NULL using indicator
+void test_pvar_16()
+{
+/* exec sql begin declare section */
+
+
+
+#line 1195 "utext.pgc"
+ utext * utext_local_pvar ;
+
+#line 1196 "utext.pgc"
+ int utext_pvar_ind = - 1 ;
+/* exec sql end declare section */
+#line 1197 "utext.pgc"
+
+ utext_local_pvar = (utext*)malloc(P_VAR_SIZE*sizeof(utext));
+ memset(utext_local_pvar,'a',P_VAR_SIZE*sizeof(utext));
+
+ test("test_pvar_16 : Test utext pointer working with NULL using indicator");
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "select Item from tb1 where count = 8", ECPGt_EOIT,
+ ECPGt_utext,&(utext_local_pvar),(long)0,(long)1,(1)*sizeof(utext),
+ ECPGt_int,&(utext_pvar_ind),(long)1,(long)1,sizeof(int), ECPGt_EORT);
+#line 1203 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 1203 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 1203 "utext.pgc"
+
+
+ print_utext(utext_local_pvar);
+ print_utext_ind(utext_pvar_ind);
+
+ memset(utext_local_pvar,0,P_VAR_SIZE*sizeof(utext));
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "insert into tb1 values ( $1 , 18 )",
+ ECPGt_utext,&(utext_local_pvar),(long)0,(long)1,(1)*sizeof(utext),
+ ECPGt_int,&(utext_pvar_ind),(long)1,(long)1,sizeof(int), ECPGt_EOIT, ECPGt_EORT);
+#line 1209 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 1209 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 1209 "utext.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "insert into tb1 values ( $1 , 19 )",
+ ECPGt_utext,&(utext_local_pvar),(long)0,(long)1,(1)*sizeof(utext),
+ ECPGt_int,&(utext_pvar_ind),(long)1,(long)1,sizeof(int), ECPGt_EOIT, ECPGt_EORT);
+#line 1210 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 1210 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 1210 "utext.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "insert into tb1 values ( $1 , 20 )",
+ ECPGt_utext,&(utext_local_pvar),(long)0,(long)1,(1)*sizeof(utext),
+ ECPGt_int,&(utext_pvar_ind),(long)1,(long)1,sizeof(int), ECPGt_EOIT, ECPGt_EORT);
+#line 1211 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 1211 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 1211 "utext.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "select count ( * ) from tb1 where Item is null", ECPGt_EOIT,
+ ECPGt_int,&(count),(long)1,(long)1,sizeof(int),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
+#line 1212 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 1212 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 1212 "utext.pgc"
+
+ printf ("found %d rows for Item being NULL\n", count);
+
+ init_table_value();
+}
+
+//utext uninitialized pointer getting and setting data
+void test_pvar_17()
+{
+/* exec sql begin declare section */
+
+
+
+#line 1222 "utext.pgc"
+ utext * utext_local_pvar = 0 ;
+
+#line 1223 "utext.pgc"
+ char local_str [ 50 ] ;
+/* exec sql end declare section */
+#line 1224 "utext.pgc"
+
+
+ test("test_pvar_17 : Test utext uninitialized pointer getting and setting data");
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "select Item from tb1 where count = 1", ECPGt_EOIT,
+ ECPGt_utext,&(utext_local_pvar),(long)0,(long)1,(1)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
+#line 1228 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 1228 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 1228 "utext.pgc"
+
+
+ print_utext_str(utext_local_pvar);
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "insert into tb1 values ( $1 , 18 )",
+ ECPGt_utext,&(utext_local_pvar),(long)0,(long)1,(1)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT);
+#line 1232 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 1232 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 1232 "utext.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "select Item from tb1 where count = 18", ECPGt_EOIT,
+ ECPGt_char,(local_str),(long)50,(long)1,(50)*sizeof(char),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
+#line 1233 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 1233 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 1233 "utext.pgc"
+
+ printf ("Find Item = %s where Count=18\n", local_str);
+
+ init_table_value();
+}
+
+//utext uninitialized pointer working with NULL without using indicator
+void test_pvar_18()
+{
+/* exec sql begin declare section */
+
+
+#line 1243 "utext.pgc"
+ utext * utext_local_pvar = 0 ;
+/* exec sql end declare section */
+#line 1244 "utext.pgc"
+
+
+ test("test_pvar_18 : Test utext uninitialized pointer working with NULL without using indicator");
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "select Item from tb1 where count = 8", ECPGt_EOIT,
+ ECPGt_utext,&(utext_local_pvar),(long)0,(long)1,(1)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
+#line 1248 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 1248 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 1248 "utext.pgc"
+
+
+ print_utext_size(utext_local_pvar,1);
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "insert into tb1 values ( $1 , 18 )",
+ ECPGt_utext,&(utext_local_pvar),(long)0,(long)1,(1)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT);
+#line 1252 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 1252 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 1252 "utext.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "insert into tb1 values ( $1 , 19 )",
+ ECPGt_utext,&(utext_local_pvar),(long)0,(long)1,(1)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT);
+#line 1253 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 1253 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 1253 "utext.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "insert into tb1 values ( $1 , 20 )",
+ ECPGt_utext,&(utext_local_pvar),(long)0,(long)1,(1)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT);
+#line 1254 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 1254 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 1254 "utext.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "select count ( * ) from tb1 where Item is null", ECPGt_EOIT,
+ ECPGt_int,&(count),(long)1,(long)1,sizeof(int),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
+#line 1255 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 1255 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 1255 "utext.pgc"
+
+ printf ("found %d rows for Item being NULL\n", count);
+
+ init_table_value();
+}
+
+//utext uninitialized pointer working with NULL using indicator
+void test_pvar_19()
+{
+/* exec sql begin declare section */
+
+
+
+#line 1265 "utext.pgc"
+ utext * utext_local_pvar = 0 ;
+
+#line 1266 "utext.pgc"
+ int utext_pvar_ind = - 1 ;
+/* exec sql end declare section */
+#line 1267 "utext.pgc"
+
+
+ test("test_pvar_19 : Test utext uninitialized pointer working with NULL using indicator");
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "select Item from tb1 where count = 8", ECPGt_EOIT,
+ ECPGt_utext,&(utext_local_pvar),(long)0,(long)1,(1)*sizeof(utext),
+ ECPGt_int,&(utext_pvar_ind),(long)1,(long)1,sizeof(int), ECPGt_EORT);
+#line 1271 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 1271 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 1271 "utext.pgc"
+
+
+ print_utext_size(utext_local_pvar,1);
+ print_utext_ind(utext_pvar_ind);
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "insert into tb1 values ( $1 , 18 )",
+ ECPGt_utext,&(utext_local_pvar),(long)0,(long)1,(1)*sizeof(utext),
+ ECPGt_int,&(utext_pvar_ind),(long)1,(long)1,sizeof(int), ECPGt_EOIT, ECPGt_EORT);
+#line 1276 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 1276 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 1276 "utext.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "insert into tb1 values ( $1 , 19 )",
+ ECPGt_utext,&(utext_local_pvar),(long)0,(long)1,(1)*sizeof(utext),
+ ECPGt_int,&(utext_pvar_ind),(long)1,(long)1,sizeof(int), ECPGt_EOIT, ECPGt_EORT);
+#line 1277 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 1277 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 1277 "utext.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "insert into tb1 values ( $1 , 20 )",
+ ECPGt_utext,&(utext_local_pvar),(long)0,(long)1,(1)*sizeof(utext),
+ ECPGt_int,&(utext_pvar_ind),(long)1,(long)1,sizeof(int), ECPGt_EOIT, ECPGt_EORT);
+#line 1278 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 1278 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 1278 "utext.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "select count ( * ) from tb1 where Item is null", ECPGt_EOIT,
+ ECPGt_int,&(count),(long)1,(long)1,sizeof(int),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
+#line 1279 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 1279 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 1279 "utext.pgc"
+
+ printf ("found %d rows for Item being NULL\n", count);
+
+ init_table_value();
+}
+
+//Test select into host varaibles from descriptor
+void test_desc_1()
+{
+ /* exec sql begin declare section */
+
+
+
+
+
+#line 1289 "utext.pgc"
+ utext utext_local_var [ 20 ] ;
+
+#line 1290 "utext.pgc"
+ utext * utext_local_pvar = 0 ;
+
+#line 1291 "utext.pgc"
+ utext ** utext_local_ppvar = 0 ;
+
+#line 1292 "utext.pgc"
+ char desc1 [ 8 ] = "outdesc" ;
+/* exec sql end declare section */
+#line 1293 "utext.pgc"
+
+
+// ECPGdebug(1, stderr);
+
+ ECPGallocate_desc(__LINE__, "indesc");
+#line 1297 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 1297 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();
+#line 1297 "utext.pgc"
+
+ ECPGallocate_desc(__LINE__, (desc1));
+#line 1298 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 1298 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();
+#line 1298 "utext.pgc"
+
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "select Item , count from tb1 where count = 1", ECPGt_EOIT,
+ ECPGt_descriptor, (desc1), 1L, 1L, 1L,
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
+#line 1300 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 1300 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 1300 "utext.pgc"
+
+
+ { ECPGget_desc(__LINE__, (desc1), 1,ECPGd_data,
+ ECPGt_utext,(utext_local_var),(long)20,(long)1,(20)*sizeof(utext), ECPGd_EODT);
+
+#line 1302 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 1302 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 1302 "utext.pgc"
+
+ print_utext(utext_local_var);
+
+ { ECPGget_desc(__LINE__, (desc1), 1,ECPGd_data,
+ ECPGt_utext,&(utext_local_pvar),(long)0,(long)1,(1)*sizeof(utext), ECPGd_EODT);
+
+#line 1305 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 1305 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 1305 "utext.pgc"
+
+ print_utext_str(utext_local_pvar);
+
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "select Item , count from tb1 where count <= 3", ECPGt_EOIT,
+ ECPGt_descriptor, (desc1), 1L, 1L, 1L,
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
+#line 1309 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 1309 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 1309 "utext.pgc"
+
+ { ECPGget_desc(__LINE__, (desc1), 1,ECPGd_data,
+ ECPGt_utext,&(utext_local_ppvar),(long)0,(long)0,(1)*sizeof(utext), ECPGd_EODT);
+
+#line 1310 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 1310 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 1310 "utext.pgc"
+
+ print_utext_str(utext_local_ppvar[0]);
+ print_utext_str(utext_local_ppvar[1]);
+ print_utext_str(utext_local_ppvar[2]);
+
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "select Item , count from tb1 where count <= 10 and count >= 8", ECPGt_EOIT,
+ ECPGt_descriptor, (desc1), 1L, 1L, 1L,
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
+#line 1316 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 1316 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 1316 "utext.pgc"
+
+ { ECPGget_desc(__LINE__, (desc1), 1,ECPGd_data,
+ ECPGt_utext,&(utext_local_ppvar),(long)0,(long)0,(1)*sizeof(utext), ECPGd_EODT);
+
+#line 1317 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 1317 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 1317 "utext.pgc"
+
+ print_utext_str(utext_local_ppvar[0]);
+ print_utext_str(utext_local_ppvar[1]);
+ print_utext_str(utext_local_ppvar[2]);
+
+
+ ECPGdeallocate_desc(__LINE__, "indesc");
+#line 1323 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 1323 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();
+#line 1323 "utext.pgc"
+
+ ECPGdeallocate_desc(__LINE__, (desc1));
+#line 1324 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 1324 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();
+#line 1324 "utext.pgc"
+
+}
+
+
+//Test uninitialized pointer to pointer utext_var without initialize
+void test_pp_var_1()
+{
+/* exec sql begin declare section */
+
+
+
+
+#line 1332 "utext.pgc"
+ utext ** utext_local_ppvar = 0 ;
+
+#line 1333 "utext.pgc"
+ int * utext_local_ppvar_ind = 0 ;
+
+#line 1334 "utext.pgc"
+ char utext_local_char [ 80 ] ;
+/* exec sql end declare section */
+#line 1335 "utext.pgc"
+
+ test("test_pp_var_1 : Test pointer to pointer utext_var without initialize");
+
+ //memset(utext_local_var,'a',sizeof(utext_local_var));
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "select Item from tb1 where count <= 3", ECPGt_EOIT,
+ ECPGt_utext,&(utext_local_ppvar),(long)0,(long)0,(1)*sizeof(utext),
+ ECPGt_int,&(utext_local_ppvar_ind),(long)1,(long)0,sizeof(int), ECPGt_EORT);
+#line 1339 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 1339 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 1339 "utext.pgc"
+
+ print_utext_str(utext_local_ppvar[0]);
+ print_utext_ind(utext_local_ppvar_ind[0]);
+
+ print_utext_str(utext_local_ppvar[1]);
+ print_utext_ind(utext_local_ppvar_ind[1]);
+
+ print_utext_str(utext_local_ppvar[2]);
+ print_utext_ind(utext_local_ppvar_ind[2]);
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "insert into tb1 values ( $1 , 28 )",
+ ECPGt_utext,&(utext_local_ppvar[1]),(long)0,(long)1,(1)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT);
+#line 1349 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 1349 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 1349 "utext.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "select Item from tb1 where count = 28", ECPGt_EOIT,
+ ECPGt_char,(utext_local_char),(long)80,(long)1,(80)*sizeof(char),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
+#line 1350 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 1350 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 1350 "utext.pgc"
+
+ printf("%s\n",utext_local_char);
+
+ init_table_value();
+}
+
+
+//Test uninitialized pointer to pointer utext_var working with NULL without indicator
+void test_pp_var_2()
+{
+/* exec sql begin declare section */
+
+
+#line 1361 "utext.pgc"
+ utext ** utext_local_ppvar = 0 ;
+/* exec sql end declare section */
+#line 1362 "utext.pgc"
+
+ test("test_pp_var_2 : Test uninitialized pointer to pointer utext_var working with NULL without indicator");
+
+ //memset(utext_local_var,'a',sizeof(utext_local_var));
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "select Item from tb1 where count >= 8 and count <= 10", ECPGt_EOIT,
+ ECPGt_utext,&(utext_local_ppvar),(long)0,(long)0,(1)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
+#line 1366 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 1366 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 1366 "utext.pgc"
+
+ print_utext_str(utext_local_ppvar[0]);
+ print_utext_str(utext_local_ppvar[1]);
+ print_utext_str(utext_local_ppvar[2]);
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "insert into tb1 values ( $1 , 18 )",
+ ECPGt_utext,&(utext_local_ppvar[0]),(long)0,(long)1,(1)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT);
+#line 1371 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 1371 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 1371 "utext.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "insert into tb1 values ( $1 , 19 )",
+ ECPGt_utext,&(utext_local_ppvar[1]),(long)0,(long)1,(1)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT);
+#line 1372 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 1372 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 1372 "utext.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "insert into tb1 values ( $1 , 20 )",
+ ECPGt_utext,&(utext_local_ppvar[2]),(long)0,(long)1,(1)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT);
+#line 1373 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 1373 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 1373 "utext.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "select count ( * ) from tb1 where Item is null", ECPGt_EOIT,
+ ECPGt_int,&(count),(long)1,(long)1,sizeof(int),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
+#line 1374 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 1374 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 1374 "utext.pgc"
+
+ printf ("found %d rows for Item being NULL\n", count);
+
+ init_table_value();
+}
+
+//Test uninitialized pointer to pointer utext_var working with NULL with indicator
+void test_pp_var_3()
+{
+/* exec sql begin declare section */
+
+
+
+#line 1384 "utext.pgc"
+ utext ** utext_local_ppvar = 0 ;
+
+#line 1385 "utext.pgc"
+ int * utext_local_ppvar_ind = 0 ;
+/* exec sql end declare section */
+#line 1386 "utext.pgc"
+
+ test("test_pp_var_2 : Test uninitialized pointer to pointer utext_var working with NULL without indicator");
+
+ //memset(utext_local_var,'a',sizeof(utext_local_var));
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "select Item from tb1 where count >= 8 and count <= 10", ECPGt_EOIT,
+ ECPGt_utext,&(utext_local_ppvar),(long)0,(long)0,(1)*sizeof(utext),
+ ECPGt_int,&(utext_local_ppvar_ind),(long)1,(long)0,sizeof(int), ECPGt_EORT);
+#line 1390 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 1390 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 1390 "utext.pgc"
+
+ print_utext_str(utext_local_ppvar[0]);
+ print_utext_ind(utext_local_ppvar_ind[0]);
+
+ print_utext_str(utext_local_ppvar[1]);
+ print_utext_ind(utext_local_ppvar_ind[1]);
+
+ print_utext_str(utext_local_ppvar[2]);
+ print_utext_ind(utext_local_ppvar_ind[2]);
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "insert into tb1 values ( $1 , 18 )",
+ ECPGt_utext,&(utext_local_ppvar[0]),(long)0,(long)1,(1)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT);
+#line 1400 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 1400 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 1400 "utext.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "insert into tb1 values ( $1 , 19 )",
+ ECPGt_utext,&(utext_local_ppvar[1]),(long)0,(long)1,(1)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT);
+#line 1401 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 1401 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 1401 "utext.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "insert into tb1 values ( $1 , 20 )",
+ ECPGt_utext,&(utext_local_ppvar[2]),(long)0,(long)1,(1)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT);
+#line 1402 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 1402 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 1402 "utext.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "select count ( * ) from tb1 where Item is null", ECPGt_EOIT,
+ ECPGt_int,&(count),(long)1,(long)1,sizeof(int),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
+#line 1403 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 1403 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 1403 "utext.pgc"
+
+ printf ("found %d rows for Item being NULL\n", count);
+
+ init_table_value();
+}
+
+void test_all()
+{
+ test_var_1();
+ test_var_2();
+ test_var_3();
+ test_var_4();
+ test_var_5();
+ test_var_6();
+ test_var_7();
+ test_var_8();
+ test_var_9();
+ test_var_10();
+ test_var_11();
+ test_var_12();
+ test_var_13();
+ test_var_14();
+ test_var_15();
+ test_var_16();
+ test_array_1();
+ test_array_2();
+ test_array_3();
+ test_array_4();
+ test_array_5();
+ test_array_6();
+ test_array_7();
+ test_array_8();
+ test_array_9();
+ test_array_10();
+ test_array_11();
+ test_array_12();
+ test_array_13();
+ test_array_14();
+ test_array_15();
+ test_array_16();
+ test_pvar_1();
+ test_pvar_2();
+ test_pvar_3();
+ test_pvar_4();
+ test_pvar_5();
+ test_pvar_6();
+ test_pvar_7();
+ test_pvar_8();
+ test_pvar_9();
+ test_pvar_10();
+ test_pvar_11();
+ test_pvar_12();
+ test_pvar_13();
+ test_pvar_14();
+ test_pvar_15();
+ test_pvar_16();
+ test_pvar_17();
+ test_pvar_18();
+ test_pvar_19();
+ test_pp_var_1();
+ test_pp_var_2();
+ test_pp_var_3();
+}
+
+int main(int argc, char *argv[])
+{
+// ECPGdebug(1, stderr);
+ if(test_init() !=0)
+ return -1;
+
+ test_all();
+ test_finish();
+
+ return 0;
+}
diff --git a/src/interfaces/ecpg/test/expected/sql-utext.stderr b/src/interfaces/ecpg/test/expected/sql-utext.stderr
new file mode 100644
index 0000000..885cfe4
--- /dev/null
+++ b/src/interfaces/ecpg/test/expected/sql-utext.stderr
@@ -0,0 +1,2 @@
+SQL error:
+SQL error:
diff --git a/src/interfaces/ecpg/test/expected/sql-utext.stdout b/src/interfaces/ecpg/test/expected/sql-utext.stdout
new file mode 100644
index 0000000..c8dfd5b
--- /dev/null
+++ b/src/interfaces/ecpg/test/expected/sql-utext.stdout
@@ -0,0 +1,433 @@
+
+test_var_1: simple select into utext var
+======print utext_var content======
+0x0000592A 0x00020BB7 0x00020731 0x00005E73 0x00006D0B 0x00020C53 0x00005927 0x0000897F
+0x00006D0B 0x00005370 0x00005EA6 0x00006D0B 0x00005317 0x000051B0 0x00006D0B 0x00000000
+0x00000000 0x00000000 0x00000000 0x00000000
+======End utext_var content======
+utext_var_ind = 0
+======print utext_var content======
+0x00008DB3 0x00007403 0x00007BEE 0x00007403 0x00007FBD 0x00006BDB 0x00007403 0x00004E52
+0x00004E53 0x00007403 0x00006A44 0x00006984 0x00007403 0x000068D2 0x00007403 0x000051B0
+0x00007403 0x00000000 0x00000000 0x00000000
+======End utext_var content======
+utext_var_ind = 0
+======print utext_var content======
+0x00004E16 0x0000754C 0x0000676F 0x00006BCF 0x00009694 0x000056DB 0x00005E74 0x00005C31
+0x00004F1A 0x00004E3E 0x0000884C 0x00004E00 0x00006B21 0x00006BCF 0x00006B21 0x00020C96
+0x00004E2A 0x00007403 0x0000961F 0x00000000
+======End utext_var content======
+utext_var_ind = 0
+======print utext_var content======
+0x00004E9A 0x00006D32 0x00006B27 0x00006D32 0x0000975E 0x00006D32 0x00005927 0x00006D0B
+0x00006D32 0x00005317 0x00007F8E 0x00006D32 0x00005357 0x00007F8E 0x00006D32 0x00005357
+0x00006781 0x00006D32 0x00006CA1 0x00006709
+======End utext_var content======
+utext_var_ind = 23
+
+test_var_2: simple select using utext var
+count=1 for '太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'
+count=3 for '世界杯每隔四年就会举行一次每次𠲖个球队'
+
+test_var_3: simple update using utext var
+found 3 rows for Item='太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'
+
+test_var_4 : simple delete using utext var
+found 0 rows for Item='太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'
+found 0 rows for Item='世界杯每隔四年就会举行一次每次𠲖个球队'
+
+test_var_5 : simple insert using utext
+found 2 rows for Item='太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'
+found 2 rows for Item='世界杯每隔四年就会举行一次每次𠲖个球队'
+
+test_var_6 : prepared select into utext var
+======print utext_var content======
+0x0000592A 0x00020BB7 0x00020731 0x00005E73 0x00006D0B 0x00020C53 0x00005927 0x0000897F
+0x00006D0B 0x00005370 0x00005EA6 0x00006D0B 0x00005317 0x000051B0 0x00006D0B 0x00000000
+0x00000000 0x00000000 0x00000000 0x00000000
+======End utext_var content======
+======print utext_var content======
+0x00004E16 0x0000754C 0x0000676F 0x00006BCF 0x00009694 0x000056DB 0x00005E74 0x00005C31
+0x00004F1A 0x00004E3E 0x0000884C 0x00004E00 0x00006B21 0x00006BCF 0x00006B21 0x00020C96
+0x00004E2A 0x00007403 0x0000961F 0x00000000
+======End utext_var content======
+
+test_var_7 : prepared select using utext var
+count=3 for Item='世界杯每隔四年就会举行一次每次𠲖个球队'
+
+test_var_8 : prepared update using utext var
+found 3 rows for Item='世界杯每隔四年就会举行一次每次𠲖个球队'
+
+test_var_9 : prepared delete using utext var
+found 0 rows for Item='世界杯每隔四年就会举行一次每次𠲖个球队'
+
+test_var_10 : prepared insert using utext var
+found 2 rows for Item='世界杯每隔四年就会举行一次每次𠲖个球队'
+
+test_var_11 : Open cursor using utext var
+count=3 for Item='世界杯每隔四年就会举行一次每次𠲖个球队'
+
+test_var_12 : Fecth cursor into utext var
+======print utext_var content======
+0x0000592A 0x00020BB7 0x00020731 0x00005E73 0x00006D0B 0x00020C53 0x00005927 0x0000897F
+0x00006D0B 0x00005370 0x00005EA6 0x00006D0B 0x00005317 0x000051B0 0x00006D0B 0x00000000
+0x00000000 0x00000000 0x00000000 0x00000000
+======End utext_var content======
+
+test_var_13 : simple insert utext var with L string inited
+======print utext_var_str content======
+0x00008DB3 0x00007403 0x00007BEE 0x00007403 0x00007FBD 0x00006BDB 0x00007403
+======End utext_var_str content======
+======print utext_var content======
+0x00008DB3 0x00007403 0x00007BEE 0x00007403 0x00007FBD 0x00006BDB 0x00007403 0x00000000
+0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000
+0x00000000 0x00000000 0x00000000 0x00000000
+======End utext_var content======
+utext_var_ind = 0
+
+test_var_14 : Open cursor using utext var directly in WHERE Clause
+count=3 for Item='世界杯每隔四年就会举行一次每次𠲖个球队'
+
+test_var_15 : Test utext_var working with NULL without indicator
+======print utext_var content======
+0x00000000 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161
+0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161
+0x61616161 0x61616161 0x61616161 0x61616161
+======End utext_var content======
+found 6 rows for Item being NULL
+
+test_var_16 : Test utext_var working with NULL with indicator
+======print utext_var content======
+0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161
+0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161
+0x61616161 0x61616161 0x61616161 0x61616161
+======End utext_var content======
+utext_var_ind = -1
+found 6 rows for Item being NULL
+
+test_array_1 : simple select into utext array
+---->array[0]:
+0x0000592A 0x00020BB7 0x00020731 0x00005E73 0x00006D0B 0x00020C53 0x00005927 0x0000897F
+0x00006D0B 0x00005370 0x00005EA6 0x00006D0B 0x00005317 0x000051B0 0x00006D0B 0x00000000
+0x00000000 0x00000000 0x00000000 0x00000000
+---->array[1]:
+0x00008DB3 0x00007403 0x00007BEE 0x00007403 0x00007FBD 0x00006BDB 0x00007403 0x00004E52
+0x00004E53 0x00007403 0x00006A44 0x00006984 0x00007403 0x000068D2 0x00007403 0x000051B0
+0x00007403 0x00000000 0x00000000 0x00000000
+---->array[2]:
+0x00004E16 0x0000754C 0x0000676F 0x00006BCF 0x00009694 0x000056DB 0x00005E74 0x00005C31
+0x00004F1A 0x00004E3E 0x0000884C 0x00004E00 0x00006B21 0x00006BCF 0x00006B21 0x00020C96
+0x00004E2A 0x00007403 0x0000961F 0x00000000
+---->array[3]:
+0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161
+0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161
+0x61616161 0x61616161 0x61616161 0x61616161
+
+---->array[0]:
+0x0000592A 0x00020BB7 0x00020731 0x00005E73 0x00006D0B 0x00020C53 0x00005927 0x0000897F
+0x00006D0B 0x00005370 0x00005EA6 0x00006D0B 0x00005317 0x000051B0 0x00006D0B 0x00000000
+0x00000000 0x00000000 0x00000000 0x00000000
+---->array[1]:
+0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161
+0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161
+0x61616161 0x61616161 0x61616161 0x61616161
+---->array[2]:
+0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161
+0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161
+0x61616161 0x61616161 0x61616161 0x61616161
+---->array[3]:
+0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161
+0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161
+0x61616161 0x61616161 0x61616161 0x61616161
+
+
+test_array_2 : simple select using array
+count=1 for '太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'
+count=3 for '世界杯每隔四年就会举行一次每次𠲖个球队'
+
+test_array_3 : simple update using utext array
+find 0 rows for Item='太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'
+find 2 rows for Item='世界杯每隔四年就会举行一次每次𠲖个球队'
+
+test_array_4 : simple delete using utext array
+found 0 rows for Item='太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'
+found 0 rows for Item='世界杯每隔四年就会举行一次每次𠲖个球队'
+
+test_array_5 : simple insert using utext array
+found 2 rows for Item='太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'
+found 2 rows for Item='世界杯每隔四年就会举行一次每次𠲖个球队'
+
+test_array_6 : prepared select into utext array
+---->array[0]:
+0x0000592A 0x00020BB7 0x00020731 0x00005E73 0x00006D0B 0x00020C53 0x00005927 0x0000897F
+0x00006D0B 0x00005370 0x00005EA6 0x00006D0B 0x00005317 0x000051B0 0x00006D0B 0x00000000
+0x00000000 0x00000000 0x00000000 0x00000000
+---->array[1]:
+0x00008DB3 0x00007403 0x00007BEE 0x00007403 0x00007FBD 0x00006BDB 0x00007403 0x00004E52
+0x00004E53 0x00007403 0x00006A44 0x00006984 0x00007403 0x000068D2 0x00007403 0x000051B0
+0x00007403 0x00000000 0x00000000 0x00000000
+---->array[2]:
+0x00004E16 0x0000754C 0x0000676F 0x00006BCF 0x00009694 0x000056DB 0x00005E74 0x00005C31
+0x00004F1A 0x00004E3E 0x0000884C 0x00004E00 0x00006B21 0x00006BCF 0x00006B21 0x00020C96
+0x00004E2A 0x00007403 0x0000961F 0x00000000
+---->array[3]:
+0x00004E9A 0x00006D32 0x00006B27 0x00006D32 0x0000975E 0x00006D32 0x00005927 0x00006D0B
+0x00006D32 0x00005317 0x00007F8E 0x00006D32 0x00005357 0x00007F8E 0x00006D32 0x00005357
+0x00006781 0x00006D32 0x00006CA1 0x00006709
+
+
+test_array_7 : prepared select using utext array
+count=1 for Item='世界杯每隔四年就会举行一次每次𠲖个球队'
+
+test_array_8 : prepared update using utext array
+found 3 rows for Item='太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'
+
+test_array_9 : prepared delete using utext array
+found 0 rows for Item='太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'
+
+test_array_10 : prepared insert using utext array
+found 3 rows for Item='世界杯每隔四年就会举行一次每次𠲖个球队'
+
+test_array_11 : Open cursor using utext array
+count=3 for Item='世界杯每隔四年就会举行一次每次𠲖个球队'
+
+test_array_12 : Fecth cursor into utext array
+---->array[0]:
+0x0000592A 0x00020BB7 0x00020731 0x00005E73 0x00006D0B 0x00020C53 0x00005927 0x0000897F
+0x00006D0B 0x00005370 0x00005EA6 0x00006D0B 0x00005317 0x000051B0 0x00006D0B 0x00000000
+0x00000000 0x00000000 0x00000000 0x00000000
+---->array[1]:
+0x00008DB3 0x00007403 0x00007BEE 0x00007403 0x00007FBD 0x00006BDB 0x00007403 0x00004E52
+0x00004E53 0x00007403 0x00006A44 0x00006984 0x00007403 0x000068D2 0x00007403 0x000051B0
+0x00007403 0x00000000 0x00000000 0x00000000
+---->array[2]:
+0x00004E16 0x0000754C 0x0000676F 0x00006BCF 0x00009694 0x000056DB 0x00005E74 0x00005C31
+0x00004F1A 0x00004E3E 0x0000884C 0x00004E00 0x00006B21 0x00006BCF 0x00006B21 0x00020C96
+0x00004E2A 0x00007403 0x0000961F 0x00000000
+---->array[3]:
+0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161
+0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161
+0x61616161 0x61616161 0x61616161 0x61616161
+
+
+test_array_13 : Insert array with L string inited
+---->array[0]:
+0x0000592A 0x00020BB7 0x00020731 0x00005E73 0x00006D0B 0x00020C53 0x00005927 0x0000897F
+0x00006D0B 0x00005370 0x00005EA6 0x00006D0B 0x00005317 0x000051B0 0x00006D0B 0x00000000
+0x00000000 0x00000000 0x00000000 0x00000000
+---->array[1]:
+0x00008DB3 0x00007403 0x00007BEE 0x00007403 0x00007FBD 0x00006BDB 0x00007403 0x00004E52
+0x00004E53 0x00007403 0x00006A44 0x00006984 0x00007403 0x000068D2 0x00007403 0x000051B0
+0x00007403 0x00000000 0x00000000 0x00000000
+---->array[2]:
+0x00004E16 0x0000754C 0x0000676F 0x00006BCF 0x00009694 0x000056DB 0x00005E74 0x00005C31
+0x00004F1A 0x00004E3E 0x0000884C 0x00004E00 0x00006B21 0x00000000 0x00000000 0x00000000
+0x00000000 0x00000000 0x00000000 0x00000000
+
+
+test_array_14 : Open cursor using utext array directly in WHERE Clause
+count=3 for Item='世界杯每隔四年就会举行一次每次𠲖个球队'
+
+test_array_15 : Test utext array working with NULL without using indicator
+---->array[0]:
+0x00000000 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161
+0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161
+0x61616161 0x61616161 0x61616161 0x61616161
+---->array[1]:
+0x00000000 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161
+0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161
+0x61616161 0x61616161 0x61616161 0x61616161
+---->array[2]:
+0x00000000 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161
+0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161
+0x61616161 0x61616161 0x61616161 0x61616161
+
+found 6 rows for Item being NULL
+
+test_array_16 : Test utext array working with NULL using indicator
+---->array[0]:
+0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161
+0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161
+0x61616161 0x61616161 0x61616161 0x61616161
+---->array[1]:
+0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161
+0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161
+0x61616161 0x61616161 0x61616161 0x61616161
+---->array[2]:
+0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161
+0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161
+0x61616161 0x61616161 0x61616161 0x61616161
+
+utext_var_ind = -1
+utext_var_ind = -1
+utext_var_ind = -1
+found 6 rows for Item being NULL
+
+test_pvar_1 : simple select into utext pointer
+======print utext_var content======
+0x0000592A 0x00020BB7 0x00020731 0x00005E73 0x00006D0B 0x00020C53 0x00005927 0x0000897F
+0x00006D0B 0x00005370 0x00005EA6 0x00006D0B 0x00005317 0x000051B0 0x00006D0B 0x00000000
+0x61616161 0x61616161 0x61616161 0x61616161
+======End utext_var content======
+utext_var_ind = 0
+======print utext_var content======
+0x00008DB3 0x00007403 0x00007BEE 0x00007403 0x00007FBD 0x00006BDB 0x00007403 0x00004E52
+0x00004E53 0x00007403 0x00006A44 0x00006984 0x00007403 0x000068D2 0x00007403 0x000051B0
+0x00007403 0x00000000 0x61616161 0x61616161
+======End utext_var content======
+utext_var_ind = 0
+======print utext_var content======
+0x00004E16 0x0000754C 0x0000676F 0x00006BCF 0x00009694 0x000056DB 0x00005E74 0x00005C31
+0x00004F1A 0x00004E3E 0x0000884C 0x00004E00 0x00006B21 0x00006BCF 0x00006B21 0x00020C96
+0x00004E2A 0x00007403 0x0000961F 0x00000000
+======End utext_var content======
+utext_var_ind = 0
+======print utext_var content======
+0x00004E9A 0x00006D32 0x00006B27 0x00006D32 0x0000975E 0x00006D32 0x00005927 0x00006D0B
+0x00006D32 0x00005317 0x00007F8E 0x00006D32 0x00005357 0x00007F8E 0x00006D32 0x00005357
+0x00006781 0x00006D32 0x00006CA1 0x00006709
+======End utext_var content======
+utext_var_ind = 0
+
+test_pvar_2 : simple select using utext pointer
+count=1 for '太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'
+count=0 for '世界杯每隔四年就会举行一次每次𠲖个球队'
+
+test_pvar_3 : simple update using utext pointer
+found 3 rows for Item='太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'
+
+test_pvar_4 : simple delete using utext pointer
+found 0 rows for Item='太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'
+found 1 rows for Item='世界杯每隔四年就会举行一次每次𠲖个球队'
+
+test_pvar_5 : simple insert using utext pointer
+found 1 rows for Item='世界杯每隔四年就会举行一次每次𠲖个球队'
+
+test_pvar_6 : prepared select into utext pointer
+======print utext_var content======
+0x0000592A 0x00020BB7 0x00020731 0x00005E73 0x00006D0B 0x00020C53 0x00005927 0x0000897F
+0x00006D0B 0x00005370 0x00005EA6 0x00006D0B 0x00005317 0x000051B0 0x00006D0B 0x00000000
+0x61616161 0x61616161 0x61616161 0x61616161
+======End utext_var content======
+======print utext_var content======
+0x00004E16 0x0000754C 0x0000676F 0x00006BCF 0x00009694 0x000056DB 0x00005E74 0x00005C31
+0x00004F1A 0x00004E3E 0x0000884C 0x00004E00 0x00006B21 0x00006BCF 0x00006B21 0x00020C96
+0x00004E2A 0x00007403 0x0000961F 0x00000000
+======End utext_var content======
+
+test_pvar_7 : prepared select using utext pointer
+count=0 for Item='世界杯每隔四年就会举行一次每次𠲖个球队'
+
+test_pvar_8 : prepared update using utext pointer
+found 1 rows for Item='世界杯每隔四年就会举行一次每次𠲖个球队'
+
+test_pvar_9 : prepared delete using utext pointer
+found 1 rows for Item='世界杯每隔四年就会举行一次每次𠲖个球队'
+
+test_pvar_10 : prepared insert using utext pointer
+found 1 rows for Item='世界杯每隔四年就会举行一次每次𠲖个球队'
+
+test_pvar_11 : Open cursor using utext pointer
+count=0 for Item='世界杯每隔四年就会举行一次每次𠲖个球队'
+
+test_pvar_12 : Fecth cursor into utext pointer
+======print utext_var content======
+0x0000592A 0x00020BB7 0x00020731 0x00005E73 0x00006D0B 0x00020C53 0x00005927 0x0000897F
+0x00006D0B 0x00005370 0x00005EA6 0x00006D0B 0x00005317 0x000051B0 0x00006D0B 0x00000000
+0x61616161 0x61616161 0x61616161 0x61616161
+======End utext_var content======
+
+test_pvar_13 : simple insert utext pointer with L string inited
+======print utext_var content======
+0x0000592A 0x00020BB7 0x00020731 0x00005E73 0x00006D0B 0x00020C53 0x00005927 0x0000897F
+0x00006D0B 0x00005370 0x00005EA6 0x00006D0B 0x00005317 0x000051B0 0x00006D0B 0x00000000
+0x00000000 0x00000000 0x00000000 0x00000000
+======End utext_var content======
+utext_var_ind = 0
+
+test_pvar_14 : Open cursor using utext var directly in WHERE Clause
+count=0 for Item='世界杯每隔四年就会举行一次每次𠲖个球队'
+
+test_pvar_15 : Test utext pointer working with NULL without using indicator
+======print utext_var content======
+0x00000000 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161
+0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161
+0x61616161 0x61616161 0x61616161 0x61616161
+======End utext_var content======
+found 6 rows for Item being NULL
+
+test_pvar_16 : Test utext pointer working with NULL using indicator
+======print utext_var content======
+0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161
+0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161
+0x61616161 0x61616161 0x61616161 0x61616161
+======End utext_var content======
+utext_var_ind = -1
+found 6 rows for Item being NULL
+
+test_pvar_17 : Test utext uninitialized pointer getting and setting data
+======print utext_var_str content======
+0x0000592A 0x00020BB7 0x00020731 0x00005E73 0x00006D0B 0x00020C53 0x00005927 0x0000897F
+0x00006D0B 0x00005370 0x00005EA6 0x00006D0B 0x00005317 0x000051B0 0x00006D0B
+======End utext_var_str content======
+Find Item = 太𠮷𠜱平洋𠱓大西洋印度洋北冰洋 where Count=18
+
+test_pvar_18 : Test utext uninitialized pointer working with NULL without using indicator
+======print utext_var content======
+0x00000000
+======End utext_var content======
+found 6 rows for Item being NULL
+
+test_pvar_19 : Test utext uninitialized pointer working with NULL using indicator
+======print utext_var content======
+0x00000000
+======End utext_var content======
+utext_var_ind = -1
+found 6 rows for Item being NULL
+
+test_pp_var_1 : Test pointer to pointer utext_var without initialize
+======print utext_var_str content======
+0x0000592A 0x00020BB7 0x00020731 0x00005E73 0x00006D0B 0x00020C53 0x00005927 0x0000897F
+0x00006D0B 0x00005370 0x00005EA6 0x00006D0B 0x00005317 0x000051B0 0x00006D0B
+======End utext_var_str content======
+utext_var_ind = 0
+======print utext_var_str content======
+0x00008DB3 0x00007403 0x00007BEE 0x00007403 0x00007FBD 0x00006BDB 0x00007403 0x00004E52
+0x00004E53 0x00007403 0x00006A44 0x00006984 0x00007403 0x000068D2 0x00007403 0x000051B0
+0x00007403
+======End utext_var_str content======
+utext_var_ind = 0
+======print utext_var_str content======
+0x00004E16 0x0000754C 0x0000676F 0x00006BCF 0x00009694 0x000056DB 0x00005E74 0x00005C31
+0x00004F1A 0x00004E3E 0x0000884C 0x00004E00 0x00006B21 0x00006BCF 0x00006B21 0x00020C96
+0x00004E2A 0x00007403 0x0000961F
+======End utext_var_str content======
+utext_var_ind = 0
+足球篮球羽毛球乒乓球橄榄球棒球冰球
+
+test_pp_var_2 : Test uninitialized pointer to pointer utext_var working with NULL without indicator
+======print utext_var_str content======
+
+======End utext_var_str content======
+======print utext_var_str content======
+
+======End utext_var_str content======
+======print utext_var_str content======
+
+======End utext_var_str content======
+found 6 rows for Item being NULL
+
+test_pp_var_2 : Test uninitialized pointer to pointer utext_var working with NULL without indicator
+======print utext_var_str content======
+
+======End utext_var_str content======
+utext_var_ind = -1
+======print utext_var_str content======
+
+======End utext_var_str content======
+utext_var_ind = -1
+======print utext_var_str content======
+
+======End utext_var_str content======
+utext_var_ind = -1
+found 6 rows for Item being NULL
diff --git a/src/interfaces/ecpg/test/expected/sql-uvarchar.c b/src/interfaces/ecpg/test/expected/sql-uvarchar.c
new file mode 100644
index 0000000..288eb14
--- /dev/null
+++ b/src/interfaces/ecpg/test/expected/sql-uvarchar.c
@@ -0,0 +1,2580 @@
+/* Processed by ecpg (regression mode) */
+/* These include files are added by the preprocessor */
+#define ECPG_ENABLE_UTEXT 1
+#include <ecpglib.h>
+#include <ecpgerrno.h>
+#include <sqlca.h>
+/* End of automatic include section */
+#define ECPGdebug(X,Y) ECPGdebug((X)+100,(Y))
+
+#line 1 "uvarchar.pgc"
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+
+#line 1 "regression.h"
+
+
+
+
+
+
+#line 5 "uvarchar.pgc"
+
+
+#define test(msg) printf("\n%s\n",msg)
+#define VAR_SIZE 20
+#define ARRAY_SIZE 4
+
+/* Following is UTF8 and UTF16 characters mapping table */
+/*太𠮷𠜱平洋𠱓大西洋印度洋北冰洋
+0x592A,0x5E73,0x6D0B,0x5927,0x897F,0x6D0B,0x5370,0x5EA6,
+0x6D0B,0x5317,0x51B0,0x6D0B,0x548C,0x5357,0x51B0,0x6D0B,
+0x0000,0x0000,0x0000,0x0000*/
+
+/*足球篮球羽毛球乒乓球橄榄球棒球冰球
+0x8DB3,0x7403,0x7BEE,0x7403,0x7FBD,0x6BDB,0x7403,0x4E52,
+0x4E53,0x7403,0x6A44,0x6984,0x7403,0x68D2,0x7403,0x51B0,
+0x7403,0x0000,0x0000,0x0000
+*/
+
+/*世界杯每隔四年就会举行一次每次𠲖个球队
+0x4E16,0x754C,0x676F,0x6BCF,0x9694,0x56DB,0x5E74,0x5C31,
+0x4F1A,0x4E3E,0x884C,0x4E00,0x6B21,0x6BCF,0x6B21,0x0033,
+0x0032,0x4E2A,0x7403,0x961F
+*/
+
+/* 亚洲欧洲非洲大洋洲北美洲南美洲南极洲没有北极洲
+0x4E9A,0x6D32,0x6B27,0x6D32,0x975E,0x6D32,0x5927,0x6D0B,
+0x6D32,0x5317,0x7F8E,0x6D32,0x5357,0x7F8E,0x6D32,0x5357,
+0x6781,0x6D32,0x6CA1,0x6709,0x5317,0x6781,0x6D32
+*/
+
+/* exec sql begin declare section */
+
+
+
+
+
+
+
+
+
+#line 36 "uvarchar.pgc"
+ struct uvarchar_1 { int len; utext arr[ VAR_SIZE ]; } uvarchar_var ;
+
+#line 37 "uvarchar.pgc"
+ struct uvarchar_2 { int len; utext arr[ VAR_SIZE ]; } uvarchar_array [ ARRAY_SIZE ] ;
+
+#line 39 "uvarchar.pgc"
+ int uvarchar_var_ind ;
+
+#line 41 "uvarchar.pgc"
+ int count ;
+
+#line 42 "uvarchar.pgc"
+ int count_array [ 4 ] = { 1 , 2 , 3 , 4 } ;
+
+#line 43 "uvarchar.pgc"
+ int total_tuples = 0 ;
+/* exec sql end declare section */
+#line 44 "uvarchar.pgc"
+
+
+void print_uvarchar(void);
+void print_uvarchar_ind(int uvarchar_var_ind);
+void print_local_uvarchar(utext *utext_var, int var_len);
+void print_array(void);
+int test_init(void);
+void test_finish(void);
+void init_table_value(void);
+void init_var(void);
+
+void test_var_1(void);
+void test_var_2(void);
+void test_var_3(void);
+void test_var_4(void);
+void test_var_5(void);
+void test_var_6(void);
+void test_var_7(void);
+void test_var_8(void);
+void test_var_9(void);
+void test_var_10(void);
+void test_var_11(void);
+void test_var_12(void);
+void test_var_13(void);
+void test_var_14(void);
+void test_var_15(void);
+void test_var_16(void);
+void test_array_1(void);
+void test_array_2(void);
+void test_array_3(void);
+void test_array_4(void);
+void test_array_5(void);
+void test_array_6(void);
+void test_array_7(void);
+void test_array_8(void);
+void test_array_9(void);
+void test_array_10(void);
+void test_array_11(void);
+void test_array_12(void);
+void test_array_13(void);
+void test_array_14(void);
+void test_array_15(void);
+void test_array_16(void);
+
+void test_all(void);
+
+void print_uvarchar()
+{
+ int i;
+
+ printf ("---->uvarchar variable,len=%d:\n",uvarchar_var.len);
+ for(i=0; i<VAR_SIZE; i++)
+ {
+ printf ("0x%04X ", uvarchar_var.arr[i]);
+ if(i>6 && (i+1)%8==0)
+ printf("\n");
+ }
+ printf("\n");
+}
+
+void print_uvarchar_ind(int uvarchar_var_ind)
+{
+ printf("uvarchar_var_ind = %d\n",uvarchar_var_ind);
+}
+
+void print_local_uvarchar(utext *utext_var, int var_len)
+{
+ int i;
+
+ printf ("---->uvarchar variable,len=%d:\n",var_len);
+ for(i=0; i<20; i++)
+ {
+ printf ("0x%04X ", utext_var[i]);
+ if(i>6 && (i+1)%8==0)
+ printf("\n");
+ }
+ printf("\n");
+}
+
+void print_array()
+{
+ int i,j;
+
+ for(i=0; i<ARRAY_SIZE; i++)
+ {
+ printf ("---->uvarchar array[%d]:(len=%d)\n", i,uvarchar_array[i].len);
+
+ for(j=0; j<VAR_SIZE; j++)
+ {
+ printf ("0x%04X ", uvarchar_array[i].arr[j]);
+ if(j>6 && (j+1)%8==0)
+ printf("\n");
+ }
+ printf("\n");
+ }
+
+ printf("\n");
+}
+
+int test_init()
+{
+ { ECPGconnect(__LINE__, 0, "ecpg1_regression" , NULL, NULL , NULL, 0); }
+#line 145 "uvarchar.pgc"
+
+
+ { ECPGsetcommit(__LINE__, "on", NULL);}
+#line 147 "uvarchar.pgc"
+
+ /* exec sql whenever sql_warning sqlprint ; */
+#line 148 "uvarchar.pgc"
+
+ /* exec sql whenever sqlerror sqlprint ; */
+#line 149 "uvarchar.pgc"
+
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "set client_encoding = 'UTF8'", ECPGt_EOIT, ECPGt_EORT);
+#line 151 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 151 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 151 "uvarchar.pgc"
+
+
+ //initialization of test table
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "create table tb1 ( Item varchar , count integer )", ECPGt_EOIT, ECPGt_EORT);
+#line 154 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 154 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 154 "uvarchar.pgc"
+
+
+ init_table_value();
+
+ return 0;
+}
+
+void test_finish()
+{
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "drop table tb1", ECPGt_EOIT, ECPGt_EORT);
+#line 163 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 163 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 163 "uvarchar.pgc"
+
+ { ECPGdisconnect(__LINE__, "ALL");
+#line 164 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 164 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 164 "uvarchar.pgc"
+
+}
+
+
+void init_table_value()
+{
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "truncate tb1", ECPGt_EOIT, ECPGt_EORT);
+#line 170 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 170 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 170 "uvarchar.pgc"
+
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "insert into tb1 values ( '太𠮷𠜱平洋𠱓大西洋印度洋北冰洋' , 1 )", ECPGt_EOIT, ECPGt_EORT);
+#line 172 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 172 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 172 "uvarchar.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "insert into tb1 values ( '足球篮球羽毛球乒乓球橄榄球棒球冰球' , 2 )", ECPGt_EOIT, ECPGt_EORT);
+#line 173 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 173 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 173 "uvarchar.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "insert into tb1 values ( '世界杯每隔四年就会举行一次每次𠲖个球队' , 3 )", ECPGt_EOIT, ECPGt_EORT);
+#line 174 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 174 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 174 "uvarchar.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "insert into tb1 values ( '亚洲欧洲非洲大洋洲北美洲南美洲南极洲没有北极洲' , 4 )", ECPGt_EOIT, ECPGt_EORT);
+#line 175 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 175 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 175 "uvarchar.pgc"
+
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "insert into tb1 ( count ) values ( 8 )", ECPGt_EOIT, ECPGt_EORT);
+#line 177 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 177 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 177 "uvarchar.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "insert into tb1 ( count ) values ( 9 )", ECPGt_EOIT, ECPGt_EORT);
+#line 178 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 178 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 178 "uvarchar.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "insert into tb1 ( count ) values ( 10 )", ECPGt_EOIT, ECPGt_EORT);
+#line 179 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 179 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 179 "uvarchar.pgc"
+
+}
+
+void init_var()
+{
+ int i;
+ memset((void*)&uvarchar_var,'a',sizeof(uvarchar_var));
+ uvarchar_var.len = 0;
+
+ memset((char*)uvarchar_array,'a',sizeof(uvarchar_array)*ARRAY_SIZE);
+
+ for(i=0;i<ARRAY_SIZE;i++)
+ {
+ uvarchar_array[i].len = 0;
+ }
+
+ uvarchar_var_ind = 0;
+}
+
+//simple select into uvarchar
+void test_var_1()
+{
+ test("test_var_1 : simple select into uvarchar var");
+ init_var();
+ //print_uvarchar();
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "select Item from tb1 where count = 1", ECPGt_EOIT,
+ ECPGt_uvarchar,&(uvarchar_var),(long)VAR_SIZE,(long)1,sizeof(struct uvarchar_1),
+ ECPGt_int,&(uvarchar_var_ind),(long)1,(long)1,sizeof(int), ECPGt_EORT);
+#line 205 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 205 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 205 "uvarchar.pgc"
+
+ print_uvarchar();
+ print_uvarchar_ind(uvarchar_var_ind);
+ init_var();
+
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "select Item from tb1 where count = 2", ECPGt_EOIT,
+ ECPGt_uvarchar,&(uvarchar_var),(long)VAR_SIZE,(long)1,sizeof(struct uvarchar_1),
+ ECPGt_int,&(uvarchar_var_ind),(long)1,(long)1,sizeof(int), ECPGt_EORT);
+#line 211 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 211 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 211 "uvarchar.pgc"
+
+ print_uvarchar();
+ print_uvarchar_ind(uvarchar_var_ind);
+ init_var();
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "select Item from tb1 where count = 3", ECPGt_EOIT,
+ ECPGt_uvarchar,&(uvarchar_var),(long)VAR_SIZE,(long)1,sizeof(struct uvarchar_1),
+ ECPGt_int,&(uvarchar_var_ind),(long)1,(long)1,sizeof(int), ECPGt_EORT);
+#line 216 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 216 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 216 "uvarchar.pgc"
+
+ print_uvarchar();
+ print_uvarchar_ind(uvarchar_var_ind);
+ init_var();
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "select Item from tb1 where count = 4", ECPGt_EOIT,
+ ECPGt_uvarchar,&(uvarchar_var),(long)VAR_SIZE,(long)1,sizeof(struct uvarchar_1),
+ ECPGt_int,&(uvarchar_var_ind),(long)1,(long)1,sizeof(int), ECPGt_EORT);
+#line 221 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 221 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 221 "uvarchar.pgc"
+
+ print_uvarchar();
+ print_uvarchar_ind(uvarchar_var_ind);
+ init_var();
+}
+
+
+//simple select using uvarchar
+void test_var_2()
+{
+ test("test_var_2 : simple select using uvarchar var");
+ init_var();
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "select Item from tb1 where count = 1", ECPGt_EOIT,
+ ECPGt_uvarchar,&(uvarchar_var),(long)VAR_SIZE,(long)1,sizeof(struct uvarchar_1),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
+#line 234 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 234 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 234 "uvarchar.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "select count from tb1 where Item = $1 ",
+ ECPGt_uvarchar,&(uvarchar_var),(long)VAR_SIZE,(long)1,sizeof(struct uvarchar_1),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT,
+ ECPGt_int,&(count),(long)1,(long)1,sizeof(int),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
+#line 235 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 235 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 235 "uvarchar.pgc"
+
+ printf ("count=%d for '太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'\n", count);
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "select Item from tb1 where count = 3", ECPGt_EOIT,
+ ECPGt_uvarchar,&(uvarchar_var),(long)VAR_SIZE,(long)1,sizeof(struct uvarchar_1),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
+#line 238 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 238 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 238 "uvarchar.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "select count from tb1 where Item = $1 ",
+ ECPGt_uvarchar,&(uvarchar_var),(long)VAR_SIZE,(long)1,sizeof(struct uvarchar_1),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT,
+ ECPGt_int,&(count),(long)1,(long)1,sizeof(int),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
+#line 239 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 239 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 239 "uvarchar.pgc"
+
+ printf ("count=%d for '世界杯每隔四年就会举行一次每次𠲖个球队'\n", count);
+}
+
+//simple update using uvarchar
+void test_var_3()
+{
+ test("test_var_3 : simple update using uvarchar");
+ init_var();
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "select Item from tb1 where count = 1", ECPGt_EOIT,
+ ECPGt_uvarchar,&(uvarchar_var),(long)VAR_SIZE,(long)1,sizeof(struct uvarchar_1),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
+#line 249 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 249 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 249 "uvarchar.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "update tb1 set Item = $1 where count = 2",
+ ECPGt_uvarchar,&(uvarchar_var),(long)VAR_SIZE,(long)1,sizeof(struct uvarchar_1),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT);
+#line 250 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 250 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 250 "uvarchar.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "update tb1 set Item = $1 where count = 3",
+ ECPGt_uvarchar,&(uvarchar_var),(long)VAR_SIZE,(long)1,sizeof(struct uvarchar_1),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT);
+#line 251 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 251 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 251 "uvarchar.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "select count ( * ) from tb1 where Item = '太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'", ECPGt_EOIT,
+ ECPGt_int,&(count),(long)1,(long)1,sizeof(int),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
+#line 252 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 252 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 252 "uvarchar.pgc"
+
+ printf ("found %d rows for Item='太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'\n", count);
+
+ init_table_value();
+}
+
+//simple delete using uvarchar var
+void test_var_4()
+{
+ test("test_var_4 : simple delete using uvarchar var");
+ init_var();
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "select Item from tb1 where count = 1", ECPGt_EOIT,
+ ECPGt_uvarchar,&(uvarchar_var),(long)VAR_SIZE,(long)1,sizeof(struct uvarchar_1),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
+#line 264 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 264 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 264 "uvarchar.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "delete from tb1 where Item = $1 ",
+ ECPGt_uvarchar,&(uvarchar_var),(long)VAR_SIZE,(long)1,sizeof(struct uvarchar_1),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT);
+#line 265 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 265 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 265 "uvarchar.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "select count ( * ) from tb1 where Item = '太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'", ECPGt_EOIT,
+ ECPGt_int,&(count),(long)1,(long)1,sizeof(int),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
+#line 266 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 266 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 266 "uvarchar.pgc"
+
+ printf ("found %d rows for Item='太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'\n", count);
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "select Item from tb1 where count = 3", ECPGt_EOIT,
+ ECPGt_uvarchar,&(uvarchar_var),(long)VAR_SIZE,(long)1,sizeof(struct uvarchar_1),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
+#line 269 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 269 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 269 "uvarchar.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "delete from tb1 where Item = $1 ",
+ ECPGt_uvarchar,&(uvarchar_var),(long)VAR_SIZE,(long)1,sizeof(struct uvarchar_1),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT);
+#line 270 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 270 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 270 "uvarchar.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "select count ( * ) from tb1 where Item = '世界杯每隔四年就会举行一次每次𠲖个球队'", ECPGt_EOIT,
+ ECPGt_int,&(count),(long)1,(long)1,sizeof(int),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
+#line 271 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 271 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 271 "uvarchar.pgc"
+
+ printf ("found %d rows for Item='世界杯每隔四年就会举行一次每次𠲖个球队'\n", count);
+
+ init_table_value();
+}
+
+//simple insert using uvarchar var
+void test_var_5()
+{
+ test("test_var_5 : simple insert using uvarchar");
+ init_var();
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "select Item from tb1 where count = 1", ECPGt_EOIT,
+ ECPGt_uvarchar,&(uvarchar_var),(long)VAR_SIZE,(long)1,sizeof(struct uvarchar_1),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
+#line 283 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 283 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 283 "uvarchar.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "insert into tb1 values ( $1 , 11 )",
+ ECPGt_uvarchar,&(uvarchar_var),(long)VAR_SIZE,(long)1,sizeof(struct uvarchar_1),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT);
+#line 284 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 284 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 284 "uvarchar.pgc"
+
+
+ init_var();
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "select Item from tb1 where count = 3", ECPGt_EOIT,
+ ECPGt_uvarchar,&(uvarchar_var),(long)VAR_SIZE,(long)1,sizeof(struct uvarchar_1),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
+#line 287 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 287 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 287 "uvarchar.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "insert into tb1 values ( $1 , 13 )",
+ ECPGt_uvarchar,&(uvarchar_var),(long)VAR_SIZE,(long)1,sizeof(struct uvarchar_1),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT);
+#line 288 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 288 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 288 "uvarchar.pgc"
+
+
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "select count ( * ) from tb1 where Item = '太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'", ECPGt_EOIT,
+ ECPGt_int,&(count),(long)1,(long)1,sizeof(int),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
+#line 291 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 291 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 291 "uvarchar.pgc"
+
+ printf ("found %d rows for Item='太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'\n", count);
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "select count ( * ) from tb1 where Item = '世界杯每隔四年就会举行一次每次𠲖个球队'", ECPGt_EOIT,
+ ECPGt_int,&(count),(long)1,(long)1,sizeof(int),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
+#line 294 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 294 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 294 "uvarchar.pgc"
+
+ printf ("found %d rows for Item='世界杯每隔四年就会举行一次每次𠲖个球队'\n", count);
+
+ init_table_value();
+}
+
+//prepared select into uvarchar var
+void test_var_6()
+{
+ test("test_var_6 : prepared select into uvarchar var");
+ init_var();
+
+ { ECPGprepare(__LINE__, NULL, 0, "stmt", "SELECT Item FROM tb1 WHERE Count=?");
+#line 306 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 306 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 306 "uvarchar.pgc"
+
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_execute, "stmt",
+ ECPGt_const,"1",(long)1,(long)1,strlen("1"),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT,
+ ECPGt_uvarchar,&(uvarchar_var),(long)VAR_SIZE,(long)1,sizeof(struct uvarchar_1),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
+#line 308 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 308 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 308 "uvarchar.pgc"
+
+ print_uvarchar();
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_execute, "stmt",
+ ECPGt_const,"3",(long)1,(long)1,strlen("3"),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT,
+ ECPGt_uvarchar,&(uvarchar_var),(long)VAR_SIZE,(long)1,sizeof(struct uvarchar_1),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
+#line 311 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 311 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 311 "uvarchar.pgc"
+
+ print_uvarchar();
+
+ { ECPGdeallocate(__LINE__, 0, NULL, "stmt");
+#line 314 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 314 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 314 "uvarchar.pgc"
+
+}
+
+//prepared select using uvarchar var
+void test_var_7()
+{
+ test("test_var_7 : prepared select using uvarchar var");
+ init_var();
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "select Item from tb1 where count = 3", ECPGt_EOIT,
+ ECPGt_uvarchar,&(uvarchar_var),(long)VAR_SIZE,(long)1,sizeof(struct uvarchar_1),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
+#line 323 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 323 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 323 "uvarchar.pgc"
+
+
+ { ECPGprepare(__LINE__, NULL, 0, "stmt", "SELECT Count FROM tb1 WHERE Item=?");
+#line 325 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 325 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 325 "uvarchar.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_execute, "stmt",
+ ECPGt_uvarchar,&(uvarchar_var),(long)VAR_SIZE,(long)1,sizeof(struct uvarchar_1),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT,
+ ECPGt_int,&(count),(long)1,(long)1,sizeof(int),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
+#line 326 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 326 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 326 "uvarchar.pgc"
+
+
+ printf ("count=%d for Item='世界杯每隔四年就会举行一次每次𠲖个球队'\n", count);
+ { ECPGdeallocate(__LINE__, 0, NULL, "stmt");
+#line 329 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 329 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 329 "uvarchar.pgc"
+
+}
+
+//prepared update using uvarchar var
+void test_var_8()
+{
+ test("test_var_8 : prepared update using uvarchar var");
+ init_var();
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "select Item from tb1 where count = 3", ECPGt_EOIT,
+ ECPGt_uvarchar,&(uvarchar_var),(long)VAR_SIZE,(long)1,sizeof(struct uvarchar_1),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
+#line 338 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 338 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 338 "uvarchar.pgc"
+
+
+ { ECPGprepare(__LINE__, NULL, 0, "stmt", "UPDATE tb1 SET Item=? WHERE Count=?");
+#line 340 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 340 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 340 "uvarchar.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_execute, "stmt",
+ ECPGt_uvarchar,&(uvarchar_var),(long)VAR_SIZE,(long)1,sizeof(struct uvarchar_1),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L,
+ ECPGt_const,"1",(long)1,(long)1,strlen("1"),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT);
+#line 341 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 341 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 341 "uvarchar.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_execute, "stmt",
+ ECPGt_uvarchar,&(uvarchar_var),(long)VAR_SIZE,(long)1,sizeof(struct uvarchar_1),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L,
+ ECPGt_const,"2",(long)1,(long)1,strlen("2"),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT);
+#line 342 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 342 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 342 "uvarchar.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "select count ( * ) from tb1 where Item = '世界杯每隔四年就会举行一次每次𠲖个球队'", ECPGt_EOIT,
+ ECPGt_int,&(count),(long)1,(long)1,sizeof(int),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
+#line 343 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 343 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 343 "uvarchar.pgc"
+
+
+ printf ("found %d rows for Item='世界杯每隔四年就会举行一次每次𠲖个球队'\n", count);
+ { ECPGdeallocate(__LINE__, 0, NULL, "stmt");
+#line 346 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 346 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 346 "uvarchar.pgc"
+
+
+ init_table_value();
+}
+
+//prepared delete using uvarchar var
+void test_var_9()
+{
+ test("test_var_9 : prepared delete using uvarchar var");
+ init_var();
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "select Item from tb1 where count = 3", ECPGt_EOIT,
+ ECPGt_uvarchar,&(uvarchar_var),(long)VAR_SIZE,(long)1,sizeof(struct uvarchar_1),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
+#line 357 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 357 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 357 "uvarchar.pgc"
+
+
+ { ECPGprepare(__LINE__, NULL, 0, "stmt", "DELETE FROM tb1 WHERE Item=?");
+#line 359 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 359 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 359 "uvarchar.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_execute, "stmt",
+ ECPGt_uvarchar,&(uvarchar_var),(long)VAR_SIZE,(long)1,sizeof(struct uvarchar_1),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT);
+#line 360 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 360 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 360 "uvarchar.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "select count ( * ) from tb1 where Item = '世界杯每隔四年就会举行一次每次𠲖个球队'", ECPGt_EOIT,
+ ECPGt_int,&(count),(long)1,(long)1,sizeof(int),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
+#line 361 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 361 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 361 "uvarchar.pgc"
+
+
+ printf ("found %d rows for Item='世界杯每隔四年就会举行一次每次𠲖个球队'\n", count);
+ { ECPGdeallocate(__LINE__, 0, NULL, "stmt");
+#line 364 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 364 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 364 "uvarchar.pgc"
+
+
+ init_table_value();
+}
+
+//prepared insert using uvarchar var
+void test_var_10()
+{
+ test("test_var_10 : prepared insert using uvarchar var");
+ init_var();
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "select Item from tb1 where count = 3", ECPGt_EOIT,
+ ECPGt_uvarchar,&(uvarchar_var),(long)VAR_SIZE,(long)1,sizeof(struct uvarchar_1),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
+#line 375 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 375 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 375 "uvarchar.pgc"
+
+
+ { ECPGprepare(__LINE__, NULL, 0, "stmt", "INSERT INTO tb1 values (?, 13)");
+#line 377 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 377 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 377 "uvarchar.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_execute, "stmt",
+ ECPGt_uvarchar,&(uvarchar_var),(long)VAR_SIZE,(long)1,sizeof(struct uvarchar_1),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT);
+#line 378 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 378 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 378 "uvarchar.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "select count ( * ) from tb1 where Item = '世界杯每隔四年就会举行一次每次𠲖个球队'", ECPGt_EOIT,
+ ECPGt_int,&(count),(long)1,(long)1,sizeof(int),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
+#line 379 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 379 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 379 "uvarchar.pgc"
+
+
+ printf ("found %d rows for Item='世界杯每隔四年就会举行一次每次𠲖个球队'\n", count);
+ { ECPGdeallocate(__LINE__, 0, NULL, "stmt");
+#line 382 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 382 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 382 "uvarchar.pgc"
+
+
+ init_table_value();
+}
+
+//Open cursor using uvarchar var
+void test_var_11()
+{
+ test("test_var_11 : Open cursor using uvarchar var");
+ init_var();
+
+ { ECPGsetcommit(__LINE__, "off", NULL);
+#line 393 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 393 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 393 "uvarchar.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "select Item from tb1 where count = 3", ECPGt_EOIT,
+ ECPGt_uvarchar,&(uvarchar_var),(long)VAR_SIZE,(long)1,sizeof(struct uvarchar_1),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
+#line 394 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 394 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 394 "uvarchar.pgc"
+
+
+ { ECPGprepare(__LINE__, NULL, 0, "stmt", "SELECT Count FROM tb1 WHERE Item=?");
+#line 396 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 396 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 396 "uvarchar.pgc"
+
+ /* declare cursor_var_11 cursor for $1 */
+#line 397 "uvarchar.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "declare cursor_var_11 cursor for $1",
+ ECPGt_char_variable,(ECPGprepared_statement(NULL, "stmt", __LINE__)),(long)1,(long)1,(1)*sizeof(char),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L,
+ ECPGt_uvarchar,&(uvarchar_var),(long)VAR_SIZE,(long)1,sizeof(struct uvarchar_1),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT);
+#line 398 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 398 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 398 "uvarchar.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "fetch cursor_var_11", ECPGt_EOIT,
+ ECPGt_int,&(count),(long)1,(long)1,sizeof(int),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
+#line 399 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 399 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 399 "uvarchar.pgc"
+
+ printf ("count=%d for Item='世界杯每隔四年就会举行一次每次𠲖个球队'\n", count);
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "close cursor_var_11", ECPGt_EOIT, ECPGt_EORT);
+#line 401 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 401 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 401 "uvarchar.pgc"
+
+ { ECPGdeallocate(__LINE__, 0, NULL, "stmt");
+#line 402 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 402 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 402 "uvarchar.pgc"
+
+ { ECPGsetcommit(__LINE__, "on", NULL);
+#line 403 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 403 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 403 "uvarchar.pgc"
+
+}
+
+//Fecth cursor into uvarchar var
+void test_var_12()
+{
+ test("test_var_12 : Fecth cursor into uvarchar var");
+ init_var();
+
+ { ECPGsetcommit(__LINE__, "off", NULL);
+#line 412 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 412 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 412 "uvarchar.pgc"
+
+ { ECPGprepare(__LINE__, NULL, 0, "stmt", "SELECT Item FROM tb1 WHERE Count=1");
+#line 413 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 413 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 413 "uvarchar.pgc"
+
+ /* declare cursor_var_12 cursor for $1 */
+#line 414 "uvarchar.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "declare cursor_var_12 cursor for $1",
+ ECPGt_char_variable,(ECPGprepared_statement(NULL, "stmt", __LINE__)),(long)1,(long)1,(1)*sizeof(char),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT);
+#line 415 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 415 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 415 "uvarchar.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "fetch cursor_var_12", ECPGt_EOIT,
+ ECPGt_uvarchar,&(uvarchar_var),(long)VAR_SIZE,(long)1,sizeof(struct uvarchar_1),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
+#line 416 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 416 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 416 "uvarchar.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "close cursor_var_12", ECPGt_EOIT, ECPGt_EORT);
+#line 417 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 417 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 417 "uvarchar.pgc"
+
+
+ print_uvarchar();
+
+ { ECPGdeallocate(__LINE__, 0, NULL, "stmt");
+#line 421 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 421 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 421 "uvarchar.pgc"
+
+ { ECPGsetcommit(__LINE__, "on", NULL);
+#line 422 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 422 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 422 "uvarchar.pgc"
+
+}
+
+//simple insert using uvarchar with L string inited
+void test_var_13()
+{
+/* exec sql begin declare section */
+
+
+#line 429 "uvarchar.pgc"
+ struct uvarchar_3 { int len; utext arr[ VAR_SIZE ]; } uvarchar_local_var ;
+/* exec sql end declare section */
+#line 430 "uvarchar.pgc"
+
+
+ test("test_var_13 : simple insert using uvarchar with L string inited");
+ init_var();
+
+ memset((char*)&uvarchar_local_var,0,sizeof(uvarchar_local_var));
+
+ memcpy((char*)uvarchar_local_var.arr, L"太𠮷𠜱平洋𠱓大西洋印度洋北冰洋", sizeof(L"太𠮷𠜱平洋𠱓大西洋印度洋北冰洋"));
+ uvarchar_local_var.len = sizeof(L"太𠮷𠜱平洋𠱓大西洋印度洋北冰洋")/4;
+
+ printf("uvarchar_local_var.len = %d\n",uvarchar_local_var.len);
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "insert into tb1 values ( $1 , 16 )",
+ ECPGt_uvarchar,&(uvarchar_local_var),(long)VAR_SIZE,(long)1,sizeof(struct uvarchar_3),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT);
+#line 442 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 442 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 442 "uvarchar.pgc"
+
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "select count ( * ) from tb1 where Item = '太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'", ECPGt_EOIT,
+ ECPGt_int,&(count),(long)1,(long)1,sizeof(int),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
+#line 444 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 444 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 444 "uvarchar.pgc"
+
+ printf ("found %d rows for Item='太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'\n", count);
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "select Item from tb1 where count = 16", ECPGt_EOIT,
+ ECPGt_uvarchar,&(uvarchar_var),(long)VAR_SIZE,(long)1,sizeof(struct uvarchar_1),
+ ECPGt_int,&(uvarchar_var_ind),(long)1,(long)1,sizeof(int), ECPGt_EORT);
+#line 447 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 447 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 447 "uvarchar.pgc"
+
+ print_uvarchar();
+ print_uvarchar_ind(uvarchar_var_ind);
+
+ init_table_value();
+}
+
+//Open cursor using utext var directly in WHERE Clause
+void test_var_14()
+{
+/* exec sql begin declare section */
+
+
+#line 458 "uvarchar.pgc"
+ struct uvarchar_4 { int len; utext arr[ 20 + 1 ]; } uvarchar_local_var ;
+/* exec sql end declare section */
+#line 459 "uvarchar.pgc"
+
+ memset((char*)&uvarchar_local_var,0x00,sizeof(uvarchar_local_var));
+
+ test("test_var_14 : Open cursor using utext var directly in WHERE Clause");
+ init_var();
+
+ { ECPGsetcommit(__LINE__, "off", NULL);
+#line 465 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 465 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 465 "uvarchar.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "select Item from tb1 where count = 3", ECPGt_EOIT,
+ ECPGt_uvarchar,&(uvarchar_local_var),(long)20 + 1,(long)1,sizeof(struct uvarchar_4),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
+#line 466 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 466 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 466 "uvarchar.pgc"
+
+ ECPGset_var( 0, &( uvarchar_local_var ), __LINE__);\
+ /* declare cursor_var_14 cursor for select count from tb1 where Item = $1 */
+#line 467 "uvarchar.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "declare cursor_var_14 cursor for select count from tb1 where Item = $1 ",
+ ECPGt_uvarchar,&(uvarchar_local_var),(long)20 + 1,(long)1,sizeof(struct uvarchar_4),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT);
+#line 468 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 468 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 468 "uvarchar.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "fetch cursor_var_14", ECPGt_EOIT,
+ ECPGt_int,&(count),(long)1,(long)1,sizeof(int),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
+#line 469 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 469 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 469 "uvarchar.pgc"
+
+ printf ("count=%d for Item='世界杯每隔四年就会举行一次每次𠲖个球队'\n", count);
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "close cursor_var_14", ECPGt_EOIT, ECPGt_EORT);
+#line 472 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 472 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 472 "uvarchar.pgc"
+
+
+ { ECPGsetcommit(__LINE__, "on", NULL);
+#line 474 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 474 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 474 "uvarchar.pgc"
+
+}
+
+//Test uvarchar_var working with NULL without indicator
+void test_var_15()
+{
+/* exec sql begin declare section */
+
+
+#line 481 "uvarchar.pgc"
+ struct uvarchar_5 { int len; utext arr[ 20 + 1 ]; } uvarchar_local_var ;
+/* exec sql end declare section */
+#line 482 "uvarchar.pgc"
+
+ test("test_var_15 : Test uvarchar_var working with NULL without indicator");
+
+ memset((char*)&uvarchar_local_var,'a',sizeof(uvarchar_local_var));
+ uvarchar_local_var.len=10;
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "select Item from tb1 where count = 8", ECPGt_EOIT,
+ ECPGt_uvarchar,&(uvarchar_local_var),(long)20 + 1,(long)1,sizeof(struct uvarchar_5),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
+#line 487 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 487 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 487 "uvarchar.pgc"
+
+ print_local_uvarchar(uvarchar_local_var.arr,20);
+
+
+ memset((char*)&uvarchar_local_var,0x00,sizeof(uvarchar_local_var));
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "insert into tb1 values ( $1 , 18 )",
+ ECPGt_uvarchar,&(uvarchar_local_var),(long)20 + 1,(long)1,sizeof(struct uvarchar_5),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT);
+#line 492 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 492 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 492 "uvarchar.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "insert into tb1 values ( $1 , 19 )",
+ ECPGt_uvarchar,&(uvarchar_local_var),(long)20 + 1,(long)1,sizeof(struct uvarchar_5),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT);
+#line 493 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 493 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 493 "uvarchar.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "insert into tb1 values ( $1 , 20 )",
+ ECPGt_uvarchar,&(uvarchar_local_var),(long)20 + 1,(long)1,sizeof(struct uvarchar_5),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT);
+#line 494 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 494 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 494 "uvarchar.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "select count ( * ) from tb1 where Item is null", ECPGt_EOIT,
+ ECPGt_int,&(count),(long)1,(long)1,sizeof(int),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
+#line 495 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 495 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 495 "uvarchar.pgc"
+
+ printf ("found %d rows for Item being NULL\n", count);
+
+ init_table_value();
+}
+
+//uvarchar_var working with NULL with indicator
+void test_var_16()
+{
+/* exec sql begin declare section */
+
+
+
+#line 505 "uvarchar.pgc"
+ struct uvarchar_6 { int len; utext arr[ 20 + 1 ]; } uvarchar_local_var ;
+
+#line 506 "uvarchar.pgc"
+ int uvarchar_var_ind = - 1 ;
+/* exec sql end declare section */
+#line 507 "uvarchar.pgc"
+
+ test("test_var_16 : Test uvarchar_var working with NULL with indicator");
+
+ memset((char*)&uvarchar_local_var,'a',sizeof(uvarchar_local_var));
+ uvarchar_local_var.len=0;
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "select Item from tb1 where count = 8", ECPGt_EOIT,
+ ECPGt_uvarchar,&(uvarchar_local_var),(long)20 + 1,(long)1,sizeof(struct uvarchar_6),
+ ECPGt_int,&(uvarchar_var_ind),(long)1,(long)1,sizeof(int), ECPGt_EORT);
+#line 512 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 512 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 512 "uvarchar.pgc"
+
+ print_local_uvarchar(uvarchar_local_var.arr,20);
+ print_uvarchar_ind(uvarchar_var_ind);
+
+ memset((char*)&uvarchar_local_var,0x00,sizeof(uvarchar_local_var));
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "insert into tb1 values ( $1 , 18 )",
+ ECPGt_uvarchar,&(uvarchar_local_var),(long)20 + 1,(long)1,sizeof(struct uvarchar_6),
+ ECPGt_int,&(uvarchar_var_ind),(long)1,(long)1,sizeof(int), ECPGt_EOIT, ECPGt_EORT);
+#line 517 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 517 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 517 "uvarchar.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "insert into tb1 values ( $1 , 19 )",
+ ECPGt_uvarchar,&(uvarchar_local_var),(long)20 + 1,(long)1,sizeof(struct uvarchar_6),
+ ECPGt_int,&(uvarchar_var_ind),(long)1,(long)1,sizeof(int), ECPGt_EOIT, ECPGt_EORT);
+#line 518 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 518 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 518 "uvarchar.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "insert into tb1 values ( $1 , 20 )",
+ ECPGt_uvarchar,&(uvarchar_local_var),(long)20 + 1,(long)1,sizeof(struct uvarchar_6),
+ ECPGt_int,&(uvarchar_var_ind),(long)1,(long)1,sizeof(int), ECPGt_EOIT, ECPGt_EORT);
+#line 519 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 519 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 519 "uvarchar.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "select count ( * ) from tb1 where Item is null", ECPGt_EOIT,
+ ECPGt_int,&(count),(long)1,(long)1,sizeof(int),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
+#line 520 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 520 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 520 "uvarchar.pgc"
+
+ printf ("found %d rows for Item being NULL\n", count);
+
+ init_table_value();
+}
+
+
+//simple select into uvarchar array
+void test_array_1()
+{
+ test("test_array_1 : simple select into uvarchar array");
+ init_var();
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "select Item from tb1 where count <= 3", ECPGt_EOIT,
+ ECPGt_uvarchar,(uvarchar_array),(long)VAR_SIZE,(long)ARRAY_SIZE,sizeof(struct uvarchar_2),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
+#line 533 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 533 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 533 "uvarchar.pgc"
+
+
+ print_array();
+ init_var();
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "select Item from tb1 where count = 1", ECPGt_EOIT,
+ ECPGt_uvarchar,&(uvarchar_array[0]),(long)VAR_SIZE,(long)1,sizeof(struct uvarchar_2),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
+#line 538 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 538 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 538 "uvarchar.pgc"
+
+ print_array();
+ init_var();
+}
+
+
+//simple select using uvarchar array
+void test_array_2()
+{
+ test("test_array_2 : simple select using uvarchar array");
+ init_var();
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "select Item from tb1 where count <= 3", ECPGt_EOIT,
+ ECPGt_uvarchar,(uvarchar_array),(long)VAR_SIZE,(long)ARRAY_SIZE,sizeof(struct uvarchar_2),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
+#line 550 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 550 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 550 "uvarchar.pgc"
+
+
+ count = 0;
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "select count from tb1 where Item = $1 ",
+ ECPGt_uvarchar,&(uvarchar_array[0]),(long)VAR_SIZE,(long)1,sizeof(struct uvarchar_2),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT,
+ ECPGt_int,&(count),(long)1,(long)1,sizeof(int),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
+#line 553 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 553 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 553 "uvarchar.pgc"
+
+ printf ("count=%d for '太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'\n", count);
+
+ count = 0;
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "select count from tb1 where Item = $1 ",
+ ECPGt_uvarchar,&(uvarchar_array[2]),(long)VAR_SIZE,(long)1,sizeof(struct uvarchar_2),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT,
+ ECPGt_int,&(count),(long)1,(long)1,sizeof(int),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
+#line 557 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 557 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 557 "uvarchar.pgc"
+
+ printf ("count=%d for '世界杯每隔四年就会举行一次每次𠲖个球队'\n", count);
+}
+
+//simple update using uvarchar array
+void test_array_3()
+{
+ test("test_array_3 : simple update using uvarchar array");
+ init_var();
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "select Item from tb1 where count <= 3", ECPGt_EOIT,
+ ECPGt_uvarchar,(uvarchar_array),(long)VAR_SIZE,(long)ARRAY_SIZE,sizeof(struct uvarchar_2),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
+#line 567 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 567 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 567 "uvarchar.pgc"
+
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "update tb1 set Item = $1 where count = 1",
+ ECPGt_uvarchar,&(uvarchar_array[2]),(long)VAR_SIZE,(long)1,sizeof(struct uvarchar_2),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT);
+#line 569 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 569 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 569 "uvarchar.pgc"
+
+
+ count = 0;
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "select count ( * ) from tb1 where Item = '太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'", ECPGt_EOIT,
+ ECPGt_int,&(count),(long)1,(long)1,sizeof(int),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
+#line 572 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 572 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 572 "uvarchar.pgc"
+
+ printf ("find %d rows for Item='太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'\n", count);
+
+ count = 0;
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "select count ( * ) from tb1 where Item = '世界杯每隔四年就会举行一次每次𠲖个球队'", ECPGt_EOIT,
+ ECPGt_int,&(count),(long)1,(long)1,sizeof(int),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
+#line 576 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 576 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 576 "uvarchar.pgc"
+
+ printf ("find %d rows for Item='世界杯每隔四年就会举行一次每次𠲖个球队'\n", count);
+
+ init_table_value();
+}
+
+//simple delete using uvarchar array
+void test_array_4()
+{
+ test("test_array_4 : simple delete using uvarchar array");
+ init_var();
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "select Item from tb1 where count <= 3", ECPGt_EOIT,
+ ECPGt_uvarchar,(uvarchar_array),(long)VAR_SIZE,(long)ARRAY_SIZE,sizeof(struct uvarchar_2),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
+#line 588 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 588 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 588 "uvarchar.pgc"
+
+
+ count = 100;
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "delete from tb1 where Item = $1 ",
+ ECPGt_uvarchar,&(uvarchar_array[0]),(long)VAR_SIZE,(long)1,sizeof(struct uvarchar_2),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT);
+#line 591 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 591 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 591 "uvarchar.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "select count ( * ) from tb1 where Item = '太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'", ECPGt_EOIT,
+ ECPGt_int,&(count),(long)1,(long)1,sizeof(int),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
+#line 592 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 592 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 592 "uvarchar.pgc"
+
+ printf ("found %d rows for Item='太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'\n", count);
+
+ count = 100;
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "delete from tb1 where Item = $1 ",
+ ECPGt_uvarchar,&(uvarchar_array[2]),(long)VAR_SIZE,(long)1,sizeof(struct uvarchar_2),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT);
+#line 596 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 596 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 596 "uvarchar.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "select count ( * ) from tb1 where Item = '世界杯每隔四年就会举行一次每次𠲖个球队'", ECPGt_EOIT,
+ ECPGt_int,&(count),(long)1,(long)1,sizeof(int),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
+#line 597 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 597 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 597 "uvarchar.pgc"
+
+ printf ("found %d rows for Item='世界杯每隔四年就会举行一次每次𠲖个球队'\n", count);
+
+ init_table_value();
+}
+
+//simple insert using uvarchar array
+void test_array_5()
+{
+ test("test_array_5 : simple insert using uvarchar array");
+ init_var();
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "select Item from tb1 where count <= 3", ECPGt_EOIT,
+ ECPGt_uvarchar,(uvarchar_array),(long)VAR_SIZE,(long)ARRAY_SIZE,sizeof(struct uvarchar_2),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
+#line 609 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 609 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 609 "uvarchar.pgc"
+
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "insert into tb1 values ( $1 , 11 )",
+ ECPGt_uvarchar,&(uvarchar_array[0]),(long)VAR_SIZE,(long)1,sizeof(struct uvarchar_2),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT);
+#line 611 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 611 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 611 "uvarchar.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "select count ( * ) from tb1 where Item = '太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'", ECPGt_EOIT,
+ ECPGt_int,&(count),(long)1,(long)1,sizeof(int),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
+#line 612 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 612 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 612 "uvarchar.pgc"
+
+ printf ("found %d rows for Item='太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'\n", count);
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "insert into tb1 values ( $1 , 13 )",
+ ECPGt_uvarchar,&(uvarchar_array[2]),(long)VAR_SIZE,(long)1,sizeof(struct uvarchar_2),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT);
+#line 615 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 615 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 615 "uvarchar.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "select count ( * ) from tb1 where Item = '世界杯每隔四年就会举行一次每次𠲖个球队'", ECPGt_EOIT,
+ ECPGt_int,&(count),(long)1,(long)1,sizeof(int),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
+#line 616 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 616 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 616 "uvarchar.pgc"
+
+ printf ("found %d rows for Item='世界杯每隔四年就会举行一次每次𠲖个球队'\n", count);
+
+ init_table_value();
+}
+
+//prepared select into uvarchar array
+void test_array_6()
+{
+ test("test_array_6 : prepared select into uvarchar array");
+ init_var();
+
+ { ECPGprepare(__LINE__, NULL, 0, "stmt", "SELECT Item FROM tb1 WHERE Count<=?");
+#line 628 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 628 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 628 "uvarchar.pgc"
+
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_execute, "stmt",
+ ECPGt_const,"3",(long)1,(long)1,strlen("3"),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT,
+ ECPGt_uvarchar,(uvarchar_array),(long)VAR_SIZE,(long)ARRAY_SIZE,sizeof(struct uvarchar_2),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
+#line 630 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 630 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 630 "uvarchar.pgc"
+
+
+ print_array();
+
+ { ECPGdeallocate(__LINE__, 0, NULL, "stmt");
+#line 634 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 634 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 634 "uvarchar.pgc"
+
+}
+
+//prepared select using uvarchar array
+void test_array_7()
+{
+ test("test_array_7 : prepared select using uvarchar array");
+ init_var();
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "select Item from tb1 where count <= 3", ECPGt_EOIT,
+ ECPGt_uvarchar,(uvarchar_array),(long)VAR_SIZE,(long)ARRAY_SIZE,sizeof(struct uvarchar_2),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
+#line 642 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 642 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 642 "uvarchar.pgc"
+
+
+ count = 0;
+ { ECPGprepare(__LINE__, NULL, 0, "stmt", "SELECT Count FROM tb1 WHERE Item=?");
+#line 645 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 645 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 645 "uvarchar.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_execute, "stmt",
+ ECPGt_uvarchar,&(uvarchar_array[0]),(long)VAR_SIZE,(long)1,sizeof(struct uvarchar_2),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT,
+ ECPGt_int,&(count),(long)1,(long)1,sizeof(int),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
+#line 646 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 646 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 646 "uvarchar.pgc"
+
+
+ printf ("count=%d for Item='世界杯每隔四年就会举行一次每次𠲖个球队'\n", count);
+ { ECPGdeallocate(__LINE__, 0, NULL, "stmt");
+#line 649 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 649 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 649 "uvarchar.pgc"
+
+}
+
+//prepared update using uvarchar array
+void test_array_8()
+{
+ test("test_array_8 : prepared update using uvarchar array");
+ init_var();
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "select Item from tb1 where count <= 3", ECPGt_EOIT,
+ ECPGt_uvarchar,(uvarchar_array),(long)VAR_SIZE,(long)ARRAY_SIZE,sizeof(struct uvarchar_2),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
+#line 657 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 657 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 657 "uvarchar.pgc"
+
+
+ { ECPGprepare(__LINE__, NULL, 0, "stmt", "UPDATE tb1 SET Item=? WHERE Count=?");
+#line 659 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 659 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 659 "uvarchar.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_execute, "stmt",
+ ECPGt_uvarchar,&(uvarchar_array[0]),(long)VAR_SIZE,(long)1,sizeof(struct uvarchar_2),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L,
+ ECPGt_const,"1",(long)1,(long)1,strlen("1"),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT);
+#line 660 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 660 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 660 "uvarchar.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_execute, "stmt",
+ ECPGt_uvarchar,&(uvarchar_array[0]),(long)VAR_SIZE,(long)1,sizeof(struct uvarchar_2),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L,
+ ECPGt_const,"2",(long)1,(long)1,strlen("2"),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT);
+#line 661 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 661 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 661 "uvarchar.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "select count ( * ) from tb1 where Item = '太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'", ECPGt_EOIT,
+ ECPGt_int,&(count),(long)1,(long)1,sizeof(int),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
+#line 662 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 662 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 662 "uvarchar.pgc"
+
+
+ printf ("found %d rows for Item='太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'\n", count);
+ { ECPGdeallocate(__LINE__, 0, NULL, "stmt");
+#line 665 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 665 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 665 "uvarchar.pgc"
+
+
+ init_table_value();
+}
+
+//prepared delete using uvarchar array
+void test_array_9()
+{
+ test("test_array_9 : prepared delete using uvarchar array");
+ init_var();
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "select Item from tb1 where count <= 3", ECPGt_EOIT,
+ ECPGt_uvarchar,(uvarchar_array),(long)VAR_SIZE,(long)ARRAY_SIZE,sizeof(struct uvarchar_2),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
+#line 675 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 675 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 675 "uvarchar.pgc"
+
+
+ count = 0;
+ { ECPGprepare(__LINE__, NULL, 0, "stmt", "DELETE FROM tb1 WHERE Item=?");
+#line 678 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 678 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 678 "uvarchar.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_execute, "stmt",
+ ECPGt_uvarchar,&(uvarchar_array[0]),(long)VAR_SIZE,(long)1,sizeof(struct uvarchar_2),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT);
+#line 679 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 679 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 679 "uvarchar.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "select count ( * ) from tb1 where Item = '太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'", ECPGt_EOIT,
+ ECPGt_int,&(count),(long)1,(long)1,sizeof(int),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
+#line 680 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 680 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 680 "uvarchar.pgc"
+
+
+ printf ("found %d rows for Item='太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'\n", count);
+ { ECPGdeallocate(__LINE__, 0, NULL, "stmt");
+#line 683 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 683 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 683 "uvarchar.pgc"
+
+
+ init_table_value();
+}
+
+//prepared insert using uvarchar array
+void test_array_10()
+{
+ test("test_array_10 : prepared insert using uvarchar array");
+ init_var();
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "select Item from tb1 where count <= 3", ECPGt_EOIT,
+ ECPGt_uvarchar,(uvarchar_array),(long)VAR_SIZE,(long)ARRAY_SIZE,sizeof(struct uvarchar_2),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
+#line 693 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 693 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 693 "uvarchar.pgc"
+
+
+ { ECPGprepare(__LINE__, NULL, 0, "stmt", "INSERT INTO tb1 values (?, ?)");
+#line 695 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 695 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 695 "uvarchar.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_execute, "stmt",
+ ECPGt_uvarchar,&(uvarchar_array[2]),(long)VAR_SIZE,(long)1,sizeof(struct uvarchar_2),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L,
+ ECPGt_const,"13",(long)2,(long)1,strlen("13"),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT);
+#line 696 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 696 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 696 "uvarchar.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_execute, "stmt",
+ ECPGt_uvarchar,&(uvarchar_array[2]),(long)VAR_SIZE,(long)1,sizeof(struct uvarchar_2),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L,
+ ECPGt_const,"15",(long)2,(long)1,strlen("15"),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT);
+#line 697 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 697 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 697 "uvarchar.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "select count ( * ) from tb1 where Item = '世界杯每隔四年就会举行一次每次𠲖个球队'", ECPGt_EOIT,
+ ECPGt_int,&(count),(long)1,(long)1,sizeof(int),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
+#line 698 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 698 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 698 "uvarchar.pgc"
+
+
+ printf ("found %d rows for Item='世界杯每隔四年就会举行一次每次𠲖个球队'\n", count);
+ { ECPGdeallocate(__LINE__, 0, NULL, "stmt");
+#line 701 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 701 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 701 "uvarchar.pgc"
+
+
+ init_table_value();
+}
+
+//Open cursor using uvarchar array
+void test_array_11()
+{
+ test("test_array_11 : Open cursor using uvarchar array");
+ init_var();
+
+ { ECPGsetcommit(__LINE__, "off", NULL);
+#line 712 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 712 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 712 "uvarchar.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "select Item from tb1 where count <= 3", ECPGt_EOIT,
+ ECPGt_uvarchar,(uvarchar_array),(long)VAR_SIZE,(long)ARRAY_SIZE,sizeof(struct uvarchar_2),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
+#line 713 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 713 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 713 "uvarchar.pgc"
+
+
+ { ECPGprepare(__LINE__, NULL, 0, "stmt", "SELECT Count FROM tb1 WHERE Item=?");
+#line 715 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 715 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 715 "uvarchar.pgc"
+
+ /* declare cursor_array_11 cursor for $1 */
+#line 716 "uvarchar.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "declare cursor_array_11 cursor for $1",
+ ECPGt_char_variable,(ECPGprepared_statement(NULL, "stmt", __LINE__)),(long)1,(long)1,(1)*sizeof(char),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L,
+ ECPGt_uvarchar,&(uvarchar_array[2]),(long)VAR_SIZE,(long)1,sizeof(struct uvarchar_2),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT);
+#line 717 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 717 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 717 "uvarchar.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "fetch cursor_array_11", ECPGt_EOIT,
+ ECPGt_int,&(count),(long)1,(long)1,sizeof(int),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
+#line 718 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 718 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 718 "uvarchar.pgc"
+
+ printf ("count=%d for Item='世界杯每隔四年就会举行一次每次𠲖个球队'\n", count);
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "close cursor_array_11", ECPGt_EOIT, ECPGt_EORT);
+#line 720 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 720 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 720 "uvarchar.pgc"
+
+ { ECPGdeallocate(__LINE__, 0, NULL, "stmt");
+#line 721 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 721 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 721 "uvarchar.pgc"
+
+ { ECPGsetcommit(__LINE__, "on", NULL);
+#line 722 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 722 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 722 "uvarchar.pgc"
+
+}
+
+//Fecth cursor into uvarchar array
+void test_array_12()
+{
+ test("test_array_12 : Fecth cursor into uvarchar array");
+ init_var();
+
+ { ECPGsetcommit(__LINE__, "off", NULL);
+#line 731 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 731 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 731 "uvarchar.pgc"
+
+ { ECPGprepare(__LINE__, NULL, 0, "stmt", "SELECT Item FROM tb1 WHERE Count<=3");
+#line 732 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 732 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 732 "uvarchar.pgc"
+
+ /* declare cursor_array_12 cursor for $1 */
+#line 733 "uvarchar.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "declare cursor_array_12 cursor for $1",
+ ECPGt_char_variable,(ECPGprepared_statement(NULL, "stmt", __LINE__)),(long)1,(long)1,(1)*sizeof(char),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT);
+#line 734 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 734 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 734 "uvarchar.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "fetch cursor_array_12", ECPGt_EOIT,
+ ECPGt_uvarchar,&(uvarchar_array[0]),(long)VAR_SIZE,(long)1,sizeof(struct uvarchar_2),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
+#line 735 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 735 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 735 "uvarchar.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "fetch cursor_array_12", ECPGt_EOIT,
+ ECPGt_uvarchar,&(uvarchar_array[1]),(long)VAR_SIZE,(long)1,sizeof(struct uvarchar_2),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
+#line 736 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 736 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 736 "uvarchar.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "fetch cursor_array_12", ECPGt_EOIT,
+ ECPGt_uvarchar,&(uvarchar_array[2]),(long)VAR_SIZE,(long)1,sizeof(struct uvarchar_2),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
+#line 737 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 737 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 737 "uvarchar.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "close cursor_array_12", ECPGt_EOIT, ECPGt_EORT);
+#line 738 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 738 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 738 "uvarchar.pgc"
+
+
+ print_array();
+
+ { ECPGdeallocate(__LINE__, 0, NULL, "stmt");
+#line 742 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 742 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 742 "uvarchar.pgc"
+
+ { ECPGsetcommit(__LINE__, "on", NULL);
+#line 743 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 743 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 743 "uvarchar.pgc"
+
+}
+
+//Insert array with L string inited
+void test_array_13()
+{
+/* exec sql begin declare section */
+
+
+#line 750 "uvarchar.pgc"
+ struct uvarchar_7 { int len; utext arr[ VAR_SIZE ]; } uvarchar_array13 [ 3 ] ;
+/* exec sql end declare section */
+#line 751 "uvarchar.pgc"
+
+ test("test_array_13 : Insert array with L string inited");
+
+ memset((char*)&uvarchar_array13,0,sizeof(uvarchar_array13));
+
+ memcpy((char*)uvarchar_array13[0].arr, L"太𠮷𠜱平洋𠱓大西洋印度洋北冰洋", sizeof(L"太𠮷𠜱平洋𠱓大西洋印度洋北冰洋"));
+ uvarchar_array13[0].len = sizeof(L"太𠮷𠜱平洋𠱓大西洋印度洋北冰洋")/4;
+ memcpy((char*)uvarchar_array13[1].arr, L"足球篮球羽毛球乒乓球橄榄球棒球冰球", sizeof(L"足球篮球羽毛球乒乓球橄榄球棒球冰球"));
+ uvarchar_array13[1].len = sizeof(L"足球篮球羽毛球乒乓球橄榄球棒球冰球")/4;
+ memcpy((char*)uvarchar_array13[2].arr, L"世界杯每隔四年就会举行一次每次𠲖个球队", sizeof(L"世界杯每隔四年就会举行一次每次𠲖个球队"));
+ uvarchar_array13[2].len = sizeof(L"世界杯每隔四年就会举行一次每次𠲖个球队")/4;
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "insert into tb1 values ( $1 , 20 )",
+ ECPGt_uvarchar,&(uvarchar_array13[0]),(long)VAR_SIZE,(long)1,sizeof(struct uvarchar_7),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT);
+#line 763 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 763 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 763 "uvarchar.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "insert into tb1 values ( $1 , 21 )",
+ ECPGt_uvarchar,&(uvarchar_array13[1]),(long)VAR_SIZE,(long)1,sizeof(struct uvarchar_7),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT);
+#line 764 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 764 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 764 "uvarchar.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "insert into tb1 values ( $1 , 22 )",
+ ECPGt_uvarchar,&(uvarchar_array13[2]),(long)VAR_SIZE,(long)1,sizeof(struct uvarchar_7),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT);
+#line 765 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 765 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 765 "uvarchar.pgc"
+
+
+ init_var();
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "select Item from tb1 where count <= 22 and count >= 20", ECPGt_EOIT,
+ ECPGt_uvarchar,(uvarchar_array),(long)VAR_SIZE,(long)ARRAY_SIZE,sizeof(struct uvarchar_2),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
+#line 768 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 768 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 768 "uvarchar.pgc"
+
+ print_array();
+ init_table_value();
+
+}
+
+//uvarchar array working with NULL without using indicator
+void test_array_15()
+{
+/* exec sql begin declare section */
+
+
+#line 778 "uvarchar.pgc"
+ struct uvarchar_8 { int len; utext arr[ 20 ]; } uvarchar_local_array [ 3 ] ;
+/* exec sql end declare section */
+#line 779 "uvarchar.pgc"
+
+ test("test_array_15 : Test uvarchar array working with NULL without using indicator");
+ memset(uvarchar_local_array,'a',sizeof(uvarchar_local_array));
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "select Item from tb1 where count >= 8 and count <= 10", ECPGt_EOIT,
+ ECPGt_uvarchar,(uvarchar_local_array),(long)20,(long)3,sizeof(struct uvarchar_8),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
+#line 783 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 783 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 783 "uvarchar.pgc"
+
+
+ print_local_uvarchar(uvarchar_local_array[0].arr, 20);
+ print_local_uvarchar(uvarchar_local_array[1].arr, 20);
+ print_local_uvarchar(uvarchar_local_array[2].arr, 20);
+
+
+ memset(uvarchar_local_array,0x00,sizeof(uvarchar_local_array));
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "insert into tb1 values ( $1 , 18 )",
+ ECPGt_uvarchar,&(uvarchar_local_array[0]),(long)20,(long)1,sizeof(struct uvarchar_8),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT);
+#line 791 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 791 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 791 "uvarchar.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "insert into tb1 values ( $1 , 19 )",
+ ECPGt_uvarchar,&(uvarchar_local_array[1]),(long)20,(long)1,sizeof(struct uvarchar_8),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT);
+#line 792 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 792 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 792 "uvarchar.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "insert into tb1 values ( $1 , 20 )",
+ ECPGt_uvarchar,&(uvarchar_local_array[2]),(long)20,(long)1,sizeof(struct uvarchar_8),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT);
+#line 793 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 793 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 793 "uvarchar.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "select count ( * ) from tb1 where Item is null", ECPGt_EOIT,
+ ECPGt_int,&(count),(long)1,(long)1,sizeof(int),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
+#line 794 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 794 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 794 "uvarchar.pgc"
+
+ printf ("found %d rows for Item being NULL\n", count);
+
+ init_table_value();
+}
+
+//uvarchar array working with NULL using indicator
+void test_array_16()
+{
+/* exec sql begin declare section */
+
+
+
+#line 804 "uvarchar.pgc"
+ struct uvarchar_9 { int len; utext arr[ 20 ]; } uvarchar_local_array [ 3 ] ;
+
+#line 805 "uvarchar.pgc"
+ int uvarchar_array_ind [ 3 ] ;
+/* exec sql end declare section */
+#line 806 "uvarchar.pgc"
+
+ test("test_array_16 : Test uvarchar array working with NULL using indicator");
+ memset(uvarchar_local_array,'a',sizeof(uvarchar_local_array));
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "select Item from tb1 where count >= 8 and count <= 10", ECPGt_EOIT,
+ ECPGt_uvarchar,(uvarchar_local_array),(long)20,(long)3,sizeof(struct uvarchar_9),
+ ECPGt_int,(uvarchar_array_ind),(long)1,(long)3,sizeof(int), ECPGt_EORT);
+#line 810 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 810 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 810 "uvarchar.pgc"
+
+
+
+ print_local_uvarchar(uvarchar_local_array[0].arr, 20);
+ print_local_uvarchar(uvarchar_local_array[1].arr, 20);
+ print_local_uvarchar(uvarchar_local_array[2].arr, 20);
+
+ print_uvarchar_ind(uvarchar_array_ind[0]);
+ print_uvarchar_ind(uvarchar_array_ind[1]);
+ print_uvarchar_ind(uvarchar_array_ind[2]);
+
+ memset(uvarchar_local_array,0x00,sizeof(uvarchar_local_array));
+ uvarchar_array_ind[0]=-1;
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "insert into tb1 values ( $1 , 18 )",
+ ECPGt_uvarchar,&(uvarchar_local_array[0]),(long)20,(long)1,sizeof(struct uvarchar_9),
+ ECPGt_int,&(uvarchar_array_ind[0]),(long)1,(long)1,sizeof(int), ECPGt_EOIT, ECPGt_EORT);
+#line 823 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 823 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 823 "uvarchar.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "insert into tb1 values ( $1 , 19 )",
+ ECPGt_uvarchar,&(uvarchar_local_array[1]),(long)20,(long)1,sizeof(struct uvarchar_9),
+ ECPGt_int,&(uvarchar_array_ind[0]),(long)1,(long)1,sizeof(int), ECPGt_EOIT, ECPGt_EORT);
+#line 824 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 824 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 824 "uvarchar.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "insert into tb1 values ( $1 , 20 )",
+ ECPGt_uvarchar,&(uvarchar_local_array[2]),(long)20,(long)1,sizeof(struct uvarchar_9),
+ ECPGt_int,&(uvarchar_array_ind[0]),(long)1,(long)1,sizeof(int), ECPGt_EOIT, ECPGt_EORT);
+#line 825 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 825 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 825 "uvarchar.pgc"
+
+ { ECPGdo(__LINE__, 0, 0, NULL, 0, ECPGst_normal, "select count ( * ) from tb1 where Item is null", ECPGt_EOIT,
+ ECPGt_int,&(count),(long)1,(long)1,sizeof(int),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
+#line 826 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 826 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 826 "uvarchar.pgc"
+
+ printf ("found %d rows for Item being NULL\n", count);
+
+ init_table_value();
+}
+
+void test_all()
+{
+ test_var_1();
+ test_var_2();
+ test_var_3();
+ test_var_4();
+ test_var_5();
+ test_var_6();
+ test_var_7();
+ test_var_8();
+ test_var_9();
+ test_var_10();
+ test_var_11();
+ test_var_12();
+ test_var_13();
+ test_var_14();
+ test_var_15();
+ test_var_16();
+ test_array_1();
+ test_array_2();
+ test_array_3();
+ test_array_4();
+ test_array_5();
+ test_array_6();
+ test_array_7();
+ test_array_8();
+ test_array_9();
+ test_array_10();
+ test_array_11();
+ test_array_12();
+ test_array_13();
+ test_array_15();
+ test_array_16();
+}
+
+int main()
+{
+// ECPGdebug(1, stderr);
+ if(test_init() !=0)
+ return -1;
+
+ test_all();
+ test_finish();
+
+ return 0;
+}
diff --git a/src/interfaces/ecpg/test/expected/sql-uvarchar.stderr b/src/interfaces/ecpg/test/expected/sql-uvarchar.stderr
new file mode 100644
index 0000000..158fd24
--- /dev/null
+++ b/src/interfaces/ecpg/test/expected/sql-uvarchar.stderr
@@ -0,0 +1 @@
+SQL error:
diff --git a/src/interfaces/ecpg/test/expected/sql-uvarchar.stdout b/src/interfaces/ecpg/test/expected/sql-uvarchar.stdout
new file mode 100644
index 0000000..202cd5c
--- /dev/null
+++ b/src/interfaces/ecpg/test/expected/sql-uvarchar.stdout
@@ -0,0 +1,252 @@
+
+test_var_1 : simple select into uvarchar var
+---->uvarchar variable,len=15:
+0x592A 0x20BB7 0x20731 0x5E73 0x6D0B 0x20C53 0x5927 0x897F
+0x6D0B 0x5370 0x5EA6 0x6D0B 0x5317 0x51B0 0x6D0B 0x0000
+0x0000 0x0000 0x0000 0x0000
+uvarchar_var_ind = 0
+---->uvarchar variable,len=17:
+0x8DB3 0x7403 0x7BEE 0x7403 0x7FBD 0x6BDB 0x7403 0x4E52
+0x4E53 0x7403 0x6A44 0x6984 0x7403 0x68D2 0x7403 0x51B0
+0x7403 0x0000 0x0000 0x0000
+uvarchar_var_ind = 0
+---->uvarchar variable,len=19:
+0x4E16 0x754C 0x676F 0x6BCF 0x9694 0x56DB 0x5E74 0x5C31
+0x4F1A 0x4E3E 0x884C 0x4E00 0x6B21 0x6BCF 0x6B21 0x20C96
+0x4E2A 0x7403 0x961F 0x0000
+uvarchar_var_ind = 0
+---->uvarchar variable,len=20:
+0x4E9A 0x6D32 0x6B27 0x6D32 0x975E 0x6D32 0x5927 0x6D0B
+0x6D32 0x5317 0x7F8E 0x6D32 0x5357 0x7F8E 0x6D32 0x5357
+0x6781 0x6D32 0x6CA1 0x6709
+uvarchar_var_ind = 23
+
+test_var_2 : simple select using uvarchar var
+count=1 for '太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'
+count=3 for '世界杯每隔四年就会举行一次每次𠲖个球队'
+
+test_var_3 : simple update using uvarchar
+found 3 rows for Item='太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'
+
+test_var_4 : simple delete using uvarchar var
+found 0 rows for Item='太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'
+found 0 rows for Item='世界杯每隔四年就会举行一次每次𠲖个球队'
+
+test_var_5 : simple insert using uvarchar
+found 2 rows for Item='太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'
+found 2 rows for Item='世界杯每隔四年就会举行一次每次𠲖个球队'
+
+test_var_6 : prepared select into uvarchar var
+---->uvarchar variable,len=15:
+0x592A 0x20BB7 0x20731 0x5E73 0x6D0B 0x20C53 0x5927 0x897F
+0x6D0B 0x5370 0x5EA6 0x6D0B 0x5317 0x51B0 0x6D0B 0x0000
+0x0000 0x0000 0x0000 0x0000
+---->uvarchar variable,len=19:
+0x4E16 0x754C 0x676F 0x6BCF 0x9694 0x56DB 0x5E74 0x5C31
+0x4F1A 0x4E3E 0x884C 0x4E00 0x6B21 0x6BCF 0x6B21 0x20C96
+0x4E2A 0x7403 0x961F 0x0000
+
+test_var_7 : prepared select using uvarchar var
+count=3 for Item='世界杯每隔四年就会举行一次每次𠲖个球队'
+
+test_var_8 : prepared update using uvarchar var
+found 3 rows for Item='世界杯每隔四年就会举行一次每次𠲖个球队'
+
+test_var_9 : prepared delete using uvarchar var
+found 0 rows for Item='世界杯每隔四年就会举行一次每次𠲖个球队'
+
+test_var_10 : prepared insert using uvarchar var
+found 2 rows for Item='世界杯每隔四年就会举行一次每次𠲖个球队'
+
+test_var_11 : Open cursor using uvarchar var
+count=3 for Item='世界杯每隔四年就会举行一次每次𠲖个球队'
+
+test_var_12 : Fecth cursor into uvarchar var
+---->uvarchar variable,len=15:
+0x592A 0x20BB7 0x20731 0x5E73 0x6D0B 0x20C53 0x5927 0x897F
+0x6D0B 0x5370 0x5EA6 0x6D0B 0x5317 0x51B0 0x6D0B 0x0000
+0x0000 0x0000 0x0000 0x0000
+
+test_var_13 : simple insert using uvarchar with L string inited
+uvarchar_local_var.len = 16
+found 2 rows for Item='太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'
+---->uvarchar variable,len=15:
+0x592A 0x20BB7 0x20731 0x5E73 0x6D0B 0x20C53 0x5927 0x897F
+0x6D0B 0x5370 0x5EA6 0x6D0B 0x5317 0x51B0 0x6D0B 0x0000
+0x0000 0x0000 0x0000 0x0000
+uvarchar_var_ind = 0
+
+test_var_14 : Open cursor using utext var directly in WHERE Clause
+count=3 for Item='世界杯每隔四年就会举行一次每次𠲖个球队'
+
+test_var_15 : Test uvarchar_var working with NULL without indicator
+---->uvarchar variable,len=20:
+0x0000 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161
+0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161
+0x61616161 0x61616161 0x61616161 0x61616161
+found 6 rows for Item being NULL
+
+test_var_16 : Test uvarchar_var working with NULL with indicator
+---->uvarchar variable,len=20:
+0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161
+0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161
+0x61616161 0x61616161 0x61616161 0x61616161
+uvarchar_var_ind = -1
+found 6 rows for Item being NULL
+
+test_array_1 : simple select into uvarchar array
+---->uvarchar array[0]:(len=15)
+0x592A 0x20BB7 0x20731 0x5E73 0x6D0B 0x20C53 0x5927 0x897F
+0x6D0B 0x5370 0x5EA6 0x6D0B 0x5317 0x51B0 0x6D0B 0x0000
+0x0000 0x0000 0x0000 0x0000
+---->uvarchar array[1]:(len=17)
+0x8DB3 0x7403 0x7BEE 0x7403 0x7FBD 0x6BDB 0x7403 0x4E52
+0x4E53 0x7403 0x6A44 0x6984 0x7403 0x68D2 0x7403 0x51B0
+0x7403 0x0000 0x0000 0x0000
+---->uvarchar array[2]:(len=19)
+0x4E16 0x754C 0x676F 0x6BCF 0x9694 0x56DB 0x5E74 0x5C31
+0x4F1A 0x4E3E 0x884C 0x4E00 0x6B21 0x6BCF 0x6B21 0x20C96
+0x4E2A 0x7403 0x961F 0x0000
+---->uvarchar array[3]:(len=0)
+0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161
+0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161
+0x61616161 0x61616161 0x61616161 0x61616161
+
+---->uvarchar array[0]:(len=15)
+0x592A 0x20BB7 0x20731 0x5E73 0x6D0B 0x20C53 0x5927 0x897F
+0x6D0B 0x5370 0x5EA6 0x6D0B 0x5317 0x51B0 0x6D0B 0x0000
+0x0000 0x0000 0x0000 0x0000
+---->uvarchar array[1]:(len=0)
+0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161
+0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161
+0x61616161 0x61616161 0x61616161 0x61616161
+---->uvarchar array[2]:(len=0)
+0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161
+0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161
+0x61616161 0x61616161 0x61616161 0x61616161
+---->uvarchar array[3]:(len=0)
+0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161
+0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161
+0x61616161 0x61616161 0x61616161 0x61616161
+
+
+test_array_2 : simple select using uvarchar array
+count=1 for '太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'
+count=3 for '世界杯每隔四年就会举行一次每次𠲖个球队'
+
+test_array_3 : simple update using uvarchar array
+find 0 rows for Item='太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'
+find 2 rows for Item='世界杯每隔四年就会举行一次每次𠲖个球队'
+
+test_array_4 : simple delete using uvarchar array
+found 0 rows for Item='太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'
+found 0 rows for Item='世界杯每隔四年就会举行一次每次𠲖个球队'
+
+test_array_5 : simple insert using uvarchar array
+found 2 rows for Item='太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'
+found 2 rows for Item='世界杯每隔四年就会举行一次每次𠲖个球队'
+
+test_array_6 : prepared select into uvarchar array
+---->uvarchar array[0]:(len=15)
+0x592A 0x20BB7 0x20731 0x5E73 0x6D0B 0x20C53 0x5927 0x897F
+0x6D0B 0x5370 0x5EA6 0x6D0B 0x5317 0x51B0 0x6D0B 0x0000
+0x0000 0x0000 0x0000 0x0000
+---->uvarchar array[1]:(len=17)
+0x8DB3 0x7403 0x7BEE 0x7403 0x7FBD 0x6BDB 0x7403 0x4E52
+0x4E53 0x7403 0x6A44 0x6984 0x7403 0x68D2 0x7403 0x51B0
+0x7403 0x0000 0x0000 0x0000
+---->uvarchar array[2]:(len=19)
+0x4E16 0x754C 0x676F 0x6BCF 0x9694 0x56DB 0x5E74 0x5C31
+0x4F1A 0x4E3E 0x884C 0x4E00 0x6B21 0x6BCF 0x6B21 0x20C96
+0x4E2A 0x7403 0x961F 0x0000
+---->uvarchar array[3]:(len=0)
+0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161
+0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161
+0x61616161 0x61616161 0x61616161 0x61616161
+
+
+test_array_7 : prepared select using uvarchar array
+count=1 for Item='世界杯每隔四年就会举行一次每次𠲖个球队'
+
+test_array_8 : prepared update using uvarchar array
+found 2 rows for Item='太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'
+
+test_array_9 : prepared delete using uvarchar array
+found 0 rows for Item='太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'
+
+test_array_10 : prepared insert using uvarchar array
+found 3 rows for Item='世界杯每隔四年就会举行一次每次𠲖个球队'
+
+test_array_11 : Open cursor using uvarchar array
+count=3 for Item='世界杯每隔四年就会举行一次每次𠲖个球队'
+
+test_array_12 : Fecth cursor into uvarchar array
+---->uvarchar array[0]:(len=15)
+0x592A 0x20BB7 0x20731 0x5E73 0x6D0B 0x20C53 0x5927 0x897F
+0x6D0B 0x5370 0x5EA6 0x6D0B 0x5317 0x51B0 0x6D0B 0x0000
+0x0000 0x0000 0x0000 0x0000
+---->uvarchar array[1]:(len=17)
+0x8DB3 0x7403 0x7BEE 0x7403 0x7FBD 0x6BDB 0x7403 0x4E52
+0x4E53 0x7403 0x6A44 0x6984 0x7403 0x68D2 0x7403 0x51B0
+0x7403 0x0000 0x0000 0x0000
+---->uvarchar array[2]:(len=19)
+0x4E16 0x754C 0x676F 0x6BCF 0x9694 0x56DB 0x5E74 0x5C31
+0x4F1A 0x4E3E 0x884C 0x4E00 0x6B21 0x6BCF 0x6B21 0x20C96
+0x4E2A 0x7403 0x961F 0x0000
+---->uvarchar array[3]:(len=0)
+0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161
+0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161
+0x61616161 0x61616161 0x61616161 0x61616161
+
+
+test_array_13 : Insert array with L string inited
+---->uvarchar array[0]:(len=15)
+0x592A 0x20BB7 0x20731 0x5E73 0x6D0B 0x20C53 0x5927 0x897F
+0x6D0B 0x5370 0x5EA6 0x6D0B 0x5317 0x51B0 0x6D0B 0x0000
+0x0000 0x0000 0x0000 0x0000
+---->uvarchar array[1]:(len=17)
+0x8DB3 0x7403 0x7BEE 0x7403 0x7FBD 0x6BDB 0x7403 0x4E52
+0x4E53 0x7403 0x6A44 0x6984 0x7403 0x68D2 0x7403 0x51B0
+0x7403 0x0000 0x0000 0x0000
+---->uvarchar array[2]:(len=19)
+0x4E16 0x754C 0x676F 0x6BCF 0x9694 0x56DB 0x5E74 0x5C31
+0x4F1A 0x4E3E 0x884C 0x4E00 0x6B21 0x6BCF 0x6B21 0x20C96
+0x4E2A 0x7403 0x961F 0x0000
+---->uvarchar array[3]:(len=0)
+0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161
+0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161
+0x61616161 0x61616161 0x61616161 0x61616161
+
+
+test_array_15 : Test uvarchar array working with NULL without using indicator
+---->uvarchar variable,len=20:
+0x0000 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161
+0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161
+0x61616161 0x61616161 0x61616161 0x61616161
+---->uvarchar variable,len=20:
+0x0000 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161
+0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161
+0x61616161 0x61616161 0x61616161 0x61616161
+---->uvarchar variable,len=20:
+0x0000 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161
+0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161
+0x61616161 0x61616161 0x61616161 0x61616161
+found 6 rows for Item being NULL
+
+test_array_16 : Test uvarchar array working with NULL using indicator
+---->uvarchar variable,len=20:
+0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161
+0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161
+0x61616161 0x61616161 0x61616161 0x61616161
+---->uvarchar variable,len=20:
+0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161
+0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161
+0x61616161 0x61616161 0x61616161 0x61616161
+---->uvarchar variable,len=20:
+0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161
+0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161
+0x61616161 0x61616161 0x61616161 0x61616161
+uvarchar_var_ind = -1
+uvarchar_var_ind = -1
+uvarchar_var_ind = -1
+found 6 rows for Item being NULL
diff --git a/src/interfaces/ecpg/test/sql/Makefile b/src/interfaces/ecpg/test/sql/Makefile
index b7bc034..ed50ad7 100644
--- a/src/interfaces/ecpg/test/sql/Makefile
+++ b/src/interfaces/ecpg/test/sql/Makefile
@@ -23,9 +23,17 @@ TESTS = array array.c \
quote quote.c \
show show.c \
twophase twophase.c \
- insupd insupd.c
+ insupd insupd.c \
+ utext utext.c \
+ uvarchar uvarchar.c
all: $(TESTS)
oldexec.c: oldexec.pgc $(ECPG_TEST_DEPENDENCIES)
$(ECPG) -r questionmarks -o $@ $<
+
+utext.c: utext.pgc $(ECPG_TEST_DEPENDENCIES)
+ $(ECPG) --enable-utext -r no_indicator -o $@ $<
+
+uvarchar.c: uvarchar.pgc $(ECPG_TEST_DEPENDENCIES)
+ $(ECPG) --enable-utext -r no_indicator -o $@ $<
diff --git a/src/interfaces/ecpg/test/sql/utext.pgc b/src/interfaces/ecpg/test/sql/utext.pgc
new file mode 100755
index 0000000..411de30
--- /dev/null
+++ b/src/interfaces/ecpg/test/sql/utext.pgc
@@ -0,0 +1,1477 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <wchar.h>
+EXEC SQL INCLUDE ../regression;
+
+#define test(msg) printf("\n%s\n",msg)
+#define VAR_SIZE 20
+#define ARRAY_SIZE 4
+#define P_VAR_SIZE 22
+
+
+/* Following is UTF8 and UTF16/UTF32 characters mapping table */
+/*太𠮷𠜱平洋𠱓大西洋印度洋北冰洋
+utf16
+0x592A 0xD842 0xDFB7 0xD841 0xDF31 0x5E73 0x6D0B 0xD843
+0xDC53 0x5927 0x897F 0x6D0B 0x5370 0x5EA6 0x6D0B 0x5317
+0x51B0 0x6D0B 0x0000,0x0000
+
+utf32
+0x592A 0x20BB7 0x20731 0x5E73 0x6D0B 0x20C53 0x5927 0x897F
+0x6D0B 0x5370 0x5EA6 0x6D0B 0x5317 0x51B0 0x6D0B
+*/
+
+/*足球篮球羽毛球乒乓球橄榄球棒球冰球
+utf16
+0x8DB3,0x7403,0x7BEE,0x7403,0x7FBD,0x6BDB,0x7403,0x4E52,
+0x4E53,0x7403,0x6A44,0x6984,0x7403,0x68D2,0x7403,0x51B0,
+0x7403,0x0000,0x0000,0x0000
+
+utf32
+0x8DB3 0x7403 0x7BEE 0x7403 0x7FBD 0x6BDB 0x7403 0x4E52
+0x4E53 0x7403 0x6A44 0x6984 0x7403 0x68D2 0x7403 0x51B0
+0x7403
+*/
+
+/*世界杯每隔四年就会举行一次每次𠲖个球队
+utf16
+0x4E16 0x754C 0x676F 0x6BCF 0x9694 0x56DB 0x5E74 0x5C31
+0x4F1A 0x4E3E 0x884C 0x4E00 0x6B21 0x6BCF 0x6B21 0xD843
+0xDC96 0x4E2A 0x7403 0x961F
+
+utf32
+0x4E16 0x754C 0x676F 0x6BCF 0x9694 0x56DB 0x5E74 0x5C31
+0x4F1A 0x4E3E 0x884C 0x4E00 0x6B21 0x6BCF 0x6B21 0x20C96
+0x4E2A 0x7403 0x961F
+*/
+
+/* 亚洲欧洲非洲大洋洲北美洲南美洲南极洲没有北极洲
+0x4E9A,0x6D32,0x6B27,0x6D32,0x975E,0x6D32,0x5927,0x6D0B,
+0x6D32,0x5317,0x7F8E,0x6D32,0x5357,0x7F8E,0x6D32,0x5357,
+0x6781,0x6D32,0x6CA1,0x6709,0x5317,0x6781,0x6D32
+*/
+/* 太𠮷
+0x592A 0xD842 0xDFB7
+*/
+void init_var(void);
+void test_var_1(void);
+void test_var_2(void);
+void test_var_3(void);
+void test_var_4(void);
+void test_var_5(void);
+void test_var_6(void);
+void test_var_7(void);
+void test_var_8(void);
+void test_var_9(void);
+void test_var_10(void);
+void test_var_11(void);
+void test_var_12(void);
+void test_var_13(void);
+void test_var_14(void);
+void test_var_15(void);
+void test_var_16(void);
+void test_array_1(void);
+void test_array_2(void);
+void test_array_3(void);
+void test_array_4(void);
+void test_array_5(void);
+void test_array_6(void);
+void test_array_7(void);
+void test_array_8(void);
+void test_array_9(void);
+void test_array_10(void);
+void test_array_11(void);
+void test_array_12(void);
+void test_array_13(void);
+void test_array_14(void);
+void test_array_15(void);
+void test_array_16(void);
+void test_pvar_1(void);
+void test_pvar_2(void);
+void test_pvar_3(void);
+void test_pvar_4(void);
+void test_pvar_5(void);
+void test_pvar_6(void);
+void test_pvar_7(void);
+void test_pvar_8(void);
+void test_pvar_9(void);
+void test_pvar_10(void);
+void test_pvar_11(void);
+void test_pvar_12(void);
+void test_pvar_13(void);
+void test_pvar_14(void);
+void test_pvar_15(void);
+void test_pvar_16(void);
+void test_pvar_17(void);
+void test_pvar_18(void);
+void test_pvar_19(void);
+void test_pp_var_1(void);
+void test_pp_var_2(void);
+void test_pp_var_3(void);
+void test_desc_1(void);
+void test_all(void);
+
+void print_utext(utext *utext_var);
+void print_utext_str(utext *utext_var);
+void print_utext_ind(int utext_var_ind);
+void print_utext_size(utext *utext_var,int size);
+void print_array(void *array, int array_size, int var_size);
+void print_array_with_index(int index);
+int test_init(void);
+void test_finish(void);
+void init_table_value(void);
+
+EXEC SQL BEGIN DECLARE SECTION;
+ int utext_var_size = 20;
+ int utext_array_size = 4;
+ int count=0;
+ int total_tuples = 0;
+ int i;
+ char char_var[10]={0xF0,0x90,0x90,0xB7};
+
+ utext utext_var[VAR_SIZE];
+ utext utext_array[ARRAY_SIZE][VAR_SIZE];
+ utext utext_input_var[20]={0x592a,0xd842, 0xdfb7, 0x0000};
+ utext *p_utext_var = NULL;
+
+
+ int utext_var_ind;
+ int count_array[4]={1,2,3,4};
+
+EXEC SQL END DECLARE SECTION;
+
+void print_utext(utext *utext_var)
+{
+ int i;
+ printf("======print utext_var content======\n");
+ for(i=0; i<VAR_SIZE; i++)
+ {
+ printf ("0x%08X ", utext_var[i]);
+ if(i>6 && (i+1)%8==0)
+ printf("\n");
+ }
+ printf("\n======End utext_var content======\n");
+}
+
+void print_utext_str(utext *utext_var)
+{
+ int i=0;
+ printf("======print utext_var_str content======\n");
+ if (utext_var==0)
+ {
+ printf("utext_var is NULL\n");
+ printf("\n======End utext_var_str content======\n");
+ return;
+ }
+ while(utext_var[i] != 0)
+ {
+ printf ("0x%08X ", utext_var[i]);
+ if(i>6 && (i+1)%8==0)
+ printf("\n");
+ i++;
+ if(i>100)
+ break;
+ }
+ printf("\n======End utext_var_str content======\n");
+}
+
+void print_utext_size(utext *utext_var,int size)
+{
+ int i;
+ printf("======print utext_var content======\n");
+ for(i=0; i<size; i++)
+ {
+ printf ("0x%08X ", utext_var[i]);
+ if(i>6 && (i+1)%8==0)
+ printf("\n");
+ }
+ printf("\n======End utext_var content======\n");
+}
+
+void print_utext_ind(int utext_var_ind)
+{
+ printf("utext_var_ind = %d\n",utext_var_ind);
+}
+void print_array(void *array, int array_size, int var_size)
+{
+ int i,j;
+
+ for(i=0; i<array_size; i++)
+ {
+ utext *utext_array = &((utext*)array)[i*var_size];
+
+ printf ("---->array[%d]:\n", i);
+
+ for(j=0; j<var_size; j++)
+ {
+ printf ("0x%08X ", utext_array[j]);
+ if(j>6 && (j+1)%8==0)
+ printf("\n");
+ }
+ printf("\n");
+ }
+
+ printf("\n");
+}
+
+int test_init()
+{
+ p_utext_var = (utext*)malloc(P_VAR_SIZE*sizeof(utext));
+ if(!p_utext_var)
+ {
+ printf("Error: failed allco memory for p_utext_var. \n");
+ return -1;
+ }
+
+ EXEC SQL CONNECT TO REGRESSDB1;
+
+ EXEC SQL SET AUTOCOMMIT TO ON;
+ EXEC SQL WHENEVER SQLWARNING SQLPRINT;
+ EXEC SQL WHENEVER SQLERROR SQLPRINT;
+
+ EXEC SQL SET client_encoding='UTF8';
+
+ //initialization of test table
+ EXEC SQL CREATE TABLE IF NOT EXISTS tb1 (Item varchar, Count integer);
+
+ init_table_value();
+
+ return 0;
+}
+
+void test_finish()
+{
+ EXEC SQL DROP TABLE tb1;
+ EXEC SQL DISCONNECT ALL;
+}
+
+void init_table_value()
+{
+ EXEC SQL TRUNCATE tb1;
+
+ EXEC SQL INSERT INTO tb1 VALUES ('太𠮷𠜱平洋𠱓大西洋印度洋北冰洋', 1);
+ EXEC SQL INSERT INTO tb1 VALUES ('足球篮球羽毛球乒乓球橄榄球棒球冰球', 2);
+ EXEC SQL INSERT INTO tb1 VALUES ('世界杯每隔四年就会举行一次每次𠲖个球队', 3);
+ EXEC SQL INSERT INTO tb1 VALUES ('亚洲欧洲非洲大洋洲北美洲南美洲南极洲没有北极洲', 4);
+ EXEC SQL INSERT INTO tb1 (Count) VALUES(8);
+ EXEC SQL INSERT INTO tb1 (Count) VALUES(9);
+ EXEC SQL INSERT INTO tb1 (Count) VALUES(10);
+}
+
+void init_var()
+{
+ count = 0;
+ memset(utext_var,'a',sizeof(utext_var));
+ memset(utext_array,'a',sizeof(utext_array));
+ memset(p_utext_var,'a',P_VAR_SIZE*sizeof(utext));
+}
+
+//simple select into utext var
+void test_var_1()
+{
+ test("test_var_1: simple select into utext var");
+ init_var();
+
+ EXEC SQL SELECT Item INTO :utext_var:utext_var_ind FROM tb1 WHERE Count=1;
+ print_utext(utext_var);
+ print_utext_ind(utext_var_ind);
+ init_var();
+
+ EXEC SQL SELECT Item INTO :utext_var:utext_var_ind FROM tb1 WHERE Count=2;
+ print_utext(utext_var);
+ print_utext_ind(utext_var_ind);
+ init_var();
+
+ EXEC SQL SELECT Item INTO :utext_var:utext_var_ind FROM tb1 WHERE Count=3;
+ print_utext(utext_var);
+ print_utext_ind(utext_var_ind);
+ init_var();
+
+ EXEC SQL SELECT Item INTO :utext_var:utext_var_ind FROM tb1 WHERE Count=4;
+ print_utext(utext_var);
+ print_utext_ind(utext_var_ind);
+ init_var();
+}
+
+
+//simple select using utext var
+void test_var_2()
+{
+ test("test_var_2: simple select using utext var");
+ init_var();
+
+ count = 0;
+ EXEC SQL SELECT Item INTO :utext_var FROM tb1 WHERE Count=1;
+ EXEC SQL SELECT Count INTO :count FROM tb1 WHERE Item=:utext_var;
+ printf ("count=%d for '太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'\n", count);
+
+ count = 0;
+ EXEC SQL SELECT Item INTO :utext_var FROM tb1 WHERE Count=3;
+ EXEC SQL SELECT Count INTO :count FROM tb1 WHERE Item=:utext_var;
+ printf ("count=%d for '世界杯每隔四年就会举行一次每次𠲖个球队'\n", count);
+}
+
+//simple update using utext var
+void test_var_3()
+{
+ test("test_var_3: simple update using utext var");
+ init_var();
+
+ EXEC SQL SELECT Item INTO :utext_var FROM tb1 WHERE Count=1;
+ EXEC SQL UPDATE tb1 SET Item=:utext_var WHERE Count=2;
+ EXEC SQL UPDATE tb1 SET Item=:utext_var WHERE Count=3;
+ EXEC SQL SELECT count(*) INTO :count FROM tb1 WHERE Item='太𠮷𠜱平洋𠱓大西洋印度洋北冰洋';
+ printf ("found %d rows for Item='太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'\n", count);
+
+ init_table_value();
+}
+
+//simple delete using utext var
+void test_var_4()
+{
+ test("test_var_4 : simple delete using utext var");
+ init_var();
+
+ EXEC SQL SELECT Item INTO :utext_var FROM tb1 WHERE Count=1;
+ EXEC SQL DELETE FROM tb1 WHERE Item=:utext_var;
+ EXEC SQL SELECT count(*) INTO :count FROM tb1 WHERE Item='太𠮷𠜱平洋𠱓大西洋印度洋北冰洋';
+ printf ("found %d rows for Item='太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'\n", count);
+
+ EXEC SQL SELECT Item INTO :utext_var FROM tb1 WHERE Count=3;
+ EXEC SQL DELETE FROM tb1 WHERE Item=:utext_var;
+ EXEC SQL SELECT count(*) INTO :count FROM tb1 WHERE Item='世界杯每隔四年就会举行一次每次𠲖个球队';
+ printf ("found %d rows for Item='世界杯每隔四年就会举行一次每次𠲖个球队'\n", count);
+
+ init_table_value();
+}
+
+//simple insert using utext var
+void test_var_5()
+{
+ test("test_var_5 : simple insert using utext");
+ init_var();
+
+ EXEC SQL SELECT Item INTO :utext_var FROM tb1 WHERE Count=1;
+ EXEC SQL INSERT INTO tb1 values (:utext_var, 11);
+ EXEC SQL SELECT count(*) INTO :count FROM tb1 WHERE Item='太𠮷𠜱平洋𠱓大西洋印度洋北冰洋';
+ printf ("found %d rows for Item='太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'\n", count);
+
+ init_var();
+ EXEC SQL SELECT Item INTO :utext_var FROM tb1 WHERE Count=3;
+ EXEC SQL INSERT INTO tb1 values (:utext_var, 13);
+ EXEC SQL SELECT count(*) INTO :count FROM tb1 WHERE Item='世界杯每隔四年就会举行一次每次𠲖个球队';
+ printf ("found %d rows for Item='世界杯每隔四年就会举行一次每次𠲖个球队'\n", count);
+
+ init_table_value();
+}
+
+//prepared select into utext var
+void test_var_6()
+{
+ test("test_var_6 : prepared select into utext var");
+ init_var();
+
+ EXEC SQL PREPARE stmt FROM "SELECT Item FROM tb1 WHERE Count=?";
+
+ EXEC SQL EXECUTE stmt INTO :utext_var USING 1;
+ print_utext(utext_var);
+
+ EXEC SQL EXECUTE stmt INTO :utext_var USING 3;
+ print_utext(utext_var);
+
+ EXEC SQL DEALLOCATE PREPARE stmt;
+}
+
+//prepared select using utext var
+void test_var_7()
+{
+ test("test_var_7 : prepared select using utext var");
+ init_var();
+
+ EXEC SQL SELECT Item INTO :utext_var FROM tb1 WHERE Count=3;
+
+ EXEC SQL PREPARE stmt FROM "SELECT Count FROM tb1 WHERE Item=?";
+ EXEC SQL EXECUTE stmt INTO :count USING :utext_var;
+
+ printf ("count=%d for Item='世界杯每隔四年就会举行一次每次𠲖个球队'\n", count);
+ EXEC SQL DEALLOCATE PREPARE stmt;
+}
+
+//prepared update using utext var
+void test_var_8()
+{
+ test("test_var_8 : prepared update using utext var");
+ init_var();
+
+ EXEC SQL SELECT Item INTO :utext_var FROM tb1 WHERE Count=3;
+
+ EXEC SQL PREPARE stmt FROM "UPDATE tb1 SET Item=? WHERE Count=?";
+ EXEC SQL EXECUTE stmt USING :utext_var, 1;
+ EXEC SQL EXECUTE stmt USING :utext_var, 2;
+ EXEC SQL SELECT count(*) INTO :count FROM tb1 WHERE Item='世界杯每隔四年就会举行一次每次𠲖个球队';
+
+ printf ("found %d rows for Item='世界杯每隔四年就会举行一次每次𠲖个球队'\n", count);
+ EXEC SQL DEALLOCATE PREPARE stmt;
+
+ init_table_value();
+}
+
+//prepared delete using utext var
+void test_var_9()
+{
+ test("test_var_9 : prepared delete using utext var");
+ init_var();
+
+ EXEC SQL SELECT Item INTO :utext_var FROM tb1 WHERE Count=3;
+
+ EXEC SQL PREPARE stmt FROM "DELETE FROM tb1 WHERE Item=?";
+ EXEC SQL EXECUTE stmt USING :utext_var;
+ EXEC SQL SELECT count(*) INTO :count FROM tb1 WHERE Item='世界杯每隔四年就会举行一次每次𠲖个球队';
+
+ printf ("found %d rows for Item='世界杯每隔四年就会举行一次每次𠲖个球队'\n", count);
+ EXEC SQL DEALLOCATE PREPARE stmt;
+
+ init_table_value();
+}
+
+//prepared insert using utext var
+void test_var_10()
+{
+ test("test_var_10 : prepared insert using utext var");
+ init_var();
+
+ EXEC SQL SELECT Item INTO :utext_var FROM tb1 WHERE Count=3;
+
+ EXEC SQL PREPARE stmt FROM "INSERT INTO tb1 values (?, 13)";
+ EXEC SQL EXECUTE stmt USING :utext_var;
+ EXEC SQL SELECT count(*) INTO :count FROM tb1 WHERE Item='世界杯每隔四年就会举行一次每次𠲖个球队';
+
+ printf ("found %d rows for Item='世界杯每隔四年就会举行一次每次𠲖个球队'\n", count);
+ EXEC SQL DEALLOCATE PREPARE stmt;
+
+ init_table_value();
+}
+
+//Open cursor using utext var
+void test_var_11()
+{
+ test("test_var_11 : Open cursor using utext var");
+ init_var();
+
+ EXEC SQL SET AUTOCOMMIT TO OFF;
+ EXEC SQL SELECT Item INTO :utext_var FROM tb1 WHERE Count=3;
+
+ EXEC SQL PREPARE stmt FROM "SELECT Count FROM tb1 WHERE Item=?";
+ EXEC SQL DECLARE cursor_var_11 CURSOR FOR stmt;
+ EXEC SQL OPEN cursor_var_11 USING :utext_var;
+ EXEC SQL FETCH cursor_var_11 INTO :count;
+ printf ("count=%d for Item='世界杯每隔四年就会举行一次每次𠲖个球队'\n", count);
+ EXEC SQL CLOSE cursor_var_11;
+ EXEC SQL DEALLOCATE PREPARE stmt;
+ EXEC SQL SET AUTOCOMMIT TO ON;
+}
+
+//Fecth cursor into utext var
+void test_var_12()
+{
+ test("test_var_12 : Fecth cursor into utext var");
+ init_var();
+
+ EXEC SQL SET AUTOCOMMIT TO OFF;
+ EXEC SQL PREPARE stmt FROM "SELECT Item FROM tb1 WHERE Count=1";
+ EXEC SQL DECLARE cursor_var_12 CURSOR FOR stmt;
+ EXEC SQL OPEN cursor_var_12;
+ EXEC SQL FETCH cursor_var_12 INTO :utext_var;
+ EXEC SQL CLOSE cursor_var_12;
+
+ print_utext(utext_var);
+
+ EXEC SQL DEALLOCATE PREPARE stmt;
+ EXEC SQL SET AUTOCOMMIT TO ON;
+}
+
+//simple insert utext var with L string inited
+void test_var_13()
+{
+EXEC SQL BEGIN DECLARE SECTION;
+ utext utext_local_var[]=L"足球篮球羽毛球";
+EXEC SQL END DECLARE SECTION;
+ test("test_var_13 : simple insert utext var with L string inited");
+ init_var();
+
+ print_utext_str(utext_local_var);
+
+ EXEC SQL INSERT INTO tb1 values (:utext_local_var, 16);
+
+ EXEC SQL SELECT Item INTO :utext_var:utext_var_ind FROM tb1 WHERE Count=16;
+ print_utext(utext_var);
+ print_utext_ind(utext_var_ind);
+ init_var();
+ init_table_value();
+}
+
+//Open cursor using utext var directly in WHERE Clause
+void test_var_14()
+{
+EXEC SQL BEGIN DECLARE SECTION;
+ utext utext_local_var[20+1];
+EXEC SQL END DECLARE SECTION;
+ memset(utext_local_var,'a',sizeof(utext_local_var));
+
+ test("test_var_14 : Open cursor using utext var directly in WHERE Clause");
+ init_var();
+
+ EXEC SQL SET AUTOCOMMIT TO OFF;
+ EXEC SQL SELECT Item INTO :utext_local_var FROM tb1 WHERE Count=3;
+ EXEC SQL DECLARE cursor_var_14 CURSOR FOR SELECT Count FROM tb1 WHERE Item=:utext_local_var;
+ EXEC SQL OPEN cursor_var_14;
+ EXEC SQL FETCH cursor_var_14 INTO :count;
+ printf ("count=%d for Item='世界杯每隔四年就会举行一次每次𠲖个球队'\n", count);
+
+ EXEC SQL CLOSE cursor_var_14;
+
+ EXEC SQL SET AUTOCOMMIT TO ON;
+}
+
+//Test utext_var working with NULL without indicator
+void test_var_15()
+{
+EXEC SQL BEGIN DECLARE SECTION;
+ utext utext_local_var[20+1];
+EXEC SQL END DECLARE SECTION;
+ test("test_var_15 : Test utext_var working with NULL without indicator");
+
+ memset(utext_local_var,'a',sizeof(utext_local_var));
+ EXEC SQL SELECT Item INTO :utext_local_var FROM tb1 WHERE Count=8;
+ print_utext(utext_local_var);
+
+ memset(utext_local_var,0x00,sizeof(utext_local_var));
+ EXEC SQL INSERT INTO tb1 values (:utext_local_var, 18);
+ EXEC SQL INSERT INTO tb1 values (:utext_local_var, 19);
+ EXEC SQL INSERT INTO tb1 values (:utext_local_var, 20);
+ EXEC SQL SELECT count(*) INTO :count FROM tb1 WHERE Item is NULL;
+ printf ("found %d rows for Item being NULL\n", count);
+
+ init_table_value();
+}
+
+//utext_var working with NULL with indicator
+void test_var_16()
+{
+EXEC SQL BEGIN DECLARE SECTION;
+ utext utext_local_var[20+1];
+ int utext_var_ind=-1;
+EXEC SQL END DECLARE SECTION;
+ test("test_var_16 : Test utext_var working with NULL with indicator");
+
+ memset(utext_local_var,'a',sizeof(utext_local_var));
+ EXEC SQL SELECT Item INTO :utext_local_var:utext_var_ind FROM tb1 WHERE Count=8;
+ print_utext(utext_local_var);
+ print_utext_ind(utext_var_ind);
+
+ memset(utext_local_var,0x00,sizeof(utext_local_var));
+ EXEC SQL INSERT INTO tb1 values (:utext_local_var:utext_var_ind, 18);
+ EXEC SQL INSERT INTO tb1 values (:utext_local_var:utext_var_ind, 19);
+ EXEC SQL INSERT INTO tb1 values (:utext_local_var:utext_var_ind, 20);
+ EXEC SQL SELECT count(*) INTO :count FROM tb1 WHERE Item is NULL;
+ printf ("found %d rows for Item being NULL\n", count);
+
+ init_table_value();
+}
+
+
+//simple select into utext array
+void test_array_1()
+{
+ test("test_array_1 : simple select into utext array ");
+ init_var();
+
+ EXEC SQL SELECT Item INTO :utext_array FROM tb1 WHERE Count<=3;
+
+ print_array(utext_array,ARRAY_SIZE,VAR_SIZE);
+ init_var();
+
+ EXEC SQL SELECT Item INTO :utext_array[0] FROM tb1 WHERE Count=1;
+ print_array(utext_array,ARRAY_SIZE,VAR_SIZE);
+ init_var();
+}
+
+//simple select using utext array
+void test_array_2()
+{
+ test("test_array_2 : simple select using array");
+ init_var();
+
+ EXEC SQL SELECT Item INTO :utext_array FROM tb1 WHERE Count<=3;
+
+ count = 0;
+ EXEC SQL SELECT Count INTO :count FROM tb1 WHERE Item=:utext_array[0];
+ printf ("count=%d for '太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'\n", count);
+
+ count = 0;
+ EXEC SQL SELECT Count INTO :count FROM tb1 WHERE Item=:utext_array[2];
+ printf ("count=%d for '世界杯每隔四年就会举行一次每次𠲖个球队'\n", count);
+}
+
+//simple update using utext array
+void test_array_3()
+{
+ test("test_array_3 : simple update using utext array");
+ init_var();
+
+ EXEC SQL SELECT Item INTO :utext_array FROM tb1 WHERE Count<=3;
+
+ EXEC SQL UPDATE tb1 SET Item=:utext_array[2] WHERE Count=1;
+
+ count = 0;
+ EXEC SQL SELECT count(*) INTO :count FROM tb1 WHERE Item='太𠮷𠜱平洋𠱓大西洋印度洋北冰洋';
+ printf ("find %d rows for Item='太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'\n", count);
+
+ count = 0;
+ EXEC SQL SELECT count(*) INTO :count FROM tb1 WHERE Item='世界杯每隔四年就会举行一次每次𠲖个球队';
+ printf ("find %d rows for Item='世界杯每隔四年就会举行一次每次𠲖个球队'\n", count);
+
+ init_table_value();
+}
+
+//simple delete using utext array
+void test_array_4()
+{
+ test("test_array_4 : simple delete using utext array");
+ init_var();
+
+ EXEC SQL SELECT Item INTO :utext_array FROM tb1 WHERE Count<=3;
+
+ count = 100;
+ EXEC SQL DELETE FROM tb1 WHERE Item=:utext_array[0];
+ EXEC SQL SELECT count(*) INTO :count FROM tb1 WHERE Item='太𠮷𠜱平洋𠱓大西洋印度洋北冰洋';
+ printf ("found %d rows for Item='太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'\n", count);
+
+ count = 100;
+ EXEC SQL DELETE FROM tb1 WHERE Item=:utext_array[2];
+ EXEC SQL SELECT count(*) INTO :count FROM tb1 WHERE Item='世界杯每隔四年就会举行一次每次𠲖个球队';
+ printf ("found %d rows for Item='世界杯每隔四年就会举行一次每次𠲖个球队'\n", count);
+
+ init_table_value();
+}
+
+//simple insert using utext array
+void test_array_5()
+{
+ test("test_array_5 : simple insert using utext array");
+ init_var();
+
+ EXEC SQL SELECT Item INTO :utext_array FROM tb1 WHERE Count<=3;
+
+ EXEC SQL INSERT INTO tb1 values (:utext_array[0], 11);
+ EXEC SQL SELECT count(*) INTO :count FROM tb1 WHERE Item='太𠮷𠜱平洋𠱓大西洋印度洋北冰洋';
+ printf ("found %d rows for Item='太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'\n", count);
+
+ EXEC SQL INSERT INTO tb1 values (:utext_array[2], 13);
+ EXEC SQL SELECT count(*) INTO :count FROM tb1 WHERE Item='世界杯每隔四年就会举行一次每次𠲖个球队';
+ printf ("found %d rows for Item='世界杯每隔四年就会举行一次每次𠲖个球队'\n", count);
+
+ init_table_value();
+}
+
+//prepared select into utext array
+void test_array_6()
+{
+ test("test_array_6 : prepared select into utext array");
+ init_var();
+
+ EXEC SQL PREPARE stmt FROM "SELECT Item FROM tb1 WHERE Count<=?";
+
+ EXEC SQL EXECUTE stmt INTO :utext_array USING 4;
+
+ print_array(utext_array,ARRAY_SIZE,VAR_SIZE);
+
+ EXEC SQL DEALLOCATE PREPARE stmt;
+}
+
+//prepared select using utext array
+void test_array_7()
+{
+ test("test_array_7 : prepared select using utext array");
+ init_var();
+ EXEC SQL SELECT Item INTO :utext_array FROM tb1 WHERE Count<=3;
+
+ count = 0;
+ EXEC SQL PREPARE stmt FROM "SELECT Count FROM tb1 WHERE Item=?";
+ EXEC SQL EXECUTE stmt INTO :count USING :utext_array[0];
+
+ printf ("count=%d for Item='世界杯每隔四年就会举行一次每次𠲖个球队'\n", count);
+ EXEC SQL DEALLOCATE PREPARE stmt;
+}
+
+//prepared update using utext array
+void test_array_8()
+{
+ test("test_array_8 : prepared update using utext array");
+ init_var();
+ EXEC SQL SELECT Item INTO :utext_array FROM tb1 WHERE Count<=3;
+
+ EXEC SQL PREPARE stmt FROM "UPDATE tb1 SET Item=? WHERE Count=?";
+ EXEC SQL EXECUTE stmt USING :utext_array[0], 2;
+ EXEC SQL EXECUTE stmt USING :utext_array[0], 3;
+ EXEC SQL SELECT count(*) INTO :count FROM tb1 WHERE Item='太𠮷𠜱平洋𠱓大西洋印度洋北冰洋';
+
+ printf ("found %d rows for Item='太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'\n", count);
+ EXEC SQL DEALLOCATE PREPARE stmt;
+
+ init_table_value();
+}
+
+//prepared delete using utext array
+void test_array_9()
+{
+ test("test_array_9 : prepared delete using utext array");
+ init_var();
+ EXEC SQL SELECT Item INTO :utext_array FROM tb1 WHERE Count<=3;
+
+ count = 0;
+ EXEC SQL PREPARE stmt FROM "DELETE FROM tb1 WHERE Item=?";
+ EXEC SQL EXECUTE stmt USING :utext_array[0];
+ EXEC SQL SELECT count(*) INTO :count FROM tb1 WHERE Item='太𠮷𠜱平洋𠱓大西洋印度洋北冰洋';
+
+ printf ("found %d rows for Item='太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'\n", count);
+ EXEC SQL DEALLOCATE PREPARE stmt;
+
+ init_table_value();
+}
+
+//prepared insert using utext array
+void test_array_10()
+{
+ test("test_array_10 : prepared insert using utext array");
+ init_var();
+ EXEC SQL SELECT Item INTO :utext_array FROM tb1 WHERE Count<=3;
+
+ EXEC SQL PREPARE stmt FROM "INSERT INTO tb1 values (?, ?)";
+ EXEC SQL EXECUTE stmt USING :utext_array[2], 13;
+ EXEC SQL EXECUTE stmt USING :utext_array[2], 15;
+ EXEC SQL SELECT count(*) INTO :count FROM tb1 WHERE Item='世界杯每隔四年就会举行一次每次𠲖个球队';
+
+ printf ("found %d rows for Item='世界杯每隔四年就会举行一次每次𠲖个球队'\n", count);
+ EXEC SQL DEALLOCATE PREPARE stmt;
+
+ init_table_value();
+}
+
+//Open cursor using utext array
+void test_array_11()
+{
+ test("test_array_11 : Open cursor using utext array");
+ init_var();
+
+ EXEC SQL SET AUTOCOMMIT TO OFF;
+ EXEC SQL SELECT Item INTO :utext_array FROM tb1 WHERE Count<=3;
+
+ EXEC SQL PREPARE stmt FROM "SELECT Count FROM tb1 WHERE Item=?";
+ EXEC SQL DECLARE cursor_array_11 CURSOR FOR stmt;
+ EXEC SQL OPEN cursor_array_11 USING :utext_array[2];
+ EXEC SQL FETCH cursor_array_11 INTO :count;
+ printf ("count=%d for Item='世界杯每隔四年就会举行一次每次𠲖个球队'\n", count);
+ EXEC SQL CLOSE cursor_array_11;
+ EXEC SQL DEALLOCATE PREPARE stmt;
+ EXEC SQL SET AUTOCOMMIT TO ON;
+}
+
+//Fecth cursor into utext array
+void test_array_12()
+{
+ test("test_array_12 : Fecth cursor into utext array");
+ init_var();
+
+ EXEC SQL SET AUTOCOMMIT TO OFF;
+ EXEC SQL PREPARE stmt FROM "SELECT Item FROM tb1 WHERE Count<=3";
+ EXEC SQL DECLARE cursor_array_12 CURSOR FOR stmt;
+ EXEC SQL OPEN cursor_array_12;
+ EXEC SQL FETCH cursor_array_12 INTO :utext_array[0];
+ EXEC SQL FETCH cursor_array_12 INTO :utext_array[1];
+ EXEC SQL FETCH cursor_array_12 INTO :utext_array[2];
+ EXEC SQL CLOSE cursor_array_12;
+
+ print_array(utext_array,ARRAY_SIZE,VAR_SIZE);
+
+ EXEC SQL DEALLOCATE PREPARE stmt;
+ EXEC SQL SET AUTOCOMMIT TO ON;
+}
+
+//Insert array with L string inited
+void test_array_13()
+{
+EXEC SQL BEGIN DECLARE SECTION;
+ utext utext_array13[4][VAR_SIZE]={L"太𠮷𠜱平洋𠱓大西洋印度洋北冰洋",L"足球篮球羽毛球乒乓球橄榄球棒球冰球",L"世界杯每隔四年就会举行一次"};
+EXEC SQL END DECLARE SECTION;
+
+ test("test_array_13 : Insert array with L string inited");
+ init_var();
+
+
+ EXEC SQL INSERT INTO tb1 values (:utext_array13[0], 20);
+ EXEC SQL INSERT INTO tb1 values (:utext_array13[1], 21);
+ EXEC SQL INSERT INTO tb1 values (:utext_array13[2], 22);
+
+ init_var();
+ EXEC SQL SELECT Item INTO :utext_array FROM tb1 WHERE Count<=22 AND Count>=20;
+ print_array(utext_array,3,VAR_SIZE);
+ init_table_value();
+}
+
+//Open cursor using utext array directly in WHERE Clause
+void test_array_14()
+{
+EXEC SQL BEGIN DECLARE SECTION;
+ utext utext_local_array[4][20+1];
+EXEC SQL END DECLARE SECTION;
+
+ test("test_array_14 : Open cursor using utext array directly in WHERE Clause");
+ memset(utext_local_array,'a',sizeof(utext_local_array));
+
+ EXEC SQL SET AUTOCOMMIT TO OFF;
+ EXEC SQL SELECT Item INTO :utext_local_array FROM tb1 WHERE Count<=3;
+
+ EXEC SQL DECLARE cursor_array_14 CURSOR FOR SELECT Count FROM tb1 WHERE Item=:utext_local_array[2];
+ EXEC SQL OPEN cursor_array_14;
+ EXEC SQL FETCH cursor_array_14 INTO :count;
+ printf ("count=%d for Item='世界杯每隔四年就会举行一次每次𠲖个球队'\n", count);
+ EXEC SQL CLOSE cursor_array_14;
+
+ EXEC SQL SET AUTOCOMMIT TO ON;
+}
+
+
+//utext array working with NULL without using indicator
+void test_array_15()
+{
+EXEC SQL BEGIN DECLARE SECTION;
+ utext utext_local_array[3][20];
+EXEC SQL END DECLARE SECTION;
+ test("test_array_15 : Test utext array working with NULL without using indicator");
+ memset(utext_local_array,'a',sizeof(utext_local_array));
+
+ EXEC SQL SELECT Item INTO :utext_local_array FROM tb1 WHERE Count>=8 and Count<=10;
+
+ print_array((void**)utext_local_array,3,20);
+
+ memset(utext_local_array,0x00,sizeof(utext_local_array));
+ EXEC SQL INSERT INTO tb1 values (:utext_local_array[0], 18);
+ EXEC SQL INSERT INTO tb1 values (:utext_local_array[1], 19);
+ EXEC SQL INSERT INTO tb1 values (:utext_local_array[2], 20);
+ EXEC SQL SELECT count(*) INTO :count FROM tb1 WHERE Item is NULL;
+ printf ("found %d rows for Item being NULL\n", count);
+
+ init_table_value();
+}
+
+//utext array working with NULL using indicator
+void test_array_16()
+{
+EXEC SQL BEGIN DECLARE SECTION;
+ utext utext_local_array[3][20];
+ int utext_array_ind[3];
+EXEC SQL END DECLARE SECTION;
+ test("test_array_16 : Test utext array working with NULL using indicator");
+ memset(utext_local_array,'a',sizeof(utext_local_array));
+
+ EXEC SQL SELECT Item INTO :utext_local_array:utext_array_ind FROM tb1 WHERE Count>=8 and Count<=10;
+
+ print_array((void**)utext_local_array,3,20);
+ print_utext_ind(utext_array_ind[0]);
+ print_utext_ind(utext_array_ind[1]);
+ print_utext_ind(utext_array_ind[2]);
+
+ memset(utext_local_array,0x00,sizeof(utext_local_array));
+ utext_array_ind[0]=-1;
+ utext_array_ind[1]=-1;
+ utext_array_ind[2]=-1;
+ EXEC SQL INSERT INTO tb1 values (:utext_local_array[0]:utext_array_ind[0], 18);
+ EXEC SQL INSERT INTO tb1 values (:utext_local_array[1]:utext_array_ind[1], 19);
+ EXEC SQL INSERT INTO tb1 values (:utext_local_array[2]:utext_array_ind[2], 20);
+ EXEC SQL SELECT count(*) INTO :count FROM tb1 WHERE Item is NULL;
+ printf ("found %d rows for Item being NULL\n", count);
+
+ init_table_value();
+}
+
+
+//simple select into utext pointer
+void test_pvar_1()
+{
+ test("test_pvar_1 : simple select into utext pointer");
+ EXEC SQL SELECT Item INTO :p_utext_var:utext_var_ind FROM tb1 WHERE Count=1;
+ print_utext(p_utext_var);
+ print_utext_ind(utext_var_ind);
+ init_var();
+
+ EXEC SQL SELECT Item INTO :p_utext_var:utext_var_ind FROM tb1 WHERE Count=2;
+ print_utext(p_utext_var);
+ print_utext_ind(utext_var_ind);
+ init_var();
+
+ EXEC SQL SELECT Item INTO :p_utext_var:utext_var_ind FROM tb1 WHERE Count=3;
+ print_utext(p_utext_var);
+ print_utext_ind(utext_var_ind);
+ init_var();
+
+ EXEC SQL SELECT Item INTO :p_utext_var:utext_var_ind FROM tb1 WHERE Count=4;
+ print_utext(p_utext_var);
+ print_utext_ind(utext_var_ind);
+ init_var();
+
+ init_table_value();
+}
+
+
+//simple select using utext pointer
+void test_pvar_2()
+{
+ test("test_pvar_2 : simple select using utext pointer");
+ init_var();
+
+ EXEC SQL SELECT Item INTO :p_utext_var FROM tb1 WHERE Count=1;
+ EXEC SQL SELECT Count INTO :count FROM tb1 WHERE Item=:p_utext_var;
+ printf ("count=%d for '太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'\n", count);
+
+ init_var();
+ EXEC SQL SELECT Item INTO :p_utext_var FROM tb1 WHERE Count=3;
+ EXEC SQL SELECT Count INTO :count FROM tb1 WHERE Item=:p_utext_var;
+ printf ("count=%d for '世界杯每隔四年就会举行一次每次𠲖个球队'\n", count);
+}
+
+
+//simple update using utext pointer
+void test_pvar_3()
+{
+ test("test_pvar_3 : simple update using utext pointer");
+ init_var();
+
+ count = 0;
+ EXEC SQL SELECT Item INTO :p_utext_var FROM tb1 WHERE Count=1;
+ EXEC SQL UPDATE tb1 SET Item=:p_utext_var WHERE Count=2;
+ EXEC SQL UPDATE tb1 SET Item=:p_utext_var WHERE Count=3;
+ EXEC SQL SELECT count(*) INTO :count FROM tb1 WHERE Item='太𠮷𠜱平洋𠱓大西洋印度洋北冰洋';
+ printf ("found %d rows for Item='太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'\n", count);
+
+ init_table_value();
+}
+
+//simple delete using utext pointer
+void test_pvar_4()
+{
+ test("test_pvar_4 : simple delete using utext pointer");
+ init_var();
+
+ EXEC SQL SELECT Item INTO :p_utext_var FROM tb1 WHERE Count=1;
+ EXEC SQL DELETE FROM tb1 WHERE Item=:p_utext_var;
+ EXEC SQL SELECT count(*) INTO :count FROM tb1 WHERE Item='太𠮷𠜱平洋𠱓大西洋印度洋北冰洋';
+ printf ("found %d rows for Item='太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'\n", count);
+
+ init_var();
+ EXEC SQL SELECT Item INTO :p_utext_var FROM tb1 WHERE Count=3;
+ EXEC SQL DELETE FROM tb1 WHERE Item=:p_utext_var;
+ EXEC SQL SELECT count(*) INTO :count FROM tb1 WHERE Item='世界杯每隔四年就会举行一次每次𠲖个球队';
+ printf ("found %d rows for Item='世界杯每隔四年就会举行一次每次𠲖个球队'\n", count);
+
+ init_table_value();
+}
+
+//simple insert using utext pointer
+void test_pvar_5()
+{
+ test("test_pvar_5 : simple insert using utext pointer");
+ init_var();
+
+ EXEC SQL SELECT Item INTO :p_utext_var FROM tb1 WHERE Count=3;
+ EXEC SQL INSERT INTO tb1 values (:p_utext_var, 13);
+
+ EXEC SQL SELECT count(*) INTO :count FROM tb1 WHERE Item='世界杯每隔四年就会举行一次每次𠲖个球队';
+ printf ("found %d rows for Item='世界杯每隔四年就会举行一次每次𠲖个球队'\n", count);
+
+ init_table_value();
+}
+
+//prepared select into utext pointer
+void test_pvar_6()
+{
+ test("test_pvar_6 : prepared select into utext pointer");
+ init_var();
+
+ EXEC SQL PREPARE stmt FROM "SELECT Item FROM tb1 WHERE Count=?";
+
+ EXEC SQL EXECUTE stmt INTO :p_utext_var USING 1;
+ print_utext(p_utext_var);
+
+ init_var();
+ EXEC SQL EXECUTE stmt INTO :p_utext_var USING 3;
+ print_utext(p_utext_var);
+ init_table_value();
+
+ EXEC SQL DEALLOCATE PREPARE stmt;
+
+}
+
+//prepared select using utext pointer
+void test_pvar_7()
+{
+ test("test_pvar_7 : prepared select using utext pointer");
+ init_var();
+
+ EXEC SQL SELECT Item INTO :p_utext_var FROM tb1 WHERE Count=3;
+
+ EXEC SQL PREPARE stmt FROM "SELECT Count FROM tb1 WHERE Item=?";
+ EXEC SQL EXECUTE stmt INTO :count USING :p_utext_var;
+
+ printf ("count=%d for Item='世界杯每隔四年就会举行一次每次𠲖个球队'\n", count);
+ EXEC SQL DEALLOCATE PREPARE stmt;
+}
+
+//prepared update using utext pointer
+void test_pvar_8()
+{
+ test("test_pvar_8 : prepared update using utext pointer");
+ init_var();
+
+ EXEC SQL SELECT Item INTO :p_utext_var FROM tb1 WHERE Count=3;
+
+ EXEC SQL PREPARE stmt FROM "UPDATE tb1 SET Item=? WHERE Count=?";
+ EXEC SQL EXECUTE stmt USING :p_utext_var, 1;
+ EXEC SQL EXECUTE stmt USING :p_utext_var, 2;
+ EXEC SQL SELECT count(*) INTO :count FROM tb1 WHERE Item='世界杯每隔四年就会举行一次每次𠲖个球队';
+
+ printf ("found %d rows for Item='世界杯每隔四年就会举行一次每次𠲖个球队'\n", count);
+ EXEC SQL DEALLOCATE PREPARE stmt;
+
+ init_table_value();
+}
+
+//prepared delete using utext pointer
+void test_pvar_9()
+{
+ test("test_pvar_9 : prepared delete using utext pointer");
+ init_var();
+
+ EXEC SQL SELECT Item INTO :p_utext_var FROM tb1 WHERE Count=3;
+
+ EXEC SQL PREPARE stmt FROM "DELETE FROM tb1 WHERE Item=?";
+ EXEC SQL EXECUTE stmt USING :p_utext_var;
+ EXEC SQL SELECT count(*) INTO :count FROM tb1 WHERE Item='世界杯每隔四年就会举行一次每次𠲖个球队';
+
+ printf ("found %d rows for Item='世界杯每隔四年就会举行一次每次𠲖个球队'\n", count);
+ EXEC SQL DEALLOCATE PREPARE stmt;
+
+ init_table_value();
+}
+
+//prepared insert using utext pointer
+void test_pvar_10()
+{
+ test("test_pvar_10 : prepared insert using utext pointer");
+ init_var();
+
+ EXEC SQL SELECT Item INTO :p_utext_var FROM tb1 WHERE Count=3;
+
+ EXEC SQL PREPARE stmt FROM "INSERT INTO tb1 values (?, 13)";
+ EXEC SQL EXECUTE stmt USING :p_utext_var;
+ EXEC SQL SELECT count(*) INTO :count FROM tb1 WHERE Item='世界杯每隔四年就会举行一次每次𠲖个球队';
+
+ printf ("found %d rows for Item='世界杯每隔四年就会举行一次每次𠲖个球队'\n", count);
+ EXEC SQL DEALLOCATE PREPARE stmt;
+
+ init_table_value();
+}
+
+//Open cursor using utext pointer
+void test_pvar_11()
+{
+ test("test_pvar_11 : Open cursor using utext pointer");
+ init_var();
+
+ EXEC SQL SET AUTOCOMMIT TO OFF;
+ EXEC SQL SELECT Item INTO :p_utext_var FROM tb1 WHERE Count=3;
+
+ EXEC SQL PREPARE stmt FROM "SELECT Count FROM tb1 WHERE Item=?";
+ EXEC SQL DECLARE cursor_pvar_11 CURSOR FOR stmt;
+ EXEC SQL OPEN cursor_pvar_11 USING :p_utext_var;
+ EXEC SQL FETCH cursor_pvar_11 INTO :count;
+ printf ("count=%d for Item='世界杯每隔四年就会举行一次每次𠲖个球队'\n", count);
+ EXEC SQL CLOSE cursor_pvar_11;
+ EXEC SQL DEALLOCATE PREPARE stmt;
+ EXEC SQL SET AUTOCOMMIT TO ON;
+}
+
+//Fecth cursor into utext pointer
+void test_pvar_12()
+{
+ test("test_pvar_12 : Fecth cursor into utext pointer");
+ init_var();
+
+ EXEC SQL SET AUTOCOMMIT TO OFF;
+ EXEC SQL PREPARE stmt FROM "SELECT Item FROM tb1 WHERE Count=1";
+ EXEC SQL DECLARE cursor_pvar_12 CURSOR FOR stmt;
+ EXEC SQL OPEN cursor_pvar_12;
+ EXEC SQL FETCH cursor_pvar_12 INTO :p_utext_var;
+ EXEC SQL CLOSE cursor_pvar_12;
+
+ print_utext(p_utext_var);
+
+ EXEC SQL DEALLOCATE PREPARE stmt;
+ EXEC SQL SET AUTOCOMMIT TO ON;
+}
+
+//simple insert utext pointer with L string inited
+void test_pvar_13()
+{
+EXEC SQL BEGIN DECLARE SECTION;
+ utext *utext_local_pvar=L"太𠮷𠜱平洋𠱓大西洋印度洋北冰洋";
+EXEC SQL END DECLARE SECTION;
+ test("test_pvar_13 : simple insert utext pointer with L string inited");
+ init_var();
+
+ EXEC SQL INSERT INTO tb1 values (:utext_local_pvar, 16);
+
+ EXEC SQL SELECT Item INTO :utext_var:utext_var_ind FROM tb1 WHERE Count=16;
+ print_utext(utext_var);
+ print_utext_ind(utext_var_ind);
+ init_var();
+ init_table_value();
+}
+
+//Open cursor using utext var directly in WHERE Clause
+void test_pvar_14()
+{
+EXEC SQL BEGIN DECLARE SECTION;
+ utext *utext_local_pvar;
+EXEC SQL END DECLARE SECTION;
+ utext_local_pvar = (utext*)malloc(P_VAR_SIZE*sizeof(utext));
+ memset(utext_local_pvar,'a',P_VAR_SIZE*sizeof(utext));
+
+ test("test_pvar_14 : Open cursor using utext var directly in WHERE Clause");
+ init_var();
+
+ EXEC SQL SET AUTOCOMMIT TO OFF;
+ EXEC SQL SELECT Item INTO :utext_local_pvar FROM tb1 WHERE Count=3;
+
+ EXEC SQL DECLARE cursor_pvar_14 CURSOR FOR SELECT Count FROM tb1 WHERE Item=:utext_local_pvar;
+ EXEC SQL OPEN cursor_pvar_14;
+ EXEC SQL FETCH cursor_pvar_14 INTO :count;
+ printf ("count=%d for Item='世界杯每隔四年就会举行一次每次𠲖个球队'\n", count);
+ EXEC SQL CLOSE cursor_pvar_14;
+
+ EXEC SQL SET AUTOCOMMIT TO ON;
+}
+
+
+//utext pointer working with NULL without using indicator
+void test_pvar_15()
+{
+EXEC SQL BEGIN DECLARE SECTION;
+ utext *utext_local_pvar;
+EXEC SQL END DECLARE SECTION;
+ utext_local_pvar = (utext*)malloc(P_VAR_SIZE*sizeof(utext));
+ memset(utext_local_pvar,'a',P_VAR_SIZE*sizeof(utext));
+
+ test("test_pvar_15 : Test utext pointer working with NULL without using indicator");
+
+ EXEC SQL SELECT Item INTO :utext_local_pvar FROM tb1 WHERE Count=8;
+
+ print_utext(utext_local_pvar);
+
+ EXEC SQL INSERT INTO tb1 values (:utext_local_pvar, 18);
+ EXEC SQL INSERT INTO tb1 values (:utext_local_pvar, 19);
+ EXEC SQL INSERT INTO tb1 values (:utext_local_pvar, 20);
+ EXEC SQL SELECT count(*) INTO :count FROM tb1 WHERE Item is NULL;
+ printf ("found %d rows for Item being NULL\n", count);
+
+ init_table_value();
+}
+
+//utext pointer working with NULL using indicator
+void test_pvar_16()
+{
+EXEC SQL BEGIN DECLARE SECTION;
+ utext *utext_local_pvar;
+ int utext_pvar_ind = -1;
+EXEC SQL END DECLARE SECTION;
+ utext_local_pvar = (utext*)malloc(P_VAR_SIZE*sizeof(utext));
+ memset(utext_local_pvar,'a',P_VAR_SIZE*sizeof(utext));
+
+ test("test_pvar_16 : Test utext pointer working with NULL using indicator");
+
+ EXEC SQL SELECT Item INTO :utext_local_pvar:utext_pvar_ind FROM tb1 WHERE Count=8;
+
+ print_utext(utext_local_pvar);
+ print_utext_ind(utext_pvar_ind);
+
+ memset(utext_local_pvar,0,P_VAR_SIZE*sizeof(utext));
+ EXEC SQL INSERT INTO tb1 values (:utext_local_pvar:utext_pvar_ind, 18);
+ EXEC SQL INSERT INTO tb1 values (:utext_local_pvar:utext_pvar_ind, 19);
+ EXEC SQL INSERT INTO tb1 values (:utext_local_pvar:utext_pvar_ind, 20);
+ EXEC SQL SELECT count(*) INTO :count FROM tb1 WHERE Item is NULL;
+ printf ("found %d rows for Item being NULL\n", count);
+
+ init_table_value();
+}
+
+//utext uninitialized pointer getting and setting data
+void test_pvar_17()
+{
+EXEC SQL BEGIN DECLARE SECTION;
+ utext *utext_local_pvar=0;
+ char local_str[50];
+EXEC SQL END DECLARE SECTION;
+
+ test("test_pvar_17 : Test utext uninitialized pointer getting and setting data");
+
+ EXEC SQL SELECT Item INTO :utext_local_pvar FROM tb1 WHERE Count=1;
+
+ print_utext_str(utext_local_pvar);
+
+ EXEC SQL INSERT INTO tb1 values (:utext_local_pvar, 18);
+ EXEC SQL SELECT Item INTO :local_str FROM tb1 WHERE Count=18;
+ printf ("Find Item = %s where Count=18\n", local_str);
+
+ init_table_value();
+}
+
+//utext uninitialized pointer working with NULL without using indicator
+void test_pvar_18()
+{
+EXEC SQL BEGIN DECLARE SECTION;
+ utext *utext_local_pvar=0;
+EXEC SQL END DECLARE SECTION;
+
+ test("test_pvar_18 : Test utext uninitialized pointer working with NULL without using indicator");
+
+ EXEC SQL SELECT Item INTO :utext_local_pvar FROM tb1 WHERE Count=8;
+
+ print_utext_size(utext_local_pvar,1);
+
+ EXEC SQL INSERT INTO tb1 values (:utext_local_pvar, 18);
+ EXEC SQL INSERT INTO tb1 values (:utext_local_pvar, 19);
+ EXEC SQL INSERT INTO tb1 values (:utext_local_pvar, 20);
+ EXEC SQL SELECT count(*) INTO :count FROM tb1 WHERE Item is NULL;
+ printf ("found %d rows for Item being NULL\n", count);
+
+ init_table_value();
+}
+
+//utext uninitialized pointer working with NULL using indicator
+void test_pvar_19()
+{
+EXEC SQL BEGIN DECLARE SECTION;
+ utext *utext_local_pvar=0;
+ int utext_pvar_ind = -1;
+EXEC SQL END DECLARE SECTION;
+
+ test("test_pvar_19 : Test utext uninitialized pointer working with NULL using indicator");
+
+ EXEC SQL SELECT Item INTO :utext_local_pvar:utext_pvar_ind FROM tb1 WHERE Count=8;
+
+ print_utext_size(utext_local_pvar,1);
+ print_utext_ind(utext_pvar_ind);
+
+ EXEC SQL INSERT INTO tb1 values (:utext_local_pvar:utext_pvar_ind, 18);
+ EXEC SQL INSERT INTO tb1 values (:utext_local_pvar:utext_pvar_ind, 19);
+ EXEC SQL INSERT INTO tb1 values (:utext_local_pvar:utext_pvar_ind, 20);
+ EXEC SQL SELECT count(*) INTO :count FROM tb1 WHERE Item is NULL;
+ printf ("found %d rows for Item being NULL\n", count);
+
+ init_table_value();
+}
+
+//Test select into host varaibles from descriptor
+void test_desc_1()
+{
+ EXEC SQL BEGIN DECLARE SECTION;
+ utext utext_local_var[20];
+ utext *utext_local_pvar=0;
+ utext **utext_local_ppvar=0;
+ char desc1[8] = "outdesc";
+ EXEC SQL END DECLARE SECTION;
+
+// ECPGdebug(1, stderr);
+
+ EXEC SQL ALLOCATE DESCRIPTOR indesc;
+ EXEC SQL ALLOCATE DESCRIPTOR :desc1;
+
+ EXEC SQL SELECT Item,Count INTO SQL DESCRIPTOR :desc1 FROM tb1 WHERE Count=1;
+
+ EXEC SQL GET DESCRIPTOR :desc1 VALUE 1 :utext_local_var = DATA;
+ print_utext(utext_local_var);
+
+ EXEC SQL GET DESCRIPTOR :desc1 VALUE 1 :utext_local_pvar = DATA;
+ print_utext_str(utext_local_pvar);
+
+
+ EXEC SQL SELECT Item,Count INTO SQL DESCRIPTOR :desc1 FROM tb1 WHERE Count<=3;
+ EXEC SQL GET DESCRIPTOR :desc1 VALUE 1 :utext_local_ppvar = DATA;
+ print_utext_str(utext_local_ppvar[0]);
+ print_utext_str(utext_local_ppvar[1]);
+ print_utext_str(utext_local_ppvar[2]);
+
+
+ EXEC SQL SELECT Item,Count INTO SQL DESCRIPTOR :desc1 FROM tb1 WHERE Count<=10 and Count>=8;
+ EXEC SQL GET DESCRIPTOR :desc1 VALUE 1 :utext_local_ppvar = DATA;
+ print_utext_str(utext_local_ppvar[0]);
+ print_utext_str(utext_local_ppvar[1]);
+ print_utext_str(utext_local_ppvar[2]);
+
+
+ EXEC SQL DEALLOCATE DESCRIPTOR indesc;
+ EXEC SQL DEALLOCATE DESCRIPTOR :desc1;
+}
+
+
+//Test uninitialized pointer to pointer utext_var without initialize
+void test_pp_var_1()
+{
+EXEC SQL BEGIN DECLARE SECTION;
+ utext **utext_local_ppvar=0;
+ int *utext_local_ppvar_ind=0;
+ char utext_local_char[80];
+EXEC SQL END DECLARE SECTION;
+ test("test_pp_var_1 : Test pointer to pointer utext_var without initialize");
+
+ //memset(utext_local_var,'a',sizeof(utext_local_var));
+ EXEC SQL SELECT Item INTO :utext_local_ppvar:utext_local_ppvar_ind FROM tb1 WHERE Count<=3;
+ print_utext_str(utext_local_ppvar[0]);
+ print_utext_ind(utext_local_ppvar_ind[0]);
+
+ print_utext_str(utext_local_ppvar[1]);
+ print_utext_ind(utext_local_ppvar_ind[1]);
+
+ print_utext_str(utext_local_ppvar[2]);
+ print_utext_ind(utext_local_ppvar_ind[2]);
+
+ EXEC SQL INSERT INTO tb1 values (:utext_local_ppvar[1], 28);
+ EXEC SQL SELECT Item INTO :utext_local_char FROM tb1 WHERE Count=28;
+ printf("%s\n",utext_local_char);
+
+ init_table_value();
+}
+
+
+//Test uninitialized pointer to pointer utext_var working with NULL without indicator
+void test_pp_var_2()
+{
+EXEC SQL BEGIN DECLARE SECTION;
+ utext **utext_local_ppvar=0;
+EXEC SQL END DECLARE SECTION;
+ test("test_pp_var_2 : Test uninitialized pointer to pointer utext_var working with NULL without indicator");
+
+ //memset(utext_local_var,'a',sizeof(utext_local_var));
+ EXEC SQL SELECT Item INTO :utext_local_ppvar FROM tb1 WHERE Count>=8 and Count<=10;
+ print_utext_str(utext_local_ppvar[0]);
+ print_utext_str(utext_local_ppvar[1]);
+ print_utext_str(utext_local_ppvar[2]);
+
+ EXEC SQL INSERT INTO tb1 values (:utext_local_ppvar[0], 18);
+ EXEC SQL INSERT INTO tb1 values (:utext_local_ppvar[1], 19);
+ EXEC SQL INSERT INTO tb1 values (:utext_local_ppvar[2], 20);
+ EXEC SQL SELECT count(*) INTO :count FROM tb1 WHERE Item is NULL;
+ printf ("found %d rows for Item being NULL\n", count);
+
+ init_table_value();
+}
+
+//Test uninitialized pointer to pointer utext_var working with NULL with indicator
+void test_pp_var_3()
+{
+EXEC SQL BEGIN DECLARE SECTION;
+ utext **utext_local_ppvar=0;
+ int *utext_local_ppvar_ind=0;
+EXEC SQL END DECLARE SECTION;
+ test("test_pp_var_2 : Test uninitialized pointer to pointer utext_var working with NULL without indicator");
+
+ //memset(utext_local_var,'a',sizeof(utext_local_var));
+ EXEC SQL SELECT Item INTO :utext_local_ppvar:utext_local_ppvar_ind FROM tb1 WHERE Count>=8 and Count<=10;
+ print_utext_str(utext_local_ppvar[0]);
+ print_utext_ind(utext_local_ppvar_ind[0]);
+
+ print_utext_str(utext_local_ppvar[1]);
+ print_utext_ind(utext_local_ppvar_ind[1]);
+
+ print_utext_str(utext_local_ppvar[2]);
+ print_utext_ind(utext_local_ppvar_ind[2]);
+
+ EXEC SQL INSERT INTO tb1 values (:utext_local_ppvar[0], 18);
+ EXEC SQL INSERT INTO tb1 values (:utext_local_ppvar[1], 19);
+ EXEC SQL INSERT INTO tb1 values (:utext_local_ppvar[2], 20);
+ EXEC SQL SELECT count(*) INTO :count FROM tb1 WHERE Item is NULL;
+ printf ("found %d rows for Item being NULL\n", count);
+
+ init_table_value();
+}
+
+void test_all()
+{
+ test_var_1();
+ test_var_2();
+ test_var_3();
+ test_var_4();
+ test_var_5();
+ test_var_6();
+ test_var_7();
+ test_var_8();
+ test_var_9();
+ test_var_10();
+ test_var_11();
+ test_var_12();
+ test_var_13();
+ test_var_14();
+ test_var_15();
+ test_var_16();
+ test_array_1();
+ test_array_2();
+ test_array_3();
+ test_array_4();
+ test_array_5();
+ test_array_6();
+ test_array_7();
+ test_array_8();
+ test_array_9();
+ test_array_10();
+ test_array_11();
+ test_array_12();
+ test_array_13();
+ test_array_14();
+ test_array_15();
+ test_array_16();
+ test_pvar_1();
+ test_pvar_2();
+ test_pvar_3();
+ test_pvar_4();
+ test_pvar_5();
+ test_pvar_6();
+ test_pvar_7();
+ test_pvar_8();
+ test_pvar_9();
+ test_pvar_10();
+ test_pvar_11();
+ test_pvar_12();
+ test_pvar_13();
+ test_pvar_14();
+ test_pvar_15();
+ test_pvar_16();
+ test_pvar_17();
+ test_pvar_18();
+ test_pvar_19();
+ test_pp_var_1();
+ test_pp_var_2();
+ test_pp_var_3();
+}
+
+int main(int argc, char *argv[])
+{
+// ECPGdebug(1, stderr);
+ if(test_init() !=0)
+ return -1;
+
+ test_all();
+ test_finish();
+
+ return 0;
+}
diff --git a/src/interfaces/ecpg/test/sql/uvarchar.pgc b/src/interfaces/ecpg/test/sql/uvarchar.pgc
new file mode 100755
index 0000000..4dd894a
--- /dev/null
+++ b/src/interfaces/ecpg/test/sql/uvarchar.pgc
@@ -0,0 +1,877 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+EXEC SQL INCLUDE ../regression;
+
+#define test(msg) printf("\n%s\n",msg)
+#define VAR_SIZE 20
+#define ARRAY_SIZE 4
+
+/* Following is UTF8 and UTF16 characters mapping table */
+/*太𠮷𠜱平洋𠱓大西洋印度洋北冰洋
+0x592A,0x5E73,0x6D0B,0x5927,0x897F,0x6D0B,0x5370,0x5EA6,
+0x6D0B,0x5317,0x51B0,0x6D0B,0x548C,0x5357,0x51B0,0x6D0B,
+0x0000,0x0000,0x0000,0x0000*/
+
+/*足球篮球羽毛球乒乓球橄榄球棒球冰球
+0x8DB3,0x7403,0x7BEE,0x7403,0x7FBD,0x6BDB,0x7403,0x4E52,
+0x4E53,0x7403,0x6A44,0x6984,0x7403,0x68D2,0x7403,0x51B0,
+0x7403,0x0000,0x0000,0x0000
+*/
+
+/*世界杯每隔四年就会举行一次每次𠲖个球队
+0x4E16,0x754C,0x676F,0x6BCF,0x9694,0x56DB,0x5E74,0x5C31,
+0x4F1A,0x4E3E,0x884C,0x4E00,0x6B21,0x6BCF,0x6B21,0x0033,
+0x0032,0x4E2A,0x7403,0x961F
+*/
+
+/* 亚洲欧洲非洲大洋洲北美洲南美洲南极洲没有北极洲
+0x4E9A,0x6D32,0x6B27,0x6D32,0x975E,0x6D32,0x5927,0x6D0B,
+0x6D32,0x5317,0x7F8E,0x6D32,0x5357,0x7F8E,0x6D32,0x5357,
+0x6781,0x6D32,0x6CA1,0x6709,0x5317,0x6781,0x6D32
+*/
+
+EXEC SQL BEGIN DECLARE SECTION;
+ UVARCHAR uvarchar_var[VAR_SIZE];
+ UVARCHAR uvarchar_array[ARRAY_SIZE][VAR_SIZE];
+
+ int uvarchar_var_ind;
+
+ int count;
+ int count_array[4]={1,2,3,4};
+ int total_tuples = 0;
+EXEC SQL END DECLARE SECTION;
+
+void print_uvarchar(void);
+void print_uvarchar_ind(int uvarchar_var_ind);
+void print_local_uvarchar(utext *utext_var, int var_len);
+void print_array(void);
+int test_init(void);
+void test_finish(void);
+void init_table_value(void);
+void init_var(void);
+
+void test_var_1(void);
+void test_var_2(void);
+void test_var_3(void);
+void test_var_4(void);
+void test_var_5(void);
+void test_var_6(void);
+void test_var_7(void);
+void test_var_8(void);
+void test_var_9(void);
+void test_var_10(void);
+void test_var_11(void);
+void test_var_12(void);
+void test_var_13(void);
+void test_var_14(void);
+void test_var_15(void);
+void test_var_16(void);
+void test_array_1(void);
+void test_array_2(void);
+void test_array_3(void);
+void test_array_4(void);
+void test_array_5(void);
+void test_array_6(void);
+void test_array_7(void);
+void test_array_8(void);
+void test_array_9(void);
+void test_array_10(void);
+void test_array_11(void);
+void test_array_12(void);
+void test_array_13(void);
+void test_array_14(void);
+void test_array_15(void);
+void test_array_16(void);
+
+void test_all(void);
+
+void print_uvarchar()
+{
+ int i;
+
+ printf ("---->uvarchar variable,len=%d:\n",uvarchar_var.len);
+ for(i=0; i<VAR_SIZE; i++)
+ {
+ printf ("0x%04X ", uvarchar_var.arr[i]);
+ if(i>6 && (i+1)%8==0)
+ printf("\n");
+ }
+ printf("\n");
+}
+
+void print_uvarchar_ind(int uvarchar_var_ind)
+{
+ printf("uvarchar_var_ind = %d\n",uvarchar_var_ind);
+}
+
+void print_local_uvarchar(utext *utext_var, int var_len)
+{
+ int i;
+
+ printf ("---->uvarchar variable,len=%d:\n",var_len);
+ for(i=0; i<20; i++)
+ {
+ printf ("0x%04X ", utext_var[i]);
+ if(i>6 && (i+1)%8==0)
+ printf("\n");
+ }
+ printf("\n");
+}
+
+void print_array()
+{
+ int i,j;
+
+ for(i=0; i<ARRAY_SIZE; i++)
+ {
+ printf ("---->uvarchar array[%d]:(len=%d)\n", i,uvarchar_array[i].len);
+
+ for(j=0; j<VAR_SIZE; j++)
+ {
+ printf ("0x%04X ", uvarchar_array[i].arr[j]);
+ if(j>6 && (j+1)%8==0)
+ printf("\n");
+ }
+ printf("\n");
+ }
+
+ printf("\n");
+}
+
+int test_init()
+{
+ EXEC SQL CONNECT TO REGRESSDB1;
+
+ EXEC SQL SET AUTOCOMMIT TO ON;
+ EXEC SQL WHENEVER SQLWARNING SQLPRINT;
+ EXEC SQL WHENEVER SQLERROR SQLPRINT;
+
+ EXEC SQL SET client_encoding='UTF8';
+
+ //initialization of test table
+ EXEC SQL CREATE TABLE tb1 (Item varchar, Count integer);
+
+ init_table_value();
+
+ return 0;
+}
+
+void test_finish()
+{
+ EXEC SQL DROP TABLE tb1;
+ EXEC SQL DISCONNECT ALL;
+}
+
+
+void init_table_value()
+{
+ EXEC SQL TRUNCATE tb1;
+
+ EXEC SQL INSERT INTO tb1 VALUES ('太𠮷𠜱平洋𠱓大西洋印度洋北冰洋', 1);
+ EXEC SQL INSERT INTO tb1 VALUES ('足球篮球羽毛球乒乓球橄榄球棒球冰球', 2);
+ EXEC SQL INSERT INTO tb1 VALUES ('世界杯每隔四年就会举行一次每次𠲖个球队', 3);
+ EXEC SQL INSERT INTO tb1 VALUES ('亚洲欧洲非洲大洋洲北美洲南美洲南极洲没有北极洲', 4);
+
+ EXEC SQL INSERT INTO tb1 (Count) VALUES(8);
+ EXEC SQL INSERT INTO tb1 (Count) VALUES(9);
+ EXEC SQL INSERT INTO tb1 (Count) VALUES(10);
+}
+
+void init_var()
+{
+ int i;
+ memset((void*)&uvarchar_var,'a',sizeof(uvarchar_var));
+ uvarchar_var.len = 0;
+
+ memset((char*)uvarchar_array,'a',sizeof(uvarchar_array)*ARRAY_SIZE);
+
+ for(i=0;i<ARRAY_SIZE;i++)
+ {
+ uvarchar_array[i].len = 0;
+ }
+
+ uvarchar_var_ind = 0;
+}
+
+//simple select into uvarchar
+void test_var_1()
+{
+ test("test_var_1 : simple select into uvarchar var");
+ init_var();
+ //print_uvarchar();
+
+ EXEC SQL SELECT Item INTO :uvarchar_var:uvarchar_var_ind FROM tb1 WHERE Count=1;
+ print_uvarchar();
+ print_uvarchar_ind(uvarchar_var_ind);
+ init_var();
+
+
+ EXEC SQL SELECT Item INTO :uvarchar_var:uvarchar_var_ind FROM tb1 WHERE Count=2;
+ print_uvarchar();
+ print_uvarchar_ind(uvarchar_var_ind);
+ init_var();
+
+ EXEC SQL SELECT Item INTO :uvarchar_var:uvarchar_var_ind FROM tb1 WHERE Count=3;
+ print_uvarchar();
+ print_uvarchar_ind(uvarchar_var_ind);
+ init_var();
+
+ EXEC SQL SELECT Item INTO :uvarchar_var:uvarchar_var_ind FROM tb1 WHERE Count=4;
+ print_uvarchar();
+ print_uvarchar_ind(uvarchar_var_ind);
+ init_var();
+}
+
+
+//simple select using uvarchar
+void test_var_2()
+{
+ test("test_var_2 : simple select using uvarchar var");
+ init_var();
+
+ EXEC SQL SELECT Item INTO :uvarchar_var FROM tb1 WHERE Count=1;
+ EXEC SQL SELECT Count INTO :count FROM tb1 WHERE Item=:uvarchar_var;
+ printf ("count=%d for '太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'\n", count);
+
+ EXEC SQL SELECT Item INTO :uvarchar_var FROM tb1 WHERE Count=3;
+ EXEC SQL SELECT Count INTO :count FROM tb1 WHERE Item=:uvarchar_var;
+ printf ("count=%d for '世界杯每隔四年就会举行一次每次𠲖个球队'\n", count);
+}
+
+//simple update using uvarchar
+void test_var_3()
+{
+ test("test_var_3 : simple update using uvarchar");
+ init_var();
+
+ EXEC SQL SELECT Item INTO :uvarchar_var FROM tb1 WHERE Count=1;
+ EXEC SQL UPDATE tb1 SET Item=:uvarchar_var WHERE Count=2;
+ EXEC SQL UPDATE tb1 SET Item=:uvarchar_var WHERE Count=3;
+ EXEC SQL SELECT count(*) INTO :count FROM tb1 WHERE Item='太𠮷𠜱平洋𠱓大西洋印度洋北冰洋';
+ printf ("found %d rows for Item='太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'\n", count);
+
+ init_table_value();
+}
+
+//simple delete using uvarchar var
+void test_var_4()
+{
+ test("test_var_4 : simple delete using uvarchar var");
+ init_var();
+
+ EXEC SQL SELECT Item INTO :uvarchar_var FROM tb1 WHERE Count=1;
+ EXEC SQL DELETE FROM tb1 WHERE Item=:uvarchar_var;
+ EXEC SQL SELECT count(*) INTO :count FROM tb1 WHERE Item='太𠮷𠜱平洋𠱓大西洋印度洋北冰洋';
+ printf ("found %d rows for Item='太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'\n", count);
+
+ EXEC SQL SELECT Item INTO :uvarchar_var FROM tb1 WHERE Count=3;
+ EXEC SQL DELETE FROM tb1 WHERE Item=:uvarchar_var;
+ EXEC SQL SELECT count(*) INTO :count FROM tb1 WHERE Item='世界杯每隔四年就会举行一次每次𠲖个球队';
+ printf ("found %d rows for Item='世界杯每隔四年就会举行一次每次𠲖个球队'\n", count);
+
+ init_table_value();
+}
+
+//simple insert using uvarchar var
+void test_var_5()
+{
+ test("test_var_5 : simple insert using uvarchar");
+ init_var();
+
+ EXEC SQL SELECT Item INTO :uvarchar_var FROM tb1 WHERE Count=1;
+ EXEC SQL INSERT INTO tb1 values (:uvarchar_var, 11);
+
+ init_var();
+ EXEC SQL SELECT Item INTO :uvarchar_var FROM tb1 WHERE Count=3;
+ EXEC SQL INSERT INTO tb1 values (:uvarchar_var, 13);
+
+
+ EXEC SQL SELECT count(*) INTO :count FROM tb1 WHERE Item='太𠮷𠜱平洋𠱓大西洋印度洋北冰洋';
+ printf ("found %d rows for Item='太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'\n", count);
+
+ EXEC SQL SELECT count(*) INTO :count FROM tb1 WHERE Item='世界杯每隔四年就会举行一次每次𠲖个球队';
+ printf ("found %d rows for Item='世界杯每隔四年就会举行一次每次𠲖个球队'\n", count);
+
+ init_table_value();
+}
+
+//prepared select into uvarchar var
+void test_var_6()
+{
+ test("test_var_6 : prepared select into uvarchar var");
+ init_var();
+
+ EXEC SQL PREPARE stmt FROM "SELECT Item FROM tb1 WHERE Count=?";
+
+ EXEC SQL EXECUTE stmt INTO :uvarchar_var USING 1;
+ print_uvarchar();
+
+ EXEC SQL EXECUTE stmt INTO :uvarchar_var USING 3;
+ print_uvarchar();
+
+ EXEC SQL DEALLOCATE PREPARE stmt;
+}
+
+//prepared select using uvarchar var
+void test_var_7()
+{
+ test("test_var_7 : prepared select using uvarchar var");
+ init_var();
+
+ EXEC SQL SELECT Item INTO :uvarchar_var FROM tb1 WHERE Count=3;
+
+ EXEC SQL PREPARE stmt FROM "SELECT Count FROM tb1 WHERE Item=?";
+ EXEC SQL EXECUTE stmt INTO :count USING :uvarchar_var;
+
+ printf ("count=%d for Item='世界杯每隔四年就会举行一次每次𠲖个球队'\n", count);
+ EXEC SQL DEALLOCATE PREPARE stmt;
+}
+
+//prepared update using uvarchar var
+void test_var_8()
+{
+ test("test_var_8 : prepared update using uvarchar var");
+ init_var();
+
+ EXEC SQL SELECT Item INTO :uvarchar_var FROM tb1 WHERE Count=3;
+
+ EXEC SQL PREPARE stmt FROM "UPDATE tb1 SET Item=? WHERE Count=?";
+ EXEC SQL EXECUTE stmt USING :uvarchar_var, 1;
+ EXEC SQL EXECUTE stmt USING :uvarchar_var, 2;
+ EXEC SQL SELECT count(*) INTO :count FROM tb1 WHERE Item='世界杯每隔四年就会举行一次每次𠲖个球队';
+
+ printf ("found %d rows for Item='世界杯每隔四年就会举行一次每次𠲖个球队'\n", count);
+ EXEC SQL DEALLOCATE PREPARE stmt;
+
+ init_table_value();
+}
+
+//prepared delete using uvarchar var
+void test_var_9()
+{
+ test("test_var_9 : prepared delete using uvarchar var");
+ init_var();
+
+ EXEC SQL SELECT Item INTO :uvarchar_var FROM tb1 WHERE Count=3;
+
+ EXEC SQL PREPARE stmt FROM "DELETE FROM tb1 WHERE Item=?";
+ EXEC SQL EXECUTE stmt USING :uvarchar_var;
+ EXEC SQL SELECT count(*) INTO :count FROM tb1 WHERE Item='世界杯每隔四年就会举行一次每次𠲖个球队';
+
+ printf ("found %d rows for Item='世界杯每隔四年就会举行一次每次𠲖个球队'\n", count);
+ EXEC SQL DEALLOCATE PREPARE stmt;
+
+ init_table_value();
+}
+
+//prepared insert using uvarchar var
+void test_var_10()
+{
+ test("test_var_10 : prepared insert using uvarchar var");
+ init_var();
+
+ EXEC SQL SELECT Item INTO :uvarchar_var FROM tb1 WHERE Count=3;
+
+ EXEC SQL PREPARE stmt FROM "INSERT INTO tb1 values (?, 13)";
+ EXEC SQL EXECUTE stmt USING :uvarchar_var;
+ EXEC SQL SELECT count(*) INTO :count FROM tb1 WHERE Item='世界杯每隔四年就会举行一次每次𠲖个球队';
+
+ printf ("found %d rows for Item='世界杯每隔四年就会举行一次每次𠲖个球队'\n", count);
+ EXEC SQL DEALLOCATE PREPARE stmt;
+
+ init_table_value();
+}
+
+//Open cursor using uvarchar var
+void test_var_11()
+{
+ test("test_var_11 : Open cursor using uvarchar var");
+ init_var();
+
+ EXEC SQL SET AUTOCOMMIT TO OFF;
+ EXEC SQL SELECT Item INTO :uvarchar_var FROM tb1 WHERE Count=3;
+
+ EXEC SQL PREPARE stmt FROM "SELECT Count FROM tb1 WHERE Item=?";
+ EXEC SQL DECLARE cursor_var_11 CURSOR FOR stmt;
+ EXEC SQL OPEN cursor_var_11 USING :uvarchar_var;
+ EXEC SQL FETCH cursor_var_11 INTO :count;
+ printf ("count=%d for Item='世界杯每隔四年就会举行一次每次𠲖个球队'\n", count);
+ EXEC SQL CLOSE cursor_var_11;
+ EXEC SQL DEALLOCATE PREPARE stmt;
+ EXEC SQL SET AUTOCOMMIT TO ON;
+}
+
+//Fecth cursor into uvarchar var
+void test_var_12()
+{
+ test("test_var_12 : Fecth cursor into uvarchar var");
+ init_var();
+
+ EXEC SQL SET AUTOCOMMIT TO OFF;
+ EXEC SQL PREPARE stmt FROM "SELECT Item FROM tb1 WHERE Count=1";
+ EXEC SQL DECLARE cursor_var_12 CURSOR FOR stmt;
+ EXEC SQL OPEN cursor_var_12;
+ EXEC SQL FETCH cursor_var_12 INTO :uvarchar_var;
+ EXEC SQL CLOSE cursor_var_12;
+
+ print_uvarchar();
+
+ EXEC SQL DEALLOCATE PREPARE stmt;
+ EXEC SQL SET AUTOCOMMIT TO ON;
+}
+
+//simple insert using uvarchar with L string inited
+void test_var_13()
+{
+EXEC SQL BEGIN DECLARE SECTION;
+ uvarchar uvarchar_local_var[VAR_SIZE];
+EXEC SQL END DECLARE SECTION;
+
+ test("test_var_13 : simple insert using uvarchar with L string inited");
+ init_var();
+
+ memset((char*)&uvarchar_local_var,0,sizeof(uvarchar_local_var));
+
+ memcpy((char*)uvarchar_local_var.arr, L"太𠮷𠜱平洋𠱓大西洋印度洋北冰洋", sizeof(L"太𠮷𠜱平洋𠱓大西洋印度洋北冰洋"));
+ uvarchar_local_var.len = sizeof(L"太𠮷𠜱平洋𠱓大西洋印度洋北冰洋")/4;
+
+ printf("uvarchar_local_var.len = %d\n",uvarchar_local_var.len);
+
+ EXEC SQL INSERT INTO tb1 values (:uvarchar_local_var, 16);
+
+ EXEC SQL SELECT count(*) INTO :count FROM tb1 WHERE Item='太𠮷𠜱平洋𠱓大西洋印度洋北冰洋';
+ printf ("found %d rows for Item='太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'\n", count);
+
+ EXEC SQL SELECT Item INTO :uvarchar_var:uvarchar_var_ind FROM tb1 WHERE Count=16;
+ print_uvarchar();
+ print_uvarchar_ind(uvarchar_var_ind);
+
+ init_table_value();
+}
+
+//Open cursor using utext var directly in WHERE Clause
+void test_var_14()
+{
+EXEC SQL BEGIN DECLARE SECTION;
+ uvarchar uvarchar_local_var[20+1];
+EXEC SQL END DECLARE SECTION;
+ memset((char*)&uvarchar_local_var,0x00,sizeof(uvarchar_local_var));
+
+ test("test_var_14 : Open cursor using utext var directly in WHERE Clause");
+ init_var();
+
+ EXEC SQL SET AUTOCOMMIT TO OFF;
+ EXEC SQL SELECT Item INTO :uvarchar_local_var FROM tb1 WHERE Count=3;
+ EXEC SQL DECLARE cursor_var_14 CURSOR FOR SELECT Count FROM tb1 WHERE Item=:uvarchar_local_var;
+ EXEC SQL OPEN cursor_var_14;
+ EXEC SQL FETCH cursor_var_14 INTO :count;
+ printf ("count=%d for Item='世界杯每隔四年就会举行一次每次𠲖个球队'\n", count);
+
+ EXEC SQL CLOSE cursor_var_14;
+
+ EXEC SQL SET AUTOCOMMIT TO ON;
+}
+
+//Test uvarchar_var working with NULL without indicator
+void test_var_15()
+{
+EXEC SQL BEGIN DECLARE SECTION;
+ uvarchar uvarchar_local_var[20+1];
+EXEC SQL END DECLARE SECTION;
+ test("test_var_15 : Test uvarchar_var working with NULL without indicator");
+
+ memset((char*)&uvarchar_local_var,'a',sizeof(uvarchar_local_var));
+ uvarchar_local_var.len=10;
+ EXEC SQL SELECT Item INTO :uvarchar_local_var FROM tb1 WHERE Count=8;
+ print_local_uvarchar(uvarchar_local_var.arr,20);
+
+
+ memset((char*)&uvarchar_local_var,0x00,sizeof(uvarchar_local_var));
+ EXEC SQL INSERT INTO tb1 values (:uvarchar_local_var, 18);
+ EXEC SQL INSERT INTO tb1 values (:uvarchar_local_var, 19);
+ EXEC SQL INSERT INTO tb1 values (:uvarchar_local_var, 20);
+ EXEC SQL SELECT count(*) INTO :count FROM tb1 WHERE Item is NULL;
+ printf ("found %d rows for Item being NULL\n", count);
+
+ init_table_value();
+}
+
+//uvarchar_var working with NULL with indicator
+void test_var_16()
+{
+EXEC SQL BEGIN DECLARE SECTION;
+ uvarchar uvarchar_local_var[20+1];
+ int uvarchar_var_ind=-1;
+EXEC SQL END DECLARE SECTION;
+ test("test_var_16 : Test uvarchar_var working with NULL with indicator");
+
+ memset((char*)&uvarchar_local_var,'a',sizeof(uvarchar_local_var));
+ uvarchar_local_var.len=0;
+ EXEC SQL SELECT Item INTO :uvarchar_local_var:uvarchar_var_ind FROM tb1 WHERE Count=8;
+ print_local_uvarchar(uvarchar_local_var.arr,20);
+ print_uvarchar_ind(uvarchar_var_ind);
+
+ memset((char*)&uvarchar_local_var,0x00,sizeof(uvarchar_local_var));
+ EXEC SQL INSERT INTO tb1 values (:uvarchar_local_var:uvarchar_var_ind, 18);
+ EXEC SQL INSERT INTO tb1 values (:uvarchar_local_var:uvarchar_var_ind, 19);
+ EXEC SQL INSERT INTO tb1 values (:uvarchar_local_var:uvarchar_var_ind, 20);
+ EXEC SQL SELECT count(*) INTO :count FROM tb1 WHERE Item is NULL;
+ printf ("found %d rows for Item being NULL\n", count);
+
+ init_table_value();
+}
+
+
+//simple select into uvarchar array
+void test_array_1()
+{
+ test("test_array_1 : simple select into uvarchar array");
+ init_var();
+
+ EXEC SQL SELECT Item INTO :uvarchar_array FROM tb1 WHERE Count<=3;
+
+ print_array();
+ init_var();
+
+ EXEC SQL SELECT Item INTO :uvarchar_array[0] FROM tb1 WHERE Count=1;
+ print_array();
+ init_var();
+}
+
+
+//simple select using uvarchar array
+void test_array_2()
+{
+ test("test_array_2 : simple select using uvarchar array");
+ init_var();
+
+ EXEC SQL SELECT Item INTO :uvarchar_array FROM tb1 WHERE Count<=3;
+
+ count = 0;
+ EXEC SQL SELECT Count INTO :count FROM tb1 WHERE Item=:uvarchar_array[0];
+ printf ("count=%d for '太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'\n", count);
+
+ count = 0;
+ EXEC SQL SELECT Count INTO :count FROM tb1 WHERE Item=:uvarchar_array[2];
+ printf ("count=%d for '世界杯每隔四年就会举行一次每次𠲖个球队'\n", count);
+}
+
+//simple update using uvarchar array
+void test_array_3()
+{
+ test("test_array_3 : simple update using uvarchar array");
+ init_var();
+
+ EXEC SQL SELECT Item INTO :uvarchar_array FROM tb1 WHERE Count<=3;
+
+ EXEC SQL UPDATE tb1 SET Item=:uvarchar_array[2] WHERE Count=1;
+
+ count = 0;
+ EXEC SQL SELECT count(*) INTO :count FROM tb1 WHERE Item='太𠮷𠜱平洋𠱓大西洋印度洋北冰洋';
+ printf ("find %d rows for Item='太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'\n", count);
+
+ count = 0;
+ EXEC SQL SELECT count(*) INTO :count FROM tb1 WHERE Item='世界杯每隔四年就会举行一次每次𠲖个球队';
+ printf ("find %d rows for Item='世界杯每隔四年就会举行一次每次𠲖个球队'\n", count);
+
+ init_table_value();
+}
+
+//simple delete using uvarchar array
+void test_array_4()
+{
+ test("test_array_4 : simple delete using uvarchar array");
+ init_var();
+
+ EXEC SQL SELECT Item INTO :uvarchar_array FROM tb1 WHERE Count<=3;
+
+ count = 100;
+ EXEC SQL DELETE FROM tb1 WHERE Item=:uvarchar_array[0];
+ EXEC SQL SELECT count(*) INTO :count FROM tb1 WHERE Item='太𠮷𠜱平洋𠱓大西洋印度洋北冰洋';
+ printf ("found %d rows for Item='太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'\n", count);
+
+ count = 100;
+ EXEC SQL DELETE FROM tb1 WHERE Item=:uvarchar_array[2];
+ EXEC SQL SELECT count(*) INTO :count FROM tb1 WHERE Item='世界杯每隔四年就会举行一次每次𠲖个球队';
+ printf ("found %d rows for Item='世界杯每隔四年就会举行一次每次𠲖个球队'\n", count);
+
+ init_table_value();
+}
+
+//simple insert using uvarchar array
+void test_array_5()
+{
+ test("test_array_5 : simple insert using uvarchar array");
+ init_var();
+
+ EXEC SQL SELECT Item INTO :uvarchar_array FROM tb1 WHERE Count<=3;
+
+ EXEC SQL INSERT INTO tb1 values (:uvarchar_array[0], 11);
+ EXEC SQL SELECT count(*) INTO :count FROM tb1 WHERE Item='太𠮷𠜱平洋𠱓大西洋印度洋北冰洋';
+ printf ("found %d rows for Item='太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'\n", count);
+
+ EXEC SQL INSERT INTO tb1 values (:uvarchar_array[2], 13);
+ EXEC SQL SELECT count(*) INTO :count FROM tb1 WHERE Item='世界杯每隔四年就会举行一次每次𠲖个球队';
+ printf ("found %d rows for Item='世界杯每隔四年就会举行一次每次𠲖个球队'\n", count);
+
+ init_table_value();
+}
+
+//prepared select into uvarchar array
+void test_array_6()
+{
+ test("test_array_6 : prepared select into uvarchar array");
+ init_var();
+
+ EXEC SQL PREPARE stmt FROM "SELECT Item FROM tb1 WHERE Count<=?";
+
+ EXEC SQL EXECUTE stmt INTO :uvarchar_array USING 3;
+
+ print_array();
+
+ EXEC SQL DEALLOCATE PREPARE stmt;
+}
+
+//prepared select using uvarchar array
+void test_array_7()
+{
+ test("test_array_7 : prepared select using uvarchar array");
+ init_var();
+ EXEC SQL SELECT Item INTO :uvarchar_array FROM tb1 WHERE Count<=3;
+
+ count = 0;
+ EXEC SQL PREPARE stmt FROM "SELECT Count FROM tb1 WHERE Item=?";
+ EXEC SQL EXECUTE stmt INTO :count USING :uvarchar_array[0];
+
+ printf ("count=%d for Item='世界杯每隔四年就会举行一次每次𠲖个球队'\n", count);
+ EXEC SQL DEALLOCATE PREPARE stmt;
+}
+
+//prepared update using uvarchar array
+void test_array_8()
+{
+ test("test_array_8 : prepared update using uvarchar array");
+ init_var();
+ EXEC SQL SELECT Item INTO :uvarchar_array FROM tb1 WHERE Count<=3;
+
+ EXEC SQL PREPARE stmt FROM "UPDATE tb1 SET Item=? WHERE Count=?";
+ EXEC SQL EXECUTE stmt USING :uvarchar_array[0], 1;
+ EXEC SQL EXECUTE stmt USING :uvarchar_array[0], 2;
+ EXEC SQL SELECT count(*) INTO :count FROM tb1 WHERE Item='太𠮷𠜱平洋𠱓大西洋印度洋北冰洋';
+
+ printf ("found %d rows for Item='太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'\n", count);
+ EXEC SQL DEALLOCATE PREPARE stmt;
+
+ init_table_value();
+}
+
+//prepared delete using uvarchar array
+void test_array_9()
+{
+ test("test_array_9 : prepared delete using uvarchar array");
+ init_var();
+ EXEC SQL SELECT Item INTO :uvarchar_array FROM tb1 WHERE Count<=3;
+
+ count = 0;
+ EXEC SQL PREPARE stmt FROM "DELETE FROM tb1 WHERE Item=?";
+ EXEC SQL EXECUTE stmt USING :uvarchar_array[0];
+ EXEC SQL SELECT count(*) INTO :count FROM tb1 WHERE Item='太𠮷𠜱平洋𠱓大西洋印度洋北冰洋';
+
+ printf ("found %d rows for Item='太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'\n", count);
+ EXEC SQL DEALLOCATE PREPARE stmt;
+
+ init_table_value();
+}
+
+//prepared insert using uvarchar array
+void test_array_10()
+{
+ test("test_array_10 : prepared insert using uvarchar array");
+ init_var();
+ EXEC SQL SELECT Item INTO :uvarchar_array FROM tb1 WHERE Count<=3;
+
+ EXEC SQL PREPARE stmt FROM "INSERT INTO tb1 values (?, ?)";
+ EXEC SQL EXECUTE stmt USING :uvarchar_array[2], 13;
+ EXEC SQL EXECUTE stmt USING :uvarchar_array[2], 15;
+ EXEC SQL SELECT count(*) INTO :count FROM tb1 WHERE Item='世界杯每隔四年就会举行一次每次𠲖个球队';
+
+ printf ("found %d rows for Item='世界杯每隔四年就会举行一次每次𠲖个球队'\n", count);
+ EXEC SQL DEALLOCATE PREPARE stmt;
+
+ init_table_value();
+}
+
+//Open cursor using uvarchar array
+void test_array_11()
+{
+ test("test_array_11 : Open cursor using uvarchar array");
+ init_var();
+
+ EXEC SQL SET AUTOCOMMIT TO OFF;
+ EXEC SQL SELECT Item INTO :uvarchar_array FROM tb1 WHERE Count<=3;
+
+ EXEC SQL PREPARE stmt FROM "SELECT Count FROM tb1 WHERE Item=?";
+ EXEC SQL DECLARE cursor_array_11 CURSOR FOR stmt;
+ EXEC SQL OPEN cursor_array_11 USING :uvarchar_array[2];
+ EXEC SQL FETCH cursor_array_11 INTO :count;
+ printf ("count=%d for Item='世界杯每隔四年就会举行一次每次𠲖个球队'\n", count);
+ EXEC SQL CLOSE cursor_array_11;
+ EXEC SQL DEALLOCATE PREPARE stmt;
+ EXEC SQL SET AUTOCOMMIT TO ON;
+}
+
+//Fecth cursor into uvarchar array
+void test_array_12()
+{
+ test("test_array_12 : Fecth cursor into uvarchar array");
+ init_var();
+
+ EXEC SQL SET AUTOCOMMIT TO OFF;
+ EXEC SQL PREPARE stmt FROM "SELECT Item FROM tb1 WHERE Count<=3";
+ EXEC SQL DECLARE cursor_array_12 CURSOR FOR stmt;
+ EXEC SQL OPEN cursor_array_12;
+ EXEC SQL FETCH cursor_array_12 INTO :uvarchar_array[0];
+ EXEC SQL FETCH cursor_array_12 INTO :uvarchar_array[1];
+ EXEC SQL FETCH cursor_array_12 INTO :uvarchar_array[2];
+ EXEC SQL CLOSE cursor_array_12;
+
+ print_array();
+
+ EXEC SQL DEALLOCATE PREPARE stmt;
+ EXEC SQL SET AUTOCOMMIT TO ON;
+}
+
+//Insert array with L string inited
+void test_array_13()
+{
+EXEC SQL BEGIN DECLARE SECTION;
+ uvarchar uvarchar_array13[3][VAR_SIZE];
+EXEC SQL END DECLARE SECTION;
+ test("test_array_13 : Insert array with L string inited");
+
+ memset((char*)&uvarchar_array13,0,sizeof(uvarchar_array13));
+
+ memcpy((char*)uvarchar_array13[0].arr, L"太𠮷𠜱平洋𠱓大西洋印度洋北冰洋", sizeof(L"太𠮷𠜱平洋𠱓大西洋印度洋北冰洋"));
+ uvarchar_array13[0].len = sizeof(L"太𠮷𠜱平洋𠱓大西洋印度洋北冰洋")/4;
+ memcpy((char*)uvarchar_array13[1].arr, L"足球篮球羽毛球乒乓球橄榄球棒球冰球", sizeof(L"足球篮球羽毛球乒乓球橄榄球棒球冰球"));
+ uvarchar_array13[1].len = sizeof(L"足球篮球羽毛球乒乓球橄榄球棒球冰球")/4;
+ memcpy((char*)uvarchar_array13[2].arr, L"世界杯每隔四年就会举行一次每次𠲖个球队", sizeof(L"世界杯每隔四年就会举行一次每次𠲖个球队"));
+ uvarchar_array13[2].len = sizeof(L"世界杯每隔四年就会举行一次每次𠲖个球队")/4;
+
+ EXEC SQL INSERT INTO tb1 values (:uvarchar_array13[0], 20);
+ EXEC SQL INSERT INTO tb1 values (:uvarchar_array13[1], 21);
+ EXEC SQL INSERT INTO tb1 values (:uvarchar_array13[2], 22);
+
+ init_var();
+ EXEC SQL SELECT Item INTO :uvarchar_array FROM tb1 WHERE Count<=22 AND Count>=20;
+ print_array();
+ init_table_value();
+
+}
+
+//uvarchar array working with NULL without using indicator
+void test_array_15()
+{
+EXEC SQL BEGIN DECLARE SECTION;
+ uvarchar uvarchar_local_array[3][20];
+EXEC SQL END DECLARE SECTION;
+ test("test_array_15 : Test uvarchar array working with NULL without using indicator");
+ memset(uvarchar_local_array,'a',sizeof(uvarchar_local_array));
+
+ EXEC SQL SELECT Item INTO :uvarchar_local_array FROM tb1 WHERE Count>=8 and Count<=10;
+
+ print_local_uvarchar(uvarchar_local_array[0].arr, 20);
+ print_local_uvarchar(uvarchar_local_array[1].arr, 20);
+ print_local_uvarchar(uvarchar_local_array[2].arr, 20);
+
+
+ memset(uvarchar_local_array,0x00,sizeof(uvarchar_local_array));
+ EXEC SQL INSERT INTO tb1 values (:uvarchar_local_array[0], 18);
+ EXEC SQL INSERT INTO tb1 values (:uvarchar_local_array[1], 19);
+ EXEC SQL INSERT INTO tb1 values (:uvarchar_local_array[2], 20);
+ EXEC SQL SELECT count(*) INTO :count FROM tb1 WHERE Item is NULL;
+ printf ("found %d rows for Item being NULL\n", count);
+
+ init_table_value();
+}
+
+//uvarchar array working with NULL using indicator
+void test_array_16()
+{
+EXEC SQL BEGIN DECLARE SECTION;
+ uvarchar uvarchar_local_array[3][20];
+ int uvarchar_array_ind[3];
+EXEC SQL END DECLARE SECTION;
+ test("test_array_16 : Test uvarchar array working with NULL using indicator");
+ memset(uvarchar_local_array,'a',sizeof(uvarchar_local_array));
+
+ EXEC SQL SELECT Item INTO :uvarchar_local_array:uvarchar_array_ind FROM tb1 WHERE Count>=8 and Count<=10;
+
+
+ print_local_uvarchar(uvarchar_local_array[0].arr, 20);
+ print_local_uvarchar(uvarchar_local_array[1].arr, 20);
+ print_local_uvarchar(uvarchar_local_array[2].arr, 20);
+
+ print_uvarchar_ind(uvarchar_array_ind[0]);
+ print_uvarchar_ind(uvarchar_array_ind[1]);
+ print_uvarchar_ind(uvarchar_array_ind[2]);
+
+ memset(uvarchar_local_array,0x00,sizeof(uvarchar_local_array));
+ uvarchar_array_ind[0]=-1;
+ EXEC SQL INSERT INTO tb1 values (:uvarchar_local_array[0]:uvarchar_array_ind[0], 18);
+ EXEC SQL INSERT INTO tb1 values (:uvarchar_local_array[1]:uvarchar_array_ind[0], 19);
+ EXEC SQL INSERT INTO tb1 values (:uvarchar_local_array[2]:uvarchar_array_ind[0], 20);
+ EXEC SQL SELECT count(*) INTO :count FROM tb1 WHERE Item is NULL;
+ printf ("found %d rows for Item being NULL\n", count);
+
+ init_table_value();
+}
+
+void test_all()
+{
+ test_var_1();
+ test_var_2();
+ test_var_3();
+ test_var_4();
+ test_var_5();
+ test_var_6();
+ test_var_7();
+ test_var_8();
+ test_var_9();
+ test_var_10();
+ test_var_11();
+ test_var_12();
+ test_var_13();
+ test_var_14();
+ test_var_15();
+ test_var_16();
+ test_array_1();
+ test_array_2();
+ test_array_3();
+ test_array_4();
+ test_array_5();
+ test_array_6();
+ test_array_7();
+ test_array_8();
+ test_array_9();
+ test_array_10();
+ test_array_11();
+ test_array_12();
+ test_array_13();
+ test_array_15();
+ test_array_16();
+}
+
+int main()
+{
+// ECPGdebug(1, stderr);
+ if(test_init() !=0)
+ return -1;
+
+ test_all();
+ test_finish();
+
+ return 0;
+}
diff --git a/src/interfaces/ecpg/test/unicode/expected/utext.c b/src/interfaces/ecpg/test/unicode/expected/utext.c
new file mode 100755
index 0000000..f371a20
--- /dev/null
+++ b/src/interfaces/ecpg/test/unicode/expected/utext.c
@@ -0,0 +1,3115 @@
+/* Processed by ecpg (regression mode) */
+/* These include files are added by the preprocessor */
+#define ECPG_ENABLE_UTEXT 1
+#include <ecpglib.h>
+#include <ecpgerrno.h>
+#include <sqlca.h>
+/* End of automatic include section */
+#define ECPGdebug(X,Y) ECPGdebug((X)+100,(Y))
+
+#line 1 "utext.pgc"
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <tchar.h>
+
+#line 1 "./../regression.h"
+
+
+
+
+
+
+#line 5 "utext.pgc"
+
+
+#define test(msg) printf("\n%s\n",msg)
+#define VAR_SIZE 20
+#define ARRAY_SIZE 4
+#define P_VAR_SIZE 22
+
+
+/* Following is UTF8 and UTF16 characters mapping table */
+/*太𠮷𠜱平洋𠱓大西洋印度洋北冰洋
+0x592A 0xD842 0xDFB7 0xD841 0xDF31 0x5E73 0x6D0B 0xD843
+0xDC53 0x5927 0x897F 0x6D0B 0x5370 0x5EA6 0x6D0B 0x5317
+0x51B0 0x6D0B 0x0000,0x0000*/
+
+/*足球篮球羽毛球乒乓球橄榄球棒球冰球
+0x8DB3,0x7403,0x7BEE,0x7403,0x7FBD,0x6BDB,0x7403,0x4E52,
+0x4E53,0x7403,0x6A44,0x6984,0x7403,0x68D2,0x7403,0x51B0,
+0x7403,0x0000,0x0000,0x0000
+*/
+
+/*世界杯每隔四年就会举行一次每次𠲖个球队
+0x4E16 0x754C 0x676F 0x6BCF 0x9694 0x56DB 0x5E74 0x5C31
+0x4F1A 0x4E3E 0x884C 0x4E00 0x6B21 0x6BCF 0x6B21 0xD843
+0xDC96 0x4E2A 0x7403 0x961F
+*/
+
+/* 亚洲欧洲非洲大洋洲北美洲南美洲南极洲没有北极洲
+0x4E9A,0x6D32,0x6B27,0x6D32,0x975E,0x6D32,0x5927,0x6D0B,
+0x6D32,0x5317,0x7F8E,0x6D32,0x5357,0x7F8E,0x6D32,0x5357,
+0x6781,0x6D32,0x6CA1,0x6709,0x5317,0x6781,0x6D32
+*/
+/* 太𠮷
+0x592A 0xD842 0xDFB7
+*/
+void init_var(void);
+void test_var_1(void);
+void test_var_2(void);
+void test_var_3(void);
+void test_var_4(void);
+void test_var_5(void);
+void test_var_6(void);
+void test_var_7(void);
+void test_var_8(void);
+void test_var_9(void);
+void test_var_10(void);
+void test_var_11(void);
+void test_var_12(void);
+void test_var_13(void);
+void test_array_1(void);
+void test_array_2(void);
+void test_array_3(void);
+void test_array_4(void);
+void test_array_5(void);
+void test_array_6(void);
+void test_array_7(void);
+void test_array_8(void);
+void test_array_9(void);
+void test_array_10(void);
+void test_array_11(void);
+void test_array_12(void);
+void test_array_13(void);
+void test_pvar_1(void);
+void test_pvar_2(void);
+void test_pvar_3(void);
+void test_pvar_4(void);
+void test_pvar_5(void);
+void test_pvar_6(void);
+void test_pvar_7(void);
+void test_pvar_8(void);
+void test_pvar_9(void);
+void test_pvar_10(void);
+void test_pvar_11(void);
+void test_pvar_12(void);
+void test_pvar_13(void);
+void test_buckinsert_1(void);
+
+void test_all(void);
+
+void print_utext(utext *utext_var);
+void print_utext_ind(int utext_var_ind);
+void print_utext_size(utext *utext_var,int size);
+void print_array(void);
+void print_array_with_index(int index);
+int test_init(void);
+void test_finish(void);
+void init_table_value(void);
+
+/* exec sql begin declare section */
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#line 93 "utext.pgc"
+ int utext_var_size = 20 ;
+
+#line 94 "utext.pgc"
+ int utext_array_size = 4 ;
+
+#line 95 "utext.pgc"
+ int count = 0 ;
+
+#line 96 "utext.pgc"
+ int total_tuples = 0 ;
+
+#line 97 "utext.pgc"
+ int i ;
+
+#line 98 "utext.pgc"
+ char char_var [ 10 ] = { 0xF0 , 0x90 , 0x90 , 0xB7 } ;
+
+#line 100 "utext.pgc"
+ utext utext_var [ VAR_SIZE ] ;
+
+#line 101 "utext.pgc"
+ utext utext_array [ ARRAY_SIZE ] [ VAR_SIZE ] ;
+
+#line 102 "utext.pgc"
+ utext utext_input_var [ 20 ] = { 0x592a , 0xd842 , 0xdfb7 , 0x0000 } ;
+
+#line 103 "utext.pgc"
+ utext utext_input_var2 [] = L"太𠮷" ;
+
+#line 104 "utext.pgc"
+ utext * p_utext_var = NULL ;
+
+#line 107 "utext.pgc"
+ int utext_var_ind ;
+
+#line 108 "utext.pgc"
+ int count_array [ 4 ] = { 1 , 2 , 3 , 4 } ;
+/* exec sql end declare section */
+#line 110 "utext.pgc"
+
+
+void print_utext(utext *utext_var)
+{
+ int i;
+ printf("======print utext_var content======\n");
+ for(i=0; i<VAR_SIZE; i++)
+ {
+ printf ("0x%04X ", utext_var[i]);
+ if(i>6 && (i+1)%8==0)
+ printf("\n");
+ }
+ printf("\n======End utext_var content======\n");
+}
+
+void print_utext_size(utext *utext_var,int size)
+{
+ int i;
+ printf("======print utext_var content======\n");
+ for(i=0; i<size; i++)
+ {
+ printf ("0x%04X ", utext_var[i]);
+ if(i>6 && (i+1)%8==0)
+ printf("\n");
+ }
+ printf("\n======End utext_var content======\n");
+}
+
+void print_utext_ind(int utext_var_ind)
+{
+ printf("utext_var_ind = %d\n",utext_var_ind);
+}
+
+void print_array()
+{
+ int i,j;
+
+ for(i=0; i<ARRAY_SIZE; i++)
+ {
+ printf ("---->array[%d]:\n", i);
+
+ for(j=0; j<VAR_SIZE; j++)
+ {
+ printf ("0x%04X ", utext_array[i][j]);
+ if(j>6 && (j+1)%8==0)
+ printf("\n");
+ }
+ printf("\n");
+ }
+
+ printf("\n");
+}
+
+int test_init()
+{
+ p_utext_var = (utext*)malloc(P_VAR_SIZE*sizeof(utext));
+ if(!p_utext_var)
+ {
+ printf("Error: failed allco memory for p_utext_var. \n");
+ return -1;
+ }
+
+
+ { ECPGconnect(__LINE__, 0, "regress1" , NULL, NULL , NULL, 0); }
+#line 173 "utext.pgc"
+
+
+ { ECPGsetcommit(__LINE__, "on", NULL);}
+#line 175 "utext.pgc"
+
+ /* exec sql whenever sql_warning sqlprint ; */
+#line 176 "utext.pgc"
+
+ /* exec sql whenever sqlerror sqlprint ; */
+#line 177 "utext.pgc"
+
+
+
+ //initialization of test table
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "create table if not exists tb1 ( Item varchar , count integer )", ECPGt_EOIT, ECPGt_EORT, ECPGt_EOLT);
+#line 181 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 181 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 181 "utext.pgc"
+
+
+ init_table_value();
+
+ return 0;
+}
+
+void test_finish()
+{
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "drop table tb1", ECPGt_EOIT, ECPGt_EORT, ECPGt_EOLT);
+#line 190 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 190 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 190 "utext.pgc"
+
+ { ECPGdisconnect(__LINE__, "ALL");
+#line 191 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 191 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 191 "utext.pgc"
+
+}
+
+void init_table_value()
+{
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "truncate tb1", ECPGt_EOIT, ECPGt_EORT, ECPGt_EOLT);
+#line 196 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 196 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 196 "utext.pgc"
+
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "insert into tb1 values ( '太𠮷𠜱平洋𠱓大西洋印度洋北冰洋' , 1 )", ECPGt_EOIT, ECPGt_EORT, ECPGt_EOLT);
+#line 198 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 198 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 198 "utext.pgc"
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "insert into tb1 values ( '足球篮球羽毛球乒乓球橄榄球棒球冰球' , 2 )", ECPGt_EOIT, ECPGt_EORT, ECPGt_EOLT);
+#line 199 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 199 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 199 "utext.pgc"
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "insert into tb1 values ( '世界杯每隔四年就会举行一次每次𠲖个球队' , 3 )", ECPGt_EOIT, ECPGt_EORT, ECPGt_EOLT);
+#line 200 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 200 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 200 "utext.pgc"
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "insert into tb1 values ( '亚洲欧洲非洲大洋洲北美洲南美洲南极洲没有北极洲' , 4 )", ECPGt_EOIT, ECPGt_EORT, ECPGt_EOLT);
+#line 201 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 201 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 201 "utext.pgc"
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "insert into tb1 values ( $1 , 5 )",
+ ECPGt_char,(char_var),(long)10,(long)1,(10)*sizeof(char),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT, ECPGt_EOLT);
+#line 202 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 202 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 202 "utext.pgc"
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "insert into tb1 values ( '𠮷' , 6 )", ECPGt_EOIT, ECPGt_EORT, ECPGt_EOLT);
+#line 203 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 203 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 203 "utext.pgc"
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "insert into tb1 values ( '太𠮷' , 7 )", ECPGt_EOIT, ECPGt_EORT, ECPGt_EOLT);
+#line 204 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 204 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 204 "utext.pgc"
+
+}
+
+void init_var()
+{
+ count = 0;
+ memset(utext_var,'a',sizeof(utext_var));
+ memset(utext_array,'a',sizeof(utext_array));
+ memset(p_utext_var,'a',P_VAR_SIZE*sizeof(utext));
+}
+
+//simple select into utext var
+void test_var_1()
+{
+ test("test_var_1: simple select into utext var");
+ init_var();
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "select Item from tb1 where count = 1", ECPGt_EOIT,
+ ECPGt_utext,(utext_var),(long)VAR_SIZE,(long)1,(VAR_SIZE)*sizeof(utext),
+ ECPGt_int,&(utext_var_ind),(long)1,(long)1,sizeof(int), ECPGt_EORT, ECPGt_EOLT);
+#line 221 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 221 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 221 "utext.pgc"
+
+ print_utext(utext_var);
+ print_utext_ind(utext_var_ind);
+ init_var();
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "select Item from tb1 where count = 2", ECPGt_EOIT,
+ ECPGt_utext,(utext_var),(long)VAR_SIZE,(long)1,(VAR_SIZE)*sizeof(utext),
+ ECPGt_int,&(utext_var_ind),(long)1,(long)1,sizeof(int), ECPGt_EORT, ECPGt_EOLT);
+#line 226 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 226 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 226 "utext.pgc"
+
+ print_utext(utext_var);
+ print_utext_ind(utext_var_ind);
+ init_var();
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "select Item from tb1 where count = 3", ECPGt_EOIT,
+ ECPGt_utext,(utext_var),(long)VAR_SIZE,(long)1,(VAR_SIZE)*sizeof(utext),
+ ECPGt_int,&(utext_var_ind),(long)1,(long)1,sizeof(int), ECPGt_EORT, ECPGt_EOLT);
+#line 231 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 231 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 231 "utext.pgc"
+
+ print_utext(utext_var);
+ print_utext_ind(utext_var_ind);
+ init_var();
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "select Item from tb1 where count = 4", ECPGt_EOIT,
+ ECPGt_utext,(utext_var),(long)VAR_SIZE,(long)1,(VAR_SIZE)*sizeof(utext),
+ ECPGt_int,&(utext_var_ind),(long)1,(long)1,sizeof(int), ECPGt_EORT, ECPGt_EOLT);
+#line 236 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 236 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 236 "utext.pgc"
+
+ print_utext(utext_var);
+ print_utext_ind(utext_var_ind);
+ init_var();
+}
+
+
+//simple select using utext var
+void test_var_2()
+{
+ test("test_var_2: simple select using utext var");
+ init_var();
+
+ count = 0;
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "select Item from tb1 where count = 1", ECPGt_EOIT,
+ ECPGt_utext,(utext_var),(long)VAR_SIZE,(long)1,(VAR_SIZE)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT, ECPGt_EOLT);
+#line 250 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 250 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 250 "utext.pgc"
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "select count from tb1 where Item = $1 ",
+ ECPGt_utext,(utext_var),(long)VAR_SIZE,(long)1,(VAR_SIZE)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT,
+ ECPGt_int,&(count),(long)1,(long)1,sizeof(int),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT, ECPGt_EOLT);
+#line 251 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 251 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 251 "utext.pgc"
+
+ printf ("count=%d for '太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'\n", count);
+
+ count = 0;
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "select Item from tb1 where count = 3", ECPGt_EOIT,
+ ECPGt_utext,(utext_var),(long)VAR_SIZE,(long)1,(VAR_SIZE)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT, ECPGt_EOLT);
+#line 255 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 255 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 255 "utext.pgc"
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "select count from tb1 where Item = $1 ",
+ ECPGt_utext,(utext_var),(long)VAR_SIZE,(long)1,(VAR_SIZE)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT,
+ ECPGt_int,&(count),(long)1,(long)1,sizeof(int),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT, ECPGt_EOLT);
+#line 256 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 256 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 256 "utext.pgc"
+
+ printf ("count=%d for '世界杯每隔四年就会举行一次每次𠲖个球队'\n", count);
+}
+
+//simple update using utext var
+void test_var_3()
+{
+ test("test_var_3: simple update using utext var");
+ init_var();
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "select Item from tb1 where count = 1", ECPGt_EOIT,
+ ECPGt_utext,(utext_var),(long)VAR_SIZE,(long)1,(VAR_SIZE)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT, ECPGt_EOLT);
+#line 266 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 266 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 266 "utext.pgc"
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "update tb1 set Item = $1 where count = 2",
+ ECPGt_utext,(utext_var),(long)VAR_SIZE,(long)1,(VAR_SIZE)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT, ECPGt_EOLT);
+#line 267 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 267 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 267 "utext.pgc"
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "update tb1 set Item = $1 where count = 3",
+ ECPGt_utext,(utext_var),(long)VAR_SIZE,(long)1,(VAR_SIZE)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT, ECPGt_EOLT);
+#line 268 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 268 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 268 "utext.pgc"
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "select count ( * ) from tb1 where Item = '太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'", ECPGt_EOIT,
+ ECPGt_int,&(count),(long)1,(long)1,sizeof(int),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT, ECPGt_EOLT);
+#line 269 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 269 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 269 "utext.pgc"
+
+ printf ("found %d rows for Item='太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'\n", count);
+
+ init_table_value();
+}
+
+//simple delete using utext var
+void test_var_4()
+{
+ test("test_var_4 : simple delete using utext var");
+ init_var();
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "select Item from tb1 where count = 1", ECPGt_EOIT,
+ ECPGt_utext,(utext_var),(long)VAR_SIZE,(long)1,(VAR_SIZE)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT, ECPGt_EOLT);
+#line 281 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 281 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 281 "utext.pgc"
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "delete from tb1 where Item = $1 ",
+ ECPGt_utext,(utext_var),(long)VAR_SIZE,(long)1,(VAR_SIZE)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT, ECPGt_EOLT);
+#line 282 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 282 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 282 "utext.pgc"
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "select count ( * ) from tb1 where Item = '太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'", ECPGt_EOIT,
+ ECPGt_int,&(count),(long)1,(long)1,sizeof(int),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT, ECPGt_EOLT);
+#line 283 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 283 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 283 "utext.pgc"
+
+ printf ("found %d rows for Item='太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'\n", count);
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "select Item from tb1 where count = 3", ECPGt_EOIT,
+ ECPGt_utext,(utext_var),(long)VAR_SIZE,(long)1,(VAR_SIZE)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT, ECPGt_EOLT);
+#line 286 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 286 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 286 "utext.pgc"
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "delete from tb1 where Item = $1 ",
+ ECPGt_utext,(utext_var),(long)VAR_SIZE,(long)1,(VAR_SIZE)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT, ECPGt_EOLT);
+#line 287 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 287 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 287 "utext.pgc"
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "select count ( * ) from tb1 where Item = '世界杯每隔四年就会举行一次每次𠲖个球队'", ECPGt_EOIT,
+ ECPGt_int,&(count),(long)1,(long)1,sizeof(int),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT, ECPGt_EOLT);
+#line 288 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 288 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 288 "utext.pgc"
+
+ printf ("found %d rows for Item='世界杯每隔四年就会举行一次每次𠲖个球队'\n", count);
+
+ init_table_value();
+}
+
+//simple insert using utext var
+void test_var_5()
+{
+ test("test_var_5 : simple insert using utext");
+ init_var();
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "select Item from tb1 where count = 1", ECPGt_EOIT,
+ ECPGt_utext,(utext_var),(long)VAR_SIZE,(long)1,(VAR_SIZE)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT, ECPGt_EOLT);
+#line 300 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 300 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 300 "utext.pgc"
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "insert into tb1 values ( $1 , 11 )",
+ ECPGt_utext,(utext_var),(long)VAR_SIZE,(long)1,(VAR_SIZE)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT, ECPGt_EOLT);
+#line 301 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 301 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 301 "utext.pgc"
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "select count ( * ) from tb1 where Item = '太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'", ECPGt_EOIT,
+ ECPGt_int,&(count),(long)1,(long)1,sizeof(int),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT, ECPGt_EOLT);
+#line 302 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 302 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 302 "utext.pgc"
+
+ printf ("found %d rows for Item='太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'\n", count);
+
+ init_var();
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "select Item from tb1 where count = 3", ECPGt_EOIT,
+ ECPGt_utext,(utext_var),(long)VAR_SIZE,(long)1,(VAR_SIZE)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT, ECPGt_EOLT);
+#line 306 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 306 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 306 "utext.pgc"
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "insert into tb1 values ( $1 , 13 )",
+ ECPGt_utext,(utext_var),(long)VAR_SIZE,(long)1,(VAR_SIZE)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT, ECPGt_EOLT);
+#line 307 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 307 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 307 "utext.pgc"
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "select count ( * ) from tb1 where Item = '世界杯每隔四年就会举行一次每次𠲖个球队'", ECPGt_EOIT,
+ ECPGt_int,&(count),(long)1,(long)1,sizeof(int),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT, ECPGt_EOLT);
+#line 308 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 308 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 308 "utext.pgc"
+
+ printf ("found %d rows for Item='世界杯每隔四年就会举行一次每次𠲖个球队'\n", count);
+
+ init_table_value();
+}
+
+//prepared select into utext var
+void test_var_6()
+{
+ test("test_var_6 : prepared select into utext var");
+ init_var();
+
+ { ECPGprepare(__LINE__, NULL, 0, "stmt", "SELECT Item FROM tb1 WHERE Count=?");
+#line 320 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 320 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 320 "utext.pgc"
+
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_execute, "stmt",
+ ECPGt_const,"1",(long)1,(long)1,strlen("1"),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT,
+ ECPGt_utext,(utext_var),(long)VAR_SIZE,(long)1,(VAR_SIZE)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT, ECPGt_EOLT);
+#line 322 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 322 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 322 "utext.pgc"
+
+ print_utext(utext_var);
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_execute, "stmt",
+ ECPGt_const,"3",(long)1,(long)1,strlen("3"),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT,
+ ECPGt_utext,(utext_var),(long)VAR_SIZE,(long)1,(VAR_SIZE)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT, ECPGt_EOLT);
+#line 325 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 325 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 325 "utext.pgc"
+
+ print_utext(utext_var);
+
+ { ECPGdeallocate(__LINE__, 0, NULL, "stmt");
+#line 328 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 328 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 328 "utext.pgc"
+
+}
+
+//prepared select using utext var
+void test_var_7()
+{
+ test("test_var_7 : prepared select using utext var");
+ init_var();
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "select Item from tb1 where count = 3", ECPGt_EOIT,
+ ECPGt_utext,(utext_var),(long)VAR_SIZE,(long)1,(VAR_SIZE)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT, ECPGt_EOLT);
+#line 337 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 337 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 337 "utext.pgc"
+
+
+ { ECPGprepare(__LINE__, NULL, 0, "stmt", "SELECT Count FROM tb1 WHERE Item=?");
+#line 339 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 339 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 339 "utext.pgc"
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_execute, "stmt",
+ ECPGt_utext,(utext_var),(long)VAR_SIZE,(long)1,(VAR_SIZE)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT,
+ ECPGt_int,&(count),(long)1,(long)1,sizeof(int),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT, ECPGt_EOLT);
+#line 340 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 340 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 340 "utext.pgc"
+
+
+ printf ("count=%d for Item='世界杯每隔四年就会举行一次每次𠲖个球队'\n", count);
+ { ECPGdeallocate(__LINE__, 0, NULL, "stmt");
+#line 343 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 343 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 343 "utext.pgc"
+
+}
+
+//prepared update using utext var
+void test_var_8()
+{
+ test("test_var_8 : prepared update using utext var");
+ init_var();
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "select Item from tb1 where count = 3", ECPGt_EOIT,
+ ECPGt_utext,(utext_var),(long)VAR_SIZE,(long)1,(VAR_SIZE)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT, ECPGt_EOLT);
+#line 352 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 352 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 352 "utext.pgc"
+
+
+ { ECPGprepare(__LINE__, NULL, 0, "stmt", "UPDATE tb1 SET Item=? WHERE Count=?");
+#line 354 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 354 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 354 "utext.pgc"
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_execute, "stmt",
+ ECPGt_utext,(utext_var),(long)VAR_SIZE,(long)1,(VAR_SIZE)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L,
+ ECPGt_const,"1",(long)1,(long)1,strlen("1"),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT, ECPGt_EOLT);
+#line 355 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 355 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 355 "utext.pgc"
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_execute, "stmt",
+ ECPGt_utext,(utext_var),(long)VAR_SIZE,(long)1,(VAR_SIZE)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L,
+ ECPGt_const,"2",(long)1,(long)1,strlen("2"),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT, ECPGt_EOLT);
+#line 356 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 356 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 356 "utext.pgc"
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "select count ( * ) from tb1 where Item = '世界杯每隔四年就会举行一次每次𠲖个球队'", ECPGt_EOIT,
+ ECPGt_int,&(count),(long)1,(long)1,sizeof(int),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT, ECPGt_EOLT);
+#line 357 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 357 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 357 "utext.pgc"
+
+
+ printf ("found %d rows for Item='世界杯每隔四年就会举行一次每次𠲖个球队'\n", count);
+ { ECPGdeallocate(__LINE__, 0, NULL, "stmt");
+#line 360 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 360 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 360 "utext.pgc"
+
+
+ init_table_value();
+}
+
+//prepared delete using utext var
+void test_var_9()
+{
+ test("test_var_9 : prepared delete using utext var");
+ init_var();
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "select Item from tb1 where count = 3", ECPGt_EOIT,
+ ECPGt_utext,(utext_var),(long)VAR_SIZE,(long)1,(VAR_SIZE)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT, ECPGt_EOLT);
+#line 371 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 371 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 371 "utext.pgc"
+
+
+ { ECPGprepare(__LINE__, NULL, 0, "stmt", "DELETE FROM tb1 WHERE Item=?");
+#line 373 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 373 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 373 "utext.pgc"
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_execute, "stmt",
+ ECPGt_utext,(utext_var),(long)VAR_SIZE,(long)1,(VAR_SIZE)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT, ECPGt_EOLT);
+#line 374 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 374 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 374 "utext.pgc"
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "select count ( * ) from tb1 where Item = '世界杯每隔四年就会举行一次每次𠲖个球队'", ECPGt_EOIT,
+ ECPGt_int,&(count),(long)1,(long)1,sizeof(int),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT, ECPGt_EOLT);
+#line 375 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 375 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 375 "utext.pgc"
+
+
+ printf ("found %d rows for Item='世界杯每隔四年就会举行一次每次𠲖个球队'\n", count);
+ { ECPGdeallocate(__LINE__, 0, NULL, "stmt");
+#line 378 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 378 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 378 "utext.pgc"
+
+
+ init_table_value();
+}
+
+//prepared insert using utext var
+void test_var_10()
+{
+ test("test_var_10 : prepared insert using utext var");
+ init_var();
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "select Item from tb1 where count = 3", ECPGt_EOIT,
+ ECPGt_utext,(utext_var),(long)VAR_SIZE,(long)1,(VAR_SIZE)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT, ECPGt_EOLT);
+#line 389 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 389 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 389 "utext.pgc"
+
+
+ { ECPGprepare(__LINE__, NULL, 0, "stmt", "INSERT INTO tb1 values (?, 13)");
+#line 391 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 391 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 391 "utext.pgc"
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_execute, "stmt",
+ ECPGt_utext,(utext_var),(long)VAR_SIZE,(long)1,(VAR_SIZE)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT, ECPGt_EOLT);
+#line 392 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 392 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 392 "utext.pgc"
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "select count ( * ) from tb1 where Item = '世界杯每隔四年就会举行一次每次𠲖个球队'", ECPGt_EOIT,
+ ECPGt_int,&(count),(long)1,(long)1,sizeof(int),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT, ECPGt_EOLT);
+#line 393 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 393 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 393 "utext.pgc"
+
+
+ printf ("found %d rows for Item='世界杯每隔四年就会举行一次每次𠲖个球队'\n", count);
+ { ECPGdeallocate(__LINE__, 0, NULL, "stmt");
+#line 396 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 396 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 396 "utext.pgc"
+
+
+ init_table_value();
+}
+
+//Open cursor using utext var
+void test_var_11()
+{
+ test("test_var_11 : Open cursor using utext var");
+ init_var();
+
+ { ECPGsetcommit(__LINE__, "off", NULL);
+#line 407 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 407 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 407 "utext.pgc"
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "select Item from tb1 where count = 3", ECPGt_EOIT,
+ ECPGt_utext,(utext_var),(long)VAR_SIZE,(long)1,(VAR_SIZE)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT, ECPGt_EOLT);
+#line 408 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 408 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 408 "utext.pgc"
+
+
+ { ECPGprepare(__LINE__, NULL, 0, "stmt", "SELECT Count FROM tb1 WHERE Item=?");
+#line 410 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 410 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 410 "utext.pgc"
+
+ /* declare cursor_var_11 cursor for $1 */
+#line 411 "utext.pgc"
+
+ { ECPGopen("cursor_var_11", "stmt", __LINE__, 0, 1, NULL, 0, ECPGst_normal, "declare cursor_var_11 cursor for $1",
+ ECPGt_char_variable,(ECPGprepared_statement(NULL, "stmt", __LINE__)),(long)1,(long)1,(1)*sizeof(char),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L,
+ ECPGt_utext,(utext_var),(long)VAR_SIZE,(long)1,(VAR_SIZE)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT, ECPGt_EOLT);
+#line 412 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 412 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 412 "utext.pgc"
+
+ { ECPGfetch("cursor_var_11", __LINE__, 0, 1, NULL, 0, ECPGst_normal, "fetch cursor_var_11", ECPGt_EOIT,
+ ECPGt_int,&(count),(long)1,(long)1,sizeof(int),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT, ECPGt_EOLT);
+#line 413 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 413 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 413 "utext.pgc"
+
+ printf ("count=%d for Item='世界杯每隔四年就会举行一次每次𠲖个球队'\n", count);
+ { ECPGclose("cursor_var_11", __LINE__, 0, 1, NULL, 0, ECPGst_normal, "close cursor_var_11", ECPGt_EOIT, ECPGt_EORT, ECPGt_EOLT);
+#line 415 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 415 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 415 "utext.pgc"
+
+ { ECPGdeallocate(__LINE__, 0, NULL, "stmt");
+#line 416 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 416 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 416 "utext.pgc"
+
+ { ECPGsetcommit(__LINE__, "on", NULL);
+#line 417 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 417 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 417 "utext.pgc"
+
+}
+
+//Fecth cursor into utext var
+void test_var_12()
+{
+ test("test_var_12 : Fecth cursor into utext var");
+ init_var();
+
+ { ECPGsetcommit(__LINE__, "off", NULL);
+#line 426 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 426 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 426 "utext.pgc"
+
+ { ECPGprepare(__LINE__, NULL, 0, "stmt", "SELECT Item FROM tb1 WHERE Count=1");
+#line 427 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 427 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 427 "utext.pgc"
+
+ /* declare cursor_var_12 cursor for $1 */
+#line 428 "utext.pgc"
+
+ { ECPGopen("cursor_var_12", "stmt", __LINE__, 0, 1, NULL, 0, ECPGst_normal, "declare cursor_var_12 cursor for $1",
+ ECPGt_char_variable,(ECPGprepared_statement(NULL, "stmt", __LINE__)),(long)1,(long)1,(1)*sizeof(char),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT, ECPGt_EOLT);
+#line 429 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 429 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 429 "utext.pgc"
+
+ { ECPGfetch("cursor_var_12", __LINE__, 0, 1, NULL, 0, ECPGst_normal, "fetch cursor_var_12", ECPGt_EOIT,
+ ECPGt_utext,(utext_var),(long)VAR_SIZE,(long)1,(VAR_SIZE)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT, ECPGt_EOLT);
+#line 430 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 430 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 430 "utext.pgc"
+
+ { ECPGclose("cursor_var_12", __LINE__, 0, 1, NULL, 0, ECPGst_normal, "close cursor_var_12", ECPGt_EOIT, ECPGt_EORT, ECPGt_EOLT);
+#line 431 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 431 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 431 "utext.pgc"
+
+
+ print_utext(utext_var);
+
+ { ECPGdeallocate(__LINE__, 0, NULL, "stmt");
+#line 435 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 435 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 435 "utext.pgc"
+
+ { ECPGsetcommit(__LINE__, "on", NULL);
+#line 436 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 436 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 436 "utext.pgc"
+
+}
+
+//simple insert utext var with L string inited
+void test_var_13()
+{
+/* exec sql begin declare section */
+
+
+#line 443 "utext.pgc"
+ utext utext_local_var [] = _T ( "太𠮷" ) ;
+/* exec sql end declare section */
+#line 444 "utext.pgc"
+
+ test("test_var_13 : simple insert utext var with L string inited");
+ init_var();
+
+ printf("---utext_local_var---\n");
+
+ for(i=0;i<sizeof(utext_local_var)/2;i++)
+ printf("0x%04X ",utext_local_var[i]);
+
+ printf("\n---end: utext_local_var---\n");
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "insert into tb1 values ( $1 , 16 )",
+ ECPGt_utext,(utext_local_var),(long)sizeof(_T ( "太𠮷" ))/2,(long)1,(sizeof(_T ( "太𠮷" ))/2)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT, ECPGt_EOLT);
+#line 455 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 455 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 455 "utext.pgc"
+
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "select Item from tb1 where count = 16", ECPGt_EOIT,
+ ECPGt_utext,(utext_var),(long)VAR_SIZE,(long)1,(VAR_SIZE)*sizeof(utext),
+ ECPGt_int,&(utext_var_ind),(long)1,(long)1,sizeof(int), ECPGt_EORT, ECPGt_EOLT);
+#line 457 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 457 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 457 "utext.pgc"
+
+ print_utext(utext_var);
+ print_utext_ind(utext_var_ind);
+ init_var();
+ init_table_value();
+}
+
+//simple select into utext array
+void test_array_1()
+{
+ test("test_array_1 : simple select into utext array ");
+ init_var();
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "select Item from tb1 where count <= 4", ECPGt_EOIT,
+ ECPGt_utext,(utext_array),(long)VAR_SIZE,(long)ARRAY_SIZE,(VAR_SIZE)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT, ECPGt_EOLT);
+#line 470 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 470 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 470 "utext.pgc"
+
+
+ print_array();
+ init_var();
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "select Item from tb1 where count = 1", ECPGt_EOIT,
+ ECPGt_utext,(utext_array[0]),(long)VAR_SIZE,(long)1,(VAR_SIZE)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT, ECPGt_EOLT);
+#line 475 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 475 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 475 "utext.pgc"
+
+ print_array();
+ init_var();
+}
+
+//simple select using utext array
+void test_array_2()
+{
+ test("test_array_2 : simple select using array");
+ init_var();
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "select Item from tb1 where count <= 3", ECPGt_EOIT,
+ ECPGt_utext,(utext_array),(long)VAR_SIZE,(long)ARRAY_SIZE,(VAR_SIZE)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT, ECPGt_EOLT);
+#line 486 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 486 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 486 "utext.pgc"
+
+
+ count = 0;
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "select count from tb1 where Item = $1 ",
+ ECPGt_utext,(utext_array[0]),(long)VAR_SIZE,(long)1,(VAR_SIZE)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT,
+ ECPGt_int,&(count),(long)1,(long)1,sizeof(int),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT, ECPGt_EOLT);
+#line 489 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 489 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 489 "utext.pgc"
+
+ printf ("count=%d for '太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'\n", count);
+
+ count = 0;
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "select count from tb1 where Item = $1 ",
+ ECPGt_utext,(utext_array[2]),(long)VAR_SIZE,(long)1,(VAR_SIZE)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT,
+ ECPGt_int,&(count),(long)1,(long)1,sizeof(int),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT, ECPGt_EOLT);
+#line 493 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 493 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 493 "utext.pgc"
+
+ printf ("count=%d for '世界杯每隔四年就会举行一次每次𠲖个球队'\n", count);
+}
+
+//simple update using utext array
+void test_array_3()
+{
+ test("test_array_3 : simple update using utext array");
+ init_var();
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "select Item from tb1 where count <= 3", ECPGt_EOIT,
+ ECPGt_utext,(utext_array),(long)VAR_SIZE,(long)ARRAY_SIZE,(VAR_SIZE)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT, ECPGt_EOLT);
+#line 503 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 503 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 503 "utext.pgc"
+
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "update tb1 set Item = $1 where count = 1",
+ ECPGt_utext,(utext_array[2]),(long)VAR_SIZE,(long)1,(VAR_SIZE)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT, ECPGt_EOLT);
+#line 505 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 505 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 505 "utext.pgc"
+
+
+ count = 0;
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "select count ( * ) from tb1 where Item = '太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'", ECPGt_EOIT,
+ ECPGt_int,&(count),(long)1,(long)1,sizeof(int),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT, ECPGt_EOLT);
+#line 508 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 508 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 508 "utext.pgc"
+
+ printf ("find %d rows for Item='太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'\n", count);
+
+ count = 0;
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "select count ( * ) from tb1 where Item = '世界杯每隔四年就会举行一次每次𠲖个球队'", ECPGt_EOIT,
+ ECPGt_int,&(count),(long)1,(long)1,sizeof(int),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT, ECPGt_EOLT);
+#line 512 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 512 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 512 "utext.pgc"
+
+ printf ("find %d rows for Item='世界杯每隔四年就会举行一次每次𠲖个球队'\n", count);
+
+ init_table_value();
+}
+
+//simple delete using utext array
+void test_array_4()
+{
+ test("test_array_4 : simple delete using utext array");
+ init_var();
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "select Item from tb1 where count <= 3", ECPGt_EOIT,
+ ECPGt_utext,(utext_array),(long)VAR_SIZE,(long)ARRAY_SIZE,(VAR_SIZE)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT, ECPGt_EOLT);
+#line 524 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 524 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 524 "utext.pgc"
+
+
+ count = 100;
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "delete from tb1 where Item = $1 ",
+ ECPGt_utext,(utext_array[0]),(long)VAR_SIZE,(long)1,(VAR_SIZE)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT, ECPGt_EOLT);
+#line 527 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 527 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 527 "utext.pgc"
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "select count ( * ) from tb1 where Item = '太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'", ECPGt_EOIT,
+ ECPGt_int,&(count),(long)1,(long)1,sizeof(int),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT, ECPGt_EOLT);
+#line 528 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 528 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 528 "utext.pgc"
+
+ printf ("found %d rows for Item='太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'\n", count);
+
+ count = 100;
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "delete from tb1 where Item = $1 ",
+ ECPGt_utext,(utext_array[2]),(long)VAR_SIZE,(long)1,(VAR_SIZE)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT, ECPGt_EOLT);
+#line 532 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 532 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 532 "utext.pgc"
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "select count ( * ) from tb1 where Item = '世界杯每隔四年就会举行一次每次𠲖个球队'", ECPGt_EOIT,
+ ECPGt_int,&(count),(long)1,(long)1,sizeof(int),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT, ECPGt_EOLT);
+#line 533 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 533 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 533 "utext.pgc"
+
+ printf ("found %d rows for Item='世界杯每隔四年就会举行一次每次𠲖个球队'\n", count);
+
+ init_table_value();
+}
+
+//simple insert using utext array
+void test_array_5()
+{
+ test("test_array_5 : simple insert using utext array");
+ init_var();
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "select Item from tb1 where count <= 3", ECPGt_EOIT,
+ ECPGt_utext,(utext_array),(long)VAR_SIZE,(long)ARRAY_SIZE,(VAR_SIZE)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT, ECPGt_EOLT);
+#line 545 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 545 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 545 "utext.pgc"
+
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "insert into tb1 values ( $1 , 11 )",
+ ECPGt_utext,(utext_array[0]),(long)VAR_SIZE,(long)1,(VAR_SIZE)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT, ECPGt_EOLT);
+#line 547 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 547 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 547 "utext.pgc"
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "select count ( * ) from tb1 where Item = '太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'", ECPGt_EOIT,
+ ECPGt_int,&(count),(long)1,(long)1,sizeof(int),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT, ECPGt_EOLT);
+#line 548 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 548 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 548 "utext.pgc"
+
+ printf ("found %d rows for Item='太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'\n", count);
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "insert into tb1 values ( $1 , 13 )",
+ ECPGt_utext,(utext_array[2]),(long)VAR_SIZE,(long)1,(VAR_SIZE)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT, ECPGt_EOLT);
+#line 551 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 551 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 551 "utext.pgc"
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "select count ( * ) from tb1 where Item = '世界杯每隔四年就会举行一次每次𠲖个球队'", ECPGt_EOIT,
+ ECPGt_int,&(count),(long)1,(long)1,sizeof(int),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT, ECPGt_EOLT);
+#line 552 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 552 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 552 "utext.pgc"
+
+ printf ("found %d rows for Item='世界杯每隔四年就会举行一次每次𠲖个球队'\n", count);
+
+ init_table_value();
+}
+
+//prepared select into utext array
+void test_array_6()
+{
+ test("test_array_6 : prepared select into utext array");
+ init_var();
+
+ { ECPGprepare(__LINE__, NULL, 0, "stmt", "SELECT Item FROM tb1 WHERE Count<=?");
+#line 564 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 564 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 564 "utext.pgc"
+
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_execute, "stmt",
+ ECPGt_const,"4",(long)1,(long)1,strlen("4"),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT,
+ ECPGt_utext,(utext_array),(long)VAR_SIZE,(long)ARRAY_SIZE,(VAR_SIZE)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT, ECPGt_EOLT);
+#line 566 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 566 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 566 "utext.pgc"
+
+
+ print_array();
+
+ { ECPGdeallocate(__LINE__, 0, NULL, "stmt");
+#line 570 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 570 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 570 "utext.pgc"
+
+}
+
+//prepared select using utext array
+void test_array_7()
+{
+ test("test_array_7 : prepared select using utext array");
+ init_var();
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "select Item from tb1 where count <= 3", ECPGt_EOIT,
+ ECPGt_utext,(utext_array),(long)VAR_SIZE,(long)ARRAY_SIZE,(VAR_SIZE)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT, ECPGt_EOLT);
+#line 578 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 578 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 578 "utext.pgc"
+
+
+ count = 0;
+ { ECPGprepare(__LINE__, NULL, 0, "stmt", "SELECT Count FROM tb1 WHERE Item=?");
+#line 581 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 581 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 581 "utext.pgc"
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_execute, "stmt",
+ ECPGt_utext,(utext_array[0]),(long)VAR_SIZE,(long)1,(VAR_SIZE)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT,
+ ECPGt_int,&(count),(long)1,(long)1,sizeof(int),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT, ECPGt_EOLT);
+#line 582 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 582 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 582 "utext.pgc"
+
+
+ printf ("count=%d for Item='世界杯每隔四年就会举行一次每次𠲖个球队'\n", count);
+ { ECPGdeallocate(__LINE__, 0, NULL, "stmt");
+#line 585 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 585 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 585 "utext.pgc"
+
+}
+
+//prepared update using utext array
+void test_array_8()
+{
+ test("test_array_8 : prepared update using utext array");
+ init_var();
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "select Item from tb1 where count <= 3", ECPGt_EOIT,
+ ECPGt_utext,(utext_array),(long)VAR_SIZE,(long)ARRAY_SIZE,(VAR_SIZE)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT, ECPGt_EOLT);
+#line 593 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 593 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 593 "utext.pgc"
+
+
+ { ECPGprepare(__LINE__, NULL, 0, "stmt", "UPDATE tb1 SET Item=? WHERE Count=?");
+#line 595 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 595 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 595 "utext.pgc"
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_execute, "stmt",
+ ECPGt_utext,(utext_array[0]),(long)VAR_SIZE,(long)1,(VAR_SIZE)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L,
+ ECPGt_const,"2",(long)1,(long)1,strlen("2"),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT, ECPGt_EOLT);
+#line 596 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 596 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 596 "utext.pgc"
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_execute, "stmt",
+ ECPGt_utext,(utext_array[0]),(long)VAR_SIZE,(long)1,(VAR_SIZE)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L,
+ ECPGt_const,"3",(long)1,(long)1,strlen("3"),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT, ECPGt_EOLT);
+#line 597 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 597 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 597 "utext.pgc"
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "select count ( * ) from tb1 where Item = '太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'", ECPGt_EOIT,
+ ECPGt_int,&(count),(long)1,(long)1,sizeof(int),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT, ECPGt_EOLT);
+#line 598 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 598 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 598 "utext.pgc"
+
+
+ printf ("found %d rows for Item='太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'\n", count);
+ { ECPGdeallocate(__LINE__, 0, NULL, "stmt");
+#line 601 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 601 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 601 "utext.pgc"
+
+
+ init_table_value();
+}
+
+//prepared delete using utext array
+void test_array_9()
+{
+ test("test_array_9 : prepared delete using utext array");
+ init_var();
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "select Item from tb1 where count <= 3", ECPGt_EOIT,
+ ECPGt_utext,(utext_array),(long)VAR_SIZE,(long)ARRAY_SIZE,(VAR_SIZE)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT, ECPGt_EOLT);
+#line 611 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 611 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 611 "utext.pgc"
+
+
+ count = 0;
+ { ECPGprepare(__LINE__, NULL, 0, "stmt", "DELETE FROM tb1 WHERE Item=?");
+#line 614 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 614 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 614 "utext.pgc"
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_execute, "stmt",
+ ECPGt_utext,(utext_array[0]),(long)VAR_SIZE,(long)1,(VAR_SIZE)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT, ECPGt_EOLT);
+#line 615 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 615 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 615 "utext.pgc"
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "select count ( * ) from tb1 where Item = '太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'", ECPGt_EOIT,
+ ECPGt_int,&(count),(long)1,(long)1,sizeof(int),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT, ECPGt_EOLT);
+#line 616 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 616 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 616 "utext.pgc"
+
+
+ printf ("found %d rows for Item='太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'\n", count);
+ { ECPGdeallocate(__LINE__, 0, NULL, "stmt");
+#line 619 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 619 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 619 "utext.pgc"
+
+
+ init_table_value();
+}
+
+//prepared insert using utext array
+void test_array_10()
+{
+ test("test_array_10 : prepared insert using utext array");
+ init_var();
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "select Item from tb1 where count <= 3", ECPGt_EOIT,
+ ECPGt_utext,(utext_array),(long)VAR_SIZE,(long)ARRAY_SIZE,(VAR_SIZE)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT, ECPGt_EOLT);
+#line 629 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 629 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 629 "utext.pgc"
+
+
+ { ECPGprepare(__LINE__, NULL, 0, "stmt", "INSERT INTO tb1 values (?, ?)");
+#line 631 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 631 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 631 "utext.pgc"
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_execute, "stmt",
+ ECPGt_utext,(utext_array[2]),(long)VAR_SIZE,(long)1,(VAR_SIZE)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L,
+ ECPGt_const,"13",(long)2,(long)1,strlen("13"),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT, ECPGt_EOLT);
+#line 632 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 632 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 632 "utext.pgc"
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_execute, "stmt",
+ ECPGt_utext,(utext_array[2]),(long)VAR_SIZE,(long)1,(VAR_SIZE)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L,
+ ECPGt_const,"15",(long)2,(long)1,strlen("15"),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT, ECPGt_EOLT);
+#line 633 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 633 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 633 "utext.pgc"
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "select count ( * ) from tb1 where Item = '世界杯每隔四年就会举行一次每次𠲖个球队'", ECPGt_EOIT,
+ ECPGt_int,&(count),(long)1,(long)1,sizeof(int),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT, ECPGt_EOLT);
+#line 634 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 634 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 634 "utext.pgc"
+
+
+ printf ("found %d rows for Item='世界杯每隔四年就会举行一次每次𠲖个球队'\n", count);
+ { ECPGdeallocate(__LINE__, 0, NULL, "stmt");
+#line 637 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 637 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 637 "utext.pgc"
+
+
+ init_table_value();
+}
+
+//Open cursor using utext array
+void test_array_11()
+{
+ test("test_array_11 : Open cursor using utext array");
+ init_var();
+
+ { ECPGsetcommit(__LINE__, "off", NULL);
+#line 648 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 648 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 648 "utext.pgc"
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "select Item from tb1 where count <= 3", ECPGt_EOIT,
+ ECPGt_utext,(utext_array),(long)VAR_SIZE,(long)ARRAY_SIZE,(VAR_SIZE)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT, ECPGt_EOLT);
+#line 649 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 649 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 649 "utext.pgc"
+
+
+ { ECPGprepare(__LINE__, NULL, 0, "stmt", "SELECT Count FROM tb1 WHERE Item=?");
+#line 651 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 651 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 651 "utext.pgc"
+
+ /* declare cursor_array_11 cursor for $1 */
+#line 652 "utext.pgc"
+
+ { ECPGopen("cursor_array_11", "stmt", __LINE__, 0, 1, NULL, 0, ECPGst_normal, "declare cursor_array_11 cursor for $1",
+ ECPGt_char_variable,(ECPGprepared_statement(NULL, "stmt", __LINE__)),(long)1,(long)1,(1)*sizeof(char),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L,
+ ECPGt_utext,(utext_array[2]),(long)VAR_SIZE,(long)1,(VAR_SIZE)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT, ECPGt_EOLT);
+#line 653 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 653 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 653 "utext.pgc"
+
+ { ECPGfetch("cursor_array_11", __LINE__, 0, 1, NULL, 0, ECPGst_normal, "fetch cursor_array_11", ECPGt_EOIT,
+ ECPGt_int,&(count),(long)1,(long)1,sizeof(int),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT, ECPGt_EOLT);
+#line 654 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 654 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 654 "utext.pgc"
+
+ printf ("count=%d for Item='世界杯每隔四年就会举行一次每次𠲖个球队'\n", count);
+ { ECPGclose("cursor_array_11", __LINE__, 0, 1, NULL, 0, ECPGst_normal, "close cursor_array_11", ECPGt_EOIT, ECPGt_EORT, ECPGt_EOLT);
+#line 656 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 656 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 656 "utext.pgc"
+
+ { ECPGdeallocate(__LINE__, 0, NULL, "stmt");
+#line 657 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 657 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 657 "utext.pgc"
+
+ { ECPGsetcommit(__LINE__, "on", NULL);
+#line 658 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 658 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 658 "utext.pgc"
+
+}
+
+//Fecth cursor into utext array
+void test_array_12()
+{
+ test("test_array_12 : Fecth cursor into utext array");
+ init_var();
+
+ { ECPGsetcommit(__LINE__, "off", NULL);
+#line 667 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 667 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 667 "utext.pgc"
+
+ { ECPGprepare(__LINE__, NULL, 0, "stmt", "SELECT Item FROM tb1 WHERE Count<=3");
+#line 668 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 668 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 668 "utext.pgc"
+
+ /* declare cursor_array_12 cursor for $1 */
+#line 669 "utext.pgc"
+
+ { ECPGopen("cursor_array_12", "stmt", __LINE__, 0, 1, NULL, 0, ECPGst_normal, "declare cursor_array_12 cursor for $1",
+ ECPGt_char_variable,(ECPGprepared_statement(NULL, "stmt", __LINE__)),(long)1,(long)1,(1)*sizeof(char),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT, ECPGt_EOLT);
+#line 670 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 670 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 670 "utext.pgc"
+
+ { ECPGfetch("cursor_array_12", __LINE__, 0, 1, NULL, 0, ECPGst_normal, "fetch cursor_array_12", ECPGt_EOIT,
+ ECPGt_utext,(utext_array[0]),(long)VAR_SIZE,(long)1,(VAR_SIZE)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT, ECPGt_EOLT);
+#line 671 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 671 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 671 "utext.pgc"
+
+ { ECPGfetch("cursor_array_12", __LINE__, 0, 1, NULL, 0, ECPGst_normal, "fetch cursor_array_12", ECPGt_EOIT,
+ ECPGt_utext,(utext_array[1]),(long)VAR_SIZE,(long)1,(VAR_SIZE)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT, ECPGt_EOLT);
+#line 672 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 672 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 672 "utext.pgc"
+
+ { ECPGfetch("cursor_array_12", __LINE__, 0, 1, NULL, 0, ECPGst_normal, "fetch cursor_array_12", ECPGt_EOIT,
+ ECPGt_utext,(utext_array[2]),(long)VAR_SIZE,(long)1,(VAR_SIZE)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT, ECPGt_EOLT);
+#line 673 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 673 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 673 "utext.pgc"
+
+ { ECPGclose("cursor_array_12", __LINE__, 0, 1, NULL, 0, ECPGst_normal, "close cursor_array_12", ECPGt_EOIT, ECPGt_EORT, ECPGt_EOLT);
+#line 674 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 674 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 674 "utext.pgc"
+
+
+ print_array();
+
+ { ECPGdeallocate(__LINE__, 0, NULL, "stmt");
+#line 678 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 678 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 678 "utext.pgc"
+
+ { ECPGsetcommit(__LINE__, "on", NULL);
+#line 679 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 679 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 679 "utext.pgc"
+
+}
+
+//Insert array with L string inited
+void test_array_13()
+{
+ test("test_array_13 : Insert array with L string inited");
+ init_var();
+
+/* exec sql begin declare section */
+
+
+#line 689 "utext.pgc"
+ utext utext_array13 [] [ VAR_SIZE ] = { L"太𠮷" , L"𠮷太" , L"太平" } ;
+/* exec sql end declare section */
+#line 690 "utext.pgc"
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "insert into tb1 values ( $1 , 20 )",
+ ECPGt_utext,(utext_array13[0]),(long)VAR_SIZE,(long)1,(VAR_SIZE)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT, ECPGt_EOLT);
+#line 691 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 691 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 691 "utext.pgc"
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "insert into tb1 values ( $1 , 21 )",
+ ECPGt_utext,(utext_array13[1]),(long)VAR_SIZE,(long)1,(VAR_SIZE)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT, ECPGt_EOLT);
+#line 692 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 692 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 692 "utext.pgc"
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "insert into tb1 values ( $1 , 22 )",
+ ECPGt_utext,(utext_array13[2]),(long)VAR_SIZE,(long)1,(VAR_SIZE)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT, ECPGt_EOLT);
+#line 693 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 693 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 693 "utext.pgc"
+
+
+ init_var();
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "select Item from tb1 where count <= 22 and count >= 20", ECPGt_EOIT,
+ ECPGt_utext,(utext_array),(long)VAR_SIZE,(long)ARRAY_SIZE,(VAR_SIZE)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT, ECPGt_EOLT);
+#line 696 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 696 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 696 "utext.pgc"
+
+ print_array();
+ init_table_value();
+}
+
+//simple select into utext pointer
+void test_pvar_1()
+{
+ test("test_pvar_1 : simple select into utext pointer");
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "select Item from tb1 where count = 1", ECPGt_EOIT,
+ ECPGt_utext,&(p_utext_var),(long)0,(long)1,(1)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT, ECPGt_EOLT);
+#line 705 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 705 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 705 "utext.pgc"
+
+ print_utext(p_utext_var);
+ init_var();
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "select Item from tb1 where count = 2", ECPGt_EOIT,
+ ECPGt_utext,&(p_utext_var),(long)0,(long)1,(1)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT, ECPGt_EOLT);
+#line 709 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 709 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 709 "utext.pgc"
+
+ print_utext(p_utext_var);
+ init_var();
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "select Item from tb1 where count = 3", ECPGt_EOIT,
+ ECPGt_utext,&(p_utext_var),(long)0,(long)1,(1)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT, ECPGt_EOLT);
+#line 713 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 713 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 713 "utext.pgc"
+
+ print_utext(p_utext_var);
+ init_var();
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "select Item from tb1 where count = 4", ECPGt_EOIT,
+ ECPGt_utext,&(p_utext_var),(long)0,(long)1,(1)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT, ECPGt_EOLT);
+#line 717 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 717 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 717 "utext.pgc"
+
+ print_utext(p_utext_var);
+ init_var();
+ init_table_value();
+}
+
+
+//simple select using utext pointer
+void test_pvar_2()
+{
+ test("test_pvar_2 : simple select using utext pointer");
+ init_var();
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "select Item from tb1 where count = 1", ECPGt_EOIT,
+ ECPGt_utext,&(p_utext_var),(long)0,(long)1,(1)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT, ECPGt_EOLT);
+#line 730 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 730 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 730 "utext.pgc"
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "select count from tb1 where Item = $1 ",
+ ECPGt_utext,&(p_utext_var),(long)0,(long)1,(1)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT,
+ ECPGt_int,&(count),(long)1,(long)1,sizeof(int),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT, ECPGt_EOLT);
+#line 731 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 731 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 731 "utext.pgc"
+
+ printf ("count=%d for '太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'\n", count);
+
+ init_var();
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "select Item from tb1 where count = 3", ECPGt_EOIT,
+ ECPGt_utext,&(p_utext_var),(long)0,(long)1,(1)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT, ECPGt_EOLT);
+#line 735 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 735 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 735 "utext.pgc"
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "select count from tb1 where Item = $1 ",
+ ECPGt_utext,&(p_utext_var),(long)0,(long)1,(1)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT,
+ ECPGt_int,&(count),(long)1,(long)1,sizeof(int),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT, ECPGt_EOLT);
+#line 736 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 736 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 736 "utext.pgc"
+
+ printf ("count=%d for '世界杯每隔四年就会举行一次每次𠲖个球队'\n", count);
+}
+
+
+//simple update using utext pointer
+void test_pvar_3()
+{
+ test("test_pvar_3 : simple update using utext pointer");
+ init_var();
+
+ count = 0;
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "select Item from tb1 where count = 1", ECPGt_EOIT,
+ ECPGt_utext,&(p_utext_var),(long)0,(long)1,(1)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT, ECPGt_EOLT);
+#line 748 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 748 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 748 "utext.pgc"
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "update tb1 set Item = $1 where count = 2",
+ ECPGt_utext,&(p_utext_var),(long)0,(long)1,(1)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT, ECPGt_EOLT);
+#line 749 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 749 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 749 "utext.pgc"
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "update tb1 set Item = $1 where count = 3",
+ ECPGt_utext,&(p_utext_var),(long)0,(long)1,(1)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT, ECPGt_EOLT);
+#line 750 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 750 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 750 "utext.pgc"
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "select count ( * ) from tb1 where Item = '太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'", ECPGt_EOIT,
+ ECPGt_int,&(count),(long)1,(long)1,sizeof(int),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT, ECPGt_EOLT);
+#line 751 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 751 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 751 "utext.pgc"
+
+ printf ("found %d rows for Item='太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'\n", count);
+
+ init_table_value();
+}
+
+//simple delete using utext pointer
+void test_pvar_4()
+{
+ test("test_pvar_4 : simple delete using utext pointer");
+ init_var();
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "select Item from tb1 where count = 1", ECPGt_EOIT,
+ ECPGt_utext,&(p_utext_var),(long)0,(long)1,(1)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT, ECPGt_EOLT);
+#line 763 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 763 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 763 "utext.pgc"
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "delete from tb1 where Item = $1 ",
+ ECPGt_utext,&(p_utext_var),(long)0,(long)1,(1)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT, ECPGt_EOLT);
+#line 764 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 764 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 764 "utext.pgc"
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "select count ( * ) from tb1 where Item = '太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'", ECPGt_EOIT,
+ ECPGt_int,&(count),(long)1,(long)1,sizeof(int),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT, ECPGt_EOLT);
+#line 765 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 765 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 765 "utext.pgc"
+
+ printf ("found %d rows for Item='太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'\n", count);
+
+ init_var();
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "select Item from tb1 where count = 3", ECPGt_EOIT,
+ ECPGt_utext,&(p_utext_var),(long)0,(long)1,(1)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT, ECPGt_EOLT);
+#line 769 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 769 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 769 "utext.pgc"
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "delete from tb1 where Item = $1 ",
+ ECPGt_utext,&(p_utext_var),(long)0,(long)1,(1)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT, ECPGt_EOLT);
+#line 770 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 770 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 770 "utext.pgc"
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "select count ( * ) from tb1 where Item = '世界杯每隔四年就会举行一次每次𠲖个球队'", ECPGt_EOIT,
+ ECPGt_int,&(count),(long)1,(long)1,sizeof(int),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT, ECPGt_EOLT);
+#line 771 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 771 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 771 "utext.pgc"
+
+ printf ("found %d rows for Item='世界杯每隔四年就会举行一次每次𠲖个球队'\n", count);
+
+ init_table_value();
+}
+
+//simple insert using utext pointer
+void test_pvar_5()
+{
+ test("test_pvar_5 : simple insert using utext pointer");
+ init_var();
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "select Item from tb1 where count = 3", ECPGt_EOIT,
+ ECPGt_utext,&(p_utext_var),(long)0,(long)1,(1)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT, ECPGt_EOLT);
+#line 783 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 783 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 783 "utext.pgc"
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "insert into tb1 values ( $1 , 13 )",
+ ECPGt_utext,&(p_utext_var),(long)0,(long)1,(1)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT, ECPGt_EOLT);
+#line 784 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 784 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 784 "utext.pgc"
+
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "select count ( * ) from tb1 where Item = '世界杯每隔四年就会举行一次每次𠲖个球队'", ECPGt_EOIT,
+ ECPGt_int,&(count),(long)1,(long)1,sizeof(int),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT, ECPGt_EOLT);
+#line 786 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 786 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 786 "utext.pgc"
+
+ printf ("found %d rows for Item='世界杯每隔四年就会举行一次每次𠲖个球队'\n", count);
+
+ init_table_value();
+}
+
+//prepared select into utext pointer
+void test_pvar_6()
+{
+ test("test_pvar_6 : prepared select into utext pointer");
+ init_var();
+
+ { ECPGprepare(__LINE__, NULL, 0, "stmt", "SELECT Item FROM tb1 WHERE Count=?");
+#line 798 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 798 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 798 "utext.pgc"
+
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_execute, "stmt",
+ ECPGt_const,"1",(long)1,(long)1,strlen("1"),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT,
+ ECPGt_utext,&(p_utext_var),(long)0,(long)1,(1)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT, ECPGt_EOLT);
+#line 800 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 800 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 800 "utext.pgc"
+
+ print_utext(p_utext_var);
+
+ init_var();
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_execute, "stmt",
+ ECPGt_const,"3",(long)1,(long)1,strlen("3"),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT,
+ ECPGt_utext,&(p_utext_var),(long)0,(long)1,(1)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT, ECPGt_EOLT);
+#line 804 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 804 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 804 "utext.pgc"
+
+ print_utext(p_utext_var);
+ init_table_value();
+
+ { ECPGdeallocate(__LINE__, 0, NULL, "stmt");
+#line 808 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 808 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 808 "utext.pgc"
+
+
+}
+
+//prepared select using utext pointer
+void test_pvar_7()
+{
+ test("test_pvar_7 : prepared select using utext pointer");
+ init_var();
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "select Item from tb1 where count = 3", ECPGt_EOIT,
+ ECPGt_utext,&(p_utext_var),(long)0,(long)1,(1)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT, ECPGt_EOLT);
+#line 818 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 818 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 818 "utext.pgc"
+
+
+ { ECPGprepare(__LINE__, NULL, 0, "stmt", "SELECT Count FROM tb1 WHERE Item=?");
+#line 820 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 820 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 820 "utext.pgc"
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_execute, "stmt",
+ ECPGt_utext,&(p_utext_var),(long)0,(long)1,(1)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT,
+ ECPGt_int,&(count),(long)1,(long)1,sizeof(int),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT, ECPGt_EOLT);
+#line 821 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 821 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 821 "utext.pgc"
+
+
+ printf ("count=%d for Item='世界杯每隔四年就会举行一次每次𠲖个球队'\n", count);
+ { ECPGdeallocate(__LINE__, 0, NULL, "stmt");
+#line 824 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 824 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 824 "utext.pgc"
+
+}
+
+//prepared update using utext pointer
+void test_pvar_8()
+{
+ test("test_pvar_8 : prepared update using utext pointer");
+ init_var();
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "select Item from tb1 where count = 3", ECPGt_EOIT,
+ ECPGt_utext,&(p_utext_var),(long)0,(long)1,(1)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT, ECPGt_EOLT);
+#line 833 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 833 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 833 "utext.pgc"
+
+
+ { ECPGprepare(__LINE__, NULL, 0, "stmt", "UPDATE tb1 SET Item=? WHERE Count=?");
+#line 835 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 835 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 835 "utext.pgc"
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_execute, "stmt",
+ ECPGt_utext,&(p_utext_var),(long)0,(long)1,(1)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L,
+ ECPGt_const,"1",(long)1,(long)1,strlen("1"),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT, ECPGt_EOLT);
+#line 836 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 836 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 836 "utext.pgc"
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_execute, "stmt",
+ ECPGt_utext,&(p_utext_var),(long)0,(long)1,(1)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L,
+ ECPGt_const,"2",(long)1,(long)1,strlen("2"),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT, ECPGt_EOLT);
+#line 837 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 837 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 837 "utext.pgc"
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "select count ( * ) from tb1 where Item = '世界杯每隔四年就会举行一次每次𠲖个球队'", ECPGt_EOIT,
+ ECPGt_int,&(count),(long)1,(long)1,sizeof(int),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT, ECPGt_EOLT);
+#line 838 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 838 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 838 "utext.pgc"
+
+
+ printf ("found %d rows for Item='世界杯每隔四年就会举行一次每次𠲖个球队'\n", count);
+ { ECPGdeallocate(__LINE__, 0, NULL, "stmt");
+#line 841 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 841 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 841 "utext.pgc"
+
+
+ init_table_value();
+}
+
+//prepared delete using utext pointer
+void test_pvar_9()
+{
+ test("test_pvar_9 : prepared delete using utext pointer");
+ init_var();
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "select Item from tb1 where count = 3", ECPGt_EOIT,
+ ECPGt_utext,&(p_utext_var),(long)0,(long)1,(1)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT, ECPGt_EOLT);
+#line 852 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 852 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 852 "utext.pgc"
+
+
+ { ECPGprepare(__LINE__, NULL, 0, "stmt", "DELETE FROM tb1 WHERE Item=?");
+#line 854 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 854 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 854 "utext.pgc"
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_execute, "stmt",
+ ECPGt_utext,&(p_utext_var),(long)0,(long)1,(1)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT, ECPGt_EOLT);
+#line 855 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 855 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 855 "utext.pgc"
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "select count ( * ) from tb1 where Item = '世界杯每隔四年就会举行一次每次𠲖个球队'", ECPGt_EOIT,
+ ECPGt_int,&(count),(long)1,(long)1,sizeof(int),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT, ECPGt_EOLT);
+#line 856 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 856 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 856 "utext.pgc"
+
+
+ printf ("found %d rows for Item='世界杯每隔四年就会举行一次每次𠲖个球队'\n", count);
+ { ECPGdeallocate(__LINE__, 0, NULL, "stmt");
+#line 859 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 859 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 859 "utext.pgc"
+
+
+ init_table_value();
+}
+
+//prepared insert using utext pointer
+void test_pvar_10()
+{
+ test("test_pvar_10 : prepared insert using utext pointer");
+ init_var();
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "select Item from tb1 where count = 3", ECPGt_EOIT,
+ ECPGt_utext,&(p_utext_var),(long)0,(long)1,(1)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT, ECPGt_EOLT);
+#line 870 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 870 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 870 "utext.pgc"
+
+
+ { ECPGprepare(__LINE__, NULL, 0, "stmt", "INSERT INTO tb1 values (?, 13)");
+#line 872 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 872 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 872 "utext.pgc"
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_execute, "stmt",
+ ECPGt_utext,&(p_utext_var),(long)0,(long)1,(1)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT, ECPGt_EOLT);
+#line 873 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 873 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 873 "utext.pgc"
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "select count ( * ) from tb1 where Item = '世界杯每隔四年就会举行一次每次𠲖个球队'", ECPGt_EOIT,
+ ECPGt_int,&(count),(long)1,(long)1,sizeof(int),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT, ECPGt_EOLT);
+#line 874 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 874 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 874 "utext.pgc"
+
+
+ printf ("found %d rows for Item='世界杯每隔四年就会举行一次每次𠲖个球队'\n", count);
+ { ECPGdeallocate(__LINE__, 0, NULL, "stmt");
+#line 877 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 877 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 877 "utext.pgc"
+
+
+ init_table_value();
+}
+
+//Open cursor using utext pointer
+void test_pvar_11()
+{
+ test("test_pvar_11 : Open cursor using utext pointer");
+ init_var();
+
+ { ECPGsetcommit(__LINE__, "off", NULL);
+#line 888 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 888 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 888 "utext.pgc"
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "select Item from tb1 where count = 3", ECPGt_EOIT,
+ ECPGt_utext,&(p_utext_var),(long)0,(long)1,(1)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT, ECPGt_EOLT);
+#line 889 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 889 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 889 "utext.pgc"
+
+
+ { ECPGprepare(__LINE__, NULL, 0, "stmt", "SELECT Count FROM tb1 WHERE Item=?");
+#line 891 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 891 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 891 "utext.pgc"
+
+ /* declare cursor_pvar_11 cursor for $1 */
+#line 892 "utext.pgc"
+
+ { ECPGopen("cursor_pvar_11", "stmt", __LINE__, 0, 1, NULL, 0, ECPGst_normal, "declare cursor_pvar_11 cursor for $1",
+ ECPGt_char_variable,(ECPGprepared_statement(NULL, "stmt", __LINE__)),(long)1,(long)1,(1)*sizeof(char),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L,
+ ECPGt_utext,&(p_utext_var),(long)0,(long)1,(1)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT, ECPGt_EOLT);
+#line 893 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 893 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 893 "utext.pgc"
+
+ { ECPGfetch("cursor_pvar_11", __LINE__, 0, 1, NULL, 0, ECPGst_normal, "fetch cursor_pvar_11", ECPGt_EOIT,
+ ECPGt_int,&(count),(long)1,(long)1,sizeof(int),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT, ECPGt_EOLT);
+#line 894 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 894 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 894 "utext.pgc"
+
+ printf ("count=%d for Item='世界杯每隔四年就会举行一次每次𠲖个球队'\n", count);
+ { ECPGclose("cursor_pvar_11", __LINE__, 0, 1, NULL, 0, ECPGst_normal, "close cursor_pvar_11", ECPGt_EOIT, ECPGt_EORT, ECPGt_EOLT);
+#line 896 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 896 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 896 "utext.pgc"
+
+ { ECPGdeallocate(__LINE__, 0, NULL, "stmt");
+#line 897 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 897 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 897 "utext.pgc"
+
+ { ECPGsetcommit(__LINE__, "on", NULL);
+#line 898 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 898 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 898 "utext.pgc"
+
+}
+
+//Fecth cursor into utext pointer
+void test_pvar_12()
+{
+ test("test_pvar_12 : Fecth cursor into utext pointer");
+ init_var();
+
+ { ECPGsetcommit(__LINE__, "off", NULL);
+#line 907 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 907 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 907 "utext.pgc"
+
+ { ECPGprepare(__LINE__, NULL, 0, "stmt", "SELECT Item FROM tb1 WHERE Count=1");
+#line 908 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 908 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 908 "utext.pgc"
+
+ /* declare cursor_pvar_12 cursor for $1 */
+#line 909 "utext.pgc"
+
+ { ECPGopen("cursor_pvar_12", "stmt", __LINE__, 0, 1, NULL, 0, ECPGst_normal, "declare cursor_pvar_12 cursor for $1",
+ ECPGt_char_variable,(ECPGprepared_statement(NULL, "stmt", __LINE__)),(long)1,(long)1,(1)*sizeof(char),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT, ECPGt_EOLT);
+#line 910 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 910 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 910 "utext.pgc"
+
+ { ECPGfetch("cursor_pvar_12", __LINE__, 0, 1, NULL, 0, ECPGst_normal, "fetch cursor_pvar_12", ECPGt_EOIT,
+ ECPGt_utext,&(p_utext_var),(long)0,(long)1,(1)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT, ECPGt_EOLT);
+#line 911 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 911 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 911 "utext.pgc"
+
+ { ECPGclose("cursor_pvar_12", __LINE__, 0, 1, NULL, 0, ECPGst_normal, "close cursor_pvar_12", ECPGt_EOIT, ECPGt_EORT, ECPGt_EOLT);
+#line 912 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 912 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 912 "utext.pgc"
+
+
+ print_utext(p_utext_var);
+
+ { ECPGdeallocate(__LINE__, 0, NULL, "stmt");
+#line 916 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 916 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 916 "utext.pgc"
+
+ { ECPGsetcommit(__LINE__, "on", NULL);
+#line 917 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 917 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 917 "utext.pgc"
+
+}
+
+//simple insert utext pointer with L string inited
+void test_pvar_13()
+{
+/* exec sql begin declare section */
+
+
+#line 924 "utext.pgc"
+ utext * utext_local_pvar = L"太𠮷" ;
+/* exec sql end declare section */
+#line 925 "utext.pgc"
+
+ test("test_pvar_13 : simple insert utext pointer with L string inited");
+ init_var();
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "insert into tb1 values ( $1 , 16 )",
+ ECPGt_utext,&(utext_local_pvar),(long)0,(long)1,(1)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT, ECPGt_EOLT);
+#line 929 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 929 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 929 "utext.pgc"
+
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "select Item from tb1 where count = 16", ECPGt_EOIT,
+ ECPGt_utext,(utext_var),(long)VAR_SIZE,(long)1,(VAR_SIZE)*sizeof(utext),
+ ECPGt_int,&(utext_var_ind),(long)1,(long)1,sizeof(int), ECPGt_EORT, ECPGt_EOLT);
+#line 931 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 931 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 931 "utext.pgc"
+
+ print_utext(utext_var);
+ print_utext_ind(utext_var_ind);
+ init_var();
+ init_table_value();
+}
+
+//Buck insert utext array into table
+void test_buckinsert_1()
+{
+ test("test_buckinsert_1 : Buck insert utext array into table");
+ init_var();
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "select Item from tb1 where count <= 3", ECPGt_EOIT,
+ ECPGt_utext,(utext_array),(long)VAR_SIZE,(long)ARRAY_SIZE,(VAR_SIZE)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT, ECPGt_EOLT);
+#line 944 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 944 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 944 "utext.pgc"
+
+
+ // truncate table
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "truncate tb1", ECPGt_EOIT, ECPGt_EORT, ECPGt_EOLT);
+#line 947 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 947 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 947 "utext.pgc"
+
+
+ //buck insert
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "BULK_INSERT_V01_I0058R0000 insert into tb1 (Item , count) values ( $1 , $2 )",
+ ECPGt_utext,(utext_array),(long)VAR_SIZE,(long)ARRAY_SIZE,(VAR_SIZE)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L,
+ ECPGt_int,(count_array),(long)1,(long)4,sizeof(int),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT,
+ ECPGt_const,"3",(long)1,(long)1,strlen("3"),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOLT);
+#line 950 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 950 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 950 "utext.pgc"
+
+
+ //check the results
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "select count ( * ) from tb1", ECPGt_EOIT,
+ ECPGt_int,&(total_tuples),(long)1,(long)1,sizeof(int),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT, ECPGt_EOLT);
+#line 953 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 953 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 953 "utext.pgc"
+
+ printf ("Total tuples in tb1 = %d\n", total_tuples);
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "select count from tb1 where Item = $1 ",
+ ECPGt_utext,(utext_array[0]),(long)VAR_SIZE,(long)1,(VAR_SIZE)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT,
+ ECPGt_int,&(count),(long)1,(long)1,sizeof(int),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT, ECPGt_EOLT);
+#line 956 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 956 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 956 "utext.pgc"
+
+ printf ("count=%d for '太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'\n", count);
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "select count from tb1 where Item = $1 ",
+ ECPGt_utext,(utext_array[2]),(long)VAR_SIZE,(long)1,(VAR_SIZE)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT,
+ ECPGt_int,&(count),(long)1,(long)1,sizeof(int),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT, ECPGt_EOLT);
+#line 959 "utext.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 959 "utext.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 959 "utext.pgc"
+
+ printf ("count=%d for '世界杯每隔四年就会举行一次每次𠲖个球队'\n", count);
+
+ init_var();
+ init_table_value();
+}
+
+void test_all()
+{
+ test_var_1();
+ test_var_2();
+ test_var_3();
+ test_var_4();
+ test_var_5();
+ test_var_6();
+ test_var_7();
+ test_var_8();
+ test_var_9();
+ test_var_10();
+ test_var_11();
+ test_var_12();
+ test_var_13();
+ test_array_1();
+ test_array_2();
+ test_array_3();
+ test_array_4();
+ test_array_5();
+ test_array_6();
+ test_array_7();
+ test_array_8();
+ test_array_9();
+ test_array_10();
+ test_array_11();
+ test_array_12();
+ test_array_13();
+ test_pvar_1();
+ test_pvar_2();
+ test_pvar_3();
+ test_pvar_4();
+ test_pvar_5();
+ test_pvar_6();
+ test_pvar_7();
+ test_pvar_8();
+ test_pvar_9();
+ test_pvar_10();
+ test_pvar_11();
+ test_pvar_12();
+ test_pvar_13();
+ test_buckinsert_1();
+}
+
+int main(int argc, char *argv[])
+{
+ ECPGdebug(1, stderr);
+ if(test_init() !=0)
+ return -1;
+
+ test_all();
+ //test_var_13();
+ //test_array_13();
+ //test_pvar_13();
+
+ test_finish();
+
+ return 0;
+}
\ No newline at end of file
diff --git a/src/interfaces/ecpg/test/unicode/expected/utext.ret b/src/interfaces/ecpg/test/unicode/expected/utext.ret
new file mode 100644
index 0000000..19088ec
--- /dev/null
+++ b/src/interfaces/ecpg/test/unicode/expected/utext.ret
@@ -0,0 +1,435 @@
+SQL error:
+
+test_var_1: simple select into utext var
+======print utext_var content======
+0x0000592A 0x00020BB7 0x00020731 0x00005E73 0x00006D0B 0x00020C53 0x00005927 0x0000897F
+0x00006D0B 0x00005370 0x00005EA6 0x00006D0B 0x00005317 0x000051B0 0x00006D0B 0x00000000
+0x00000000 0x00000000 0x00000000 0x00000000
+======End utext_var content======
+utext_var_ind = 0
+======print utext_var content======
+0x00008DB3 0x00007403 0x00007BEE 0x00007403 0x00007FBD 0x00006BDB 0x00007403 0x00004E52
+0x00004E53 0x00007403 0x00006A44 0x00006984 0x00007403 0x000068D2 0x00007403 0x000051B0
+0x00007403 0x00000000 0x00000000 0x00000000
+======End utext_var content======
+utext_var_ind = 0
+======print utext_var content======
+0x00004E16 0x0000754C 0x0000676F 0x00006BCF 0x00009694 0x000056DB 0x00005E74 0x00005C31
+0x00004F1A 0x00004E3E 0x0000884C 0x00004E00 0x00006B21 0x00006BCF 0x00006B21 0x00020C96
+0x00004E2A 0x00007403 0x0000961F 0x00000000
+======End utext_var content======
+utext_var_ind = 0
+======print utext_var content======
+0x00004E9A 0x00006D32 0x00006B27 0x00006D32 0x0000975E 0x00006D32 0x00005927 0x00006D0B
+0x00006D32 0x00005317 0x00007F8E 0x00006D32 0x00005357 0x00007F8E 0x00006D32 0x00005357
+0x00006781 0x00006D32 0x00006CA1 0x00006709
+======End utext_var content======
+utext_var_ind = 23
+
+test_var_2: simple select using utext var
+count=1 for '太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'
+count=3 for '世界杯每隔四年就会举行一次每次𠲖个球队'
+
+test_var_3: simple update using utext var
+found 3 rows for Item='太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'
+
+test_var_4 : simple delete using utext var
+found 0 rows for Item='太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'
+found 0 rows for Item='世界杯每隔四年就会举行一次每次𠲖个球队'
+
+test_var_5 : simple insert using utext
+found 2 rows for Item='太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'
+found 2 rows for Item='世界杯每隔四年就会举行一次每次𠲖个球队'
+
+test_var_6 : prepared select into utext var
+======print utext_var content======
+0x0000592A 0x00020BB7 0x00020731 0x00005E73 0x00006D0B 0x00020C53 0x00005927 0x0000897F
+0x00006D0B 0x00005370 0x00005EA6 0x00006D0B 0x00005317 0x000051B0 0x00006D0B 0x00000000
+0x00000000 0x00000000 0x00000000 0x00000000
+======End utext_var content======
+======print utext_var content======
+0x00004E16 0x0000754C 0x0000676F 0x00006BCF 0x00009694 0x000056DB 0x00005E74 0x00005C31
+0x00004F1A 0x00004E3E 0x0000884C 0x00004E00 0x00006B21 0x00006BCF 0x00006B21 0x00020C96
+0x00004E2A 0x00007403 0x0000961F 0x00000000
+======End utext_var content======
+
+test_var_7 : prepared select using utext var
+count=3 for Item='世界杯每隔四年就会举行一次每次𠲖个球队'
+
+test_var_8 : prepared update using utext var
+found 3 rows for Item='世界杯每隔四年就会举行一次每次𠲖个球队'
+
+test_var_9 : prepared delete using utext var
+found 0 rows for Item='世界杯每隔四年就会举行一次每次𠲖个球队'
+
+test_var_10 : prepared insert using utext var
+found 2 rows for Item='世界杯每隔四年就会举行一次每次𠲖个球队'
+
+test_var_11 : Open cursor using utext var
+count=3 for Item='世界杯每隔四年就会举行一次每次𠲖个球队'
+
+test_var_12 : Fecth cursor into utext var
+======print utext_var content======
+0x0000592A 0x00020BB7 0x00020731 0x00005E73 0x00006D0B 0x00020C53 0x00005927 0x0000897F
+0x00006D0B 0x00005370 0x00005EA6 0x00006D0B 0x00005317 0x000051B0 0x00006D0B 0x00000000
+0x00000000 0x00000000 0x00000000 0x00000000
+======End utext_var content======
+
+test_var_13 : simple insert utext var with L string inited
+======print utext_var_str content======
+0x00008DB3 0x00007403 0x00007BEE 0x00007403 0x00007FBD 0x00006BDB 0x00007403
+======End utext_var_str content======
+======print utext_var content======
+0x00008DB3 0x00007403 0x00007BEE 0x00007403 0x00007FBD 0x00006BDB 0x00007403 0x00000000
+0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000
+0x00000000 0x00000000 0x00000000 0x00000000
+======End utext_var content======
+utext_var_ind = 0
+
+test_var_14 : Open cursor using utext var directly in WHERE Clause
+count=3 for Item='世界杯每隔四年就会举行一次每次𠲖个球队'
+
+test_var_15 : Test utext_var working with NULL without indicator
+======print utext_var content======
+0x00000000 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161
+0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161
+0x61616161 0x61616161 0x61616161 0x61616161
+======End utext_var content======
+found 6 rows for Item being NULL
+
+test_var_16 : Test utext_var working with NULL with indicator
+======print utext_var content======
+0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161
+0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161
+0x61616161 0x61616161 0x61616161 0x61616161
+======End utext_var content======
+utext_var_ind = -1
+found 6 rows for Item being NULL
+
+test_array_1 : simple select into utext array
+---->array[0]:
+0x0000592A 0x00020BB7 0x00020731 0x00005E73 0x00006D0B 0x00020C53 0x00005927 0x0000897F
+0x00006D0B 0x00005370 0x00005EA6 0x00006D0B 0x00005317 0x000051B0 0x00006D0B 0x00000000
+0x00000000 0x00000000 0x00000000 0x00000000
+---->array[1]:
+0x00008DB3 0x00007403 0x00007BEE 0x00007403 0x00007FBD 0x00006BDB 0x00007403 0x00004E52
+0x00004E53 0x00007403 0x00006A44 0x00006984 0x00007403 0x000068D2 0x00007403 0x000051B0
+0x00007403 0x00000000 0x00000000 0x00000000
+---->array[2]:
+0x00004E16 0x0000754C 0x0000676F 0x00006BCF 0x00009694 0x000056DB 0x00005E74 0x00005C31
+0x00004F1A 0x00004E3E 0x0000884C 0x00004E00 0x00006B21 0x00006BCF 0x00006B21 0x00020C96
+0x00004E2A 0x00007403 0x0000961F 0x00000000
+---->array[3]:
+0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161
+0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161
+0x61616161 0x61616161 0x61616161 0x61616161
+
+---->array[0]:
+0x0000592A 0x00020BB7 0x00020731 0x00005E73 0x00006D0B 0x00020C53 0x00005927 0x0000897F
+0x00006D0B 0x00005370 0x00005EA6 0x00006D0B 0x00005317 0x000051B0 0x00006D0B 0x00000000
+0x00000000 0x00000000 0x00000000 0x00000000
+---->array[1]:
+0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161
+0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161
+0x61616161 0x61616161 0x61616161 0x61616161
+---->array[2]:
+0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161
+0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161
+0x61616161 0x61616161 0x61616161 0x61616161
+---->array[3]:
+0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161
+0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161
+0x61616161 0x61616161 0x61616161 0x61616161
+
+
+test_array_2 : simple select using array
+count=1 for '太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'
+count=3 for '世界杯每隔四年就会举行一次每次𠲖个球队'
+
+test_array_3 : simple update using utext array
+find 0 rows for Item='太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'
+find 2 rows for Item='世界杯每隔四年就会举行一次每次𠲖个球队'
+
+test_array_4 : simple delete using utext array
+found 0 rows for Item='太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'
+found 0 rows for Item='世界杯每隔四年就会举行一次每次𠲖个球队'
+
+test_array_5 : simple insert using utext array
+found 2 rows for Item='太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'
+found 2 rows for Item='世界杯每隔四年就会举行一次每次𠲖个球队'
+
+test_array_6 : prepared select SQL error:
+into utext array
+---->array[0]:
+0x0000592A 0x00020BB7 0x00020731 0x00005E73 0x00006D0B 0x00020C53 0x00005927 0x0000897F
+0x00006D0B 0x00005370 0x00005EA6 0x00006D0B 0x00005317 0x000051B0 0x00006D0B 0x00000000
+0x00000000 0x00000000 0x00000000 0x00000000
+---->array[1]:
+0x00008DB3 0x00007403 0x00007BEE 0x00007403 0x00007FBD 0x00006BDB 0x00007403 0x00004E52
+0x00004E53 0x00007403 0x00006A44 0x00006984 0x00007403 0x000068D2 0x00007403 0x000051B0
+0x00007403 0x00000000 0x00000000 0x00000000
+---->array[2]:
+0x00004E16 0x0000754C 0x0000676F 0x00006BCF 0x00009694 0x000056DB 0x00005E74 0x00005C31
+0x00004F1A 0x00004E3E 0x0000884C 0x00004E00 0x00006B21 0x00006BCF 0x00006B21 0x00020C96
+0x00004E2A 0x00007403 0x0000961F 0x00000000
+---->array[3]:
+0x00004E9A 0x00006D32 0x00006B27 0x00006D32 0x0000975E 0x00006D32 0x00005927 0x00006D0B
+0x00006D32 0x00005317 0x00007F8E 0x00006D32 0x00005357 0x00007F8E 0x00006D32 0x00005357
+0x00006781 0x00006D32 0x00006CA1 0x00006709
+
+
+test_array_7 : prepared select using utext array
+count=1 for Item='世界杯每隔四年就会举行一次每次𠲖个球队'
+
+test_array_8 : prepared update using utext array
+found 3 rows for Item='太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'
+
+test_array_9 : prepared delete using utext array
+found 0 rows for Item='太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'
+
+test_array_10 : prepared insert using utext array
+found 3 rows for Item='世界杯每隔四年就会举行一次每次𠲖个球队'
+
+test_array_11 : Open cursor using utext array
+count=3 for Item='世界杯每隔四年就会举行一次每次𠲖个球队'
+
+test_array_12 : Fecth cursor into utext array
+---->array[0]:
+0x0000592A 0x00020BB7 0x00020731 0x00005E73 0x00006D0B 0x00020C53 0x00005927 0x0000897F
+0x00006D0B 0x00005370 0x00005EA6 0x00006D0B 0x00005317 0x000051B0 0x00006D0B 0x00000000
+0x00000000 0x00000000 0x00000000 0x00000000
+---->array[1]:
+0x00008DB3 0x00007403 0x00007BEE 0x00007403 0x00007FBD 0x00006BDB 0x00007403 0x00004E52
+0x00004E53 0x00007403 0x00006A44 0x00006984 0x00007403 0x000068D2 0x00007403 0x000051B0
+0x00007403 0x00000000 0x00000000 0x00000000
+---->array[2]:
+0x00004E16 0x0000754C 0x0000676F 0x00006BCF 0x00009694 0x000056DB 0x00005E74 0x00005C31
+0x00004F1A 0x00004E3E 0x0000884C 0x00004E00 0x00006B21 0x00006BCF 0x00006B21 0x00020C96
+0x00004E2A 0x00007403 0x0000961F 0x00000000
+---->array[3]:
+0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161
+0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161
+0x61616161 0x61616161 0x61616161 0x61616161
+
+
+test_array_13 : Insert array with L string inited
+---->array[0]:
+0x0000592A 0x00020BB7 0x00020731 0x00005E73 0x00006D0B 0x00020C53 0x00005927 0x0000897F
+0x00006D0B 0x00005370 0x00005EA6 0x00006D0B 0x00005317 0x000051B0 0x00006D0B 0x00000000
+0x00000000 0x00000000 0x00000000 0x00000000
+---->array[1]:
+0x00008DB3 0x00007403 0x00007BEE 0x00007403 0x00007FBD 0x00006BDB 0x00007403 0x00004E52
+0x00004E53 0x00007403 0x00006A44 0x00006984 0x00007403 0x000068D2 0x00007403 0x000051B0
+0x00007403 0x00000000 0x00000000 0x00000000
+---->array[2]:
+0x00004E16 0x0000754C 0x0000676F 0x00006BCF 0x00009694 0x000056DB 0x00005E74 0x00005C31
+0x00004F1A 0x00004E3E 0x0000884C 0x00004E00 0x00006B21 0x00006BCF 0x00006B21 0x00020C96
+0x00004E2A 0x00007403 0x0000961F 0x00000000
+
+
+test_array_14 : Open cursor using utext array directly in WHERE Clause
+count=3 for Item='世界杯每隔四年就会举行一次每次𠲖个球队'
+
+test_array_15 : Test utext array working with NULL without using indicator
+---->array[0]:
+0x00000000 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161
+0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161
+0x61616161 0x61616161 0x61616161 0x61616161
+---->array[1]:
+0x00000000 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161
+0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161
+0x61616161 0x61616161 0x61616161 0x61616161
+---->array[2]:
+0x00000000 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161
+0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161
+0x61616161 0x61616161 0x61616161 0x61616161
+
+found 6 rows for Item being NULL
+
+test_array_16 : Test utext array working with NULL using indicator
+---->array[0]:
+0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161
+0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161
+0x61616161 0x61616161 0x61616161 0x61616161
+---->array[1]:
+0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161
+0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161
+0x61616161 0x61616161 0x61616161 0x61616161
+---->array[2]:
+0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161
+0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161
+0x61616161 0x61616161 0x61616161 0x61616161
+
+utext_var_ind = -1
+utext_var_ind = -1
+utext_var_ind = -1
+found 6 rows for Item being NULL
+
+test_pvar_1 : simple select into utext pointer
+======print utext_var content======
+0x0000592A 0x00020BB7 0x00020731 0x00005E73 0x00006D0B 0x00020C53 0x00005927 0x0000897F
+0x00006D0B 0x00005370 0x00005EA6 0x00006D0B 0x00005317 0x000051B0 0x00006D0B 0x00000000
+0x61616161 0x61616161 0x61616161 0x61616161
+======End utext_var content======
+utext_var_ind = 0
+======print utext_var content======
+0x00008DB3 0x00007403 0x00007BEE 0x00007403 0x00007FBD 0x00006BDB 0x00007403 0x00004E52
+0x00004E53 0x00007403 0x00006A44 0x00006984 0x00007403 0x000068D2 0x00007403 0x000051B0
+0x00007403 0x00000000 0x61616161 0x61616161
+======End utext_var content======
+utext_var_ind = 0
+======print utext_var content======
+0x00004E16 0x0000754C 0x0000676F 0x00006BCF 0x00009694 0x000056DB 0x00005E74 0x00005C31
+0x00004F1A 0x00004E3E 0x0000884C 0x00004E00 0x00006B21 0x00006BCF 0x00006B21 0x00020C96
+0x00004E2A 0x00007403 0x0000961F 0x00000000
+======End utext_var content======
+utext_var_ind = 0
+======print utext_var content======
+0x00004E9A 0x00006D32 0x00006B27 0x00006D32 0x0000975E 0x00006D32 0x00005927 0x00006D0B
+0x00006D32 0x00005317 0x00007F8E 0x00006D32 0x00005357 0x00007F8E 0x00006D32 0x00005357
+0x00006781 0x00006D32 0x00006CA1 0x00006709
+======End utext_var content======
+utext_var_ind = 0
+
+test_pvar_2 : simple select using utext pointer
+count=1 for '太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'
+count=0 for '世界杯每隔四年就会举行一次每次𠲖个球队'
+
+test_pvar_3 : simple update using utext pointer
+found 3 rows for Item='太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'
+
+test_pvar_4 : simple delete using utext pointer
+found 0 rows for Item='太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'
+found 1 rows for Item='世界杯每隔四年就会举行一次每次𠲖个球队'
+
+test_pvar_5 : simple insert using utext pointer
+found 1 rows for Item='世界杯每隔四年就会举行一次每次𠲖个球队'
+
+test_pvar_6 : prepared select into utext pointer
+======print utext_var content======
+0x0000592A 0x00020BB7 0x00020731 0x00005E73 0x00006D0B 0x00020C53 0x00005927 0x0000897F
+0x00006D0B 0x00005370 0x00005EA6 0x00006D0B 0x00005317 0x000051B0 0x00006D0B 0x00000000
+0x61616161 0x61616161 0x61616161 0x61616161
+======End utext_var content======
+======print utext_var content======
+0x00004E16 0x0000754C 0x0000676F 0x00006BCF 0x00009694 0x000056DB 0x00005E74 0x00005C31
+0x00004F1A 0x00004E3E 0x0000884C 0x00004E00 0x00006B21 0x00006BCF 0x00006B21 0x00020C96
+0x00004E2A 0x00007403 0x0000961F 0x00000000
+======End utext_var content======
+
+test_pvar_7 : prepared select using utext pointer
+count=0 for Item='世界杯每隔四年就会举行一次每次𠲖个球队'
+
+test_pvar_8 : prepared update using utext pointer
+found 1 rows for Item='世界杯每隔四年就会举行一次每次𠲖个球队'
+
+test_pvar_9 : prepared delete using utext pointer
+found 1 rows for Item='世界杯每隔四年就会举行一次每次𠲖个球队'
+
+test_pvar_10 : prepared insert using utext pointer
+found 1 rows for Item='世界杯每隔四年就会举行一次每次𠲖个球队'
+
+test_pvar_11 : Open cursor using utext pointer
+count=0 for Item='世界杯每隔四年就会举行一次每次𠲖个球队'
+
+test_pvar_12 : Fecth cursor into utext pointer
+======print utext_var content======
+0x0000592A 0x00020BB7 0x00020731 0x00005E73 0x00006D0B 0x00020C53 0x00005927 0x0000897F
+0x00006D0B 0x00005370 0x00005EA6 0x00006D0B 0x00005317 0x000051B0 0x00006D0B 0x00000000
+0x61616161 0x61616161 0x61616161 0x61616161
+======End utext_var content======
+
+test_pvar_13 : simple insert utext pointer with L string inited
+======print utext_var content======
+0x0000592A 0x00020BB7 0x00020731 0x00005E73 0x00006D0B 0x00020C53 0x00005927 0x0000897F
+0x00006D0B 0x00005370 0x00005EA6 0x00006D0B 0x00005317 0x000051B0 0x00006D0B 0x00000000
+0x00000000 0x00000000 0x00000000 0x00000000
+======End utext_var content======
+utext_var_ind = 0
+
+test_pvar_14 : Open cursor using utext var directly in WHERE Clause
+count=0 for Item='世界杯每隔四年就会举行一次每次𠲖个球队'
+
+test_pvar_15 : Test utext pointer working with NULL without using indicator
+======print utext_var content======
+0x00000000 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161
+0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161
+0x61616161 0x61616161 0x61616161 0x61616161
+======End utext_var content======
+found 6 rows for Item being NULL
+
+test_pvar_16 : Test utext pointer working with NULL using indicator
+======print utext_var content======
+0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161
+0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161
+0x61616161 0x61616161 0x61616161 0x61616161
+======End utext_var content======
+utext_var_ind = -1
+found 6 rows for Item being NULL
+
+test_pvar_17 : Test utext uninitialized pointer getting and setting data
+======print utext_var_str content======
+0x0000592A 0x00020BB7 0x00020731 0x00005E73 0x00006D0B 0x00020C53 0x00005927 0x0000897F
+0x00006D0B 0x00005370 0x00005EA6 0x00006D0B 0x00005317 0x000051B0 0x00006D0B
+======End utext_var_str content======
+Find Item = 太𠮷𠜱平洋𠱓大西洋印度洋北冰洋 where Count=18
+
+test_pvar_18 : Test utext uninitialized pointer working with NULL without using indicator
+======print utext_var content======
+0x00000000
+======End utext_var content======
+found 6 rows for Item being NULL
+
+test_pvar_19 : Test utext uninitialized pointer working with NULL using indicator
+======print utext_var content======
+0x00000000
+======End utext_var content======
+utext_var_ind = -1
+found 6 rows for Item being NULL
+
+test_pp_var_1 : Test pointer to pointer utext_var without initialize
+======print utext_var_str content======
+0x0000592A 0x00020BB7 0x00020731 0x00005E73 0x00006D0B 0x00020C53 0x00005927 0x0000897F
+0x00006D0B 0x00005370 0x00005EA6 0x00006D0B 0x00005317 0x000051B0 0x00006D0B
+======End utext_var_str content======
+utext_var_ind = 0
+======print utext_var_str content======
+0x00008DB3 0x00007403 0x00007BEE 0x00007403 0x00007FBD 0x00006BDB 0x00007403 0x00004E52
+0x00004E53 0x00007403 0x00006A44 0x00006984 0x00007403 0x000068D2 0x00007403 0x000051B0
+0x00007403
+======End utext_var_str content======
+utext_var_ind = 0
+======print utext_var_str content======
+0x00004E16 0x0000754C 0x0000676F 0x00006BCF 0x00009694 0x000056DB 0x00005E74 0x00005C31
+0x00004F1A 0x00004E3E 0x0000884C 0x00004E00 0x00006B21 0x00006BCF 0x00006B21 0x00020C96
+0x00004E2A 0x00007403 0x0000961F
+======End utext_var_str content======
+utext_var_ind = 0
+足球篮球羽毛球乒乓球橄榄球棒球冰球
+
+test_pp_var_2 : Test uninitialized pointer to pointer utext_var working with NULL without indicator
+======print utext_var_str content======
+
+======End utext_var_str content======
+======print utext_var_str content======
+
+======End utext_var_str content======
+======print utext_var_str content======
+
+======End utext_var_str content======
+found 6 rows for Item being NULL
+
+test_pp_var_2 : Test uninitialized pointer to pointer utext_var working with NULL without indicator
+======print utext_var_str content======
+
+======End utext_var_str content======
+utext_var_ind = -1
+======print utext_var_str content======
+
+======End utext_var_str content======
+utext_var_ind = -1
+======print utext_var_str content======
+
+======End utext_var_str content======
+utext_var_ind = -1
+found 6 rows for Item being NULL
diff --git a/src/interfaces/ecpg/test/unicode/expected/utext_ex.c b/src/interfaces/ecpg/test/unicode/expected/utext_ex.c
new file mode 100755
index 0000000..f4e44aa
--- /dev/null
+++ b/src/interfaces/ecpg/test/unicode/expected/utext_ex.c
@@ -0,0 +1,521 @@
+/* Processed by ecpg (regression mode) */
+/* These include files are added by the preprocessor */
+#define ECPG_ENABLE_UTEXT 1
+#include <ecpglib.h>
+#include <ecpgerrno.h>
+#include <sqlca.h>
+/* End of automatic include section */
+#define ECPGdebug(X,Y) ECPGdebug((X)+100,(Y))
+
+#line 1 "utext_ex.pgc"
+#include <stdio.h>
+
+
+#line 1 "./../regression.h"
+
+
+
+
+
+
+#line 3 "utext_ex.pgc"
+
+
+void print_utext(char *var_name, utext *utext_var, int var_size);
+void print_utext_array(char *var_name, utext *utext_var, int var_size, int index);
+void print_nchar(char *utext_var, int var_size);
+
+#define print_ret print_utext("employee",employee,40); \
+print_utext("address", address.arr, address.len)
+
+/* exec sql begin declare section */
+
+
+
+
+
+
+
+
+
+
+
+
+#line 13 "utext_ex.pgc"
+ char char_ename [ 3 ] [ 40 ] = { "test ok" , "测试 通过" , "太𠮷𠜱" } ;
+
+#line 15 "utext_ex.pgc"
+ char employee_1 [ 40 ] = "test ok" ;
+
+#line 16 "utext_ex.pgc"
+ char employee_2 [ 40 ] = "测试 通过" ;
+
+#line 17 "utext_ex.pgc"
+ char employee_3 [ 40 ] = "太𠮷𠜱" ;
+
+#line 19 "utext_ex.pgc"
+ char char_addr [ 3 ] [ 40 ] = { "1 sydney, NSW" , "澳大利亚悉尼1号" , "世界杯" } ;
+
+#line 21 "utext_ex.pgc"
+ char address_1 [ 40 ] = "1 sydney, NSW" ;
+
+#line 22 "utext_ex.pgc"
+ char address_2 [ 40 ] = "澳大利亚悉尼1号" ;
+
+#line 23 "utext_ex.pgc"
+ char address_3 [ 40 ] = "世界杯" ;
+/* exec sql end declare section */
+#line 24 "utext_ex.pgc"
+
+
+void print_utext(char *var_name, utext *utext_var, int var_size)
+{
+ int i;
+ printf("======print %s content======\n",var_name);
+ for(i=0; i<var_size; i++)
+ {
+ printf ("0x%04X ", utext_var[i]);
+ if(i>6 && (i+1)%8==0)
+ printf("\n");
+ }
+ printf("\n");
+}
+
+void print_utext_array(char *var_name, utext *utext_var, int var_size, int index)
+{
+ int i;
+ printf("======print %s[%d] content======\n",var_name,index);
+ for(i=0; i<var_size; i++)
+ {
+ printf ("0x%04X ", utext_var[i]);
+ if(i>6 && (i+1)%8==0)
+ printf("\n");
+ }
+ printf("\n");
+}
+
+void print_nchar(char *utext_var, int var_size)
+{
+ printf("nchar is : %s\n",utext_var);
+ int i;
+ printf("======print utext_var content======\n");
+ for(i=0; i<var_size; i++)
+ {
+ printf ("0x%04X ", utext_var[i]);
+ if(i>6 && (i+1)%8==0)
+ printf("\n");
+ }
+ printf("\n======End utext_var content======\n");
+}
+
+void create_table()
+{
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "create table if not exists emp ( id int , ename char ( 20 ) , address nvarchar ( 50 ) )", ECPGt_EOIT, ECPGt_EORT, ECPGt_EOLT);}
+#line 68 "utext_ex.pgc"
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "truncate table emp", ECPGt_EOIT, ECPGt_EORT, ECPGt_EOLT);}
+#line 69 "utext_ex.pgc"
+
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "create table if not exists emp_bk ( id int , ename char ( 20 ) , address nvarchar ( 50 ) )", ECPGt_EOIT, ECPGt_EORT, ECPGt_EOLT);}
+#line 71 "utext_ex.pgc"
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "truncate table emp_bk", ECPGt_EOIT, ECPGt_EORT, ECPGt_EOLT);}
+#line 72 "utext_ex.pgc"
+
+}
+
+void init_table()
+{
+ /* UTF8 is the database character set */
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "insert into emp ( id , ename , address ) values ( 1 , 'test ok' , '1 sydney, NSW' )", ECPGt_EOIT, ECPGt_EORT, ECPGt_EOLT);}
+#line 78 "utext_ex.pgc"
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "insert into emp ( id , ename , address ) values ( 2 , '测试 通过' , '澳大利亚悉尼1号' )", ECPGt_EOIT, ECPGt_EORT, ECPGt_EOLT);}
+#line 79 "utext_ex.pgc"
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "insert into emp ( id , ename , address ) values ( 3 , '太𠮷𠜱' , '世界杯' )", ECPGt_EOIT, ECPGt_EORT, ECPGt_EOLT);}
+#line 80 "utext_ex.pgc"
+
+}
+
+/*
+ Test utext host variable
+*/
+void testcase1()
+{
+ /* exec sql begin declare section */
+
+
+
+
+ /* define Unicode host variable */
+ /* define a variable length Unicode host variable */
+
+#line 89 "utext_ex.pgc"
+ int total_tuples = 0 ;
+
+#line 90 "utext_ex.pgc"
+ int i = 0 ;
+
+#line 91 "utext_ex.pgc"
+ int id = 0 ;
+
+#line 92 "utext_ex.pgc"
+ int id2 = 0 ;
+
+#line 93 "utext_ex.pgc"
+ utext employee [ 41 ] ;
+
+#line 94 "utext_ex.pgc"
+ struct uvarchar_1 { int len; utext arr[ 101 ]; } address ;
+/* exec sql end declare section */
+#line 95 "utext_ex.pgc"
+
+
+ printf("\n**************Start testcase(%d)**************\n",1);
+
+ memset(employee,'a',sizeof(employee));
+ memset((void*)&address,'a',sizeof(address));
+ address.len = 0;
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "truncate emp_bk", ECPGt_EOIT, ECPGt_EORT, ECPGt_EOLT);}
+#line 103 "utext_ex.pgc"
+
+
+ for(i=1;i<=3;i++)
+ {
+ /* Database character set converted to Unicode */
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "select ename , address from emp where id = $1 ",
+ ECPGt_int,&(i),(long)1,(long)1,sizeof(int),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT,
+ ECPGt_utext,(employee),(long)41,(long)1,(41)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L,
+ ECPGt_uvarchar,&(address),(long)101,(long)1,sizeof(struct uvarchar_1),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT, ECPGt_EOLT);}
+#line 108 "utext_ex.pgc"
+
+ print_ret;
+ /* Unicode converted to Database character */
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "insert into emp_bk ( id , ename , address ) values ( $1 , $2 , $3 )",
+ ECPGt_int,&(i),(long)1,(long)1,sizeof(int),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L,
+ ECPGt_utext,(employee),(long)41,(long)1,(41)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L,
+ ECPGt_uvarchar,&(address),(long)101,(long)1,sizeof(struct uvarchar_1),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT, ECPGt_EOLT);}
+#line 111 "utext_ex.pgc"
+
+ }
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "select count ( * ) from emp_bk", ECPGt_EOIT,
+ ECPGt_int,&(total_tuples),(long)1,(long)1,sizeof(int),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT, ECPGt_EOLT);}
+#line 114 "utext_ex.pgc"
+
+ printf("total_tuples = %d in emp_bk\n",total_tuples);
+
+
+ for(i=3;i>0;i--)
+ {
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "select ename , address from emp where id = $1 ",
+ ECPGt_int,&(i),(long)1,(long)1,sizeof(int),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT,
+ ECPGt_utext,(employee),(long)41,(long)1,(41)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L,
+ ECPGt_uvarchar,&(address),(long)101,(long)1,sizeof(struct uvarchar_1),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT, ECPGt_EOLT);}
+#line 120 "utext_ex.pgc"
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "select id from emp_bk where ename = $1 and address = $2 ",
+ ECPGt_utext,(employee),(long)41,(long)1,(41)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L,
+ ECPGt_uvarchar,&(address),(long)101,(long)1,sizeof(struct uvarchar_1),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT,
+ ECPGt_int,&(id),(long)1,(long)1,sizeof(int),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT, ECPGt_EOLT);}
+#line 121 "utext_ex.pgc"
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "select id from emp_bk where ename = $1 and address = $2 ",
+ ECPGt_char,(char_ename[i-1]),(long)40,(long)1,(40)*sizeof(char),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L,
+ ECPGt_char,(char_addr[i-1]),(long)40,(long)1,(40)*sizeof(char),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT,
+ ECPGt_int,&(id2),(long)1,(long)1,sizeof(int),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT, ECPGt_EOLT);}
+#line 122 "utext_ex.pgc"
+
+ printf("id[%d] = id2[%d] in emp_bk\n",id,id2);
+ }
+}
+
+/*
+ Test utext array
+*/
+void testcase2()
+{
+ /* exec sql begin declare section */
+
+
+
+
+
+ /* define Unicode host variable */
+ /* define a variable length Unicode host variable */
+
+#line 133 "utext_ex.pgc"
+ int total_tuples = 0 ;
+
+#line 134 "utext_ex.pgc"
+ int i = 0 ;
+
+#line 135 "utext_ex.pgc"
+ int j = 0 ;
+
+#line 136 "utext_ex.pgc"
+ int id = 0 ;
+
+#line 137 "utext_ex.pgc"
+ int id2 = 0 ;
+
+#line 138 "utext_ex.pgc"
+ utext employee_array [ 3 ] [ 41 ] ;
+
+#line 139 "utext_ex.pgc"
+ struct uvarchar_2 { int len; utext arr[ 101 ]; } address_array [ 3 ] ;
+/* exec sql end declare section */
+#line 140 "utext_ex.pgc"
+
+
+ printf("\n**************Start testcase(%d)**************\n",2);
+
+ memset(employee_array,'a',sizeof(employee_array));
+
+ for(i=0;i<3;i++)
+ {
+ memset((void*)&address_array[i],'a',sizeof(address_array[0]));
+ address_array[i].len=0;
+ }
+
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "truncate emp_bk", ECPGt_EOIT, ECPGt_EORT, ECPGt_EOLT);}
+#line 153 "utext_ex.pgc"
+
+
+ /* Database character set converted to Unicode */
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "select ename , address from emp", ECPGt_EOIT,
+ ECPGt_utext,(employee_array),(long)41,(long)3,(41)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L,
+ ECPGt_uvarchar,(address_array),(long)101,(long)3,sizeof(struct uvarchar_2),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT, ECPGt_EOLT);}
+#line 156 "utext_ex.pgc"
+
+
+ for(i=1;i<=3;i++)
+ {
+ print_utext_array("employee_array",employee_array[i-1],40,i-1);
+ print_utext_array("address_array",address_array[i-1].arr,address_array[i-1].len,i-1);
+ /* Unicode converted to Database character */
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "insert into emp_bk ( id , ename , address ) values ( $1 , $2 , $3 )",
+ ECPGt_int,&(i),(long)1,(long)1,sizeof(int),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L,
+ ECPGt_utext,(employee_array[i-1]),(long)41,(long)1,(41)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L,
+ ECPGt_uvarchar,&(address_array[i-1]),(long)101,(long)1,sizeof(struct uvarchar_2),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT, ECPGt_EOLT);}
+#line 163 "utext_ex.pgc"
+
+ }
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "select count ( * ) from emp_bk", ECPGt_EOIT,
+ ECPGt_int,&(total_tuples),(long)1,(long)1,sizeof(int),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT, ECPGt_EOLT);}
+#line 166 "utext_ex.pgc"
+
+ printf("total_tuples = %d in emp_bk\n",total_tuples);
+
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "select ename , address from emp", ECPGt_EOIT,
+ ECPGt_utext,(employee_array),(long)41,(long)3,(41)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L,
+ ECPGt_uvarchar,(address_array),(long)101,(long)3,sizeof(struct uvarchar_2),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT, ECPGt_EOLT);}
+#line 170 "utext_ex.pgc"
+
+ for(i=3;i>0;i--)
+ {
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "select id from emp_bk where ename = $1 and address = $2 ",
+ ECPGt_utext,(employee_array[i-1]),(long)41,(long)1,(41)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L,
+ ECPGt_uvarchar,&(address_array[i-1]),(long)101,(long)1,sizeof(struct uvarchar_2),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT,
+ ECPGt_int,&(id),(long)1,(long)1,sizeof(int),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT, ECPGt_EOLT);}
+#line 173 "utext_ex.pgc"
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "select id from emp_bk where ename = $1 and address = $2 ",
+ ECPGt_char,(char_ename[i-1]),(long)40,(long)1,(40)*sizeof(char),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L,
+ ECPGt_char,(char_addr[i-1]),(long)40,(long)1,(40)*sizeof(char),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT,
+ ECPGt_int,&(id2),(long)1,(long)1,sizeof(int),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT, ECPGt_EOLT);}
+#line 174 "utext_ex.pgc"
+
+ printf("id[%d] = id2[%d] in emp_bk\n",id,id2);
+ }
+}
+
+
+/*
+ Test utext pointer
+*/
+void testcase3()
+{
+ /* exec sql begin declare section */
+
+
+
+
+ /* define Unicode host variable */
+
+ /* define a variable length Unicode host variable */
+
+#line 186 "utext_ex.pgc"
+ int total_tuples = 0 ;
+
+#line 187 "utext_ex.pgc"
+ int i = 0 ;
+
+#line 188 "utext_ex.pgc"
+ int id = 0 ;
+
+#line 189 "utext_ex.pgc"
+ int id2 = 0 ;
+
+#line 190 "utext_ex.pgc"
+ utext * employee ;
+
+#line 191 "utext_ex.pgc"
+ int employee_len = 82 ;
+
+#line 192 "utext_ex.pgc"
+ struct uvarchar_3 { int len; utext arr[ 101 ]; } address ;
+/* exec sql end declare section */
+#line 193 "utext_ex.pgc"
+
+
+
+ printf("\n**************Start testcase(%d)**************\n",3);
+
+ employee = malloc(employee_len);
+
+ memset(employee,'a',employee_len);
+ memset((void*)&address,'a',sizeof(address));
+ address.len = 0;
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "truncate emp_bk", ECPGt_EOIT, ECPGt_EORT, ECPGt_EOLT);}
+#line 204 "utext_ex.pgc"
+
+
+ for(i=1;i<=3;i++)
+ {
+ /* Database character set converted to Unicode */
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "select ename , address from emp where id = $1 ",
+ ECPGt_int,&(i),(long)1,(long)1,sizeof(int),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT,
+ ECPGt_utext,&(employee),(long)0,(long)1,(1)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L,
+ ECPGt_uvarchar,&(address),(long)101,(long)1,sizeof(struct uvarchar_3),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT, ECPGt_EOLT);}
+#line 209 "utext_ex.pgc"
+
+ print_ret;
+ /* Unicode converted to Database character */
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "insert into emp_bk ( id , ename , address ) values ( $1 , $2 , $3 )",
+ ECPGt_int,&(i),(long)1,(long)1,sizeof(int),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L,
+ ECPGt_utext,&(employee),(long)0,(long)1,(1)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L,
+ ECPGt_uvarchar,&(address),(long)101,(long)1,sizeof(struct uvarchar_3),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT, ECPGt_EOLT);}
+#line 212 "utext_ex.pgc"
+
+ }
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "select count ( * ) from emp_bk", ECPGt_EOIT,
+ ECPGt_int,&(total_tuples),(long)1,(long)1,sizeof(int),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT, ECPGt_EOLT);}
+#line 215 "utext_ex.pgc"
+
+ printf("total_tuples = %d in emp_bk\n",total_tuples);
+
+
+ for(i=3;i>0;i--)
+ {
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "select ename , address from emp where id = $1 ",
+ ECPGt_int,&(i),(long)1,(long)1,sizeof(int),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT,
+ ECPGt_utext,&(employee),(long)0,(long)1,(1)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L,
+ ECPGt_uvarchar,&(address),(long)101,(long)1,sizeof(struct uvarchar_3),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT, ECPGt_EOLT);}
+#line 221 "utext_ex.pgc"
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "select id from emp_bk where ename = $1 and address = $2 ",
+ ECPGt_utext,&(employee),(long)0,(long)1,(1)*sizeof(utext),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L,
+ ECPGt_uvarchar,&(address),(long)101,(long)1,sizeof(struct uvarchar_3),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT,
+ ECPGt_int,&(id),(long)1,(long)1,sizeof(int),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT, ECPGt_EOLT);}
+#line 222 "utext_ex.pgc"
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "select id from emp_bk where ename = $1 and address = $2 ",
+ ECPGt_char,(char_ename[i-1]),(long)40,(long)1,(40)*sizeof(char),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L,
+ ECPGt_char,(char_addr[i-1]),(long)40,(long)1,(40)*sizeof(char),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT,
+ ECPGt_int,&(id2),(long)1,(long)1,sizeof(int),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT, ECPGt_EOLT);}
+#line 223 "utext_ex.pgc"
+
+ printf("id[%d] = id2[%d] in emp_bk\n",id,id2);
+ }
+}
+
+int main() {
+ { ECPGconnect(__LINE__, 0, "regress1" , NULL, NULL , NULL, 0); }
+#line 229 "utext_ex.pgc"
+
+
+ { ECPGsetcommit(__LINE__, "on", NULL);}
+#line 231 "utext_ex.pgc"
+
+ /* exec sql whenever sql_warning sqlprint ; */
+#line 232 "utext_ex.pgc"
+
+ /* exec sql whenever sqlerror sqlprint ; */
+#line 233 "utext_ex.pgc"
+
+ create_table();
+ init_table();
+
+ testcase1();
+ testcase2();
+ testcase3();
+
+ { ECPGdisconnect(__LINE__, "CURRENT");
+#line 241 "utext_ex.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 241 "utext_ex.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 241 "utext_ex.pgc"
+
+ return 0;
+}
+
+
+
diff --git a/src/interfaces/ecpg/test/unicode/expected/utext_ex.ret b/src/interfaces/ecpg/test/unicode/expected/utext_ex.ret
new file mode 100755
index 0000000..b2aaeb0
--- /dev/null
+++ b/src/interfaces/ecpg/test/unicode/expected/utext_ex.ret
@@ -0,0 +1,105 @@
+
+**************Start testcase(1)**************
+======print employee content======
+0x0074 0x0065 0x0073 0x0074 0x0020 0x006F 0x006B 0x0020
+0x0020 0x0020 0x0020 0x0020 0x0020 0x0020 0x0020 0x0020
+0x0020 0x0020 0x0020 0x0020 0x0000 0x0000 0x0000 0x0000
+0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000
+0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000
+
+======print address content======
+0x0031 0x0020 0x0073 0x0079 0x0064 0x006E 0x0065 0x0079
+0x002C 0x0020 0x004E 0x0053 0x0057
+======print employee content======
+0x6D4B 0x8BD5 0x0020 0x901A 0x8FC7 0x0020 0x0020 0x0020
+0x0020 0x0020 0x0020 0x0020 0x0020 0x0020 0x0020 0x0020
+0x0020 0x0020 0x0020 0x0020 0x0000 0x0000 0x0000 0x0000
+0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000
+0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000
+
+======print address content======
+0x6FB3 0x5927 0x5229 0x4E9A 0x6089 0x5C3C 0x0031 0x53F7
+
+======print employee content======
+0x592A 0xD842 0xDFB7 0xD841 0xDF31 0x0020 0x0020 0x0020
+0x0020 0x0020 0x0020 0x0020 0x0020 0x0020 0x0020 0x0020
+0x0020 0x0020 0x0020 0x0020 0x0020 0x0020 0x0000 0x0000
+0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000
+0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000
+
+======print address content======
+0x4E16 0x754C 0x676F
+total_tuples = 3 in emp_bk
+id[3] = id2[3] in emp_bk
+id[2] = id2[2] in emp_bk
+id[1] = id2[1] in emp_bk
+
+**************Start testcase(2)**************
+======print employee_array[0] content======
+0x0074 0x0065 0x0073 0x0074 0x0020 0x006F 0x006B 0x0020
+0x0020 0x0020 0x0020 0x0020 0x0020 0x0020 0x0020 0x0020
+0x0020 0x0020 0x0020 0x0020 0x0000 0x0000 0x0000 0x0000
+0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000
+0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000
+
+======print address_array[0] content======
+0x0031 0x0020 0x0073 0x0079 0x0064 0x006E 0x0065 0x0079
+0x002C 0x0020 0x004E 0x0053 0x0057
+======print employee_array[1] content======
+0x6D4B 0x8BD5 0x0020 0x901A 0x8FC7 0x0020 0x0020 0x0020
+0x0020 0x0020 0x0020 0x0020 0x0020 0x0020 0x0020 0x0020
+0x0020 0x0020 0x0020 0x0020 0x0000 0x0000 0x0000 0x0000
+0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000
+0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000
+
+======print address_array[1] content======
+0x6FB3 0x5927 0x5229 0x4E9A 0x6089 0x5C3C 0x0031 0x53F7
+
+======print employee_array[2] content======
+0x592A 0xD842 0xDFB7 0xD841 0xDF31 0x0020 0x0020 0x0020
+0x0020 0x0020 0x0020 0x0020 0x0020 0x0020 0x0020 0x0020
+0x0020 0x0020 0x0020 0x0020 0x0020 0x0020 0x0000 0x0000
+0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000
+0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000
+
+======print address_array[2] content======
+0x4E16 0x754C 0x676F
+total_tuples = 3 in emp_bk
+id[3] = id2[3] in emp_bk
+id[2] = id2[2] in emp_bk
+id[1] = id2[1] in emp_bk
+
+**************Start testcase(3)**************
+======print employee content======
+0x0074 0x0065 0x0073 0x0074 0x0020 0x006F 0x006B 0x0020
+0x0020 0x0020 0x0020 0x0020 0x0020 0x0020 0x0020 0x0020
+0x0020 0x0020 0x0020 0x0020 0x0000 0x6161 0x6161 0x6161
+0x6161 0x6161 0x6161 0x6161 0x6161 0x6161 0x6161 0x6161
+0x6161 0x6161 0x6161 0x6161 0x6161 0x6161 0x6161 0x6161
+
+======print address content======
+0x0031 0x0020 0x0073 0x0079 0x0064 0x006E 0x0065 0x0079
+0x002C 0x0020 0x004E 0x0053 0x0057
+======print employee content======
+0x6D4B 0x8BD5 0x0020 0x901A 0x8FC7 0x0020 0x0020 0x0020
+0x0020 0x0020 0x0020 0x0020 0x0020 0x0020 0x0020 0x0020
+0x0020 0x0020 0x0020 0x0020 0x0000 0x6161 0x6161 0x6161
+0x6161 0x6161 0x6161 0x6161 0x6161 0x6161 0x6161 0x6161
+0x6161 0x6161 0x6161 0x6161 0x6161 0x6161 0x6161 0x6161
+
+======print address content======
+0x6FB3 0x5927 0x5229 0x4E9A 0x6089 0x5C3C 0x0031 0x53F7
+
+======print employee content======
+0x592A 0xD842 0xDFB7 0xD841 0xDF31 0x0020 0x0020 0x0020
+0x0020 0x0020 0x0020 0x0020 0x0020 0x0020 0x0020 0x0020
+0x0020 0x0020 0x0020 0x0020 0x0020 0x0020 0x0000 0x6161
+0x6161 0x6161 0x6161 0x6161 0x6161 0x6161 0x6161 0x6161
+0x6161 0x6161 0x6161 0x6161 0x6161 0x6161 0x6161 0x6161
+
+======print address content======
+0x4E16 0x754C 0x676F
+total_tuples = 3 in emp_bk
+id[3] = id2[3] in emp_bk
+id[2] = id2[2] in emp_bk
+id[1] = id2[1] in emp_bk
diff --git a/src/interfaces/ecpg/test/unicode/expected/uvarchar.c b/src/interfaces/ecpg/test/unicode/expected/uvarchar.c
new file mode 100755
index 0000000..be42b60
--- /dev/null
+++ b/src/interfaces/ecpg/test/unicode/expected/uvarchar.c
@@ -0,0 +1,2195 @@
+/* Processed by ecpg (regression mode) */
+/* These include files are added by the preprocessor */
+#define ECPG_ENABLE_UTEXT 1
+#include <ecpglib.h>
+#include <ecpgerrno.h>
+#include <sqlca.h>
+/* End of automatic include section */
+#define ECPGdebug(X,Y) ECPGdebug((X)+100,(Y))
+
+#line 1 "uvarchar.pgc"
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+
+#line 1 "./../regression.h"
+
+
+
+
+
+
+#line 5 "uvarchar.pgc"
+
+
+#define test(msg) printf("\n%s\n",msg)
+#define VAR_SIZE 20
+#define ARRAY_SIZE 4
+
+/* Following is UTF8 and UTF16 characters mapping table */
+/*太𠮷𠜱平洋𠱓大西洋印度洋北冰洋
+0x592A,0x5E73,0x6D0B,0x5927,0x897F,0x6D0B,0x5370,0x5EA6,
+0x6D0B,0x5317,0x51B0,0x6D0B,0x548C,0x5357,0x51B0,0x6D0B,
+0x0000,0x0000,0x0000,0x0000*/
+
+/*足球篮球羽毛球乒乓球橄榄球棒球冰球
+0x8DB3,0x7403,0x7BEE,0x7403,0x7FBD,0x6BDB,0x7403,0x4E52,
+0x4E53,0x7403,0x6A44,0x6984,0x7403,0x68D2,0x7403,0x51B0,
+0x7403,0x0000,0x0000,0x0000
+*/
+
+/*世界杯每隔四年就会举行一次每次𠲖个球队
+0x4E16,0x754C,0x676F,0x6BCF,0x9694,0x56DB,0x5E74,0x5C31,
+0x4F1A,0x4E3E,0x884C,0x4E00,0x6B21,0x6BCF,0x6B21,0x0033,
+0x0032,0x4E2A,0x7403,0x961F
+*/
+
+/* 亚洲欧洲非洲大洋洲北美洲南美洲南极洲没有北极洲
+0x4E9A,0x6D32,0x6B27,0x6D32,0x975E,0x6D32,0x5927,0x6D0B,
+0x6D32,0x5317,0x7F8E,0x6D32,0x5357,0x7F8E,0x6D32,0x5357,
+0x6781,0x6D32,0x6CA1,0x6709,0x5317,0x6781,0x6D32
+*/
+
+/* exec sql begin declare section */
+
+
+
+
+
+
+
+
+
+#line 36 "uvarchar.pgc"
+ struct uvarchar_1 { int len; utext arr[ VAR_SIZE ]; } uvarchar_var ;
+
+#line 37 "uvarchar.pgc"
+ struct uvarchar_2 { int len; utext arr[ VAR_SIZE ]; } uvarchar_array [ ARRAY_SIZE ] ;
+
+#line 39 "uvarchar.pgc"
+ int uvarchar_var_ind ;
+
+#line 41 "uvarchar.pgc"
+ int count ;
+
+#line 42 "uvarchar.pgc"
+ int count_array [ 4 ] = { 1 , 2 , 3 , 4 } ;
+
+#line 43 "uvarchar.pgc"
+ int total_tuples = 0 ;
+/* exec sql end declare section */
+#line 44 "uvarchar.pgc"
+
+
+void print_uvarchar(void);
+void print_uvarchar_ind(int uvarchar_var_ind);
+void print_array(void);
+int test_init(void);
+void test_finish(void);
+void init_table_value(void);
+void init_var(void);
+
+void test_var_1(void);
+void test_var_2(void);
+void test_var_3(void);
+void test_var_4(void);
+void test_var_5(void);
+void test_var_6(void);
+void test_var_7(void);
+void test_var_8(void);
+void test_var_9(void);
+void test_var_10(void);
+void test_var_11(void);
+void test_var_12(void);
+void test_var_13(void);
+void test_array_1(void);
+void test_array_2(void);
+void test_array_3(void);
+void test_array_4(void);
+void test_array_5(void);
+void test_array_6(void);
+void test_array_7(void);
+void test_array_8(void);
+void test_array_9(void);
+void test_array_10(void);
+void test_array_11(void);
+void test_array_12(void);
+void test_array_13(void);
+void test_buckinsert_1(void);
+
+void test_all(void);
+
+void print_uvarchar()
+{
+ int i;
+
+ printf ("---->uvarchar variable,len=%d:\n",uvarchar_var.len);
+ for(i=0; i<VAR_SIZE; i++)
+ {
+ printf ("0x%04X ", uvarchar_var.arr[i]);
+ if(i>6 && (i+1)%8==0)
+ printf("\n");
+ }
+ printf("\n");
+}
+
+void print_uvarchar_ind(int uvarchar_var_ind)
+{
+ printf("uvarchar_var_ind = %d\n",uvarchar_var_ind);
+}
+
+void print_array()
+{
+ int i,j;
+
+ for(i=0; i<ARRAY_SIZE; i++)
+ {
+ printf ("---->uvarchar array[%d]:(len=%d)\n", i,uvarchar_array[i].len);
+
+ for(j=0; j<VAR_SIZE; j++)
+ {
+ printf ("0x%04X ", uvarchar_array[i].arr[j]);
+ if(j>6 && (j+1)%8==0)
+ printf("\n");
+ }
+ printf("\n");
+ }
+
+ printf("\n");
+}
+
+int test_init()
+{
+ { ECPGconnect(__LINE__, 0, "regress1" , NULL, NULL , NULL, 0); }
+#line 125 "uvarchar.pgc"
+
+
+ { ECPGsetcommit(__LINE__, "on", NULL);}
+#line 127 "uvarchar.pgc"
+
+ /* exec sql whenever sql_warning sqlprint ; */
+#line 128 "uvarchar.pgc"
+
+ /* exec sql whenever sqlerror sqlprint ; */
+#line 129 "uvarchar.pgc"
+
+
+ //initialization of test table
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "create table tb1 ( Item varchar , count integer )", ECPGt_EOIT, ECPGt_EORT, ECPGt_EOLT);
+#line 132 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 132 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 132 "uvarchar.pgc"
+
+
+ init_table_value();
+
+ return 0;
+}
+
+void test_finish()
+{
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "drop table tb1", ECPGt_EOIT, ECPGt_EORT, ECPGt_EOLT);
+#line 141 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 141 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 141 "uvarchar.pgc"
+
+ { ECPGdisconnect(__LINE__, "ALL");
+#line 142 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 142 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 142 "uvarchar.pgc"
+
+}
+
+
+void init_table_value()
+{
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "truncate tb1", ECPGt_EOIT, ECPGt_EORT, ECPGt_EOLT);
+#line 148 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 148 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 148 "uvarchar.pgc"
+
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "insert into tb1 values ( '太𠮷𠜱平洋𠱓大西洋印度洋北冰洋' , 1 )", ECPGt_EOIT, ECPGt_EORT, ECPGt_EOLT);
+#line 150 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 150 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 150 "uvarchar.pgc"
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "insert into tb1 values ( '足球篮球羽毛球乒乓球橄榄球棒球冰球' , 2 )", ECPGt_EOIT, ECPGt_EORT, ECPGt_EOLT);
+#line 151 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 151 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 151 "uvarchar.pgc"
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "insert into tb1 values ( '世界杯每隔四年就会举行一次每次𠲖个球队' , 3 )", ECPGt_EOIT, ECPGt_EORT, ECPGt_EOLT);
+#line 152 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 152 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 152 "uvarchar.pgc"
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "insert into tb1 values ( '亚洲欧洲非洲大洋洲北美洲南美洲南极洲没有北极洲' , 4 )", ECPGt_EOIT, ECPGt_EORT, ECPGt_EOLT);
+#line 153 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 153 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 153 "uvarchar.pgc"
+
+}
+
+void init_var()
+{
+ int i;
+ memset((void*)&uvarchar_var,'a',sizeof(uvarchar_var));
+ uvarchar_var.len = 0;
+
+ memset((char*)uvarchar_array,'a',sizeof(uvarchar_array)*ARRAY_SIZE);
+
+ for(i=0;i<ARRAY_SIZE;i++)
+ {
+ uvarchar_array[i].len = 0;
+ }
+
+ uvarchar_var_ind = 0;
+}
+
+//simple select into uvarchar
+void test_var_1()
+{
+ test("test_var_1 : simple select into uvarchar var");
+ init_var();
+ //print_uvarchar();
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "select Item from tb1 where count = 1", ECPGt_EOIT,
+ ECPGt_uvarchar,&(uvarchar_var),(long)VAR_SIZE,(long)1,sizeof(struct uvarchar_1),
+ ECPGt_int,&(uvarchar_var_ind),(long)1,(long)1,sizeof(int), ECPGt_EORT, ECPGt_EOLT);
+#line 179 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 179 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 179 "uvarchar.pgc"
+
+ print_uvarchar();
+ print_uvarchar_ind(uvarchar_var_ind);
+ init_var();
+
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "select Item from tb1 where count = 2", ECPGt_EOIT,
+ ECPGt_uvarchar,&(uvarchar_var),(long)VAR_SIZE,(long)1,sizeof(struct uvarchar_1),
+ ECPGt_int,&(uvarchar_var_ind),(long)1,(long)1,sizeof(int), ECPGt_EORT, ECPGt_EOLT);
+#line 185 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 185 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 185 "uvarchar.pgc"
+
+ print_uvarchar();
+ print_uvarchar_ind(uvarchar_var_ind);
+ init_var();
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "select Item from tb1 where count = 3", ECPGt_EOIT,
+ ECPGt_uvarchar,&(uvarchar_var),(long)VAR_SIZE,(long)1,sizeof(struct uvarchar_1),
+ ECPGt_int,&(uvarchar_var_ind),(long)1,(long)1,sizeof(int), ECPGt_EORT, ECPGt_EOLT);
+#line 190 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 190 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 190 "uvarchar.pgc"
+
+ print_uvarchar();
+ print_uvarchar_ind(uvarchar_var_ind);
+ init_var();
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "select Item from tb1 where count = 4", ECPGt_EOIT,
+ ECPGt_uvarchar,&(uvarchar_var),(long)VAR_SIZE,(long)1,sizeof(struct uvarchar_1),
+ ECPGt_int,&(uvarchar_var_ind),(long)1,(long)1,sizeof(int), ECPGt_EORT, ECPGt_EOLT);
+#line 195 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 195 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 195 "uvarchar.pgc"
+
+ print_uvarchar();
+ print_uvarchar_ind(uvarchar_var_ind);
+ init_var();
+}
+
+
+//simple select using uvarchar
+void test_var_2()
+{
+ test("test_var_2 : simple select using uvarchar var");
+ init_var();
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "select Item from tb1 where count = 1", ECPGt_EOIT,
+ ECPGt_uvarchar,&(uvarchar_var),(long)VAR_SIZE,(long)1,sizeof(struct uvarchar_1),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT, ECPGt_EOLT);
+#line 208 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 208 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 208 "uvarchar.pgc"
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "select count from tb1 where Item = $1 ",
+ ECPGt_uvarchar,&(uvarchar_var),(long)VAR_SIZE,(long)1,sizeof(struct uvarchar_1),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT,
+ ECPGt_int,&(count),(long)1,(long)1,sizeof(int),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT, ECPGt_EOLT);
+#line 209 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 209 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 209 "uvarchar.pgc"
+
+ printf ("count=%d for '太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'\n", count);
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "select Item from tb1 where count = 3", ECPGt_EOIT,
+ ECPGt_uvarchar,&(uvarchar_var),(long)VAR_SIZE,(long)1,sizeof(struct uvarchar_1),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT, ECPGt_EOLT);
+#line 212 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 212 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 212 "uvarchar.pgc"
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "select count from tb1 where Item = $1 ",
+ ECPGt_uvarchar,&(uvarchar_var),(long)VAR_SIZE,(long)1,sizeof(struct uvarchar_1),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT,
+ ECPGt_int,&(count),(long)1,(long)1,sizeof(int),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT, ECPGt_EOLT);
+#line 213 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 213 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 213 "uvarchar.pgc"
+
+ printf ("count=%d for '世界杯每隔四年就会举行一次每次𠲖个球队'\n", count);
+}
+
+//simple update using uvarchar
+void test_var_3()
+{
+ test("test_var_3 : simple update using uvarchar");
+ init_var();
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "select Item from tb1 where count = 1", ECPGt_EOIT,
+ ECPGt_uvarchar,&(uvarchar_var),(long)VAR_SIZE,(long)1,sizeof(struct uvarchar_1),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT, ECPGt_EOLT);
+#line 223 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 223 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 223 "uvarchar.pgc"
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "update tb1 set Item = $1 where count = 2",
+ ECPGt_uvarchar,&(uvarchar_var),(long)VAR_SIZE,(long)1,sizeof(struct uvarchar_1),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT, ECPGt_EOLT);
+#line 224 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 224 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 224 "uvarchar.pgc"
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "update tb1 set Item = $1 where count = 3",
+ ECPGt_uvarchar,&(uvarchar_var),(long)VAR_SIZE,(long)1,sizeof(struct uvarchar_1),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT, ECPGt_EOLT);
+#line 225 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 225 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 225 "uvarchar.pgc"
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "select count ( * ) from tb1 where Item = '太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'", ECPGt_EOIT,
+ ECPGt_int,&(count),(long)1,(long)1,sizeof(int),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT, ECPGt_EOLT);
+#line 226 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 226 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 226 "uvarchar.pgc"
+
+ printf ("found %d rows for Item='太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'\n", count);
+
+ init_table_value();
+}
+
+//simple delete using uvarchar var
+void test_var_4()
+{
+ test("test_var_4 : simple delete using uvarchar var");
+ init_var();
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "select Item from tb1 where count = 1", ECPGt_EOIT,
+ ECPGt_uvarchar,&(uvarchar_var),(long)VAR_SIZE,(long)1,sizeof(struct uvarchar_1),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT, ECPGt_EOLT);
+#line 238 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 238 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 238 "uvarchar.pgc"
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "delete from tb1 where Item = $1 ",
+ ECPGt_uvarchar,&(uvarchar_var),(long)VAR_SIZE,(long)1,sizeof(struct uvarchar_1),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT, ECPGt_EOLT);
+#line 239 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 239 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 239 "uvarchar.pgc"
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "select count ( * ) from tb1 where Item = '太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'", ECPGt_EOIT,
+ ECPGt_int,&(count),(long)1,(long)1,sizeof(int),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT, ECPGt_EOLT);
+#line 240 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 240 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 240 "uvarchar.pgc"
+
+ printf ("found %d rows for Item='太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'\n", count);
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "select Item from tb1 where count = 3", ECPGt_EOIT,
+ ECPGt_uvarchar,&(uvarchar_var),(long)VAR_SIZE,(long)1,sizeof(struct uvarchar_1),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT, ECPGt_EOLT);
+#line 243 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 243 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 243 "uvarchar.pgc"
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "delete from tb1 where Item = $1 ",
+ ECPGt_uvarchar,&(uvarchar_var),(long)VAR_SIZE,(long)1,sizeof(struct uvarchar_1),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT, ECPGt_EOLT);
+#line 244 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 244 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 244 "uvarchar.pgc"
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "select count ( * ) from tb1 where Item = '世界杯每隔四年就会举行一次每次𠲖个球队'", ECPGt_EOIT,
+ ECPGt_int,&(count),(long)1,(long)1,sizeof(int),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT, ECPGt_EOLT);
+#line 245 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 245 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 245 "uvarchar.pgc"
+
+ printf ("found %d rows for Item='世界杯每隔四年就会举行一次每次𠲖个球队'\n", count);
+
+ init_table_value();
+}
+
+//simple insert using uvarchar var
+void test_var_5()
+{
+ test("test_var_5 : simple insert using uvarchar");
+ init_var();
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "select Item from tb1 where count = 1", ECPGt_EOIT,
+ ECPGt_uvarchar,&(uvarchar_var),(long)VAR_SIZE,(long)1,sizeof(struct uvarchar_1),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT, ECPGt_EOLT);
+#line 257 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 257 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 257 "uvarchar.pgc"
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "insert into tb1 values ( $1 , 11 )",
+ ECPGt_uvarchar,&(uvarchar_var),(long)VAR_SIZE,(long)1,sizeof(struct uvarchar_1),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT, ECPGt_EOLT);
+#line 258 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 258 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 258 "uvarchar.pgc"
+
+
+ init_var();
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "select Item from tb1 where count = 3", ECPGt_EOIT,
+ ECPGt_uvarchar,&(uvarchar_var),(long)VAR_SIZE,(long)1,sizeof(struct uvarchar_1),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT, ECPGt_EOLT);
+#line 261 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 261 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 261 "uvarchar.pgc"
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "insert into tb1 values ( $1 , 13 )",
+ ECPGt_uvarchar,&(uvarchar_var),(long)VAR_SIZE,(long)1,sizeof(struct uvarchar_1),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT, ECPGt_EOLT);
+#line 262 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 262 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 262 "uvarchar.pgc"
+
+
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "select count ( * ) from tb1 where Item = '太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'", ECPGt_EOIT,
+ ECPGt_int,&(count),(long)1,(long)1,sizeof(int),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT, ECPGt_EOLT);
+#line 265 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 265 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 265 "uvarchar.pgc"
+
+ printf ("found %d rows for Item='太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'\n", count);
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "select count ( * ) from tb1 where Item = '世界杯每隔四年就会举行一次每次𠲖个球队'", ECPGt_EOIT,
+ ECPGt_int,&(count),(long)1,(long)1,sizeof(int),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT, ECPGt_EOLT);
+#line 268 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 268 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 268 "uvarchar.pgc"
+
+ printf ("found %d rows for Item='世界杯每隔四年就会举行一次每次𠲖个球队'\n", count);
+
+ init_table_value();
+}
+
+//prepared select into uvarchar var
+void test_var_6()
+{
+ test("test_var_6 : prepared select into uvarchar var");
+ init_var();
+
+ { ECPGprepare(__LINE__, NULL, 0, "stmt", "SELECT Item FROM tb1 WHERE Count=?");
+#line 280 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 280 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 280 "uvarchar.pgc"
+
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_execute, "stmt",
+ ECPGt_const,"1",(long)1,(long)1,strlen("1"),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT,
+ ECPGt_uvarchar,&(uvarchar_var),(long)VAR_SIZE,(long)1,sizeof(struct uvarchar_1),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT, ECPGt_EOLT);
+#line 282 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 282 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 282 "uvarchar.pgc"
+
+ print_uvarchar();
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_execute, "stmt",
+ ECPGt_const,"3",(long)1,(long)1,strlen("3"),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT,
+ ECPGt_uvarchar,&(uvarchar_var),(long)VAR_SIZE,(long)1,sizeof(struct uvarchar_1),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT, ECPGt_EOLT);
+#line 285 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 285 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 285 "uvarchar.pgc"
+
+ print_uvarchar();
+
+ { ECPGdeallocate(__LINE__, 0, NULL, "stmt");
+#line 288 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 288 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 288 "uvarchar.pgc"
+
+}
+
+//prepared select using uvarchar var
+void test_var_7()
+{
+ test("test_var_7 : prepared select using uvarchar var");
+ init_var();
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "select Item from tb1 where count = 3", ECPGt_EOIT,
+ ECPGt_uvarchar,&(uvarchar_var),(long)VAR_SIZE,(long)1,sizeof(struct uvarchar_1),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT, ECPGt_EOLT);
+#line 297 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 297 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 297 "uvarchar.pgc"
+
+
+ { ECPGprepare(__LINE__, NULL, 0, "stmt", "SELECT Count FROM tb1 WHERE Item=?");
+#line 299 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 299 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 299 "uvarchar.pgc"
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_execute, "stmt",
+ ECPGt_uvarchar,&(uvarchar_var),(long)VAR_SIZE,(long)1,sizeof(struct uvarchar_1),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT,
+ ECPGt_int,&(count),(long)1,(long)1,sizeof(int),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT, ECPGt_EOLT);
+#line 300 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 300 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 300 "uvarchar.pgc"
+
+
+ printf ("count=%d for Item='世界杯每隔四年就会举行一次每次𠲖个球队'\n", count);
+ { ECPGdeallocate(__LINE__, 0, NULL, "stmt");
+#line 303 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 303 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 303 "uvarchar.pgc"
+
+}
+
+//prepared update using uvarchar var
+void test_var_8()
+{
+ test("test_var_8 : prepared update using uvarchar var");
+ init_var();
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "select Item from tb1 where count = 3", ECPGt_EOIT,
+ ECPGt_uvarchar,&(uvarchar_var),(long)VAR_SIZE,(long)1,sizeof(struct uvarchar_1),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT, ECPGt_EOLT);
+#line 312 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 312 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 312 "uvarchar.pgc"
+
+
+ { ECPGprepare(__LINE__, NULL, 0, "stmt", "UPDATE tb1 SET Item=? WHERE Count=?");
+#line 314 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 314 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 314 "uvarchar.pgc"
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_execute, "stmt",
+ ECPGt_uvarchar,&(uvarchar_var),(long)VAR_SIZE,(long)1,sizeof(struct uvarchar_1),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L,
+ ECPGt_const,"1",(long)1,(long)1,strlen("1"),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT, ECPGt_EOLT);
+#line 315 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 315 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 315 "uvarchar.pgc"
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_execute, "stmt",
+ ECPGt_uvarchar,&(uvarchar_var),(long)VAR_SIZE,(long)1,sizeof(struct uvarchar_1),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L,
+ ECPGt_const,"2",(long)1,(long)1,strlen("2"),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT, ECPGt_EOLT);
+#line 316 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 316 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 316 "uvarchar.pgc"
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "select count ( * ) from tb1 where Item = '世界杯每隔四年就会举行一次每次𠲖个球队'", ECPGt_EOIT,
+ ECPGt_int,&(count),(long)1,(long)1,sizeof(int),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT, ECPGt_EOLT);
+#line 317 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 317 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 317 "uvarchar.pgc"
+
+
+ printf ("found %d rows for Item='世界杯每隔四年就会举行一次每次𠲖个球队'\n", count);
+ { ECPGdeallocate(__LINE__, 0, NULL, "stmt");
+#line 320 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 320 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 320 "uvarchar.pgc"
+
+
+ init_table_value();
+}
+
+//prepared delete using uvarchar var
+void test_var_9()
+{
+ test("test_var_9 : prepared delete using uvarchar var");
+ init_var();
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "select Item from tb1 where count = 3", ECPGt_EOIT,
+ ECPGt_uvarchar,&(uvarchar_var),(long)VAR_SIZE,(long)1,sizeof(struct uvarchar_1),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT, ECPGt_EOLT);
+#line 331 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 331 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 331 "uvarchar.pgc"
+
+
+ { ECPGprepare(__LINE__, NULL, 0, "stmt", "DELETE FROM tb1 WHERE Item=?");
+#line 333 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 333 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 333 "uvarchar.pgc"
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_execute, "stmt",
+ ECPGt_uvarchar,&(uvarchar_var),(long)VAR_SIZE,(long)1,sizeof(struct uvarchar_1),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT, ECPGt_EOLT);
+#line 334 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 334 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 334 "uvarchar.pgc"
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "select count ( * ) from tb1 where Item = '世界杯每隔四年就会举行一次每次𠲖个球队'", ECPGt_EOIT,
+ ECPGt_int,&(count),(long)1,(long)1,sizeof(int),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT, ECPGt_EOLT);
+#line 335 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 335 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 335 "uvarchar.pgc"
+
+
+ printf ("found %d rows for Item='世界杯每隔四年就会举行一次每次𠲖个球队'\n", count);
+ { ECPGdeallocate(__LINE__, 0, NULL, "stmt");
+#line 338 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 338 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 338 "uvarchar.pgc"
+
+
+ init_table_value();
+}
+
+//prepared insert using uvarchar var
+void test_var_10()
+{
+ test("test_var_10 : prepared insert using uvarchar var");
+ init_var();
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "select Item from tb1 where count = 3", ECPGt_EOIT,
+ ECPGt_uvarchar,&(uvarchar_var),(long)VAR_SIZE,(long)1,sizeof(struct uvarchar_1),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT, ECPGt_EOLT);
+#line 349 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 349 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 349 "uvarchar.pgc"
+
+
+ { ECPGprepare(__LINE__, NULL, 0, "stmt", "INSERT INTO tb1 values (?, 13)");
+#line 351 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 351 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 351 "uvarchar.pgc"
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_execute, "stmt",
+ ECPGt_uvarchar,&(uvarchar_var),(long)VAR_SIZE,(long)1,sizeof(struct uvarchar_1),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT, ECPGt_EOLT);
+#line 352 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 352 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 352 "uvarchar.pgc"
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "select count ( * ) from tb1 where Item = '世界杯每隔四年就会举行一次每次𠲖个球队'", ECPGt_EOIT,
+ ECPGt_int,&(count),(long)1,(long)1,sizeof(int),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT, ECPGt_EOLT);
+#line 353 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 353 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 353 "uvarchar.pgc"
+
+
+ printf ("found %d rows for Item='世界杯每隔四年就会举行一次每次𠲖个球队'\n", count);
+ { ECPGdeallocate(__LINE__, 0, NULL, "stmt");
+#line 356 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 356 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 356 "uvarchar.pgc"
+
+
+ init_table_value();
+}
+
+//Open cursor using uvarchar var
+void test_var_11()
+{
+ test("test_var_11 : Open cursor using uvarchar var");
+ init_var();
+
+ { ECPGsetcommit(__LINE__, "off", NULL);
+#line 367 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 367 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 367 "uvarchar.pgc"
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "select Item from tb1 where count = 3", ECPGt_EOIT,
+ ECPGt_uvarchar,&(uvarchar_var),(long)VAR_SIZE,(long)1,sizeof(struct uvarchar_1),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT, ECPGt_EOLT);
+#line 368 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 368 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 368 "uvarchar.pgc"
+
+
+ { ECPGprepare(__LINE__, NULL, 0, "stmt", "SELECT Count FROM tb1 WHERE Item=?");
+#line 370 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 370 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 370 "uvarchar.pgc"
+
+ /* declare cursor_var_11 cursor for $1 */
+#line 371 "uvarchar.pgc"
+
+ { ECPGopen("cursor_var_11", "stmt", __LINE__, 0, 1, NULL, 0, ECPGst_normal, "declare cursor_var_11 cursor for $1",
+ ECPGt_char_variable,(ECPGprepared_statement(NULL, "stmt", __LINE__)),(long)1,(long)1,(1)*sizeof(char),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L,
+ ECPGt_uvarchar,&(uvarchar_var),(long)VAR_SIZE,(long)1,sizeof(struct uvarchar_1),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT, ECPGt_EOLT);
+#line 372 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 372 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 372 "uvarchar.pgc"
+
+ { ECPGfetch("cursor_var_11", __LINE__, 0, 1, NULL, 0, ECPGst_normal, "fetch cursor_var_11", ECPGt_EOIT,
+ ECPGt_int,&(count),(long)1,(long)1,sizeof(int),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT, ECPGt_EOLT);
+#line 373 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 373 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 373 "uvarchar.pgc"
+
+ printf ("count=%d for Item='世界杯每隔四年就会举行一次每次𠲖个球队'\n", count);
+ { ECPGclose("cursor_var_11", __LINE__, 0, 1, NULL, 0, ECPGst_normal, "close cursor_var_11", ECPGt_EOIT, ECPGt_EORT, ECPGt_EOLT);
+#line 375 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 375 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 375 "uvarchar.pgc"
+
+ { ECPGdeallocate(__LINE__, 0, NULL, "stmt");
+#line 376 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 376 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 376 "uvarchar.pgc"
+
+ { ECPGsetcommit(__LINE__, "on", NULL);
+#line 377 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 377 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 377 "uvarchar.pgc"
+
+}
+
+//Fecth cursor into uvarchar var
+void test_var_12()
+{
+ test("test_var_12 : Fecth cursor into uvarchar var");
+ init_var();
+
+ { ECPGsetcommit(__LINE__, "off", NULL);
+#line 386 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 386 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 386 "uvarchar.pgc"
+
+ { ECPGprepare(__LINE__, NULL, 0, "stmt", "SELECT Item FROM tb1 WHERE Count=1");
+#line 387 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 387 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 387 "uvarchar.pgc"
+
+ /* declare cursor_var_12 cursor for $1 */
+#line 388 "uvarchar.pgc"
+
+ { ECPGopen("cursor_var_12", "stmt", __LINE__, 0, 1, NULL, 0, ECPGst_normal, "declare cursor_var_12 cursor for $1",
+ ECPGt_char_variable,(ECPGprepared_statement(NULL, "stmt", __LINE__)),(long)1,(long)1,(1)*sizeof(char),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT, ECPGt_EOLT);
+#line 389 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 389 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 389 "uvarchar.pgc"
+
+ { ECPGfetch("cursor_var_12", __LINE__, 0, 1, NULL, 0, ECPGst_normal, "fetch cursor_var_12", ECPGt_EOIT,
+ ECPGt_uvarchar,&(uvarchar_var),(long)VAR_SIZE,(long)1,sizeof(struct uvarchar_1),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT, ECPGt_EOLT);
+#line 390 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 390 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 390 "uvarchar.pgc"
+
+ { ECPGclose("cursor_var_12", __LINE__, 0, 1, NULL, 0, ECPGst_normal, "close cursor_var_12", ECPGt_EOIT, ECPGt_EORT, ECPGt_EOLT);
+#line 391 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 391 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 391 "uvarchar.pgc"
+
+
+ print_uvarchar();
+
+ { ECPGdeallocate(__LINE__, 0, NULL, "stmt");
+#line 395 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 395 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 395 "uvarchar.pgc"
+
+ { ECPGsetcommit(__LINE__, "on", NULL);
+#line 396 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 396 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 396 "uvarchar.pgc"
+
+}
+
+//simple insert using uvarchar with L string inited
+void test_var_13()
+{
+/* exec sql begin declare section */
+
+
+#line 403 "uvarchar.pgc"
+ struct uvarchar_3 { int len; utext arr[ VAR_SIZE ]; } uvarchar_local_var ;
+/* exec sql end declare section */
+#line 404 "uvarchar.pgc"
+
+
+ test("test_var_13 : simple insert using uvarchar with L string inited");
+ init_var();
+
+ memset((char*)&uvarchar_local_var,0,sizeof(uvarchar_local_var));
+
+ memcpy((char*)uvarchar_local_var.arr, L"太𠮷𠜱", sizeof(L"太𠮷𠜱"));
+ uvarchar_local_var.len = sizeof(L"太𠮷𠜱")/2;
+
+ printf("uvarchar_local_var.len = %d\n",uvarchar_local_var.len);
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "insert into tb1 values ( $1 , 16 )",
+ ECPGt_uvarchar,&(uvarchar_local_var),(long)VAR_SIZE,(long)1,sizeof(struct uvarchar_3),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT, ECPGt_EOLT);
+#line 416 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 416 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 416 "uvarchar.pgc"
+
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "select count ( * ) from tb1 where Item = '太𠮷𠜱'", ECPGt_EOIT,
+ ECPGt_int,&(count),(long)1,(long)1,sizeof(int),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT, ECPGt_EOLT);
+#line 418 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 418 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 418 "uvarchar.pgc"
+
+ printf ("found %d rows for Item='太𠮷𠜱'\n", count);
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "select Item from tb1 where count = 16", ECPGt_EOIT,
+ ECPGt_uvarchar,&(uvarchar_var),(long)VAR_SIZE,(long)1,sizeof(struct uvarchar_1),
+ ECPGt_int,&(uvarchar_var_ind),(long)1,(long)1,sizeof(int), ECPGt_EORT, ECPGt_EOLT);
+#line 421 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 421 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 421 "uvarchar.pgc"
+
+ print_uvarchar();
+ print_uvarchar_ind(uvarchar_var_ind);
+
+ init_table_value();
+}
+
+//simple select into uvarchar array
+void test_array_1()
+{
+ test("test_array_1 : simple select into uvarchar array");
+ init_var();
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "select Item from tb1 where count <= 3", ECPGt_EOIT,
+ ECPGt_uvarchar,(uvarchar_array),(long)VAR_SIZE,(long)ARRAY_SIZE,sizeof(struct uvarchar_2),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT, ECPGt_EOLT);
+#line 434 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 434 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 434 "uvarchar.pgc"
+
+
+ print_array();
+ init_var();
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "select Item from tb1 where count = 1", ECPGt_EOIT,
+ ECPGt_uvarchar,&(uvarchar_array[0]),(long)VAR_SIZE,(long)1,sizeof(struct uvarchar_2),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT, ECPGt_EOLT);
+#line 439 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 439 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 439 "uvarchar.pgc"
+
+ print_array();
+ init_var();
+}
+
+
+//simple select using uvarchar array
+void test_array_2()
+{
+ test("test_array_2 : simple select using uvarchar array");
+ init_var();
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "select Item from tb1 where count <= 3", ECPGt_EOIT,
+ ECPGt_uvarchar,(uvarchar_array),(long)VAR_SIZE,(long)ARRAY_SIZE,sizeof(struct uvarchar_2),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT, ECPGt_EOLT);
+#line 451 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 451 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 451 "uvarchar.pgc"
+
+
+ count = 0;
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "select count from tb1 where Item = $1 ",
+ ECPGt_uvarchar,&(uvarchar_array[0]),(long)VAR_SIZE,(long)1,sizeof(struct uvarchar_2),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT,
+ ECPGt_int,&(count),(long)1,(long)1,sizeof(int),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT, ECPGt_EOLT);
+#line 454 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 454 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 454 "uvarchar.pgc"
+
+ printf ("count=%d for '太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'\n", count);
+
+ count = 0;
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "select count from tb1 where Item = $1 ",
+ ECPGt_uvarchar,&(uvarchar_array[2]),(long)VAR_SIZE,(long)1,sizeof(struct uvarchar_2),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT,
+ ECPGt_int,&(count),(long)1,(long)1,sizeof(int),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT, ECPGt_EOLT);
+#line 458 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 458 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 458 "uvarchar.pgc"
+
+ printf ("count=%d for '世界杯每隔四年就会举行一次每次𠲖个球队'\n", count);
+}
+
+//simple update using uvarchar array
+void test_array_3()
+{
+ test("test_array_3 : simple update using uvarchar array");
+ init_var();
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "select Item from tb1 where count <= 3", ECPGt_EOIT,
+ ECPGt_uvarchar,(uvarchar_array),(long)VAR_SIZE,(long)ARRAY_SIZE,sizeof(struct uvarchar_2),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT, ECPGt_EOLT);
+#line 468 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 468 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 468 "uvarchar.pgc"
+
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "update tb1 set Item = $1 where count = 1",
+ ECPGt_uvarchar,&(uvarchar_array[2]),(long)VAR_SIZE,(long)1,sizeof(struct uvarchar_2),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT, ECPGt_EOLT);
+#line 470 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 470 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 470 "uvarchar.pgc"
+
+
+ count = 0;
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "select count ( * ) from tb1 where Item = '太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'", ECPGt_EOIT,
+ ECPGt_int,&(count),(long)1,(long)1,sizeof(int),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT, ECPGt_EOLT);
+#line 473 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 473 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 473 "uvarchar.pgc"
+
+ printf ("find %d rows for Item='太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'\n", count);
+
+ count = 0;
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "select count ( * ) from tb1 where Item = '世界杯每隔四年就会举行一次每次𠲖个球队'", ECPGt_EOIT,
+ ECPGt_int,&(count),(long)1,(long)1,sizeof(int),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT, ECPGt_EOLT);
+#line 477 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 477 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 477 "uvarchar.pgc"
+
+ printf ("find %d rows for Item='世界杯每隔四年就会举行一次每次𠲖个球队'\n", count);
+
+ init_table_value();
+}
+
+//simple delete using uvarchar array
+void test_array_4()
+{
+ test("test_array_4 : simple delete using uvarchar array");
+ init_var();
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "select Item from tb1 where count <= 3", ECPGt_EOIT,
+ ECPGt_uvarchar,(uvarchar_array),(long)VAR_SIZE,(long)ARRAY_SIZE,sizeof(struct uvarchar_2),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT, ECPGt_EOLT);
+#line 489 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 489 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 489 "uvarchar.pgc"
+
+
+ count = 100;
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "delete from tb1 where Item = $1 ",
+ ECPGt_uvarchar,&(uvarchar_array[0]),(long)VAR_SIZE,(long)1,sizeof(struct uvarchar_2),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT, ECPGt_EOLT);
+#line 492 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 492 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 492 "uvarchar.pgc"
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "select count ( * ) from tb1 where Item = '太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'", ECPGt_EOIT,
+ ECPGt_int,&(count),(long)1,(long)1,sizeof(int),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT, ECPGt_EOLT);
+#line 493 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 493 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 493 "uvarchar.pgc"
+
+ printf ("found %d rows for Item='太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'\n", count);
+
+ count = 100;
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "delete from tb1 where Item = $1 ",
+ ECPGt_uvarchar,&(uvarchar_array[2]),(long)VAR_SIZE,(long)1,sizeof(struct uvarchar_2),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT, ECPGt_EOLT);
+#line 497 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 497 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 497 "uvarchar.pgc"
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "select count ( * ) from tb1 where Item = '世界杯每隔四年就会举行一次每次𠲖个球队'", ECPGt_EOIT,
+ ECPGt_int,&(count),(long)1,(long)1,sizeof(int),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT, ECPGt_EOLT);
+#line 498 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 498 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 498 "uvarchar.pgc"
+
+ printf ("found %d rows for Item='世界杯每隔四年就会举行一次每次𠲖个球队'\n", count);
+
+ init_table_value();
+}
+
+//simple insert using uvarchar array
+void test_array_5()
+{
+ test("test_array_5 : simple insert using uvarchar array");
+ init_var();
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "select Item from tb1 where count <= 3", ECPGt_EOIT,
+ ECPGt_uvarchar,(uvarchar_array),(long)VAR_SIZE,(long)ARRAY_SIZE,sizeof(struct uvarchar_2),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT, ECPGt_EOLT);
+#line 510 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 510 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 510 "uvarchar.pgc"
+
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "insert into tb1 values ( $1 , 11 )",
+ ECPGt_uvarchar,&(uvarchar_array[0]),(long)VAR_SIZE,(long)1,sizeof(struct uvarchar_2),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT, ECPGt_EOLT);
+#line 512 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 512 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 512 "uvarchar.pgc"
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "select count ( * ) from tb1 where Item = '太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'", ECPGt_EOIT,
+ ECPGt_int,&(count),(long)1,(long)1,sizeof(int),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT, ECPGt_EOLT);
+#line 513 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 513 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 513 "uvarchar.pgc"
+
+ printf ("found %d rows for Item='太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'\n", count);
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "insert into tb1 values ( $1 , 13 )",
+ ECPGt_uvarchar,&(uvarchar_array[2]),(long)VAR_SIZE,(long)1,sizeof(struct uvarchar_2),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT, ECPGt_EOLT);
+#line 516 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 516 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 516 "uvarchar.pgc"
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "select count ( * ) from tb1 where Item = '世界杯每隔四年就会举行一次每次𠲖个球队'", ECPGt_EOIT,
+ ECPGt_int,&(count),(long)1,(long)1,sizeof(int),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT, ECPGt_EOLT);
+#line 517 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 517 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 517 "uvarchar.pgc"
+
+ printf ("found %d rows for Item='世界杯每隔四年就会举行一次每次𠲖个球队'\n", count);
+
+ init_table_value();
+}
+
+//prepared select into uvarchar array
+void test_array_6()
+{
+ test("test_array_6 : prepared select into uvarchar array");
+ init_var();
+
+ { ECPGprepare(__LINE__, NULL, 0, "stmt", "SELECT Item FROM tb1 WHERE Count<=?");
+#line 529 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 529 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 529 "uvarchar.pgc"
+
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_execute, "stmt",
+ ECPGt_const,"3",(long)1,(long)1,strlen("3"),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT,
+ ECPGt_uvarchar,(uvarchar_array),(long)VAR_SIZE,(long)ARRAY_SIZE,sizeof(struct uvarchar_2),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT, ECPGt_EOLT);
+#line 531 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 531 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 531 "uvarchar.pgc"
+
+
+ print_array();
+
+ { ECPGdeallocate(__LINE__, 0, NULL, "stmt");
+#line 535 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 535 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 535 "uvarchar.pgc"
+
+}
+
+//prepared select using uvarchar array
+void test_array_7()
+{
+ test("test_array_7 : prepared select using uvarchar array");
+ init_var();
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "select Item from tb1 where count <= 3", ECPGt_EOIT,
+ ECPGt_uvarchar,(uvarchar_array),(long)VAR_SIZE,(long)ARRAY_SIZE,sizeof(struct uvarchar_2),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT, ECPGt_EOLT);
+#line 543 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 543 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 543 "uvarchar.pgc"
+
+
+ count = 0;
+ { ECPGprepare(__LINE__, NULL, 0, "stmt", "SELECT Count FROM tb1 WHERE Item=?");
+#line 546 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 546 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 546 "uvarchar.pgc"
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_execute, "stmt",
+ ECPGt_uvarchar,&(uvarchar_array[0]),(long)VAR_SIZE,(long)1,sizeof(struct uvarchar_2),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT,
+ ECPGt_int,&(count),(long)1,(long)1,sizeof(int),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT, ECPGt_EOLT);
+#line 547 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 547 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 547 "uvarchar.pgc"
+
+
+ printf ("count=%d for Item='世界杯每隔四年就会举行一次每次𠲖个球队'\n", count);
+ { ECPGdeallocate(__LINE__, 0, NULL, "stmt");
+#line 550 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 550 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 550 "uvarchar.pgc"
+
+}
+
+//prepared update using uvarchar array
+void test_array_8()
+{
+ test("test_array_8 : prepared update using uvarchar array");
+ init_var();
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "select Item from tb1 where count <= 3", ECPGt_EOIT,
+ ECPGt_uvarchar,(uvarchar_array),(long)VAR_SIZE,(long)ARRAY_SIZE,sizeof(struct uvarchar_2),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT, ECPGt_EOLT);
+#line 558 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 558 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 558 "uvarchar.pgc"
+
+
+ { ECPGprepare(__LINE__, NULL, 0, "stmt", "UPDATE tb1 SET Item=? WHERE Count=?");
+#line 560 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 560 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 560 "uvarchar.pgc"
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_execute, "stmt",
+ ECPGt_uvarchar,&(uvarchar_array[0]),(long)VAR_SIZE,(long)1,sizeof(struct uvarchar_2),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L,
+ ECPGt_const,"1",(long)1,(long)1,strlen("1"),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT, ECPGt_EOLT);
+#line 561 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 561 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 561 "uvarchar.pgc"
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_execute, "stmt",
+ ECPGt_uvarchar,&(uvarchar_array[0]),(long)VAR_SIZE,(long)1,sizeof(struct uvarchar_2),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L,
+ ECPGt_const,"2",(long)1,(long)1,strlen("2"),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT, ECPGt_EOLT);
+#line 562 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 562 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 562 "uvarchar.pgc"
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "select count ( * ) from tb1 where Item = '太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'", ECPGt_EOIT,
+ ECPGt_int,&(count),(long)1,(long)1,sizeof(int),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT, ECPGt_EOLT);
+#line 563 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 563 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 563 "uvarchar.pgc"
+
+
+ printf ("found %d rows for Item='太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'\n", count);
+ { ECPGdeallocate(__LINE__, 0, NULL, "stmt");
+#line 566 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 566 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 566 "uvarchar.pgc"
+
+
+ init_table_value();
+}
+
+//prepared delete using uvarchar array
+void test_array_9()
+{
+ test("test_array_9 : prepared delete using uvarchar array");
+ init_var();
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "select Item from tb1 where count <= 3", ECPGt_EOIT,
+ ECPGt_uvarchar,(uvarchar_array),(long)VAR_SIZE,(long)ARRAY_SIZE,sizeof(struct uvarchar_2),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT, ECPGt_EOLT);
+#line 576 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 576 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 576 "uvarchar.pgc"
+
+
+ count = 0;
+ { ECPGprepare(__LINE__, NULL, 0, "stmt", "DELETE FROM tb1 WHERE Item=?");
+#line 579 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 579 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 579 "uvarchar.pgc"
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_execute, "stmt",
+ ECPGt_uvarchar,&(uvarchar_array[0]),(long)VAR_SIZE,(long)1,sizeof(struct uvarchar_2),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT, ECPGt_EOLT);
+#line 580 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 580 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 580 "uvarchar.pgc"
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "select count ( * ) from tb1 where Item = '太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'", ECPGt_EOIT,
+ ECPGt_int,&(count),(long)1,(long)1,sizeof(int),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT, ECPGt_EOLT);
+#line 581 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 581 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 581 "uvarchar.pgc"
+
+
+ printf ("found %d rows for Item='太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'\n", count);
+ { ECPGdeallocate(__LINE__, 0, NULL, "stmt");
+#line 584 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 584 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 584 "uvarchar.pgc"
+
+
+ init_table_value();
+}
+
+//prepared insert using uvarchar array
+void test_array_10()
+{
+ test("test_array_10 : prepared insert using uvarchar array");
+ init_var();
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "select Item from tb1 where count <= 3", ECPGt_EOIT,
+ ECPGt_uvarchar,(uvarchar_array),(long)VAR_SIZE,(long)ARRAY_SIZE,sizeof(struct uvarchar_2),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT, ECPGt_EOLT);
+#line 594 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 594 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 594 "uvarchar.pgc"
+
+
+ { ECPGprepare(__LINE__, NULL, 0, "stmt", "INSERT INTO tb1 values (?, ?)");
+#line 596 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 596 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 596 "uvarchar.pgc"
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_execute, "stmt",
+ ECPGt_uvarchar,&(uvarchar_array[2]),(long)VAR_SIZE,(long)1,sizeof(struct uvarchar_2),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L,
+ ECPGt_const,"13",(long)2,(long)1,strlen("13"),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT, ECPGt_EOLT);
+#line 597 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 597 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 597 "uvarchar.pgc"
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_execute, "stmt",
+ ECPGt_uvarchar,&(uvarchar_array[2]),(long)VAR_SIZE,(long)1,sizeof(struct uvarchar_2),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L,
+ ECPGt_const,"15",(long)2,(long)1,strlen("15"),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT, ECPGt_EOLT);
+#line 598 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 598 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 598 "uvarchar.pgc"
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "select count ( * ) from tb1 where Item = '世界杯每隔四年就会举行一次每次𠲖个球队'", ECPGt_EOIT,
+ ECPGt_int,&(count),(long)1,(long)1,sizeof(int),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT, ECPGt_EOLT);
+#line 599 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 599 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 599 "uvarchar.pgc"
+
+
+ printf ("found %d rows for Item='世界杯每隔四年就会举行一次每次𠲖个球队'\n", count);
+ { ECPGdeallocate(__LINE__, 0, NULL, "stmt");
+#line 602 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 602 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 602 "uvarchar.pgc"
+
+
+ init_table_value();
+}
+
+//Open cursor using uvarchar array
+void test_array_11()
+{
+ test("test_array_11 : Open cursor using uvarchar array");
+ init_var();
+
+ { ECPGsetcommit(__LINE__, "off", NULL);
+#line 613 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 613 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 613 "uvarchar.pgc"
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "select Item from tb1 where count <= 3", ECPGt_EOIT,
+ ECPGt_uvarchar,(uvarchar_array),(long)VAR_SIZE,(long)ARRAY_SIZE,sizeof(struct uvarchar_2),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT, ECPGt_EOLT);
+#line 614 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 614 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 614 "uvarchar.pgc"
+
+
+ { ECPGprepare(__LINE__, NULL, 0, "stmt", "SELECT Count FROM tb1 WHERE Item=?");
+#line 616 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 616 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 616 "uvarchar.pgc"
+
+ /* declare cursor_array_11 cursor for $1 */
+#line 617 "uvarchar.pgc"
+
+ { ECPGopen("cursor_array_11", "stmt", __LINE__, 0, 1, NULL, 0, ECPGst_normal, "declare cursor_array_11 cursor for $1",
+ ECPGt_char_variable,(ECPGprepared_statement(NULL, "stmt", __LINE__)),(long)1,(long)1,(1)*sizeof(char),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L,
+ ECPGt_uvarchar,&(uvarchar_array[2]),(long)VAR_SIZE,(long)1,sizeof(struct uvarchar_2),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT, ECPGt_EOLT);
+#line 618 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 618 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 618 "uvarchar.pgc"
+
+ { ECPGfetch("cursor_array_11", __LINE__, 0, 1, NULL, 0, ECPGst_normal, "fetch cursor_array_11", ECPGt_EOIT,
+ ECPGt_int,&(count),(long)1,(long)1,sizeof(int),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT, ECPGt_EOLT);
+#line 619 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 619 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 619 "uvarchar.pgc"
+
+ printf ("count=%d for Item='世界杯每隔四年就会举行一次每次𠲖个球队'\n", count);
+ { ECPGclose("cursor_array_11", __LINE__, 0, 1, NULL, 0, ECPGst_normal, "close cursor_array_11", ECPGt_EOIT, ECPGt_EORT, ECPGt_EOLT);
+#line 621 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 621 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 621 "uvarchar.pgc"
+
+ { ECPGdeallocate(__LINE__, 0, NULL, "stmt");
+#line 622 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 622 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 622 "uvarchar.pgc"
+
+ { ECPGsetcommit(__LINE__, "on", NULL);
+#line 623 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 623 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 623 "uvarchar.pgc"
+
+}
+
+//Fecth cursor into uvarchar array
+void test_array_12()
+{
+ test("test_array_12 : Fecth cursor into uvarchar array");
+ init_var();
+
+ { ECPGsetcommit(__LINE__, "off", NULL);
+#line 632 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 632 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 632 "uvarchar.pgc"
+
+ { ECPGprepare(__LINE__, NULL, 0, "stmt", "SELECT Item FROM tb1 WHERE Count<=3");
+#line 633 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 633 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 633 "uvarchar.pgc"
+
+ /* declare cursor_array_12 cursor for $1 */
+#line 634 "uvarchar.pgc"
+
+ { ECPGopen("cursor_array_12", "stmt", __LINE__, 0, 1, NULL, 0, ECPGst_normal, "declare cursor_array_12 cursor for $1",
+ ECPGt_char_variable,(ECPGprepared_statement(NULL, "stmt", __LINE__)),(long)1,(long)1,(1)*sizeof(char),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT, ECPGt_EOLT);
+#line 635 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 635 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 635 "uvarchar.pgc"
+
+ { ECPGfetch("cursor_array_12", __LINE__, 0, 1, NULL, 0, ECPGst_normal, "fetch cursor_array_12", ECPGt_EOIT,
+ ECPGt_uvarchar,&(uvarchar_array[0]),(long)VAR_SIZE,(long)1,sizeof(struct uvarchar_2),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT, ECPGt_EOLT);
+#line 636 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 636 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 636 "uvarchar.pgc"
+
+ { ECPGfetch("cursor_array_12", __LINE__, 0, 1, NULL, 0, ECPGst_normal, "fetch cursor_array_12", ECPGt_EOIT,
+ ECPGt_uvarchar,&(uvarchar_array[1]),(long)VAR_SIZE,(long)1,sizeof(struct uvarchar_2),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT, ECPGt_EOLT);
+#line 637 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 637 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 637 "uvarchar.pgc"
+
+ { ECPGfetch("cursor_array_12", __LINE__, 0, 1, NULL, 0, ECPGst_normal, "fetch cursor_array_12", ECPGt_EOIT,
+ ECPGt_uvarchar,&(uvarchar_array[2]),(long)VAR_SIZE,(long)1,sizeof(struct uvarchar_2),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT, ECPGt_EOLT);
+#line 638 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 638 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 638 "uvarchar.pgc"
+
+ { ECPGclose("cursor_array_12", __LINE__, 0, 1, NULL, 0, ECPGst_normal, "close cursor_array_12", ECPGt_EOIT, ECPGt_EORT, ECPGt_EOLT);
+#line 639 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 639 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 639 "uvarchar.pgc"
+
+
+ print_array();
+
+ { ECPGdeallocate(__LINE__, 0, NULL, "stmt");
+#line 643 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 643 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 643 "uvarchar.pgc"
+
+ { ECPGsetcommit(__LINE__, "on", NULL);
+#line 644 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 644 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 644 "uvarchar.pgc"
+
+}
+
+//Insert array with L string inited
+void test_array_13()
+{
+/* exec sql begin declare section */
+
+
+#line 651 "uvarchar.pgc"
+ struct uvarchar_4 { int len; utext arr[ VAR_SIZE ]; } uvarchar_array13 [ 3 ] ;
+/* exec sql end declare section */
+#line 652 "uvarchar.pgc"
+
+ test("test_array_13 : Insert array with L string inited");
+
+ memset((char*)&uvarchar_array13,0,sizeof(uvarchar_array13));
+
+ memcpy((char*)uvarchar_array13[0].arr, L"太𠮷", sizeof(L"太𠮷"));
+ uvarchar_array13[0].len = sizeof(L"太𠮷")/2;
+ memcpy((char*)uvarchar_array13[1].arr, L"𠮷太", sizeof(L"𠮷太"));
+ uvarchar_array13[1].len = sizeof(L"𠮷太")/2;
+ memcpy((char*)uvarchar_array13[2].arr, L"太平", sizeof(L"太平"));
+ uvarchar_array13[2].len = sizeof(L"太平")/2;
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "insert into tb1 values ( $1 , 20 )",
+ ECPGt_uvarchar,&(uvarchar_array13[0]),(long)VAR_SIZE,(long)1,sizeof(struct uvarchar_4),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT, ECPGt_EOLT);
+#line 664 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 664 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 664 "uvarchar.pgc"
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "insert into tb1 values ( $1 , 21 )",
+ ECPGt_uvarchar,&(uvarchar_array13[1]),(long)VAR_SIZE,(long)1,sizeof(struct uvarchar_4),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT, ECPGt_EOLT);
+#line 665 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 665 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 665 "uvarchar.pgc"
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "insert into tb1 values ( $1 , 22 )",
+ ECPGt_uvarchar,&(uvarchar_array13[2]),(long)VAR_SIZE,(long)1,sizeof(struct uvarchar_4),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT, ECPGt_EOLT);
+#line 666 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 666 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 666 "uvarchar.pgc"
+
+
+ init_var();
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "select Item from tb1 where count <= 22 and count >= 20", ECPGt_EOIT,
+ ECPGt_uvarchar,(uvarchar_array),(long)VAR_SIZE,(long)ARRAY_SIZE,sizeof(struct uvarchar_2),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT, ECPGt_EOLT);
+#line 669 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 669 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 669 "uvarchar.pgc"
+
+ print_array();
+ init_table_value();
+
+}
+
+//Buck insert uvarchar array into table
+void test_buckinsert_1()
+{
+ test("test_buckinsert_1 : Buck insert uvarchar array into table");
+ init_var();
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "select Item from tb1 where count <= 3", ECPGt_EOIT,
+ ECPGt_uvarchar,(uvarchar_array),(long)VAR_SIZE,(long)ARRAY_SIZE,sizeof(struct uvarchar_2),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT, ECPGt_EOLT);
+#line 681 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 681 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 681 "uvarchar.pgc"
+
+
+ // truncate table
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "truncate tb1", ECPGt_EOIT, ECPGt_EORT, ECPGt_EOLT);
+#line 684 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 684 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 684 "uvarchar.pgc"
+
+
+ //buck insert
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "BULK_INSERT_V01_I0058R0000 insert into tb1 (Item , count) values ( $1 , $2 )",
+ ECPGt_uvarchar,(uvarchar_array),(long)VAR_SIZE,(long)ARRAY_SIZE,sizeof(struct uvarchar_2),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L,
+ ECPGt_int,(count_array),(long)1,(long)4,sizeof(int),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT,
+ ECPGt_const,"3",(long)1,(long)1,strlen("3"),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOLT);
+#line 687 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 687 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 687 "uvarchar.pgc"
+
+
+ //check the results
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "select count ( * ) from tb1", ECPGt_EOIT,
+ ECPGt_int,&(total_tuples),(long)1,(long)1,sizeof(int),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT, ECPGt_EOLT);
+#line 690 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 690 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 690 "uvarchar.pgc"
+
+ printf ("Total tuples in tb1 = %d\n", total_tuples);
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "select count from tb1 where Item = $1 ",
+ ECPGt_uvarchar,&(uvarchar_array[0]),(long)VAR_SIZE,(long)1,sizeof(struct uvarchar_2),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT,
+ ECPGt_int,&(count),(long)1,(long)1,sizeof(int),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT, ECPGt_EOLT);
+#line 693 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 693 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 693 "uvarchar.pgc"
+
+ printf ("count=%d for '太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'\n", count);
+
+ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "select count from tb1 where Item = $1 ",
+ ECPGt_uvarchar,&(uvarchar_array[2]),(long)VAR_SIZE,(long)1,sizeof(struct uvarchar_2),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT,
+ ECPGt_int,&(count),(long)1,(long)1,sizeof(int),
+ ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT, ECPGt_EOLT);
+#line 696 "uvarchar.pgc"
+
+if (sqlca.sqlwarn[0] == 'W') sqlprint();
+#line 696 "uvarchar.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 696 "uvarchar.pgc"
+
+ printf ("count=%d for '世界杯每隔四年就会举行一次每次𠲖个球队'\n", count);
+
+ init_var();
+ init_table_value();
+}
+
+void test_all()
+{
+ test_var_1();
+ test_var_2();
+ test_var_3();
+ test_var_4();
+ test_var_5();
+ test_var_6();
+ test_var_7();
+ test_var_8();
+ test_var_9();
+ test_var_10();
+ test_var_11();
+ test_var_12();
+ test_var_13();
+ test_array_1();
+ test_array_2();
+ test_array_3();
+ test_array_4();
+ test_array_5();
+ test_array_6();
+ test_array_7();
+ test_array_8();
+ test_array_9();
+ test_array_10();
+ test_array_11();
+ test_array_12();
+ test_array_13();
+ test_buckinsert_1();
+}
+
+int main()
+{
+ ECPGdebug(1, stderr);
+ if(test_init() !=0)
+ return -1;
+
+ test_all();
+ //test_array_13();
+ //test_var_1();
+ test_finish();
+
+ return 0;
+}
diff --git a/src/interfaces/ecpg/test/unicode/expected/uvarchar.ret b/src/interfaces/ecpg/test/unicode/expected/uvarchar.ret
new file mode 100644
index 0000000..35a03e5
--- /dev/null
+++ b/src/interfaces/ecpg/test/unicode/expected/uvarchar.ret
@@ -0,0 +1,253 @@
+SQL error:
+
+test_var_1 : simple select into uvarchar var
+---->uvarchar variable,len=15:
+0x592A 0x20BB7 0x20731 0x5E73 0x6D0B 0x20C53 0x5927 0x897F
+0x6D0B 0x5370 0x5EA6 0x6D0B 0x5317 0x51B0 0x6D0B 0x0000
+0x0000 0x0000 0x0000 0x0000
+uvarchar_var_ind = 0
+---->uvarchar variable,len=17:
+0x8DB3 0x7403 0x7BEE 0x7403 0x7FBD 0x6BDB 0x7403 0x4E52
+0x4E53 0x7403 0x6A44 0x6984 0x7403 0x68D2 0x7403 0x51B0
+0x7403 0x0000 0x0000 0x0000
+uvarchar_var_ind = 0
+---->uvarchar variable,len=19:
+0x4E16 0x754C 0x676F 0x6BCF 0x9694 0x56DB 0x5E74 0x5C31
+0x4F1A 0x4E3E 0x884C 0x4E00 0x6B21 0x6BCF 0x6B21 0x20C96
+0x4E2A 0x7403 0x961F 0x0000
+uvarchar_var_ind = 0
+---->uvarchar variable,len=20:
+0x4E9A 0x6D32 0x6B27 0x6D32 0x975E 0x6D32 0x5927 0x6D0B
+0x6D32 0x5317 0x7F8E 0x6D32 0x5357 0x7F8E 0x6D32 0x5357
+0x6781 0x6D32 0x6CA1 0x6709
+uvarchar_var_ind = 23
+
+test_var_2 : simple select using uvarchar var
+count=1 for '太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'
+count=3 for '世界杯每隔四年就会举行一次每次𠲖个球队'
+
+test_var_3 : simple update using uvarchar
+found 3 rows for Item='太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'
+
+test_var_4 : simple delete using uvarchar var
+found 0 rows for Item='太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'
+found 0 rows for Item='世界杯每隔四年就会举行一次每次𠲖个球队'
+
+test_var_5 : simple insert using uvarchar
+found 2 rows for Item='太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'
+found 2 rows for Item='世界杯每隔四年就会举行一次每次𠲖个球队'
+
+test_var_6 : prepared select into uvarchar var
+---->uvarchar variable,len=15:
+0x592A 0x20BB7 0x20731 0x5E73 0x6D0B 0x20C53 0x5927 0x897F
+0x6D0B 0x5370 0x5EA6 0x6D0B 0x5317 0x51B0 0x6D0B 0x0000
+0x0000 0x0000 0x0000 0x0000
+---->uvarchar variable,len=19:
+0x4E16 0x754C 0x676F 0x6BCF 0x9694 0x56DB 0x5E74 0x5C31
+0x4F1A 0x4E3E 0x884C 0x4E00 0x6B21 0x6BCF 0x6B21 0x20C96
+0x4E2A 0x7403 0x961F 0x0000
+
+test_var_7 : prepared select using uvarchar var
+count=3 for Item='世界杯每隔四年就会举行一次每次𠲖个球队'
+
+test_var_8 : prepared update using uvarchar var
+found 3 rows for Item='世界杯每隔四年就会举行一次每次𠲖个球队'
+
+test_var_9 : prepared delete using uvarchar var
+found 0 rows for Item='世界杯每隔四年就会举行一次每次𠲖个球队'
+
+test_var_10 : prepared insert using uvarchar var
+found 2 rows for Item='世界杯每隔四年就会举行一次每次𠲖个球队'
+
+test_var_11 : Open cursor using uvarchar var
+count=3 for Item='世界杯每隔四年就会举行一次每次𠲖个球队'
+
+test_var_12 : Fecth cursor into uvarchar var
+---->uvarchar variable,len=15:
+0x592A 0x20BB7 0x20731 0x5E73 0x6D0B 0x20C53 0x5927 0x897F
+0x6D0B 0x5370 0x5EA6 0x6D0B 0x5317 0x51B0 0x6D0B 0x0000
+0x0000 0x0000 0x0000 0x0000
+
+test_var_13 : simple insert using uvarchar with L string inited
+uvarchar_local_var.len = 16
+found 2 rows for Item='太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'
+---->uvarchar variable,len=15:
+0x592A 0x20BB7 0x20731 0x5E73 0x6D0B 0x20C53 0x5927 0x897F
+0x6D0B 0x5370 0x5EA6 0x6D0B 0x5317 0x51B0 0x6D0B 0x0000
+0x0000 0x0000 0x0000 0x0000
+uvarchar_var_ind = 0
+
+test_var_14 : Open cursor using utext var directly in WHERE Clause
+count=3 for Item='世界杯每隔四年就会举行一次每次𠲖个球队'
+
+test_var_15 : Test uvarchar_var working with NULL without indicator
+---->uvarchar variable,len=20:
+0x0000 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161
+0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161
+0x61616161 0x61616161 0x61616161 0x61616161
+found 6 rows for Item being NULL
+
+test_var_16 : Test uvarchar_var working with NULL with indicator
+---->uvarchar variable,len=20:
+0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161
+0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161
+0x61616161 0x61616161 0x61616161 0x61616161
+uvarchar_var_ind = -1
+found 6 rows for Item being NULL
+
+test_array_1 : simple select into uvarchar array
+---->uvarchar array[0]:(len=15)
+0x592A 0x20BB7 0x20731 0x5E73 0x6D0B 0x20C53 0x5927 0x897F
+0x6D0B 0x5370 0x5EA6 0x6D0B 0x5317 0x51B0 0x6D0B 0x0000
+0x0000 0x0000 0x0000 0x0000
+---->uvarchar array[1]:(len=17)
+0x8DB3 0x7403 0x7BEE 0x7403 0x7FBD 0x6BDB 0x7403 0x4E52
+0x4E53 0x7403 0x6A44 0x6984 0x7403 0x68D2 0x7403 0x51B0
+0x7403 0x0000 0x0000 0x0000
+---->uvarchar array[2]:(len=19)
+0x4E16 0x754C 0x676F 0x6BCF 0x9694 0x56DB 0x5E74 0x5C31
+0x4F1A 0x4E3E 0x884C 0x4E00 0x6B21 0x6BCF 0x6B21 0x20C96
+0x4E2A 0x7403 0x961F 0x0000
+---->uvarchar array[3]:(len=0)
+0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161
+0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161
+0x61616161 0x61616161 0x61616161 0x61616161
+
+---->uvarchar array[0]:(len=15)
+0x592A 0x20BB7 0x20731 0x5E73 0x6D0B 0x20C53 0x5927 0x897F
+0x6D0B 0x5370 0x5EA6 0x6D0B 0x5317 0x51B0 0x6D0B 0x0000
+0x0000 0x0000 0x0000 0x0000
+---->uvarchar array[1]:(len=0)
+0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161
+0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161
+0x61616161 0x61616161 0x61616161 0x61616161
+---->uvarchar array[2]:(len=0)
+0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161
+0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161
+0x61616161 0x61616161 0x61616161 0x61616161
+---->uvarchar array[3]:(len=0)
+0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161
+0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161
+0x61616161 0x61616161 0x61616161 0x61616161
+
+
+test_array_2 : simple select using uvarchar array
+count=1 for '太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'
+count=3 for '世界杯每隔四年就会举行一次每次𠲖个球队'
+
+test_array_3 : simple update using uvarchar array
+find 0 rows for Item='太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'
+find 2 rows for Item='世界杯每隔四年就会举行一次每次𠲖个球队'
+
+test_array_4 : simple delete using uvarchar array
+found 0 rows for Item='太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'
+found 0 rows for Item='世界杯每隔四年就会举行一次每次𠲖个球队'
+
+test_array_5 : simple insert using uvarchar array
+found 2 rows for Item='太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'
+found 2 rows for Item='世界杯每隔四年就会举行一次每次𠲖个球队'
+
+test_array_6 : prepared select into uvarchar array
+---->uvarchar array[0]:(len=15)
+0x592A 0x20BB7 0x20731 0x5E73 0x6D0B 0x20C53 0x5927 0x897F
+0x6D0B 0x5370 0x5EA6 0x6D0B 0x5317 0x51B0 0x6D0B 0x0000
+0x0000 0x0000 0x0000 0x0000
+---->uvarchar array[1]:(len=17)
+0x8DB3 0x7403 0x7BEE 0x7403 0x7FBD 0x6BDB 0x7403 0x4E52
+0x4E53 0x7403 0x6A44 0x6984 0x7403 0x68D2 0x7403 0x51B0
+0x7403 0x0000 0x0000 0x0000
+---->uvarchar array[2]:(len=19)
+0x4E16 0x754C 0x676F 0x6BCF 0x9694 0x56DB 0x5E74 0x5C31
+0x4F1A 0x4E3E 0x884C 0x4E00 0x6B21 0x6BCF 0x6B21 0x20C96
+0x4E2A 0x7403 0x961F 0x0000
+---->uvarchar array[3]:(len=0)
+0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161
+0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161
+0x61616161 0x61616161 0x61616161 0x61616161
+
+
+test_array_7 : prepared select using uvarchar array
+count=1 for Item='世界杯每隔四年就会举行一次每次𠲖个球队'
+
+test_array_8 : prepared update using uvarchar array
+found 2 rows for Item='太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'
+
+test_array_9 : prepared delete using uvarchar array
+found 0 rows for Item='太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'
+
+test_array_10 : prepared insert using uvarchar array
+found 3 rows for Item='世界杯每隔四年就会举行一次每次𠲖个球队'
+
+test_array_11 : Open cursor using uvarchar array
+count=3 for Item='世界杯每隔四年就会举行一次每次𠲖个球队'
+
+test_array_12 : Fecth cursor into uvarchar array
+---->uvarchar array[0]:(len=15)
+0x592A 0x20BB7 0x20731 0x5E73 0x6D0B 0x20C53 0x5927 0x897F
+0x6D0B 0x5370 0x5EA6 0x6D0B 0x5317 0x51B0 0x6D0B 0x0000
+0x0000 0x0000 0x0000 0x0000
+---->uvarchar array[1]:(len=17)
+0x8DB3 0x7403 0x7BEE 0x7403 0x7FBD 0x6BDB 0x7403 0x4E52
+0x4E53 0x7403 0x6A44 0x6984 0x7403 0x68D2 0x7403 0x51B0
+0x7403 0x0000 0x0000 0x0000
+---->uvarchar array[2]:(len=19)
+0x4E16 0x754C 0x676F 0x6BCF 0x9694 0x56DB 0x5E74 0x5C31
+0x4F1A 0x4E3E 0x884C 0x4E00 0x6B21 0x6BCF 0x6B21 0x20C96
+0x4E2A 0x7403 0x961F 0x0000
+---->uvarchar array[3]:(len=0)
+0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161
+0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161
+0x61616161 0x61616161 0x61616161 0x61616161
+
+
+test_array_13 : Insert array with L string inited
+---->uvarchar array[0]:(len=15)
+0x592A 0x20BB7 0x20731 0x5E73 0x6D0B 0x20C53 0x5927 0x897F
+0x6D0B 0x5370 0x5EA6 0x6D0B 0x5317 0x51B0 0x6D0B 0x0000
+0x0000 0x0000 0x0000 0x0000
+---->uvarchar array[1]:(len=17)
+0x8DB3 0x7403 0x7BEE 0x7403 0x7FBD 0x6BDB 0x7403 0x4E52
+0x4E53 0x7403 0x6A44 0x6984 0x7403 0x68D2 0x7403 0x51B0
+0x7403 0x0000 0x0000 0x0000
+---->uvarchar array[2]:(len=19)
+0x4E16 0x754C 0x676F 0x6BCF 0x9694 0x56DB 0x5E74 0x5C31
+0x4F1A 0x4E3E 0x884C 0x4E00 0x6B21 0x6BCF 0x6B21 0x20C96
+0x4E2A 0x7403 0x961F 0x0000
+---->uvarchar array[3]:(len=0)
+0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161
+0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161
+0x61616161 0x61616161 0x61616161 0x61616161
+
+
+test_array_15 : Test uvarchar array working with NULL without using indicator
+---->uvarchar variable,len=20:
+0x0000 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161
+0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161
+0x61616161 0x61616161 0x61616161 0x61616161
+---->uvarchar variable,len=20:
+0x0000 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161
+0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161
+0x61616161 0x61616161 0x61616161 0x61616161
+---->uvarchar variable,len=20:
+0x0000 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161
+0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161
+0x61616161 0x61616161 0x61616161 0x61616161
+found 6 rows for Item being NULL
+
+test_array_16 : Test uvarchar array working with NULL using indicator
+---->uvarchar variable,len=20:
+0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161
+0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161
+0x61616161 0x61616161 0x61616161 0x61616161
+---->uvarchar variable,len=20:
+0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161
+0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161
+0x61616161 0x61616161 0x61616161 0x61616161
+---->uvarchar variable,len=20:
+0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161
+0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161
+0x61616161 0x61616161 0x61616161 0x61616161
+uvarchar_var_ind = -1
+uvarchar_var_ind = -1
+uvarchar_var_ind = -1
+found 6 rows for Item being NULL
diff --git a/src/interfaces/ecpg/test/unicode/readme.txt b/src/interfaces/ecpg/test/unicode/readme.txt
new file mode 100644
index 0000000..9b8570d
--- /dev/null
+++ b/src/interfaces/ecpg/test/unicode/readme.txt
@@ -0,0 +1 @@
+This test case is used to test the utext/uvarchar on linux platform for communtiy version.
diff --git a/src/interfaces/ecpg/test/unicode/results/utext.ret b/src/interfaces/ecpg/test/unicode/results/utext.ret
new file mode 100644
index 0000000..7e89f6d
--- /dev/null
+++ b/src/interfaces/ecpg/test/unicode/results/utext.ret
@@ -0,0 +1,435 @@
+SQL error:
+
+test_var_1: simple select into utext var
+======print utext_var content======
+0x0000592A 0x00020BB7 0x00020731 0x00005E73 0x00006D0B 0x00020C53 0x00005927 0x0000897F
+0x00006D0B 0x00005370 0x00005EA6 0x00006D0B 0x00005317 0x000051B0 0x00006D0B 0x00000000
+0x00000000 0x00000000 0x00000000 0x00000000
+======End utext_var content======
+utext_var_ind = 0
+======print utext_var content======
+0x00008DB3 0x00007403 0x00007BEE 0x00007403 0x00007FBD 0x00006BDB 0x00007403 0x00004E52
+0x00004E53 0x00007403 0x00006A44 0x00006984 0x00007403 0x000068D2 0x00007403 0x000051B0
+0x00007403 0x00000000 0x00000000 0x00000000
+======End utext_var content======
+utext_var_ind = 0
+======print utext_var content======
+0x00004E16 0x0000754C 0x0000676F 0x00006BCF 0x00009694 0x000056DB 0x00005E74 0x00005C31
+0x00004F1A 0x00004E3E 0x0000884C 0x00004E00 0x00006B21 0x00006BCF 0x00006B21 0x00020C96
+0x00004E2A 0x00007403 0x0000961F 0x00000000
+======End utext_var content======
+utext_var_ind = 0
+======print utext_var content======
+0x00004E9A 0x00006D32 0x00006B27 0x00006D32 0x0000975E 0x00006D32 0x00005927 0x00006D0B
+0x00006D32 0x00005317 0x00007F8E 0x00006D32 0x00005357 0x00007F8E 0x00006D32 0x00005357
+0x00006781 0x00006D32 0x00006CA1 0x00006709
+======End utext_var content======
+utext_var_ind = 23
+
+test_var_2: simple select using utext var
+count=1 for '太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'
+count=3 for '世界杯每隔四年就会举行一次每次𠲖个球队'
+
+test_var_3: simple update using utext var
+found 3 rows for Item='太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'
+
+test_var_4 : simple delete using utext var
+found 0 rows for Item='太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'
+found 0 rows for Item='世界杯每隔四年就会举行一次每次𠲖个球队'
+
+test_var_5 : simple insert using utext
+found 2 rows for Item='太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'
+found 2 rows for Item='世界杯每隔四年就会举行一次每次𠲖个球队'
+
+test_var_6 : prepared select into utext var
+======print utext_var content======
+0x0000592A 0x00020BB7 0x00020731 0x00005E73 0x00006D0B 0x00020C53 0x00005927 0x0000897F
+0x00006D0B 0x00005370 0x00005EA6 0x00006D0B 0x00005317 0x000051B0 0x00006D0B 0x00000000
+0x00000000 0x00000000 0x00000000 0x00000000
+======End utext_var content======
+======print utext_var content======
+0x00004E16 0x0000754C 0x0000676F 0x00006BCF 0x00009694 0x000056DB 0x00005E74 0x00005C31
+0x00004F1A 0x00004E3E 0x0000884C 0x00004E00 0x00006B21 0x00006BCF 0x00006B21 0x00020C96
+0x00004E2A 0x00007403 0x0000961F 0x00000000
+======End utext_var content======
+
+test_var_7 : prepared select using utext var
+count=3 for Item='世界杯每隔四年就会举行一次每次𠲖个球队'
+
+test_var_8 : prepared update using utext var
+found 3 rows for Item='世界杯每隔四年就会举行一次每次𠲖个球队'
+
+test_var_9 : prepared delete using utext var
+found 0 rows for Item='世界杯每隔四年就会举行一次每次𠲖个球队'
+
+test_var_10 : prepared insert using utext var
+found 2 rows for Item='世界杯每隔四年就会举行一次每次𠲖个球队'
+
+test_var_11 : Open cursor using utext var
+count=3 for Item='世界杯每隔四年就会举行一次每次𠲖个球队'
+
+test_var_12 : Fecth cursor into utext var
+======print utext_var content======
+0x0000592A 0x00020BB7 0x00020731 0x00005E73 0x00006D0B 0x00020C53 0x00005927 0x0000897F
+0x00006D0B 0x00005370 0x00005EA6 0x00006D0B 0x00005317 0x000051B0 0x00006D0B 0x00000000
+0x00000000 0x00000000 0x00000000 0x00000000
+======End utext_var content======
+
+test_var_13 : simple insert utext var with L string inited
+======print utext_var_str content======
+0x00008DB3 0x00007403 0x00007BEE 0x00007403 0x00007FBD 0x00006BDB 0x00007403
+======End utext_var_str content======
+======print utext_var content======
+0x00008DB3 0x00007403 0x00007BEE 0x00007403 0x00007FBD 0x00006BDB 0x00007403 0x00000000
+0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000
+0x00000000 0x00000000 0x00000000 0x00000000
+======End utext_var content======
+utext_var_ind = 0
+
+test_var_14 : Open cursor using utext var directly in WHERE Clause
+count=3 for Item='世界杯每隔四年就会举行一次每次𠲖个球队'
+
+test_var_15 : Test utext_var working with NULL without indicator
+======print utext_var content======
+0x00000000 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161
+0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161
+0x61616161 0x61616161 0x61616161 0x61616161
+======End utext_var content======
+found 6 rows for Item being NULL
+
+test_var_16 : Test utext_var working with NULL with indicator
+======print utext_var content======
+0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161
+0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161
+0x61616161 0x61616161 0x61616161 0x61616161
+======End utext_var content======
+utext_var_ind = -1
+found 6 rows for Item being NULL
+
+test_array_1 : simple select into utext array
+---->array[0]:
+0x0000592A 0x00020BB7 0x00020731 0x00005E73 0x00006D0B 0x00020C53 0x00005927 0x0000897F
+0x00006D0B 0x00005370 0x00005EA6 0x00006D0B 0x00005317 0x000051B0 0x00006D0B 0x00000000
+0x00000000 0x00000000 0x00000000 0x00000000
+---->array[1]:
+0x00008DB3 0x00007403 0x00007BEE 0x00007403 0x00007FBD 0x00006BDB 0x00007403 0x00004E52
+0x00004E53 0x00007403 0x00006A44 0x00006984 0x00007403 0x000068D2 0x00007403 0x000051B0
+0x00007403 0x00000000 0x00000000 0x00000000
+---->array[2]:
+0x00004E16 0x0000754C 0x0000676F 0x00006BCF 0x00009694 0x000056DB 0x00005E74 0x00005C31
+0x00004F1A 0x00004E3E 0x0000884C 0x00004E00 0x00006B21 0x00006BCF 0x00006B21 0x00020C96
+0x00004E2A 0x00007403 0x0000961F 0x00000000
+---->array[3]:
+0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161
+0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161
+0x61616161 0x61616161 0x61616161 0x61616161
+
+---->array[0]:
+0x0000592A 0x00020BB7 0x00020731 0x00005E73 0x00006D0B 0x00020C53 0x00005927 0x0000897F
+0x00006D0B 0x00005370 0x00005EA6 0x00006D0B 0x00005317 0x000051B0 0x00006D0B 0x00000000
+0x00000000 0x00000000 0x00000000 0x00000000
+---->array[1]:
+0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161
+0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161
+0x61616161 0x61616161 0x61616161 0x61616161
+---->array[2]:
+0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161
+0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161
+0x61616161 0x61616161 0x61616161 0x61616161
+---->array[3]:
+0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161
+0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161
+0x61616161 0x61616161 0x61616161 0x61616161
+
+
+test_array_2 : simple select using array
+count=1 for '太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'
+count=3 for '世界杯每隔四年就会举行一次每次𠲖个球队'
+
+test_array_3 : simple update using utext array
+find 0 rows for Item='太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'
+find 2 rows for Item='世界杯每隔四年就会举行一次每次𠲖个球队'
+
+test_array_4 : simple delete using utext array
+found 0 rows for Item='太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'
+found 0 rows for Item='世界杯每隔四年就会举行一次每次𠲖个球队'
+
+test_array_5 : simple insert using utext array
+found 2 rows for Item='太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'
+found 2 rows for Item='世界杯每隔四年就会举行一次每次𠲖个球队'
+
+test_array_6 : prepared select SQL error:
+into utext array
+---->array[0]:
+0x0000592A 0x00020BB7 0x00020731 0x00005E73 0x00006D0B 0x00020C53 0x00005927 0x0000897F
+0x00006D0B 0x00005370 0x00005EA6 0x00006D0B 0x00005317 0x000051B0 0x00006D0B 0x00000000
+0x00000000 0x00000000 0x00000000 0x00000000
+---->array[1]:
+0x00008DB3 0x00007403 0x00007BEE 0x00007403 0x00007FBD 0x00006BDB 0x00007403 0x00004E52
+0x00004E53 0x00007403 0x00006A44 0x00006984 0x00007403 0x000068D2 0x00007403 0x000051B0
+0x00007403 0x00000000 0x00000000 0x00000000
+---->array[2]:
+0x00004E16 0x0000754C 0x0000676F 0x00006BCF 0x00009694 0x000056DB 0x00005E74 0x00005C31
+0x00004F1A 0x00004E3E 0x0000884C 0x00004E00 0x00006B21 0x00006BCF 0x00006B21 0x00020C96
+0x00004E2A 0x00007403 0x0000961F 0x00000000
+---->array[3]:
+0x00004E9A 0x00006D32 0x00006B27 0x00006D32 0x0000975E 0x00006D32 0x00005927 0x00006D0B
+0x00006D32 0x00005317 0x00007F8E 0x00006D32 0x00005357 0x00007F8E 0x00006D32 0x00005357
+0x00006781 0x00006D32 0x00006CA1 0x00006709
+
+
+test_array_7 : prepared select using utext array
+count=1 for Item='世界杯每隔四年就会举行一次每次𠲖个球队'
+
+test_array_8 : prepared update using utext array
+found 3 rows for Item='太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'
+
+test_array_9 : prepared delete using utext array
+found 0 rows for Item='太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'
+
+test_array_10 : prepared insert using utext array
+found 3 rows for Item='世界杯每隔四年就会举行一次每次𠲖个球队'
+
+test_array_11 : Open cursor using utext array
+count=3 for Item='世界杯每隔四年就会举行一次每次𠲖个球队'
+
+test_array_12 : Fecth cursor into utext array
+---->array[0]:
+0x0000592A 0x00020BB7 0x00020731 0x00005E73 0x00006D0B 0x00020C53 0x00005927 0x0000897F
+0x00006D0B 0x00005370 0x00005EA6 0x00006D0B 0x00005317 0x000051B0 0x00006D0B 0x00000000
+0x00000000 0x00000000 0x00000000 0x00000000
+---->array[1]:
+0x00008DB3 0x00007403 0x00007BEE 0x00007403 0x00007FBD 0x00006BDB 0x00007403 0x00004E52
+0x00004E53 0x00007403 0x00006A44 0x00006984 0x00007403 0x000068D2 0x00007403 0x000051B0
+0x00007403 0x00000000 0x00000000 0x00000000
+---->array[2]:
+0x00004E16 0x0000754C 0x0000676F 0x00006BCF 0x00009694 0x000056DB 0x00005E74 0x00005C31
+0x00004F1A 0x00004E3E 0x0000884C 0x00004E00 0x00006B21 0x00006BCF 0x00006B21 0x00020C96
+0x00004E2A 0x00007403 0x0000961F 0x00000000
+---->array[3]:
+0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161
+0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161
+0x61616161 0x61616161 0x61616161 0x61616161
+
+
+test_array_13 : Insert array with L string inited
+---->array[0]:
+0x0000592A 0x00020BB7 0x00020731 0x00005E73 0x00006D0B 0x00020C53 0x00005927 0x0000897F
+0x00006D0B 0x00005370 0x00005EA6 0x00006D0B 0x00005317 0x000051B0 0x00006D0B 0x00000000
+0x00000000 0x00000000 0x00000000 0x00000000
+---->array[1]:
+0x00008DB3 0x00007403 0x00007BEE 0x00007403 0x00007FBD 0x00006BDB 0x00007403 0x00004E52
+0x00004E53 0x00007403 0x00006A44 0x00006984 0x00007403 0x000068D2 0x00007403 0x000051B0
+0x00007403 0x00000000 0x00000000 0x00000000
+---->array[2]:
+0x00004E16 0x0000754C 0x0000676F 0x00006BCF 0x00009694 0x000056DB 0x00005E74 0x00005C31
+0x00004F1A 0x00004E3E 0x0000884C 0x00004E00 0x00006B21 0x00000000 0x00000000 0x00000000
+0x00000000 0x00000000 0x00000000 0x00000000
+
+
+test_array_14 : Open cursor using utext array directly in WHERE Clause
+count=3 for Item='世界杯每隔四年就会举行一次每次𠲖个球队'
+
+test_array_15 : Test utext array working with NULL without using indicator
+---->array[0]:
+0x00000000 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161
+0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161
+0x61616161 0x61616161 0x61616161 0x61616161
+---->array[1]:
+0x00000000 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161
+0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161
+0x61616161 0x61616161 0x61616161 0x61616161
+---->array[2]:
+0x00000000 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161
+0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161
+0x61616161 0x61616161 0x61616161 0x61616161
+
+found 6 rows for Item being NULL
+
+test_array_16 : Test utext array working with NULL using indicator
+---->array[0]:
+0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161
+0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161
+0x61616161 0x61616161 0x61616161 0x61616161
+---->array[1]:
+0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161
+0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161
+0x61616161 0x61616161 0x61616161 0x61616161
+---->array[2]:
+0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161
+0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161
+0x61616161 0x61616161 0x61616161 0x61616161
+
+utext_var_ind = -1
+utext_var_ind = -1
+utext_var_ind = -1
+found 6 rows for Item being NULL
+
+test_pvar_1 : simple select into utext pointer
+======print utext_var content======
+0x0000592A 0x00020BB7 0x00020731 0x00005E73 0x00006D0B 0x00020C53 0x00005927 0x0000897F
+0x00006D0B 0x00005370 0x00005EA6 0x00006D0B 0x00005317 0x000051B0 0x00006D0B 0x00000000
+0x61616161 0x61616161 0x61616161 0x61616161
+======End utext_var content======
+utext_var_ind = 0
+======print utext_var content======
+0x00008DB3 0x00007403 0x00007BEE 0x00007403 0x00007FBD 0x00006BDB 0x00007403 0x00004E52
+0x00004E53 0x00007403 0x00006A44 0x00006984 0x00007403 0x000068D2 0x00007403 0x000051B0
+0x00007403 0x00000000 0x61616161 0x61616161
+======End utext_var content======
+utext_var_ind = 0
+======print utext_var content======
+0x00004E16 0x0000754C 0x0000676F 0x00006BCF 0x00009694 0x000056DB 0x00005E74 0x00005C31
+0x00004F1A 0x00004E3E 0x0000884C 0x00004E00 0x00006B21 0x00006BCF 0x00006B21 0x00020C96
+0x00004E2A 0x00007403 0x0000961F 0x00000000
+======End utext_var content======
+utext_var_ind = 0
+======print utext_var content======
+0x00004E9A 0x00006D32 0x00006B27 0x00006D32 0x0000975E 0x00006D32 0x00005927 0x00006D0B
+0x00006D32 0x00005317 0x00007F8E 0x00006D32 0x00005357 0x00007F8E 0x00006D32 0x00005357
+0x00006781 0x00006D32 0x00006CA1 0x00006709
+======End utext_var content======
+utext_var_ind = 0
+
+test_pvar_2 : simple select using utext pointer
+count=1 for '太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'
+count=0 for '世界杯每隔四年就会举行一次每次𠲖个球队'
+
+test_pvar_3 : simple update using utext pointer
+found 3 rows for Item='太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'
+
+test_pvar_4 : simple delete using utext pointer
+found 0 rows for Item='太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'
+found 1 rows for Item='世界杯每隔四年就会举行一次每次𠲖个球队'
+
+test_pvar_5 : simple insert using utext pointer
+found 1 rows for Item='世界杯每隔四年就会举行一次每次𠲖个球队'
+
+test_pvar_6 : prepared select into utext pointer
+======print utext_var content======
+0x0000592A 0x00020BB7 0x00020731 0x00005E73 0x00006D0B 0x00020C53 0x00005927 0x0000897F
+0x00006D0B 0x00005370 0x00005EA6 0x00006D0B 0x00005317 0x000051B0 0x00006D0B 0x00000000
+0x61616161 0x61616161 0x61616161 0x61616161
+======End utext_var content======
+======print utext_var content======
+0x00004E16 0x0000754C 0x0000676F 0x00006BCF 0x00009694 0x000056DB 0x00005E74 0x00005C31
+0x00004F1A 0x00004E3E 0x0000884C 0x00004E00 0x00006B21 0x00006BCF 0x00006B21 0x00020C96
+0x00004E2A 0x00007403 0x0000961F 0x00000000
+======End utext_var content======
+
+test_pvar_7 : prepared select using utext pointer
+count=0 for Item='世界杯每隔四年就会举行一次每次𠲖个球队'
+
+test_pvar_8 : prepared update using utext pointer
+found 1 rows for Item='世界杯每隔四年就会举行一次每次𠲖个球队'
+
+test_pvar_9 : prepared delete using utext pointer
+found 1 rows for Item='世界杯每隔四年就会举行一次每次𠲖个球队'
+
+test_pvar_10 : prepared insert using utext pointer
+found 1 rows for Item='世界杯每隔四年就会举行一次每次𠲖个球队'
+
+test_pvar_11 : Open cursor using utext pointer
+count=0 for Item='世界杯每隔四年就会举行一次每次𠲖个球队'
+
+test_pvar_12 : Fecth cursor into utext pointer
+======print utext_var content======
+0x0000592A 0x00020BB7 0x00020731 0x00005E73 0x00006D0B 0x00020C53 0x00005927 0x0000897F
+0x00006D0B 0x00005370 0x00005EA6 0x00006D0B 0x00005317 0x000051B0 0x00006D0B 0x00000000
+0x61616161 0x61616161 0x61616161 0x61616161
+======End utext_var content======
+
+test_pvar_13 : simple insert utext pointer with L string inited
+======print utext_var content======
+0x0000592A 0x00020BB7 0x00020731 0x00005E73 0x00006D0B 0x00020C53 0x00005927 0x0000897F
+0x00006D0B 0x00005370 0x00005EA6 0x00006D0B 0x00005317 0x000051B0 0x00006D0B 0x00000000
+0x00000000 0x00000000 0x00000000 0x00000000
+======End utext_var content======
+utext_var_ind = 0
+
+test_pvar_14 : Open cursor using utext var directly in WHERE Clause
+count=0 for Item='世界杯每隔四年就会举行一次每次𠲖个球队'
+
+test_pvar_15 : Test utext pointer working with NULL without using indicator
+======print utext_var content======
+0x00000000 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161
+0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161
+0x61616161 0x61616161 0x61616161 0x61616161
+======End utext_var content======
+found 6 rows for Item being NULL
+
+test_pvar_16 : Test utext pointer working with NULL using indicator
+======print utext_var content======
+0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161
+0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161 0x61616161
+0x61616161 0x61616161 0x61616161 0x61616161
+======End utext_var content======
+utext_var_ind = -1
+found 6 rows for Item being NULL
+
+test_pvar_17 : Test utext uninitialized pointer getting and setting data
+======print utext_var_str content======
+0x0000592A 0x00020BB7 0x00020731 0x00005E73 0x00006D0B 0x00020C53 0x00005927 0x0000897F
+0x00006D0B 0x00005370 0x00005EA6 0x00006D0B 0x00005317 0x000051B0 0x00006D0B
+======End utext_var_str content======
+Find Item = 太𠮷𠜱平洋𠱓大西洋印度洋北冰洋 where Count=18
+
+test_pvar_18 : Test utext uninitialized pointer working with NULL without using indicator
+======print utext_var content======
+0x00000000
+======End utext_var content======
+found 6 rows for Item being NULL
+
+test_pvar_19 : Test utext uninitialized pointer working with NULL using indicator
+======print utext_var content======
+0x00000000
+======End utext_var content======
+utext_var_ind = -1
+found 6 rows for Item being NULL
+
+test_pp_var_1 : Test pointer to pointer utext_var without initialize
+======print utext_var_str content======
+0x0000592A 0x00020BB7 0x00020731 0x00005E73 0x00006D0B 0x00020C53 0x00005927 0x0000897F
+0x00006D0B 0x00005370 0x00005EA6 0x00006D0B 0x00005317 0x000051B0 0x00006D0B
+======End utext_var_str content======
+utext_var_ind = 0
+======print utext_var_str content======
+0x00008DB3 0x00007403 0x00007BEE 0x00007403 0x00007FBD 0x00006BDB 0x00007403 0x00004E52
+0x00004E53 0x00007403 0x00006A44 0x00006984 0x00007403 0x000068D2 0x00007403 0x000051B0
+0x00007403
+======End utext_var_str content======
+utext_var_ind = 0
+======print utext_var_str content======
+0x00004E16 0x0000754C 0x0000676F 0x00006BCF 0x00009694 0x000056DB 0x00005E74 0x00005C31
+0x00004F1A 0x00004E3E 0x0000884C 0x00004E00 0x00006B21 0x00006BCF 0x00006B21 0x00020C96
+0x00004E2A 0x00007403 0x0000961F
+======End utext_var_str content======
+utext_var_ind = 0
+足球篮球羽毛球乒乓球橄榄球棒球冰球
+
+test_pp_var_2 : Test uninitialized pointer to pointer utext_var working with NULL without indicator
+======print utext_var_str content======
+
+======End utext_var_str content======
+======print utext_var_str content======
+
+======End utext_var_str content======
+======print utext_var_str content======
+
+======End utext_var_str content======
+found 6 rows for Item being NULL
+
+test_pp_var_2 : Test uninitialized pointer to pointer utext_var working with NULL without indicator
+======print utext_var_str content======
+
+======End utext_var_str content======
+utext_var_ind = -1
+======print utext_var_str content======
+
+======End utext_var_str content======
+utext_var_ind = -1
+======print utext_var_str content======
+
+======End utext_var_str content======
+utext_var_ind = -1
+found 6 rows for Item being NULL
diff --git a/src/interfaces/ecpg/test/unicode/results/utext_nor.ret b/src/interfaces/ecpg/test/unicode/results/utext_nor.ret
new file mode 100644
index 0000000..e6ee570
--- /dev/null
+++ b/src/interfaces/ecpg/test/unicode/results/utext_nor.ret
@@ -0,0 +1 @@
+./utext_nor.sh: line 10: utext: command not found
diff --git a/src/interfaces/ecpg/test/unicode/results/utext_with_no_indicator.ret b/src/interfaces/ecpg/test/unicode/results/utext_with_no_indicator.ret
new file mode 100644
index 0000000..12913ef
--- /dev/null
+++ b/src/interfaces/ecpg/test/unicode/results/utext_with_no_indicator.ret
@@ -0,0 +1 @@
+./utext.sh: line 12: utext: command not found
diff --git a/src/interfaces/ecpg/test/unicode/unicode.pgc b/src/interfaces/ecpg/test/unicode/unicode.pgc
new file mode 100755
index 0000000..bf9a177
--- /dev/null
+++ b/src/interfaces/ecpg/test/unicode/unicode.pgc
@@ -0,0 +1,246 @@
+#include <stdio.h>
+
+EXEC SQL INCLUDE ../regression;
+
+void print_utext(char *var_name, utext *utext_var, int var_size);
+void print_utext_array(char *var_name, utext *utext_var, int var_size, int index);
+void print_nchar(char *utext_var, int var_size);
+
+#define print_ret print_utext("employee",employee,40); \
+print_utext("address", address.arr, address.len)
+
+EXEC SQL BEGIN DECLARE SECTION;
+char char_ename[3][40] = {"test ok","测试 通过","太𠮷𠜱"};
+
+char employee_1[40]= "test ok";
+char employee_2[40]= "测试 通过";
+char employee_3[40]= "太𠮷𠜱";
+
+char char_addr[3][40] = {"1 sydney, NSW","澳大利亚悉尼1号","世界杯"};
+
+char address_1[40]="1 sydney, NSW";
+char address_2[40]="澳大利亚悉尼1号";
+char address_3[40]="世界杯";
+EXEC SQL END DECLARE SECTION;
+
+void print_utext(char *var_name, utext *utext_var, int var_size)
+{
+ int i;
+ printf("======print %s content======\n",var_name);
+ for(i=0; i<var_size; i++)
+ {
+ printf ("0x%04X ", utext_var[i]);
+ if(i>6 && (i+1)%8==0)
+ printf("\n");
+ }
+ printf("\n");
+}
+
+void print_utext_array(char *var_name, utext *utext_var, int var_size, int index)
+{
+ int i;
+ printf("======print %s[%d] content======\n",var_name,index);
+ for(i=0; i<var_size; i++)
+ {
+ printf ("0x%04X ", utext_var[i]);
+ if(i>6 && (i+1)%8==0)
+ printf("\n");
+ }
+ printf("\n");
+}
+
+void print_nchar(char *utext_var, int var_size)
+{
+ printf("nchar is : %s\n",utext_var);
+ int i;
+ printf("======print utext_var content======\n");
+ for(i=0; i<var_size; i++)
+ {
+ printf ("0x%04X ", utext_var[i]);
+ if(i>6 && (i+1)%8==0)
+ printf("\n");
+ }
+ printf("\n======End utext_var content======\n");
+}
+
+void create_table()
+{
+ EXEC SQL CREATE TABLE IF NOT EXISTS emp (id int, ename CHAR(20), address nvarchar(50));
+ EXEC SQL TRUNCATE TABLE emp;
+
+ EXEC SQL CREATE TABLE IF NOT EXISTS emp_bk (id int, ename CHAR(20), address nvarchar(50));
+ EXEC SQL TRUNCATE TABLE emp_bk;
+}
+
+void init_table()
+{
+ /* UTF8 is the database character set */
+ EXEC SQL INSERT INTO emp (id,ename,address) VALUES (1, 'test ok', '1 sydney, NSW') ;
+ EXEC SQL INSERT INTO emp (id,ename,address) VALUES (2, '测试 通过', '澳大利亚悉尼1号') ;
+ EXEC SQL INSERT INTO emp (id,ename,address) VALUES (3, '太𠮷𠜱', '世界杯') ;
+}
+
+/*
+ Test utext host variable
+*/
+void testcase1()
+{
+ EXEC SQL BEGIN DECLARE SECTION;
+ int total_tuples = 0;
+ int i = 0;
+ int id = 0;
+ int id2 = 0;
+ utext employee[41]; /* define Unicode host variable */
+ uvarchar address[101] ; /* define a variable length Unicode host variable */
+ EXEC SQL END DECLARE SECTION;
+
+ printf("\n**************Start testcase(%d)**************\n",1);
+
+ memset(employee,'a',sizeof(employee));
+ memset((void*)&address,'a',sizeof(address));
+ address.len = 0;
+
+ EXEC SQL TRUNCATE emp_bk;
+
+ for(i=1;i<=3;i++)
+ {
+ /* Database character set converted to Unicode */
+ EXEC SQL SELECT ename,address INTO :employee, :address FROM emp where id =:i;
+ print_ret;
+ /* Unicode converted to Database character */
+ EXEC SQL INSERT INTO emp_bk (id,ename,address) VALUES (:i,:employee, :address);
+ }
+
+ EXEC SQL SELECT count(*) into :total_tuples from emp_bk;
+ printf("total_tuples = %d in emp_bk\n",total_tuples);
+
+
+ for(i=3;i>0;i--)
+ {
+ EXEC SQL SELECT ename,address INTO :employee, :address FROM emp where id =:i;
+ EXEC SQL SELECT id into :id from emp_bk WHERE ename=:employee and address = :address;
+ EXEC SQL SELECT id into :id2 from emp_bk WHERE ename=:char_ename[i-1] and address=:char_addr[i-1];
+ printf("id[%d] = id2[%d] in emp_bk\n",id,id2);
+ }
+}
+
+/*
+ Test utext array
+*/
+void testcase2()
+{
+ EXEC SQL BEGIN DECLARE SECTION;
+ int total_tuples = 0;
+ int i = 0;
+ int j = 0;
+ int id = 0;
+ int id2 = 0;
+ utext employee_array[3][41]; /* define Unicode host variable */
+ uvarchar address_array[3][101] ; /* define a variable length Unicode host variable */
+ EXEC SQL END DECLARE SECTION;
+
+ printf("\n**************Start testcase(%d)**************\n",2);
+
+ memset(employee_array,'a',sizeof(employee_array));
+
+ for(i=0;i<3;i++)
+ {
+ memset((void*)&address_array[i],'a',sizeof(address_array[0]));
+ address_array[i].len=0;
+ }
+
+
+ EXEC SQL TRUNCATE emp_bk;
+
+ /* Database character set converted to Unicode */
+ EXEC SQL SELECT ename,address INTO :employee_array, :address_array FROM emp;
+
+ for(i=1;i<=3;i++)
+ {
+ print_utext_array("employee_array",employee_array[i-1],40,i-1);
+ print_utext_array("address_array",address_array[i-1].arr,address_array[i-1].len,i-1);
+ /* Unicode converted to Database character */
+ EXEC SQL INSERT INTO emp_bk (id,ename,address) VALUES (:i,:employee_array[i-1], :address_array[i-1]);
+ }
+
+ EXEC SQL SELECT count(*) into :total_tuples from emp_bk;
+ printf("total_tuples = %d in emp_bk\n",total_tuples);
+
+
+ EXEC SQL SELECT ename,address INTO :employee_array, :address_array FROM emp;
+ for(i=3;i>0;i--)
+ {
+ EXEC SQL SELECT id into :id from emp_bk WHERE ename=:employee_array[i-1] and address = :address_array[i-1];
+ EXEC SQL SELECT id into :id2 from emp_bk WHERE ename=:char_ename[i-1] and address=:char_addr[i-1];
+ printf("id[%d] = id2[%d] in emp_bk\n",id,id2);
+ }
+}
+
+
+/*
+ Test utext pointer
+*/
+void testcase3()
+{
+ EXEC SQL BEGIN DECLARE SECTION;
+ int total_tuples = 0;
+ int i = 0;
+ int id = 0;
+ int id2 = 0;
+ utext *employee; /* define Unicode host variable */
+ int employee_len = 82;
+ uvarchar address[101] ; /* define a variable length Unicode host variable */
+ EXEC SQL END DECLARE SECTION;
+
+
+ printf("\n**************Start testcase(%d)**************\n",3);
+
+ employee = malloc(employee_len);
+
+ memset(employee,'a',employee_len);
+ memset((void*)&address,'a',sizeof(address));
+ address.len = 0;
+
+ EXEC SQL TRUNCATE emp_bk;
+
+ for(i=1;i<=3;i++)
+ {
+ /* Database character set converted to Unicode */
+ EXEC SQL SELECT ename,address INTO :employee, :address FROM emp where id =:i;
+ print_ret;
+ /* Unicode converted to Database character */
+ EXEC SQL INSERT INTO emp_bk (id,ename,address) VALUES (:i,:employee, :address);
+ }
+
+ EXEC SQL SELECT count(*) into :total_tuples from emp_bk;
+ printf("total_tuples = %d in emp_bk\n",total_tuples);
+
+
+ for(i=3;i>0;i--)
+ {
+ EXEC SQL SELECT ename,address INTO :employee, :address FROM emp where id =:i;
+ EXEC SQL SELECT id into :id from emp_bk WHERE ename=:employee and address = :address;
+ EXEC SQL SELECT id into :id2 from emp_bk WHERE ename=:char_ename[i-1] and address=:char_addr[i-1];
+ printf("id[%d] = id2[%d] in emp_bk\n",id,id2);
+ }
+}
+
+int main() {
+ EXEC SQL CONNECT TO REGRESSDB1;
+
+ EXEC SQL SET AUTOCOMMIT TO ON;
+ EXEC SQL WHENEVER SQLWARNING SQLPRINT;
+ EXEC SQL WHENEVER SQLERROR SQLPRINT;
+ create_table();
+ init_table();
+
+ testcase1();
+ testcase2();
+ testcase3();
+
+ EXEC SQL DISCONNECT;
+ return 0;
+}
+
+
+
diff --git a/src/interfaces/ecpg/test/unicode/unicode.sh b/src/interfaces/ecpg/test/unicode/unicode.sh
new file mode 100755
index 0000000..c8eaa87
--- /dev/null
+++ b/src/interfaces/ecpg/test/unicode/unicode.sh
@@ -0,0 +1,8 @@
+echo "../../preproc/ecpg --regression --enable-utext -I./../../include -I. -o unicode.c unicode.pgc"
+
+../../preproc/ecpg --regression --enable-utext -I./../../include -I. -o unicode.c unicode.pgc
+
+gcc -Wall -Wmissing-prototypes -Wpointer-arith -Wdeclaration-after-statement -Wendif-labels -Wmissing-format-attribute -Wformat-security -fno-strict-aliasing -fwrapv -fexcess-precision=standard -O0 -pthread -D_REENTRANT -D_THREAD_SAFE -D_POSIX_PTHREAD_SEMANTICS -I../../include -I../../../../../src/interfaces/ecpg/include -I../../../../../src/interfaces/libpq -I../../../../../src/include -DLINUX_OOM_SCORE_ADJ=0 -DLINUX_OOM_ADJ=0 -D_GNU_SOURCE -I/db/fep95ae/OUT/libxml2/64/include/libxml2 -I/db/fep95ae/SRC/pclmods/pclmods_rhel7_64/include -I/db/fep95ae/OUT/libedit/64/include -I/db/fep95ae/OUT/OpenLDAP/64/include -I/db/fep95ae/OUT/UUID/64/include -I/db/fep95ae/OUT/libxml2/64/include -I/db/fep95ae/OUT/libxslt/64/include -I/db/fep95ae/OUT/OpenSSL/64/include -I/db/fep95ae/OUT/Kerberos5/64/include -g -c -o unicode.o unicode.c
+gcc -Wall -Wmissing-prototypes -Wpointer-arith -Wdeclaration-after-statement -Wendif-labels -Wmissing-format-attribute -Wformat-security -fno-strict-aliasing -fwrapv -fexcess-precision=standard -O0 -pthread -D_REENTRANT -D_THREAD_SAFE -D_POSIX_PTHREAD_SEMANTICS unicode.o -L../../ecpglib -L../../pgtypeslib -L../../../../../src/interfaces/libpq -L../../../../../src/port -L../../../../../src/common -L/db/fep95ae/OUT/libxml2/64/lib -L/db/fep95ae/SRC/pclmods/pclmods_rhel7_64/lib -L/db/fep95ae/OUT/libedit/64/lib -L/db/fep95ae/OUT/OpenLDAP/64/lib -L/db/fep95ae/OUT/UUID/64/lib -L/db/fep95ae/OUT/libxml2/64/lib -L/db/fep95ae/OUT/libxslt/64/lib -L/db/fep95ae/OUT/OpenSSL/64/lib -L/db/fep95ae/OUT/Kerberos5/64/lib -Wl,--as-needed -Wl,-rpath,'/db/fep95ae/TMP/postgres/lib',--enable-new-dtags -lecpg -lpgtypes -lpq -lpgcommon -lpgport -lselinux -lxslt -lxml2 -lpam -lssl -lcrypto -lgssapi_krb5 -lz -ledit -lrt -lcrypt -ldl -lm -g -o unicode
+
+
diff --git a/src/interfaces/ecpg/test/unicode/utext.pgc b/src/interfaces/ecpg/test/unicode/utext.pgc
new file mode 100755
index 0000000..411de30
--- /dev/null
+++ b/src/interfaces/ecpg/test/unicode/utext.pgc
@@ -0,0 +1,1477 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <wchar.h>
+EXEC SQL INCLUDE ../regression;
+
+#define test(msg) printf("\n%s\n",msg)
+#define VAR_SIZE 20
+#define ARRAY_SIZE 4
+#define P_VAR_SIZE 22
+
+
+/* Following is UTF8 and UTF16/UTF32 characters mapping table */
+/*太𠮷𠜱平洋𠱓大西洋印度洋北冰洋
+utf16
+0x592A 0xD842 0xDFB7 0xD841 0xDF31 0x5E73 0x6D0B 0xD843
+0xDC53 0x5927 0x897F 0x6D0B 0x5370 0x5EA6 0x6D0B 0x5317
+0x51B0 0x6D0B 0x0000,0x0000
+
+utf32
+0x592A 0x20BB7 0x20731 0x5E73 0x6D0B 0x20C53 0x5927 0x897F
+0x6D0B 0x5370 0x5EA6 0x6D0B 0x5317 0x51B0 0x6D0B
+*/
+
+/*足球篮球羽毛球乒乓球橄榄球棒球冰球
+utf16
+0x8DB3,0x7403,0x7BEE,0x7403,0x7FBD,0x6BDB,0x7403,0x4E52,
+0x4E53,0x7403,0x6A44,0x6984,0x7403,0x68D2,0x7403,0x51B0,
+0x7403,0x0000,0x0000,0x0000
+
+utf32
+0x8DB3 0x7403 0x7BEE 0x7403 0x7FBD 0x6BDB 0x7403 0x4E52
+0x4E53 0x7403 0x6A44 0x6984 0x7403 0x68D2 0x7403 0x51B0
+0x7403
+*/
+
+/*世界杯每隔四年就会举行一次每次𠲖个球队
+utf16
+0x4E16 0x754C 0x676F 0x6BCF 0x9694 0x56DB 0x5E74 0x5C31
+0x4F1A 0x4E3E 0x884C 0x4E00 0x6B21 0x6BCF 0x6B21 0xD843
+0xDC96 0x4E2A 0x7403 0x961F
+
+utf32
+0x4E16 0x754C 0x676F 0x6BCF 0x9694 0x56DB 0x5E74 0x5C31
+0x4F1A 0x4E3E 0x884C 0x4E00 0x6B21 0x6BCF 0x6B21 0x20C96
+0x4E2A 0x7403 0x961F
+*/
+
+/* 亚洲欧洲非洲大洋洲北美洲南美洲南极洲没有北极洲
+0x4E9A,0x6D32,0x6B27,0x6D32,0x975E,0x6D32,0x5927,0x6D0B,
+0x6D32,0x5317,0x7F8E,0x6D32,0x5357,0x7F8E,0x6D32,0x5357,
+0x6781,0x6D32,0x6CA1,0x6709,0x5317,0x6781,0x6D32
+*/
+/* 太𠮷
+0x592A 0xD842 0xDFB7
+*/
+void init_var(void);
+void test_var_1(void);
+void test_var_2(void);
+void test_var_3(void);
+void test_var_4(void);
+void test_var_5(void);
+void test_var_6(void);
+void test_var_7(void);
+void test_var_8(void);
+void test_var_9(void);
+void test_var_10(void);
+void test_var_11(void);
+void test_var_12(void);
+void test_var_13(void);
+void test_var_14(void);
+void test_var_15(void);
+void test_var_16(void);
+void test_array_1(void);
+void test_array_2(void);
+void test_array_3(void);
+void test_array_4(void);
+void test_array_5(void);
+void test_array_6(void);
+void test_array_7(void);
+void test_array_8(void);
+void test_array_9(void);
+void test_array_10(void);
+void test_array_11(void);
+void test_array_12(void);
+void test_array_13(void);
+void test_array_14(void);
+void test_array_15(void);
+void test_array_16(void);
+void test_pvar_1(void);
+void test_pvar_2(void);
+void test_pvar_3(void);
+void test_pvar_4(void);
+void test_pvar_5(void);
+void test_pvar_6(void);
+void test_pvar_7(void);
+void test_pvar_8(void);
+void test_pvar_9(void);
+void test_pvar_10(void);
+void test_pvar_11(void);
+void test_pvar_12(void);
+void test_pvar_13(void);
+void test_pvar_14(void);
+void test_pvar_15(void);
+void test_pvar_16(void);
+void test_pvar_17(void);
+void test_pvar_18(void);
+void test_pvar_19(void);
+void test_pp_var_1(void);
+void test_pp_var_2(void);
+void test_pp_var_3(void);
+void test_desc_1(void);
+void test_all(void);
+
+void print_utext(utext *utext_var);
+void print_utext_str(utext *utext_var);
+void print_utext_ind(int utext_var_ind);
+void print_utext_size(utext *utext_var,int size);
+void print_array(void *array, int array_size, int var_size);
+void print_array_with_index(int index);
+int test_init(void);
+void test_finish(void);
+void init_table_value(void);
+
+EXEC SQL BEGIN DECLARE SECTION;
+ int utext_var_size = 20;
+ int utext_array_size = 4;
+ int count=0;
+ int total_tuples = 0;
+ int i;
+ char char_var[10]={0xF0,0x90,0x90,0xB7};
+
+ utext utext_var[VAR_SIZE];
+ utext utext_array[ARRAY_SIZE][VAR_SIZE];
+ utext utext_input_var[20]={0x592a,0xd842, 0xdfb7, 0x0000};
+ utext *p_utext_var = NULL;
+
+
+ int utext_var_ind;
+ int count_array[4]={1,2,3,4};
+
+EXEC SQL END DECLARE SECTION;
+
+void print_utext(utext *utext_var)
+{
+ int i;
+ printf("======print utext_var content======\n");
+ for(i=0; i<VAR_SIZE; i++)
+ {
+ printf ("0x%08X ", utext_var[i]);
+ if(i>6 && (i+1)%8==0)
+ printf("\n");
+ }
+ printf("\n======End utext_var content======\n");
+}
+
+void print_utext_str(utext *utext_var)
+{
+ int i=0;
+ printf("======print utext_var_str content======\n");
+ if (utext_var==0)
+ {
+ printf("utext_var is NULL\n");
+ printf("\n======End utext_var_str content======\n");
+ return;
+ }
+ while(utext_var[i] != 0)
+ {
+ printf ("0x%08X ", utext_var[i]);
+ if(i>6 && (i+1)%8==0)
+ printf("\n");
+ i++;
+ if(i>100)
+ break;
+ }
+ printf("\n======End utext_var_str content======\n");
+}
+
+void print_utext_size(utext *utext_var,int size)
+{
+ int i;
+ printf("======print utext_var content======\n");
+ for(i=0; i<size; i++)
+ {
+ printf ("0x%08X ", utext_var[i]);
+ if(i>6 && (i+1)%8==0)
+ printf("\n");
+ }
+ printf("\n======End utext_var content======\n");
+}
+
+void print_utext_ind(int utext_var_ind)
+{
+ printf("utext_var_ind = %d\n",utext_var_ind);
+}
+void print_array(void *array, int array_size, int var_size)
+{
+ int i,j;
+
+ for(i=0; i<array_size; i++)
+ {
+ utext *utext_array = &((utext*)array)[i*var_size];
+
+ printf ("---->array[%d]:\n", i);
+
+ for(j=0; j<var_size; j++)
+ {
+ printf ("0x%08X ", utext_array[j]);
+ if(j>6 && (j+1)%8==0)
+ printf("\n");
+ }
+ printf("\n");
+ }
+
+ printf("\n");
+}
+
+int test_init()
+{
+ p_utext_var = (utext*)malloc(P_VAR_SIZE*sizeof(utext));
+ if(!p_utext_var)
+ {
+ printf("Error: failed allco memory for p_utext_var. \n");
+ return -1;
+ }
+
+ EXEC SQL CONNECT TO REGRESSDB1;
+
+ EXEC SQL SET AUTOCOMMIT TO ON;
+ EXEC SQL WHENEVER SQLWARNING SQLPRINT;
+ EXEC SQL WHENEVER SQLERROR SQLPRINT;
+
+ EXEC SQL SET client_encoding='UTF8';
+
+ //initialization of test table
+ EXEC SQL CREATE TABLE IF NOT EXISTS tb1 (Item varchar, Count integer);
+
+ init_table_value();
+
+ return 0;
+}
+
+void test_finish()
+{
+ EXEC SQL DROP TABLE tb1;
+ EXEC SQL DISCONNECT ALL;
+}
+
+void init_table_value()
+{
+ EXEC SQL TRUNCATE tb1;
+
+ EXEC SQL INSERT INTO tb1 VALUES ('太𠮷𠜱平洋𠱓大西洋印度洋北冰洋', 1);
+ EXEC SQL INSERT INTO tb1 VALUES ('足球篮球羽毛球乒乓球橄榄球棒球冰球', 2);
+ EXEC SQL INSERT INTO tb1 VALUES ('世界杯每隔四年就会举行一次每次𠲖个球队', 3);
+ EXEC SQL INSERT INTO tb1 VALUES ('亚洲欧洲非洲大洋洲北美洲南美洲南极洲没有北极洲', 4);
+ EXEC SQL INSERT INTO tb1 (Count) VALUES(8);
+ EXEC SQL INSERT INTO tb1 (Count) VALUES(9);
+ EXEC SQL INSERT INTO tb1 (Count) VALUES(10);
+}
+
+void init_var()
+{
+ count = 0;
+ memset(utext_var,'a',sizeof(utext_var));
+ memset(utext_array,'a',sizeof(utext_array));
+ memset(p_utext_var,'a',P_VAR_SIZE*sizeof(utext));
+}
+
+//simple select into utext var
+void test_var_1()
+{
+ test("test_var_1: simple select into utext var");
+ init_var();
+
+ EXEC SQL SELECT Item INTO :utext_var:utext_var_ind FROM tb1 WHERE Count=1;
+ print_utext(utext_var);
+ print_utext_ind(utext_var_ind);
+ init_var();
+
+ EXEC SQL SELECT Item INTO :utext_var:utext_var_ind FROM tb1 WHERE Count=2;
+ print_utext(utext_var);
+ print_utext_ind(utext_var_ind);
+ init_var();
+
+ EXEC SQL SELECT Item INTO :utext_var:utext_var_ind FROM tb1 WHERE Count=3;
+ print_utext(utext_var);
+ print_utext_ind(utext_var_ind);
+ init_var();
+
+ EXEC SQL SELECT Item INTO :utext_var:utext_var_ind FROM tb1 WHERE Count=4;
+ print_utext(utext_var);
+ print_utext_ind(utext_var_ind);
+ init_var();
+}
+
+
+//simple select using utext var
+void test_var_2()
+{
+ test("test_var_2: simple select using utext var");
+ init_var();
+
+ count = 0;
+ EXEC SQL SELECT Item INTO :utext_var FROM tb1 WHERE Count=1;
+ EXEC SQL SELECT Count INTO :count FROM tb1 WHERE Item=:utext_var;
+ printf ("count=%d for '太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'\n", count);
+
+ count = 0;
+ EXEC SQL SELECT Item INTO :utext_var FROM tb1 WHERE Count=3;
+ EXEC SQL SELECT Count INTO :count FROM tb1 WHERE Item=:utext_var;
+ printf ("count=%d for '世界杯每隔四年就会举行一次每次𠲖个球队'\n", count);
+}
+
+//simple update using utext var
+void test_var_3()
+{
+ test("test_var_3: simple update using utext var");
+ init_var();
+
+ EXEC SQL SELECT Item INTO :utext_var FROM tb1 WHERE Count=1;
+ EXEC SQL UPDATE tb1 SET Item=:utext_var WHERE Count=2;
+ EXEC SQL UPDATE tb1 SET Item=:utext_var WHERE Count=3;
+ EXEC SQL SELECT count(*) INTO :count FROM tb1 WHERE Item='太𠮷𠜱平洋𠱓大西洋印度洋北冰洋';
+ printf ("found %d rows for Item='太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'\n", count);
+
+ init_table_value();
+}
+
+//simple delete using utext var
+void test_var_4()
+{
+ test("test_var_4 : simple delete using utext var");
+ init_var();
+
+ EXEC SQL SELECT Item INTO :utext_var FROM tb1 WHERE Count=1;
+ EXEC SQL DELETE FROM tb1 WHERE Item=:utext_var;
+ EXEC SQL SELECT count(*) INTO :count FROM tb1 WHERE Item='太𠮷𠜱平洋𠱓大西洋印度洋北冰洋';
+ printf ("found %d rows for Item='太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'\n", count);
+
+ EXEC SQL SELECT Item INTO :utext_var FROM tb1 WHERE Count=3;
+ EXEC SQL DELETE FROM tb1 WHERE Item=:utext_var;
+ EXEC SQL SELECT count(*) INTO :count FROM tb1 WHERE Item='世界杯每隔四年就会举行一次每次𠲖个球队';
+ printf ("found %d rows for Item='世界杯每隔四年就会举行一次每次𠲖个球队'\n", count);
+
+ init_table_value();
+}
+
+//simple insert using utext var
+void test_var_5()
+{
+ test("test_var_5 : simple insert using utext");
+ init_var();
+
+ EXEC SQL SELECT Item INTO :utext_var FROM tb1 WHERE Count=1;
+ EXEC SQL INSERT INTO tb1 values (:utext_var, 11);
+ EXEC SQL SELECT count(*) INTO :count FROM tb1 WHERE Item='太𠮷𠜱平洋𠱓大西洋印度洋北冰洋';
+ printf ("found %d rows for Item='太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'\n", count);
+
+ init_var();
+ EXEC SQL SELECT Item INTO :utext_var FROM tb1 WHERE Count=3;
+ EXEC SQL INSERT INTO tb1 values (:utext_var, 13);
+ EXEC SQL SELECT count(*) INTO :count FROM tb1 WHERE Item='世界杯每隔四年就会举行一次每次𠲖个球队';
+ printf ("found %d rows for Item='世界杯每隔四年就会举行一次每次𠲖个球队'\n", count);
+
+ init_table_value();
+}
+
+//prepared select into utext var
+void test_var_6()
+{
+ test("test_var_6 : prepared select into utext var");
+ init_var();
+
+ EXEC SQL PREPARE stmt FROM "SELECT Item FROM tb1 WHERE Count=?";
+
+ EXEC SQL EXECUTE stmt INTO :utext_var USING 1;
+ print_utext(utext_var);
+
+ EXEC SQL EXECUTE stmt INTO :utext_var USING 3;
+ print_utext(utext_var);
+
+ EXEC SQL DEALLOCATE PREPARE stmt;
+}
+
+//prepared select using utext var
+void test_var_7()
+{
+ test("test_var_7 : prepared select using utext var");
+ init_var();
+
+ EXEC SQL SELECT Item INTO :utext_var FROM tb1 WHERE Count=3;
+
+ EXEC SQL PREPARE stmt FROM "SELECT Count FROM tb1 WHERE Item=?";
+ EXEC SQL EXECUTE stmt INTO :count USING :utext_var;
+
+ printf ("count=%d for Item='世界杯每隔四年就会举行一次每次𠲖个球队'\n", count);
+ EXEC SQL DEALLOCATE PREPARE stmt;
+}
+
+//prepared update using utext var
+void test_var_8()
+{
+ test("test_var_8 : prepared update using utext var");
+ init_var();
+
+ EXEC SQL SELECT Item INTO :utext_var FROM tb1 WHERE Count=3;
+
+ EXEC SQL PREPARE stmt FROM "UPDATE tb1 SET Item=? WHERE Count=?";
+ EXEC SQL EXECUTE stmt USING :utext_var, 1;
+ EXEC SQL EXECUTE stmt USING :utext_var, 2;
+ EXEC SQL SELECT count(*) INTO :count FROM tb1 WHERE Item='世界杯每隔四年就会举行一次每次𠲖个球队';
+
+ printf ("found %d rows for Item='世界杯每隔四年就会举行一次每次𠲖个球队'\n", count);
+ EXEC SQL DEALLOCATE PREPARE stmt;
+
+ init_table_value();
+}
+
+//prepared delete using utext var
+void test_var_9()
+{
+ test("test_var_9 : prepared delete using utext var");
+ init_var();
+
+ EXEC SQL SELECT Item INTO :utext_var FROM tb1 WHERE Count=3;
+
+ EXEC SQL PREPARE stmt FROM "DELETE FROM tb1 WHERE Item=?";
+ EXEC SQL EXECUTE stmt USING :utext_var;
+ EXEC SQL SELECT count(*) INTO :count FROM tb1 WHERE Item='世界杯每隔四年就会举行一次每次𠲖个球队';
+
+ printf ("found %d rows for Item='世界杯每隔四年就会举行一次每次𠲖个球队'\n", count);
+ EXEC SQL DEALLOCATE PREPARE stmt;
+
+ init_table_value();
+}
+
+//prepared insert using utext var
+void test_var_10()
+{
+ test("test_var_10 : prepared insert using utext var");
+ init_var();
+
+ EXEC SQL SELECT Item INTO :utext_var FROM tb1 WHERE Count=3;
+
+ EXEC SQL PREPARE stmt FROM "INSERT INTO tb1 values (?, 13)";
+ EXEC SQL EXECUTE stmt USING :utext_var;
+ EXEC SQL SELECT count(*) INTO :count FROM tb1 WHERE Item='世界杯每隔四年就会举行一次每次𠲖个球队';
+
+ printf ("found %d rows for Item='世界杯每隔四年就会举行一次每次𠲖个球队'\n", count);
+ EXEC SQL DEALLOCATE PREPARE stmt;
+
+ init_table_value();
+}
+
+//Open cursor using utext var
+void test_var_11()
+{
+ test("test_var_11 : Open cursor using utext var");
+ init_var();
+
+ EXEC SQL SET AUTOCOMMIT TO OFF;
+ EXEC SQL SELECT Item INTO :utext_var FROM tb1 WHERE Count=3;
+
+ EXEC SQL PREPARE stmt FROM "SELECT Count FROM tb1 WHERE Item=?";
+ EXEC SQL DECLARE cursor_var_11 CURSOR FOR stmt;
+ EXEC SQL OPEN cursor_var_11 USING :utext_var;
+ EXEC SQL FETCH cursor_var_11 INTO :count;
+ printf ("count=%d for Item='世界杯每隔四年就会举行一次每次𠲖个球队'\n", count);
+ EXEC SQL CLOSE cursor_var_11;
+ EXEC SQL DEALLOCATE PREPARE stmt;
+ EXEC SQL SET AUTOCOMMIT TO ON;
+}
+
+//Fecth cursor into utext var
+void test_var_12()
+{
+ test("test_var_12 : Fecth cursor into utext var");
+ init_var();
+
+ EXEC SQL SET AUTOCOMMIT TO OFF;
+ EXEC SQL PREPARE stmt FROM "SELECT Item FROM tb1 WHERE Count=1";
+ EXEC SQL DECLARE cursor_var_12 CURSOR FOR stmt;
+ EXEC SQL OPEN cursor_var_12;
+ EXEC SQL FETCH cursor_var_12 INTO :utext_var;
+ EXEC SQL CLOSE cursor_var_12;
+
+ print_utext(utext_var);
+
+ EXEC SQL DEALLOCATE PREPARE stmt;
+ EXEC SQL SET AUTOCOMMIT TO ON;
+}
+
+//simple insert utext var with L string inited
+void test_var_13()
+{
+EXEC SQL BEGIN DECLARE SECTION;
+ utext utext_local_var[]=L"足球篮球羽毛球";
+EXEC SQL END DECLARE SECTION;
+ test("test_var_13 : simple insert utext var with L string inited");
+ init_var();
+
+ print_utext_str(utext_local_var);
+
+ EXEC SQL INSERT INTO tb1 values (:utext_local_var, 16);
+
+ EXEC SQL SELECT Item INTO :utext_var:utext_var_ind FROM tb1 WHERE Count=16;
+ print_utext(utext_var);
+ print_utext_ind(utext_var_ind);
+ init_var();
+ init_table_value();
+}
+
+//Open cursor using utext var directly in WHERE Clause
+void test_var_14()
+{
+EXEC SQL BEGIN DECLARE SECTION;
+ utext utext_local_var[20+1];
+EXEC SQL END DECLARE SECTION;
+ memset(utext_local_var,'a',sizeof(utext_local_var));
+
+ test("test_var_14 : Open cursor using utext var directly in WHERE Clause");
+ init_var();
+
+ EXEC SQL SET AUTOCOMMIT TO OFF;
+ EXEC SQL SELECT Item INTO :utext_local_var FROM tb1 WHERE Count=3;
+ EXEC SQL DECLARE cursor_var_14 CURSOR FOR SELECT Count FROM tb1 WHERE Item=:utext_local_var;
+ EXEC SQL OPEN cursor_var_14;
+ EXEC SQL FETCH cursor_var_14 INTO :count;
+ printf ("count=%d for Item='世界杯每隔四年就会举行一次每次𠲖个球队'\n", count);
+
+ EXEC SQL CLOSE cursor_var_14;
+
+ EXEC SQL SET AUTOCOMMIT TO ON;
+}
+
+//Test utext_var working with NULL without indicator
+void test_var_15()
+{
+EXEC SQL BEGIN DECLARE SECTION;
+ utext utext_local_var[20+1];
+EXEC SQL END DECLARE SECTION;
+ test("test_var_15 : Test utext_var working with NULL without indicator");
+
+ memset(utext_local_var,'a',sizeof(utext_local_var));
+ EXEC SQL SELECT Item INTO :utext_local_var FROM tb1 WHERE Count=8;
+ print_utext(utext_local_var);
+
+ memset(utext_local_var,0x00,sizeof(utext_local_var));
+ EXEC SQL INSERT INTO tb1 values (:utext_local_var, 18);
+ EXEC SQL INSERT INTO tb1 values (:utext_local_var, 19);
+ EXEC SQL INSERT INTO tb1 values (:utext_local_var, 20);
+ EXEC SQL SELECT count(*) INTO :count FROM tb1 WHERE Item is NULL;
+ printf ("found %d rows for Item being NULL\n", count);
+
+ init_table_value();
+}
+
+//utext_var working with NULL with indicator
+void test_var_16()
+{
+EXEC SQL BEGIN DECLARE SECTION;
+ utext utext_local_var[20+1];
+ int utext_var_ind=-1;
+EXEC SQL END DECLARE SECTION;
+ test("test_var_16 : Test utext_var working with NULL with indicator");
+
+ memset(utext_local_var,'a',sizeof(utext_local_var));
+ EXEC SQL SELECT Item INTO :utext_local_var:utext_var_ind FROM tb1 WHERE Count=8;
+ print_utext(utext_local_var);
+ print_utext_ind(utext_var_ind);
+
+ memset(utext_local_var,0x00,sizeof(utext_local_var));
+ EXEC SQL INSERT INTO tb1 values (:utext_local_var:utext_var_ind, 18);
+ EXEC SQL INSERT INTO tb1 values (:utext_local_var:utext_var_ind, 19);
+ EXEC SQL INSERT INTO tb1 values (:utext_local_var:utext_var_ind, 20);
+ EXEC SQL SELECT count(*) INTO :count FROM tb1 WHERE Item is NULL;
+ printf ("found %d rows for Item being NULL\n", count);
+
+ init_table_value();
+}
+
+
+//simple select into utext array
+void test_array_1()
+{
+ test("test_array_1 : simple select into utext array ");
+ init_var();
+
+ EXEC SQL SELECT Item INTO :utext_array FROM tb1 WHERE Count<=3;
+
+ print_array(utext_array,ARRAY_SIZE,VAR_SIZE);
+ init_var();
+
+ EXEC SQL SELECT Item INTO :utext_array[0] FROM tb1 WHERE Count=1;
+ print_array(utext_array,ARRAY_SIZE,VAR_SIZE);
+ init_var();
+}
+
+//simple select using utext array
+void test_array_2()
+{
+ test("test_array_2 : simple select using array");
+ init_var();
+
+ EXEC SQL SELECT Item INTO :utext_array FROM tb1 WHERE Count<=3;
+
+ count = 0;
+ EXEC SQL SELECT Count INTO :count FROM tb1 WHERE Item=:utext_array[0];
+ printf ("count=%d for '太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'\n", count);
+
+ count = 0;
+ EXEC SQL SELECT Count INTO :count FROM tb1 WHERE Item=:utext_array[2];
+ printf ("count=%d for '世界杯每隔四年就会举行一次每次𠲖个球队'\n", count);
+}
+
+//simple update using utext array
+void test_array_3()
+{
+ test("test_array_3 : simple update using utext array");
+ init_var();
+
+ EXEC SQL SELECT Item INTO :utext_array FROM tb1 WHERE Count<=3;
+
+ EXEC SQL UPDATE tb1 SET Item=:utext_array[2] WHERE Count=1;
+
+ count = 0;
+ EXEC SQL SELECT count(*) INTO :count FROM tb1 WHERE Item='太𠮷𠜱平洋𠱓大西洋印度洋北冰洋';
+ printf ("find %d rows for Item='太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'\n", count);
+
+ count = 0;
+ EXEC SQL SELECT count(*) INTO :count FROM tb1 WHERE Item='世界杯每隔四年就会举行一次每次𠲖个球队';
+ printf ("find %d rows for Item='世界杯每隔四年就会举行一次每次𠲖个球队'\n", count);
+
+ init_table_value();
+}
+
+//simple delete using utext array
+void test_array_4()
+{
+ test("test_array_4 : simple delete using utext array");
+ init_var();
+
+ EXEC SQL SELECT Item INTO :utext_array FROM tb1 WHERE Count<=3;
+
+ count = 100;
+ EXEC SQL DELETE FROM tb1 WHERE Item=:utext_array[0];
+ EXEC SQL SELECT count(*) INTO :count FROM tb1 WHERE Item='太𠮷𠜱平洋𠱓大西洋印度洋北冰洋';
+ printf ("found %d rows for Item='太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'\n", count);
+
+ count = 100;
+ EXEC SQL DELETE FROM tb1 WHERE Item=:utext_array[2];
+ EXEC SQL SELECT count(*) INTO :count FROM tb1 WHERE Item='世界杯每隔四年就会举行一次每次𠲖个球队';
+ printf ("found %d rows for Item='世界杯每隔四年就会举行一次每次𠲖个球队'\n", count);
+
+ init_table_value();
+}
+
+//simple insert using utext array
+void test_array_5()
+{
+ test("test_array_5 : simple insert using utext array");
+ init_var();
+
+ EXEC SQL SELECT Item INTO :utext_array FROM tb1 WHERE Count<=3;
+
+ EXEC SQL INSERT INTO tb1 values (:utext_array[0], 11);
+ EXEC SQL SELECT count(*) INTO :count FROM tb1 WHERE Item='太𠮷𠜱平洋𠱓大西洋印度洋北冰洋';
+ printf ("found %d rows for Item='太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'\n", count);
+
+ EXEC SQL INSERT INTO tb1 values (:utext_array[2], 13);
+ EXEC SQL SELECT count(*) INTO :count FROM tb1 WHERE Item='世界杯每隔四年就会举行一次每次𠲖个球队';
+ printf ("found %d rows for Item='世界杯每隔四年就会举行一次每次𠲖个球队'\n", count);
+
+ init_table_value();
+}
+
+//prepared select into utext array
+void test_array_6()
+{
+ test("test_array_6 : prepared select into utext array");
+ init_var();
+
+ EXEC SQL PREPARE stmt FROM "SELECT Item FROM tb1 WHERE Count<=?";
+
+ EXEC SQL EXECUTE stmt INTO :utext_array USING 4;
+
+ print_array(utext_array,ARRAY_SIZE,VAR_SIZE);
+
+ EXEC SQL DEALLOCATE PREPARE stmt;
+}
+
+//prepared select using utext array
+void test_array_7()
+{
+ test("test_array_7 : prepared select using utext array");
+ init_var();
+ EXEC SQL SELECT Item INTO :utext_array FROM tb1 WHERE Count<=3;
+
+ count = 0;
+ EXEC SQL PREPARE stmt FROM "SELECT Count FROM tb1 WHERE Item=?";
+ EXEC SQL EXECUTE stmt INTO :count USING :utext_array[0];
+
+ printf ("count=%d for Item='世界杯每隔四年就会举行一次每次𠲖个球队'\n", count);
+ EXEC SQL DEALLOCATE PREPARE stmt;
+}
+
+//prepared update using utext array
+void test_array_8()
+{
+ test("test_array_8 : prepared update using utext array");
+ init_var();
+ EXEC SQL SELECT Item INTO :utext_array FROM tb1 WHERE Count<=3;
+
+ EXEC SQL PREPARE stmt FROM "UPDATE tb1 SET Item=? WHERE Count=?";
+ EXEC SQL EXECUTE stmt USING :utext_array[0], 2;
+ EXEC SQL EXECUTE stmt USING :utext_array[0], 3;
+ EXEC SQL SELECT count(*) INTO :count FROM tb1 WHERE Item='太𠮷𠜱平洋𠱓大西洋印度洋北冰洋';
+
+ printf ("found %d rows for Item='太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'\n", count);
+ EXEC SQL DEALLOCATE PREPARE stmt;
+
+ init_table_value();
+}
+
+//prepared delete using utext array
+void test_array_9()
+{
+ test("test_array_9 : prepared delete using utext array");
+ init_var();
+ EXEC SQL SELECT Item INTO :utext_array FROM tb1 WHERE Count<=3;
+
+ count = 0;
+ EXEC SQL PREPARE stmt FROM "DELETE FROM tb1 WHERE Item=?";
+ EXEC SQL EXECUTE stmt USING :utext_array[0];
+ EXEC SQL SELECT count(*) INTO :count FROM tb1 WHERE Item='太𠮷𠜱平洋𠱓大西洋印度洋北冰洋';
+
+ printf ("found %d rows for Item='太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'\n", count);
+ EXEC SQL DEALLOCATE PREPARE stmt;
+
+ init_table_value();
+}
+
+//prepared insert using utext array
+void test_array_10()
+{
+ test("test_array_10 : prepared insert using utext array");
+ init_var();
+ EXEC SQL SELECT Item INTO :utext_array FROM tb1 WHERE Count<=3;
+
+ EXEC SQL PREPARE stmt FROM "INSERT INTO tb1 values (?, ?)";
+ EXEC SQL EXECUTE stmt USING :utext_array[2], 13;
+ EXEC SQL EXECUTE stmt USING :utext_array[2], 15;
+ EXEC SQL SELECT count(*) INTO :count FROM tb1 WHERE Item='世界杯每隔四年就会举行一次每次𠲖个球队';
+
+ printf ("found %d rows for Item='世界杯每隔四年就会举行一次每次𠲖个球队'\n", count);
+ EXEC SQL DEALLOCATE PREPARE stmt;
+
+ init_table_value();
+}
+
+//Open cursor using utext array
+void test_array_11()
+{
+ test("test_array_11 : Open cursor using utext array");
+ init_var();
+
+ EXEC SQL SET AUTOCOMMIT TO OFF;
+ EXEC SQL SELECT Item INTO :utext_array FROM tb1 WHERE Count<=3;
+
+ EXEC SQL PREPARE stmt FROM "SELECT Count FROM tb1 WHERE Item=?";
+ EXEC SQL DECLARE cursor_array_11 CURSOR FOR stmt;
+ EXEC SQL OPEN cursor_array_11 USING :utext_array[2];
+ EXEC SQL FETCH cursor_array_11 INTO :count;
+ printf ("count=%d for Item='世界杯每隔四年就会举行一次每次𠲖个球队'\n", count);
+ EXEC SQL CLOSE cursor_array_11;
+ EXEC SQL DEALLOCATE PREPARE stmt;
+ EXEC SQL SET AUTOCOMMIT TO ON;
+}
+
+//Fecth cursor into utext array
+void test_array_12()
+{
+ test("test_array_12 : Fecth cursor into utext array");
+ init_var();
+
+ EXEC SQL SET AUTOCOMMIT TO OFF;
+ EXEC SQL PREPARE stmt FROM "SELECT Item FROM tb1 WHERE Count<=3";
+ EXEC SQL DECLARE cursor_array_12 CURSOR FOR stmt;
+ EXEC SQL OPEN cursor_array_12;
+ EXEC SQL FETCH cursor_array_12 INTO :utext_array[0];
+ EXEC SQL FETCH cursor_array_12 INTO :utext_array[1];
+ EXEC SQL FETCH cursor_array_12 INTO :utext_array[2];
+ EXEC SQL CLOSE cursor_array_12;
+
+ print_array(utext_array,ARRAY_SIZE,VAR_SIZE);
+
+ EXEC SQL DEALLOCATE PREPARE stmt;
+ EXEC SQL SET AUTOCOMMIT TO ON;
+}
+
+//Insert array with L string inited
+void test_array_13()
+{
+EXEC SQL BEGIN DECLARE SECTION;
+ utext utext_array13[4][VAR_SIZE]={L"太𠮷𠜱平洋𠱓大西洋印度洋北冰洋",L"足球篮球羽毛球乒乓球橄榄球棒球冰球",L"世界杯每隔四年就会举行一次"};
+EXEC SQL END DECLARE SECTION;
+
+ test("test_array_13 : Insert array with L string inited");
+ init_var();
+
+
+ EXEC SQL INSERT INTO tb1 values (:utext_array13[0], 20);
+ EXEC SQL INSERT INTO tb1 values (:utext_array13[1], 21);
+ EXEC SQL INSERT INTO tb1 values (:utext_array13[2], 22);
+
+ init_var();
+ EXEC SQL SELECT Item INTO :utext_array FROM tb1 WHERE Count<=22 AND Count>=20;
+ print_array(utext_array,3,VAR_SIZE);
+ init_table_value();
+}
+
+//Open cursor using utext array directly in WHERE Clause
+void test_array_14()
+{
+EXEC SQL BEGIN DECLARE SECTION;
+ utext utext_local_array[4][20+1];
+EXEC SQL END DECLARE SECTION;
+
+ test("test_array_14 : Open cursor using utext array directly in WHERE Clause");
+ memset(utext_local_array,'a',sizeof(utext_local_array));
+
+ EXEC SQL SET AUTOCOMMIT TO OFF;
+ EXEC SQL SELECT Item INTO :utext_local_array FROM tb1 WHERE Count<=3;
+
+ EXEC SQL DECLARE cursor_array_14 CURSOR FOR SELECT Count FROM tb1 WHERE Item=:utext_local_array[2];
+ EXEC SQL OPEN cursor_array_14;
+ EXEC SQL FETCH cursor_array_14 INTO :count;
+ printf ("count=%d for Item='世界杯每隔四年就会举行一次每次𠲖个球队'\n", count);
+ EXEC SQL CLOSE cursor_array_14;
+
+ EXEC SQL SET AUTOCOMMIT TO ON;
+}
+
+
+//utext array working with NULL without using indicator
+void test_array_15()
+{
+EXEC SQL BEGIN DECLARE SECTION;
+ utext utext_local_array[3][20];
+EXEC SQL END DECLARE SECTION;
+ test("test_array_15 : Test utext array working with NULL without using indicator");
+ memset(utext_local_array,'a',sizeof(utext_local_array));
+
+ EXEC SQL SELECT Item INTO :utext_local_array FROM tb1 WHERE Count>=8 and Count<=10;
+
+ print_array((void**)utext_local_array,3,20);
+
+ memset(utext_local_array,0x00,sizeof(utext_local_array));
+ EXEC SQL INSERT INTO tb1 values (:utext_local_array[0], 18);
+ EXEC SQL INSERT INTO tb1 values (:utext_local_array[1], 19);
+ EXEC SQL INSERT INTO tb1 values (:utext_local_array[2], 20);
+ EXEC SQL SELECT count(*) INTO :count FROM tb1 WHERE Item is NULL;
+ printf ("found %d rows for Item being NULL\n", count);
+
+ init_table_value();
+}
+
+//utext array working with NULL using indicator
+void test_array_16()
+{
+EXEC SQL BEGIN DECLARE SECTION;
+ utext utext_local_array[3][20];
+ int utext_array_ind[3];
+EXEC SQL END DECLARE SECTION;
+ test("test_array_16 : Test utext array working with NULL using indicator");
+ memset(utext_local_array,'a',sizeof(utext_local_array));
+
+ EXEC SQL SELECT Item INTO :utext_local_array:utext_array_ind FROM tb1 WHERE Count>=8 and Count<=10;
+
+ print_array((void**)utext_local_array,3,20);
+ print_utext_ind(utext_array_ind[0]);
+ print_utext_ind(utext_array_ind[1]);
+ print_utext_ind(utext_array_ind[2]);
+
+ memset(utext_local_array,0x00,sizeof(utext_local_array));
+ utext_array_ind[0]=-1;
+ utext_array_ind[1]=-1;
+ utext_array_ind[2]=-1;
+ EXEC SQL INSERT INTO tb1 values (:utext_local_array[0]:utext_array_ind[0], 18);
+ EXEC SQL INSERT INTO tb1 values (:utext_local_array[1]:utext_array_ind[1], 19);
+ EXEC SQL INSERT INTO tb1 values (:utext_local_array[2]:utext_array_ind[2], 20);
+ EXEC SQL SELECT count(*) INTO :count FROM tb1 WHERE Item is NULL;
+ printf ("found %d rows for Item being NULL\n", count);
+
+ init_table_value();
+}
+
+
+//simple select into utext pointer
+void test_pvar_1()
+{
+ test("test_pvar_1 : simple select into utext pointer");
+ EXEC SQL SELECT Item INTO :p_utext_var:utext_var_ind FROM tb1 WHERE Count=1;
+ print_utext(p_utext_var);
+ print_utext_ind(utext_var_ind);
+ init_var();
+
+ EXEC SQL SELECT Item INTO :p_utext_var:utext_var_ind FROM tb1 WHERE Count=2;
+ print_utext(p_utext_var);
+ print_utext_ind(utext_var_ind);
+ init_var();
+
+ EXEC SQL SELECT Item INTO :p_utext_var:utext_var_ind FROM tb1 WHERE Count=3;
+ print_utext(p_utext_var);
+ print_utext_ind(utext_var_ind);
+ init_var();
+
+ EXEC SQL SELECT Item INTO :p_utext_var:utext_var_ind FROM tb1 WHERE Count=4;
+ print_utext(p_utext_var);
+ print_utext_ind(utext_var_ind);
+ init_var();
+
+ init_table_value();
+}
+
+
+//simple select using utext pointer
+void test_pvar_2()
+{
+ test("test_pvar_2 : simple select using utext pointer");
+ init_var();
+
+ EXEC SQL SELECT Item INTO :p_utext_var FROM tb1 WHERE Count=1;
+ EXEC SQL SELECT Count INTO :count FROM tb1 WHERE Item=:p_utext_var;
+ printf ("count=%d for '太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'\n", count);
+
+ init_var();
+ EXEC SQL SELECT Item INTO :p_utext_var FROM tb1 WHERE Count=3;
+ EXEC SQL SELECT Count INTO :count FROM tb1 WHERE Item=:p_utext_var;
+ printf ("count=%d for '世界杯每隔四年就会举行一次每次𠲖个球队'\n", count);
+}
+
+
+//simple update using utext pointer
+void test_pvar_3()
+{
+ test("test_pvar_3 : simple update using utext pointer");
+ init_var();
+
+ count = 0;
+ EXEC SQL SELECT Item INTO :p_utext_var FROM tb1 WHERE Count=1;
+ EXEC SQL UPDATE tb1 SET Item=:p_utext_var WHERE Count=2;
+ EXEC SQL UPDATE tb1 SET Item=:p_utext_var WHERE Count=3;
+ EXEC SQL SELECT count(*) INTO :count FROM tb1 WHERE Item='太𠮷𠜱平洋𠱓大西洋印度洋北冰洋';
+ printf ("found %d rows for Item='太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'\n", count);
+
+ init_table_value();
+}
+
+//simple delete using utext pointer
+void test_pvar_4()
+{
+ test("test_pvar_4 : simple delete using utext pointer");
+ init_var();
+
+ EXEC SQL SELECT Item INTO :p_utext_var FROM tb1 WHERE Count=1;
+ EXEC SQL DELETE FROM tb1 WHERE Item=:p_utext_var;
+ EXEC SQL SELECT count(*) INTO :count FROM tb1 WHERE Item='太𠮷𠜱平洋𠱓大西洋印度洋北冰洋';
+ printf ("found %d rows for Item='太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'\n", count);
+
+ init_var();
+ EXEC SQL SELECT Item INTO :p_utext_var FROM tb1 WHERE Count=3;
+ EXEC SQL DELETE FROM tb1 WHERE Item=:p_utext_var;
+ EXEC SQL SELECT count(*) INTO :count FROM tb1 WHERE Item='世界杯每隔四年就会举行一次每次𠲖个球队';
+ printf ("found %d rows for Item='世界杯每隔四年就会举行一次每次𠲖个球队'\n", count);
+
+ init_table_value();
+}
+
+//simple insert using utext pointer
+void test_pvar_5()
+{
+ test("test_pvar_5 : simple insert using utext pointer");
+ init_var();
+
+ EXEC SQL SELECT Item INTO :p_utext_var FROM tb1 WHERE Count=3;
+ EXEC SQL INSERT INTO tb1 values (:p_utext_var, 13);
+
+ EXEC SQL SELECT count(*) INTO :count FROM tb1 WHERE Item='世界杯每隔四年就会举行一次每次𠲖个球队';
+ printf ("found %d rows for Item='世界杯每隔四年就会举行一次每次𠲖个球队'\n", count);
+
+ init_table_value();
+}
+
+//prepared select into utext pointer
+void test_pvar_6()
+{
+ test("test_pvar_6 : prepared select into utext pointer");
+ init_var();
+
+ EXEC SQL PREPARE stmt FROM "SELECT Item FROM tb1 WHERE Count=?";
+
+ EXEC SQL EXECUTE stmt INTO :p_utext_var USING 1;
+ print_utext(p_utext_var);
+
+ init_var();
+ EXEC SQL EXECUTE stmt INTO :p_utext_var USING 3;
+ print_utext(p_utext_var);
+ init_table_value();
+
+ EXEC SQL DEALLOCATE PREPARE stmt;
+
+}
+
+//prepared select using utext pointer
+void test_pvar_7()
+{
+ test("test_pvar_7 : prepared select using utext pointer");
+ init_var();
+
+ EXEC SQL SELECT Item INTO :p_utext_var FROM tb1 WHERE Count=3;
+
+ EXEC SQL PREPARE stmt FROM "SELECT Count FROM tb1 WHERE Item=?";
+ EXEC SQL EXECUTE stmt INTO :count USING :p_utext_var;
+
+ printf ("count=%d for Item='世界杯每隔四年就会举行一次每次𠲖个球队'\n", count);
+ EXEC SQL DEALLOCATE PREPARE stmt;
+}
+
+//prepared update using utext pointer
+void test_pvar_8()
+{
+ test("test_pvar_8 : prepared update using utext pointer");
+ init_var();
+
+ EXEC SQL SELECT Item INTO :p_utext_var FROM tb1 WHERE Count=3;
+
+ EXEC SQL PREPARE stmt FROM "UPDATE tb1 SET Item=? WHERE Count=?";
+ EXEC SQL EXECUTE stmt USING :p_utext_var, 1;
+ EXEC SQL EXECUTE stmt USING :p_utext_var, 2;
+ EXEC SQL SELECT count(*) INTO :count FROM tb1 WHERE Item='世界杯每隔四年就会举行一次每次𠲖个球队';
+
+ printf ("found %d rows for Item='世界杯每隔四年就会举行一次每次𠲖个球队'\n", count);
+ EXEC SQL DEALLOCATE PREPARE stmt;
+
+ init_table_value();
+}
+
+//prepared delete using utext pointer
+void test_pvar_9()
+{
+ test("test_pvar_9 : prepared delete using utext pointer");
+ init_var();
+
+ EXEC SQL SELECT Item INTO :p_utext_var FROM tb1 WHERE Count=3;
+
+ EXEC SQL PREPARE stmt FROM "DELETE FROM tb1 WHERE Item=?";
+ EXEC SQL EXECUTE stmt USING :p_utext_var;
+ EXEC SQL SELECT count(*) INTO :count FROM tb1 WHERE Item='世界杯每隔四年就会举行一次每次𠲖个球队';
+
+ printf ("found %d rows for Item='世界杯每隔四年就会举行一次每次𠲖个球队'\n", count);
+ EXEC SQL DEALLOCATE PREPARE stmt;
+
+ init_table_value();
+}
+
+//prepared insert using utext pointer
+void test_pvar_10()
+{
+ test("test_pvar_10 : prepared insert using utext pointer");
+ init_var();
+
+ EXEC SQL SELECT Item INTO :p_utext_var FROM tb1 WHERE Count=3;
+
+ EXEC SQL PREPARE stmt FROM "INSERT INTO tb1 values (?, 13)";
+ EXEC SQL EXECUTE stmt USING :p_utext_var;
+ EXEC SQL SELECT count(*) INTO :count FROM tb1 WHERE Item='世界杯每隔四年就会举行一次每次𠲖个球队';
+
+ printf ("found %d rows for Item='世界杯每隔四年就会举行一次每次𠲖个球队'\n", count);
+ EXEC SQL DEALLOCATE PREPARE stmt;
+
+ init_table_value();
+}
+
+//Open cursor using utext pointer
+void test_pvar_11()
+{
+ test("test_pvar_11 : Open cursor using utext pointer");
+ init_var();
+
+ EXEC SQL SET AUTOCOMMIT TO OFF;
+ EXEC SQL SELECT Item INTO :p_utext_var FROM tb1 WHERE Count=3;
+
+ EXEC SQL PREPARE stmt FROM "SELECT Count FROM tb1 WHERE Item=?";
+ EXEC SQL DECLARE cursor_pvar_11 CURSOR FOR stmt;
+ EXEC SQL OPEN cursor_pvar_11 USING :p_utext_var;
+ EXEC SQL FETCH cursor_pvar_11 INTO :count;
+ printf ("count=%d for Item='世界杯每隔四年就会举行一次每次𠲖个球队'\n", count);
+ EXEC SQL CLOSE cursor_pvar_11;
+ EXEC SQL DEALLOCATE PREPARE stmt;
+ EXEC SQL SET AUTOCOMMIT TO ON;
+}
+
+//Fecth cursor into utext pointer
+void test_pvar_12()
+{
+ test("test_pvar_12 : Fecth cursor into utext pointer");
+ init_var();
+
+ EXEC SQL SET AUTOCOMMIT TO OFF;
+ EXEC SQL PREPARE stmt FROM "SELECT Item FROM tb1 WHERE Count=1";
+ EXEC SQL DECLARE cursor_pvar_12 CURSOR FOR stmt;
+ EXEC SQL OPEN cursor_pvar_12;
+ EXEC SQL FETCH cursor_pvar_12 INTO :p_utext_var;
+ EXEC SQL CLOSE cursor_pvar_12;
+
+ print_utext(p_utext_var);
+
+ EXEC SQL DEALLOCATE PREPARE stmt;
+ EXEC SQL SET AUTOCOMMIT TO ON;
+}
+
+//simple insert utext pointer with L string inited
+void test_pvar_13()
+{
+EXEC SQL BEGIN DECLARE SECTION;
+ utext *utext_local_pvar=L"太𠮷𠜱平洋𠱓大西洋印度洋北冰洋";
+EXEC SQL END DECLARE SECTION;
+ test("test_pvar_13 : simple insert utext pointer with L string inited");
+ init_var();
+
+ EXEC SQL INSERT INTO tb1 values (:utext_local_pvar, 16);
+
+ EXEC SQL SELECT Item INTO :utext_var:utext_var_ind FROM tb1 WHERE Count=16;
+ print_utext(utext_var);
+ print_utext_ind(utext_var_ind);
+ init_var();
+ init_table_value();
+}
+
+//Open cursor using utext var directly in WHERE Clause
+void test_pvar_14()
+{
+EXEC SQL BEGIN DECLARE SECTION;
+ utext *utext_local_pvar;
+EXEC SQL END DECLARE SECTION;
+ utext_local_pvar = (utext*)malloc(P_VAR_SIZE*sizeof(utext));
+ memset(utext_local_pvar,'a',P_VAR_SIZE*sizeof(utext));
+
+ test("test_pvar_14 : Open cursor using utext var directly in WHERE Clause");
+ init_var();
+
+ EXEC SQL SET AUTOCOMMIT TO OFF;
+ EXEC SQL SELECT Item INTO :utext_local_pvar FROM tb1 WHERE Count=3;
+
+ EXEC SQL DECLARE cursor_pvar_14 CURSOR FOR SELECT Count FROM tb1 WHERE Item=:utext_local_pvar;
+ EXEC SQL OPEN cursor_pvar_14;
+ EXEC SQL FETCH cursor_pvar_14 INTO :count;
+ printf ("count=%d for Item='世界杯每隔四年就会举行一次每次𠲖个球队'\n", count);
+ EXEC SQL CLOSE cursor_pvar_14;
+
+ EXEC SQL SET AUTOCOMMIT TO ON;
+}
+
+
+//utext pointer working with NULL without using indicator
+void test_pvar_15()
+{
+EXEC SQL BEGIN DECLARE SECTION;
+ utext *utext_local_pvar;
+EXEC SQL END DECLARE SECTION;
+ utext_local_pvar = (utext*)malloc(P_VAR_SIZE*sizeof(utext));
+ memset(utext_local_pvar,'a',P_VAR_SIZE*sizeof(utext));
+
+ test("test_pvar_15 : Test utext pointer working with NULL without using indicator");
+
+ EXEC SQL SELECT Item INTO :utext_local_pvar FROM tb1 WHERE Count=8;
+
+ print_utext(utext_local_pvar);
+
+ EXEC SQL INSERT INTO tb1 values (:utext_local_pvar, 18);
+ EXEC SQL INSERT INTO tb1 values (:utext_local_pvar, 19);
+ EXEC SQL INSERT INTO tb1 values (:utext_local_pvar, 20);
+ EXEC SQL SELECT count(*) INTO :count FROM tb1 WHERE Item is NULL;
+ printf ("found %d rows for Item being NULL\n", count);
+
+ init_table_value();
+}
+
+//utext pointer working with NULL using indicator
+void test_pvar_16()
+{
+EXEC SQL BEGIN DECLARE SECTION;
+ utext *utext_local_pvar;
+ int utext_pvar_ind = -1;
+EXEC SQL END DECLARE SECTION;
+ utext_local_pvar = (utext*)malloc(P_VAR_SIZE*sizeof(utext));
+ memset(utext_local_pvar,'a',P_VAR_SIZE*sizeof(utext));
+
+ test("test_pvar_16 : Test utext pointer working with NULL using indicator");
+
+ EXEC SQL SELECT Item INTO :utext_local_pvar:utext_pvar_ind FROM tb1 WHERE Count=8;
+
+ print_utext(utext_local_pvar);
+ print_utext_ind(utext_pvar_ind);
+
+ memset(utext_local_pvar,0,P_VAR_SIZE*sizeof(utext));
+ EXEC SQL INSERT INTO tb1 values (:utext_local_pvar:utext_pvar_ind, 18);
+ EXEC SQL INSERT INTO tb1 values (:utext_local_pvar:utext_pvar_ind, 19);
+ EXEC SQL INSERT INTO tb1 values (:utext_local_pvar:utext_pvar_ind, 20);
+ EXEC SQL SELECT count(*) INTO :count FROM tb1 WHERE Item is NULL;
+ printf ("found %d rows for Item being NULL\n", count);
+
+ init_table_value();
+}
+
+//utext uninitialized pointer getting and setting data
+void test_pvar_17()
+{
+EXEC SQL BEGIN DECLARE SECTION;
+ utext *utext_local_pvar=0;
+ char local_str[50];
+EXEC SQL END DECLARE SECTION;
+
+ test("test_pvar_17 : Test utext uninitialized pointer getting and setting data");
+
+ EXEC SQL SELECT Item INTO :utext_local_pvar FROM tb1 WHERE Count=1;
+
+ print_utext_str(utext_local_pvar);
+
+ EXEC SQL INSERT INTO tb1 values (:utext_local_pvar, 18);
+ EXEC SQL SELECT Item INTO :local_str FROM tb1 WHERE Count=18;
+ printf ("Find Item = %s where Count=18\n", local_str);
+
+ init_table_value();
+}
+
+//utext uninitialized pointer working with NULL without using indicator
+void test_pvar_18()
+{
+EXEC SQL BEGIN DECLARE SECTION;
+ utext *utext_local_pvar=0;
+EXEC SQL END DECLARE SECTION;
+
+ test("test_pvar_18 : Test utext uninitialized pointer working with NULL without using indicator");
+
+ EXEC SQL SELECT Item INTO :utext_local_pvar FROM tb1 WHERE Count=8;
+
+ print_utext_size(utext_local_pvar,1);
+
+ EXEC SQL INSERT INTO tb1 values (:utext_local_pvar, 18);
+ EXEC SQL INSERT INTO tb1 values (:utext_local_pvar, 19);
+ EXEC SQL INSERT INTO tb1 values (:utext_local_pvar, 20);
+ EXEC SQL SELECT count(*) INTO :count FROM tb1 WHERE Item is NULL;
+ printf ("found %d rows for Item being NULL\n", count);
+
+ init_table_value();
+}
+
+//utext uninitialized pointer working with NULL using indicator
+void test_pvar_19()
+{
+EXEC SQL BEGIN DECLARE SECTION;
+ utext *utext_local_pvar=0;
+ int utext_pvar_ind = -1;
+EXEC SQL END DECLARE SECTION;
+
+ test("test_pvar_19 : Test utext uninitialized pointer working with NULL using indicator");
+
+ EXEC SQL SELECT Item INTO :utext_local_pvar:utext_pvar_ind FROM tb1 WHERE Count=8;
+
+ print_utext_size(utext_local_pvar,1);
+ print_utext_ind(utext_pvar_ind);
+
+ EXEC SQL INSERT INTO tb1 values (:utext_local_pvar:utext_pvar_ind, 18);
+ EXEC SQL INSERT INTO tb1 values (:utext_local_pvar:utext_pvar_ind, 19);
+ EXEC SQL INSERT INTO tb1 values (:utext_local_pvar:utext_pvar_ind, 20);
+ EXEC SQL SELECT count(*) INTO :count FROM tb1 WHERE Item is NULL;
+ printf ("found %d rows for Item being NULL\n", count);
+
+ init_table_value();
+}
+
+//Test select into host varaibles from descriptor
+void test_desc_1()
+{
+ EXEC SQL BEGIN DECLARE SECTION;
+ utext utext_local_var[20];
+ utext *utext_local_pvar=0;
+ utext **utext_local_ppvar=0;
+ char desc1[8] = "outdesc";
+ EXEC SQL END DECLARE SECTION;
+
+// ECPGdebug(1, stderr);
+
+ EXEC SQL ALLOCATE DESCRIPTOR indesc;
+ EXEC SQL ALLOCATE DESCRIPTOR :desc1;
+
+ EXEC SQL SELECT Item,Count INTO SQL DESCRIPTOR :desc1 FROM tb1 WHERE Count=1;
+
+ EXEC SQL GET DESCRIPTOR :desc1 VALUE 1 :utext_local_var = DATA;
+ print_utext(utext_local_var);
+
+ EXEC SQL GET DESCRIPTOR :desc1 VALUE 1 :utext_local_pvar = DATA;
+ print_utext_str(utext_local_pvar);
+
+
+ EXEC SQL SELECT Item,Count INTO SQL DESCRIPTOR :desc1 FROM tb1 WHERE Count<=3;
+ EXEC SQL GET DESCRIPTOR :desc1 VALUE 1 :utext_local_ppvar = DATA;
+ print_utext_str(utext_local_ppvar[0]);
+ print_utext_str(utext_local_ppvar[1]);
+ print_utext_str(utext_local_ppvar[2]);
+
+
+ EXEC SQL SELECT Item,Count INTO SQL DESCRIPTOR :desc1 FROM tb1 WHERE Count<=10 and Count>=8;
+ EXEC SQL GET DESCRIPTOR :desc1 VALUE 1 :utext_local_ppvar = DATA;
+ print_utext_str(utext_local_ppvar[0]);
+ print_utext_str(utext_local_ppvar[1]);
+ print_utext_str(utext_local_ppvar[2]);
+
+
+ EXEC SQL DEALLOCATE DESCRIPTOR indesc;
+ EXEC SQL DEALLOCATE DESCRIPTOR :desc1;
+}
+
+
+//Test uninitialized pointer to pointer utext_var without initialize
+void test_pp_var_1()
+{
+EXEC SQL BEGIN DECLARE SECTION;
+ utext **utext_local_ppvar=0;
+ int *utext_local_ppvar_ind=0;
+ char utext_local_char[80];
+EXEC SQL END DECLARE SECTION;
+ test("test_pp_var_1 : Test pointer to pointer utext_var without initialize");
+
+ //memset(utext_local_var,'a',sizeof(utext_local_var));
+ EXEC SQL SELECT Item INTO :utext_local_ppvar:utext_local_ppvar_ind FROM tb1 WHERE Count<=3;
+ print_utext_str(utext_local_ppvar[0]);
+ print_utext_ind(utext_local_ppvar_ind[0]);
+
+ print_utext_str(utext_local_ppvar[1]);
+ print_utext_ind(utext_local_ppvar_ind[1]);
+
+ print_utext_str(utext_local_ppvar[2]);
+ print_utext_ind(utext_local_ppvar_ind[2]);
+
+ EXEC SQL INSERT INTO tb1 values (:utext_local_ppvar[1], 28);
+ EXEC SQL SELECT Item INTO :utext_local_char FROM tb1 WHERE Count=28;
+ printf("%s\n",utext_local_char);
+
+ init_table_value();
+}
+
+
+//Test uninitialized pointer to pointer utext_var working with NULL without indicator
+void test_pp_var_2()
+{
+EXEC SQL BEGIN DECLARE SECTION;
+ utext **utext_local_ppvar=0;
+EXEC SQL END DECLARE SECTION;
+ test("test_pp_var_2 : Test uninitialized pointer to pointer utext_var working with NULL without indicator");
+
+ //memset(utext_local_var,'a',sizeof(utext_local_var));
+ EXEC SQL SELECT Item INTO :utext_local_ppvar FROM tb1 WHERE Count>=8 and Count<=10;
+ print_utext_str(utext_local_ppvar[0]);
+ print_utext_str(utext_local_ppvar[1]);
+ print_utext_str(utext_local_ppvar[2]);
+
+ EXEC SQL INSERT INTO tb1 values (:utext_local_ppvar[0], 18);
+ EXEC SQL INSERT INTO tb1 values (:utext_local_ppvar[1], 19);
+ EXEC SQL INSERT INTO tb1 values (:utext_local_ppvar[2], 20);
+ EXEC SQL SELECT count(*) INTO :count FROM tb1 WHERE Item is NULL;
+ printf ("found %d rows for Item being NULL\n", count);
+
+ init_table_value();
+}
+
+//Test uninitialized pointer to pointer utext_var working with NULL with indicator
+void test_pp_var_3()
+{
+EXEC SQL BEGIN DECLARE SECTION;
+ utext **utext_local_ppvar=0;
+ int *utext_local_ppvar_ind=0;
+EXEC SQL END DECLARE SECTION;
+ test("test_pp_var_2 : Test uninitialized pointer to pointer utext_var working with NULL without indicator");
+
+ //memset(utext_local_var,'a',sizeof(utext_local_var));
+ EXEC SQL SELECT Item INTO :utext_local_ppvar:utext_local_ppvar_ind FROM tb1 WHERE Count>=8 and Count<=10;
+ print_utext_str(utext_local_ppvar[0]);
+ print_utext_ind(utext_local_ppvar_ind[0]);
+
+ print_utext_str(utext_local_ppvar[1]);
+ print_utext_ind(utext_local_ppvar_ind[1]);
+
+ print_utext_str(utext_local_ppvar[2]);
+ print_utext_ind(utext_local_ppvar_ind[2]);
+
+ EXEC SQL INSERT INTO tb1 values (:utext_local_ppvar[0], 18);
+ EXEC SQL INSERT INTO tb1 values (:utext_local_ppvar[1], 19);
+ EXEC SQL INSERT INTO tb1 values (:utext_local_ppvar[2], 20);
+ EXEC SQL SELECT count(*) INTO :count FROM tb1 WHERE Item is NULL;
+ printf ("found %d rows for Item being NULL\n", count);
+
+ init_table_value();
+}
+
+void test_all()
+{
+ test_var_1();
+ test_var_2();
+ test_var_3();
+ test_var_4();
+ test_var_5();
+ test_var_6();
+ test_var_7();
+ test_var_8();
+ test_var_9();
+ test_var_10();
+ test_var_11();
+ test_var_12();
+ test_var_13();
+ test_var_14();
+ test_var_15();
+ test_var_16();
+ test_array_1();
+ test_array_2();
+ test_array_3();
+ test_array_4();
+ test_array_5();
+ test_array_6();
+ test_array_7();
+ test_array_8();
+ test_array_9();
+ test_array_10();
+ test_array_11();
+ test_array_12();
+ test_array_13();
+ test_array_14();
+ test_array_15();
+ test_array_16();
+ test_pvar_1();
+ test_pvar_2();
+ test_pvar_3();
+ test_pvar_4();
+ test_pvar_5();
+ test_pvar_6();
+ test_pvar_7();
+ test_pvar_8();
+ test_pvar_9();
+ test_pvar_10();
+ test_pvar_11();
+ test_pvar_12();
+ test_pvar_13();
+ test_pvar_14();
+ test_pvar_15();
+ test_pvar_16();
+ test_pvar_17();
+ test_pvar_18();
+ test_pvar_19();
+ test_pp_var_1();
+ test_pp_var_2();
+ test_pp_var_3();
+}
+
+int main(int argc, char *argv[])
+{
+// ECPGdebug(1, stderr);
+ if(test_init() !=0)
+ return -1;
+
+ test_all();
+ test_finish();
+
+ return 0;
+}
diff --git a/src/interfaces/ecpg/test/unicode/utext.sh b/src/interfaces/ecpg/test/unicode/utext.sh
new file mode 100755
index 0000000..0ee49b2
--- /dev/null
+++ b/src/interfaces/ecpg/test/unicode/utext.sh
@@ -0,0 +1,16 @@
+#!/usr/bin/bash
+
+echo "../../preproc/ecpg --regression --enable-utext -I./../../include -I. -o utext.c utext.pgc"
+
+#../../preproc/ecpg --regression --enable-utext -I./../../include -I. -o utext.c utext.pgc
+
+
+../../preproc/ecpg --regression -r no_indicator --enable-utext -I./../../include -I. -o utext.c utext.pgc
+
+gcc -Wall -Wmissing-prototypes -Wpointer-arith -Wdeclaration-after-statement -Wendif-labels -Wmissing-format-attribute -Wformat-security -fno-strict-aliasing -fwrapv -fexcess-precision=standard -O0 -pthread -D_REENTRANT -D_THREAD_SAFE -D_POSIX_PTHREAD_SEMANTICS -I../../include -I../../../../../src/interfaces/ecpg/include -I../../../../../src/interfaces/libpq -I../../../../../src/include -DLINUX_OOM_SCORE_ADJ=0 -DLINUX_OOM_ADJ=0 -D_GNU_SOURCE -I/db/pgmaster/run/include -g -c -o utext.o utext.c
+
+
+gcc -Wall -Wmissing-prototypes -Wpointer-arith -Wdeclaration-after-statement -Wendif-labels -Wmissing-format-attribute -Wformat-security -fno-strict-aliasing -fwrapv -fexcess-precision=standard -O0 -pthread -D_REENTRANT -D_THREAD_SAFE -D_POSIX_PTHREAD_SEMANTICS utext.o -L../../ecpglib -L../../pgtypeslib -L../../../../../src/interfaces/libpq -L../../../../../src/port -L../../../../../src/common -L/db/pgmaster/run/lib -Wl,--as-needed -Wl,-rpath,--enable-new-dtags -lecpg -lpgtypes -lpq -lpgcommon -lpgport -lselinux -lxslt -lxml2 -lpam -lssl -lcrypto -lgssapi_krb5 -lz -lrt -lcrypt -ldl -lm -g -o utext
+
+
+./utext >results/utext.ret 2>&1
diff --git a/src/interfaces/ecpg/test/unicode/uvarchar.pgc b/src/interfaces/ecpg/test/unicode/uvarchar.pgc
new file mode 100755
index 0000000..4dd894a
--- /dev/null
+++ b/src/interfaces/ecpg/test/unicode/uvarchar.pgc
@@ -0,0 +1,877 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+EXEC SQL INCLUDE ../regression;
+
+#define test(msg) printf("\n%s\n",msg)
+#define VAR_SIZE 20
+#define ARRAY_SIZE 4
+
+/* Following is UTF8 and UTF16 characters mapping table */
+/*太𠮷𠜱平洋𠱓大西洋印度洋北冰洋
+0x592A,0x5E73,0x6D0B,0x5927,0x897F,0x6D0B,0x5370,0x5EA6,
+0x6D0B,0x5317,0x51B0,0x6D0B,0x548C,0x5357,0x51B0,0x6D0B,
+0x0000,0x0000,0x0000,0x0000*/
+
+/*足球篮球羽毛球乒乓球橄榄球棒球冰球
+0x8DB3,0x7403,0x7BEE,0x7403,0x7FBD,0x6BDB,0x7403,0x4E52,
+0x4E53,0x7403,0x6A44,0x6984,0x7403,0x68D2,0x7403,0x51B0,
+0x7403,0x0000,0x0000,0x0000
+*/
+
+/*世界杯每隔四年就会举行一次每次𠲖个球队
+0x4E16,0x754C,0x676F,0x6BCF,0x9694,0x56DB,0x5E74,0x5C31,
+0x4F1A,0x4E3E,0x884C,0x4E00,0x6B21,0x6BCF,0x6B21,0x0033,
+0x0032,0x4E2A,0x7403,0x961F
+*/
+
+/* 亚洲欧洲非洲大洋洲北美洲南美洲南极洲没有北极洲
+0x4E9A,0x6D32,0x6B27,0x6D32,0x975E,0x6D32,0x5927,0x6D0B,
+0x6D32,0x5317,0x7F8E,0x6D32,0x5357,0x7F8E,0x6D32,0x5357,
+0x6781,0x6D32,0x6CA1,0x6709,0x5317,0x6781,0x6D32
+*/
+
+EXEC SQL BEGIN DECLARE SECTION;
+ UVARCHAR uvarchar_var[VAR_SIZE];
+ UVARCHAR uvarchar_array[ARRAY_SIZE][VAR_SIZE];
+
+ int uvarchar_var_ind;
+
+ int count;
+ int count_array[4]={1,2,3,4};
+ int total_tuples = 0;
+EXEC SQL END DECLARE SECTION;
+
+void print_uvarchar(void);
+void print_uvarchar_ind(int uvarchar_var_ind);
+void print_local_uvarchar(utext *utext_var, int var_len);
+void print_array(void);
+int test_init(void);
+void test_finish(void);
+void init_table_value(void);
+void init_var(void);
+
+void test_var_1(void);
+void test_var_2(void);
+void test_var_3(void);
+void test_var_4(void);
+void test_var_5(void);
+void test_var_6(void);
+void test_var_7(void);
+void test_var_8(void);
+void test_var_9(void);
+void test_var_10(void);
+void test_var_11(void);
+void test_var_12(void);
+void test_var_13(void);
+void test_var_14(void);
+void test_var_15(void);
+void test_var_16(void);
+void test_array_1(void);
+void test_array_2(void);
+void test_array_3(void);
+void test_array_4(void);
+void test_array_5(void);
+void test_array_6(void);
+void test_array_7(void);
+void test_array_8(void);
+void test_array_9(void);
+void test_array_10(void);
+void test_array_11(void);
+void test_array_12(void);
+void test_array_13(void);
+void test_array_14(void);
+void test_array_15(void);
+void test_array_16(void);
+
+void test_all(void);
+
+void print_uvarchar()
+{
+ int i;
+
+ printf ("---->uvarchar variable,len=%d:\n",uvarchar_var.len);
+ for(i=0; i<VAR_SIZE; i++)
+ {
+ printf ("0x%04X ", uvarchar_var.arr[i]);
+ if(i>6 && (i+1)%8==0)
+ printf("\n");
+ }
+ printf("\n");
+}
+
+void print_uvarchar_ind(int uvarchar_var_ind)
+{
+ printf("uvarchar_var_ind = %d\n",uvarchar_var_ind);
+}
+
+void print_local_uvarchar(utext *utext_var, int var_len)
+{
+ int i;
+
+ printf ("---->uvarchar variable,len=%d:\n",var_len);
+ for(i=0; i<20; i++)
+ {
+ printf ("0x%04X ", utext_var[i]);
+ if(i>6 && (i+1)%8==0)
+ printf("\n");
+ }
+ printf("\n");
+}
+
+void print_array()
+{
+ int i,j;
+
+ for(i=0; i<ARRAY_SIZE; i++)
+ {
+ printf ("---->uvarchar array[%d]:(len=%d)\n", i,uvarchar_array[i].len);
+
+ for(j=0; j<VAR_SIZE; j++)
+ {
+ printf ("0x%04X ", uvarchar_array[i].arr[j]);
+ if(j>6 && (j+1)%8==0)
+ printf("\n");
+ }
+ printf("\n");
+ }
+
+ printf("\n");
+}
+
+int test_init()
+{
+ EXEC SQL CONNECT TO REGRESSDB1;
+
+ EXEC SQL SET AUTOCOMMIT TO ON;
+ EXEC SQL WHENEVER SQLWARNING SQLPRINT;
+ EXEC SQL WHENEVER SQLERROR SQLPRINT;
+
+ EXEC SQL SET client_encoding='UTF8';
+
+ //initialization of test table
+ EXEC SQL CREATE TABLE tb1 (Item varchar, Count integer);
+
+ init_table_value();
+
+ return 0;
+}
+
+void test_finish()
+{
+ EXEC SQL DROP TABLE tb1;
+ EXEC SQL DISCONNECT ALL;
+}
+
+
+void init_table_value()
+{
+ EXEC SQL TRUNCATE tb1;
+
+ EXEC SQL INSERT INTO tb1 VALUES ('太𠮷𠜱平洋𠱓大西洋印度洋北冰洋', 1);
+ EXEC SQL INSERT INTO tb1 VALUES ('足球篮球羽毛球乒乓球橄榄球棒球冰球', 2);
+ EXEC SQL INSERT INTO tb1 VALUES ('世界杯每隔四年就会举行一次每次𠲖个球队', 3);
+ EXEC SQL INSERT INTO tb1 VALUES ('亚洲欧洲非洲大洋洲北美洲南美洲南极洲没有北极洲', 4);
+
+ EXEC SQL INSERT INTO tb1 (Count) VALUES(8);
+ EXEC SQL INSERT INTO tb1 (Count) VALUES(9);
+ EXEC SQL INSERT INTO tb1 (Count) VALUES(10);
+}
+
+void init_var()
+{
+ int i;
+ memset((void*)&uvarchar_var,'a',sizeof(uvarchar_var));
+ uvarchar_var.len = 0;
+
+ memset((char*)uvarchar_array,'a',sizeof(uvarchar_array)*ARRAY_SIZE);
+
+ for(i=0;i<ARRAY_SIZE;i++)
+ {
+ uvarchar_array[i].len = 0;
+ }
+
+ uvarchar_var_ind = 0;
+}
+
+//simple select into uvarchar
+void test_var_1()
+{
+ test("test_var_1 : simple select into uvarchar var");
+ init_var();
+ //print_uvarchar();
+
+ EXEC SQL SELECT Item INTO :uvarchar_var:uvarchar_var_ind FROM tb1 WHERE Count=1;
+ print_uvarchar();
+ print_uvarchar_ind(uvarchar_var_ind);
+ init_var();
+
+
+ EXEC SQL SELECT Item INTO :uvarchar_var:uvarchar_var_ind FROM tb1 WHERE Count=2;
+ print_uvarchar();
+ print_uvarchar_ind(uvarchar_var_ind);
+ init_var();
+
+ EXEC SQL SELECT Item INTO :uvarchar_var:uvarchar_var_ind FROM tb1 WHERE Count=3;
+ print_uvarchar();
+ print_uvarchar_ind(uvarchar_var_ind);
+ init_var();
+
+ EXEC SQL SELECT Item INTO :uvarchar_var:uvarchar_var_ind FROM tb1 WHERE Count=4;
+ print_uvarchar();
+ print_uvarchar_ind(uvarchar_var_ind);
+ init_var();
+}
+
+
+//simple select using uvarchar
+void test_var_2()
+{
+ test("test_var_2 : simple select using uvarchar var");
+ init_var();
+
+ EXEC SQL SELECT Item INTO :uvarchar_var FROM tb1 WHERE Count=1;
+ EXEC SQL SELECT Count INTO :count FROM tb1 WHERE Item=:uvarchar_var;
+ printf ("count=%d for '太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'\n", count);
+
+ EXEC SQL SELECT Item INTO :uvarchar_var FROM tb1 WHERE Count=3;
+ EXEC SQL SELECT Count INTO :count FROM tb1 WHERE Item=:uvarchar_var;
+ printf ("count=%d for '世界杯每隔四年就会举行一次每次𠲖个球队'\n", count);
+}
+
+//simple update using uvarchar
+void test_var_3()
+{
+ test("test_var_3 : simple update using uvarchar");
+ init_var();
+
+ EXEC SQL SELECT Item INTO :uvarchar_var FROM tb1 WHERE Count=1;
+ EXEC SQL UPDATE tb1 SET Item=:uvarchar_var WHERE Count=2;
+ EXEC SQL UPDATE tb1 SET Item=:uvarchar_var WHERE Count=3;
+ EXEC SQL SELECT count(*) INTO :count FROM tb1 WHERE Item='太𠮷𠜱平洋𠱓大西洋印度洋北冰洋';
+ printf ("found %d rows for Item='太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'\n", count);
+
+ init_table_value();
+}
+
+//simple delete using uvarchar var
+void test_var_4()
+{
+ test("test_var_4 : simple delete using uvarchar var");
+ init_var();
+
+ EXEC SQL SELECT Item INTO :uvarchar_var FROM tb1 WHERE Count=1;
+ EXEC SQL DELETE FROM tb1 WHERE Item=:uvarchar_var;
+ EXEC SQL SELECT count(*) INTO :count FROM tb1 WHERE Item='太𠮷𠜱平洋𠱓大西洋印度洋北冰洋';
+ printf ("found %d rows for Item='太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'\n", count);
+
+ EXEC SQL SELECT Item INTO :uvarchar_var FROM tb1 WHERE Count=3;
+ EXEC SQL DELETE FROM tb1 WHERE Item=:uvarchar_var;
+ EXEC SQL SELECT count(*) INTO :count FROM tb1 WHERE Item='世界杯每隔四年就会举行一次每次𠲖个球队';
+ printf ("found %d rows for Item='世界杯每隔四年就会举行一次每次𠲖个球队'\n", count);
+
+ init_table_value();
+}
+
+//simple insert using uvarchar var
+void test_var_5()
+{
+ test("test_var_5 : simple insert using uvarchar");
+ init_var();
+
+ EXEC SQL SELECT Item INTO :uvarchar_var FROM tb1 WHERE Count=1;
+ EXEC SQL INSERT INTO tb1 values (:uvarchar_var, 11);
+
+ init_var();
+ EXEC SQL SELECT Item INTO :uvarchar_var FROM tb1 WHERE Count=3;
+ EXEC SQL INSERT INTO tb1 values (:uvarchar_var, 13);
+
+
+ EXEC SQL SELECT count(*) INTO :count FROM tb1 WHERE Item='太𠮷𠜱平洋𠱓大西洋印度洋北冰洋';
+ printf ("found %d rows for Item='太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'\n", count);
+
+ EXEC SQL SELECT count(*) INTO :count FROM tb1 WHERE Item='世界杯每隔四年就会举行一次每次𠲖个球队';
+ printf ("found %d rows for Item='世界杯每隔四年就会举行一次每次𠲖个球队'\n", count);
+
+ init_table_value();
+}
+
+//prepared select into uvarchar var
+void test_var_6()
+{
+ test("test_var_6 : prepared select into uvarchar var");
+ init_var();
+
+ EXEC SQL PREPARE stmt FROM "SELECT Item FROM tb1 WHERE Count=?";
+
+ EXEC SQL EXECUTE stmt INTO :uvarchar_var USING 1;
+ print_uvarchar();
+
+ EXEC SQL EXECUTE stmt INTO :uvarchar_var USING 3;
+ print_uvarchar();
+
+ EXEC SQL DEALLOCATE PREPARE stmt;
+}
+
+//prepared select using uvarchar var
+void test_var_7()
+{
+ test("test_var_7 : prepared select using uvarchar var");
+ init_var();
+
+ EXEC SQL SELECT Item INTO :uvarchar_var FROM tb1 WHERE Count=3;
+
+ EXEC SQL PREPARE stmt FROM "SELECT Count FROM tb1 WHERE Item=?";
+ EXEC SQL EXECUTE stmt INTO :count USING :uvarchar_var;
+
+ printf ("count=%d for Item='世界杯每隔四年就会举行一次每次𠲖个球队'\n", count);
+ EXEC SQL DEALLOCATE PREPARE stmt;
+}
+
+//prepared update using uvarchar var
+void test_var_8()
+{
+ test("test_var_8 : prepared update using uvarchar var");
+ init_var();
+
+ EXEC SQL SELECT Item INTO :uvarchar_var FROM tb1 WHERE Count=3;
+
+ EXEC SQL PREPARE stmt FROM "UPDATE tb1 SET Item=? WHERE Count=?";
+ EXEC SQL EXECUTE stmt USING :uvarchar_var, 1;
+ EXEC SQL EXECUTE stmt USING :uvarchar_var, 2;
+ EXEC SQL SELECT count(*) INTO :count FROM tb1 WHERE Item='世界杯每隔四年就会举行一次每次𠲖个球队';
+
+ printf ("found %d rows for Item='世界杯每隔四年就会举行一次每次𠲖个球队'\n", count);
+ EXEC SQL DEALLOCATE PREPARE stmt;
+
+ init_table_value();
+}
+
+//prepared delete using uvarchar var
+void test_var_9()
+{
+ test("test_var_9 : prepared delete using uvarchar var");
+ init_var();
+
+ EXEC SQL SELECT Item INTO :uvarchar_var FROM tb1 WHERE Count=3;
+
+ EXEC SQL PREPARE stmt FROM "DELETE FROM tb1 WHERE Item=?";
+ EXEC SQL EXECUTE stmt USING :uvarchar_var;
+ EXEC SQL SELECT count(*) INTO :count FROM tb1 WHERE Item='世界杯每隔四年就会举行一次每次𠲖个球队';
+
+ printf ("found %d rows for Item='世界杯每隔四年就会举行一次每次𠲖个球队'\n", count);
+ EXEC SQL DEALLOCATE PREPARE stmt;
+
+ init_table_value();
+}
+
+//prepared insert using uvarchar var
+void test_var_10()
+{
+ test("test_var_10 : prepared insert using uvarchar var");
+ init_var();
+
+ EXEC SQL SELECT Item INTO :uvarchar_var FROM tb1 WHERE Count=3;
+
+ EXEC SQL PREPARE stmt FROM "INSERT INTO tb1 values (?, 13)";
+ EXEC SQL EXECUTE stmt USING :uvarchar_var;
+ EXEC SQL SELECT count(*) INTO :count FROM tb1 WHERE Item='世界杯每隔四年就会举行一次每次𠲖个球队';
+
+ printf ("found %d rows for Item='世界杯每隔四年就会举行一次每次𠲖个球队'\n", count);
+ EXEC SQL DEALLOCATE PREPARE stmt;
+
+ init_table_value();
+}
+
+//Open cursor using uvarchar var
+void test_var_11()
+{
+ test("test_var_11 : Open cursor using uvarchar var");
+ init_var();
+
+ EXEC SQL SET AUTOCOMMIT TO OFF;
+ EXEC SQL SELECT Item INTO :uvarchar_var FROM tb1 WHERE Count=3;
+
+ EXEC SQL PREPARE stmt FROM "SELECT Count FROM tb1 WHERE Item=?";
+ EXEC SQL DECLARE cursor_var_11 CURSOR FOR stmt;
+ EXEC SQL OPEN cursor_var_11 USING :uvarchar_var;
+ EXEC SQL FETCH cursor_var_11 INTO :count;
+ printf ("count=%d for Item='世界杯每隔四年就会举行一次每次𠲖个球队'\n", count);
+ EXEC SQL CLOSE cursor_var_11;
+ EXEC SQL DEALLOCATE PREPARE stmt;
+ EXEC SQL SET AUTOCOMMIT TO ON;
+}
+
+//Fecth cursor into uvarchar var
+void test_var_12()
+{
+ test("test_var_12 : Fecth cursor into uvarchar var");
+ init_var();
+
+ EXEC SQL SET AUTOCOMMIT TO OFF;
+ EXEC SQL PREPARE stmt FROM "SELECT Item FROM tb1 WHERE Count=1";
+ EXEC SQL DECLARE cursor_var_12 CURSOR FOR stmt;
+ EXEC SQL OPEN cursor_var_12;
+ EXEC SQL FETCH cursor_var_12 INTO :uvarchar_var;
+ EXEC SQL CLOSE cursor_var_12;
+
+ print_uvarchar();
+
+ EXEC SQL DEALLOCATE PREPARE stmt;
+ EXEC SQL SET AUTOCOMMIT TO ON;
+}
+
+//simple insert using uvarchar with L string inited
+void test_var_13()
+{
+EXEC SQL BEGIN DECLARE SECTION;
+ uvarchar uvarchar_local_var[VAR_SIZE];
+EXEC SQL END DECLARE SECTION;
+
+ test("test_var_13 : simple insert using uvarchar with L string inited");
+ init_var();
+
+ memset((char*)&uvarchar_local_var,0,sizeof(uvarchar_local_var));
+
+ memcpy((char*)uvarchar_local_var.arr, L"太𠮷𠜱平洋𠱓大西洋印度洋北冰洋", sizeof(L"太𠮷𠜱平洋𠱓大西洋印度洋北冰洋"));
+ uvarchar_local_var.len = sizeof(L"太𠮷𠜱平洋𠱓大西洋印度洋北冰洋")/4;
+
+ printf("uvarchar_local_var.len = %d\n",uvarchar_local_var.len);
+
+ EXEC SQL INSERT INTO tb1 values (:uvarchar_local_var, 16);
+
+ EXEC SQL SELECT count(*) INTO :count FROM tb1 WHERE Item='太𠮷𠜱平洋𠱓大西洋印度洋北冰洋';
+ printf ("found %d rows for Item='太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'\n", count);
+
+ EXEC SQL SELECT Item INTO :uvarchar_var:uvarchar_var_ind FROM tb1 WHERE Count=16;
+ print_uvarchar();
+ print_uvarchar_ind(uvarchar_var_ind);
+
+ init_table_value();
+}
+
+//Open cursor using utext var directly in WHERE Clause
+void test_var_14()
+{
+EXEC SQL BEGIN DECLARE SECTION;
+ uvarchar uvarchar_local_var[20+1];
+EXEC SQL END DECLARE SECTION;
+ memset((char*)&uvarchar_local_var,0x00,sizeof(uvarchar_local_var));
+
+ test("test_var_14 : Open cursor using utext var directly in WHERE Clause");
+ init_var();
+
+ EXEC SQL SET AUTOCOMMIT TO OFF;
+ EXEC SQL SELECT Item INTO :uvarchar_local_var FROM tb1 WHERE Count=3;
+ EXEC SQL DECLARE cursor_var_14 CURSOR FOR SELECT Count FROM tb1 WHERE Item=:uvarchar_local_var;
+ EXEC SQL OPEN cursor_var_14;
+ EXEC SQL FETCH cursor_var_14 INTO :count;
+ printf ("count=%d for Item='世界杯每隔四年就会举行一次每次𠲖个球队'\n", count);
+
+ EXEC SQL CLOSE cursor_var_14;
+
+ EXEC SQL SET AUTOCOMMIT TO ON;
+}
+
+//Test uvarchar_var working with NULL without indicator
+void test_var_15()
+{
+EXEC SQL BEGIN DECLARE SECTION;
+ uvarchar uvarchar_local_var[20+1];
+EXEC SQL END DECLARE SECTION;
+ test("test_var_15 : Test uvarchar_var working with NULL without indicator");
+
+ memset((char*)&uvarchar_local_var,'a',sizeof(uvarchar_local_var));
+ uvarchar_local_var.len=10;
+ EXEC SQL SELECT Item INTO :uvarchar_local_var FROM tb1 WHERE Count=8;
+ print_local_uvarchar(uvarchar_local_var.arr,20);
+
+
+ memset((char*)&uvarchar_local_var,0x00,sizeof(uvarchar_local_var));
+ EXEC SQL INSERT INTO tb1 values (:uvarchar_local_var, 18);
+ EXEC SQL INSERT INTO tb1 values (:uvarchar_local_var, 19);
+ EXEC SQL INSERT INTO tb1 values (:uvarchar_local_var, 20);
+ EXEC SQL SELECT count(*) INTO :count FROM tb1 WHERE Item is NULL;
+ printf ("found %d rows for Item being NULL\n", count);
+
+ init_table_value();
+}
+
+//uvarchar_var working with NULL with indicator
+void test_var_16()
+{
+EXEC SQL BEGIN DECLARE SECTION;
+ uvarchar uvarchar_local_var[20+1];
+ int uvarchar_var_ind=-1;
+EXEC SQL END DECLARE SECTION;
+ test("test_var_16 : Test uvarchar_var working with NULL with indicator");
+
+ memset((char*)&uvarchar_local_var,'a',sizeof(uvarchar_local_var));
+ uvarchar_local_var.len=0;
+ EXEC SQL SELECT Item INTO :uvarchar_local_var:uvarchar_var_ind FROM tb1 WHERE Count=8;
+ print_local_uvarchar(uvarchar_local_var.arr,20);
+ print_uvarchar_ind(uvarchar_var_ind);
+
+ memset((char*)&uvarchar_local_var,0x00,sizeof(uvarchar_local_var));
+ EXEC SQL INSERT INTO tb1 values (:uvarchar_local_var:uvarchar_var_ind, 18);
+ EXEC SQL INSERT INTO tb1 values (:uvarchar_local_var:uvarchar_var_ind, 19);
+ EXEC SQL INSERT INTO tb1 values (:uvarchar_local_var:uvarchar_var_ind, 20);
+ EXEC SQL SELECT count(*) INTO :count FROM tb1 WHERE Item is NULL;
+ printf ("found %d rows for Item being NULL\n", count);
+
+ init_table_value();
+}
+
+
+//simple select into uvarchar array
+void test_array_1()
+{
+ test("test_array_1 : simple select into uvarchar array");
+ init_var();
+
+ EXEC SQL SELECT Item INTO :uvarchar_array FROM tb1 WHERE Count<=3;
+
+ print_array();
+ init_var();
+
+ EXEC SQL SELECT Item INTO :uvarchar_array[0] FROM tb1 WHERE Count=1;
+ print_array();
+ init_var();
+}
+
+
+//simple select using uvarchar array
+void test_array_2()
+{
+ test("test_array_2 : simple select using uvarchar array");
+ init_var();
+
+ EXEC SQL SELECT Item INTO :uvarchar_array FROM tb1 WHERE Count<=3;
+
+ count = 0;
+ EXEC SQL SELECT Count INTO :count FROM tb1 WHERE Item=:uvarchar_array[0];
+ printf ("count=%d for '太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'\n", count);
+
+ count = 0;
+ EXEC SQL SELECT Count INTO :count FROM tb1 WHERE Item=:uvarchar_array[2];
+ printf ("count=%d for '世界杯每隔四年就会举行一次每次𠲖个球队'\n", count);
+}
+
+//simple update using uvarchar array
+void test_array_3()
+{
+ test("test_array_3 : simple update using uvarchar array");
+ init_var();
+
+ EXEC SQL SELECT Item INTO :uvarchar_array FROM tb1 WHERE Count<=3;
+
+ EXEC SQL UPDATE tb1 SET Item=:uvarchar_array[2] WHERE Count=1;
+
+ count = 0;
+ EXEC SQL SELECT count(*) INTO :count FROM tb1 WHERE Item='太𠮷𠜱平洋𠱓大西洋印度洋北冰洋';
+ printf ("find %d rows for Item='太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'\n", count);
+
+ count = 0;
+ EXEC SQL SELECT count(*) INTO :count FROM tb1 WHERE Item='世界杯每隔四年就会举行一次每次𠲖个球队';
+ printf ("find %d rows for Item='世界杯每隔四年就会举行一次每次𠲖个球队'\n", count);
+
+ init_table_value();
+}
+
+//simple delete using uvarchar array
+void test_array_4()
+{
+ test("test_array_4 : simple delete using uvarchar array");
+ init_var();
+
+ EXEC SQL SELECT Item INTO :uvarchar_array FROM tb1 WHERE Count<=3;
+
+ count = 100;
+ EXEC SQL DELETE FROM tb1 WHERE Item=:uvarchar_array[0];
+ EXEC SQL SELECT count(*) INTO :count FROM tb1 WHERE Item='太𠮷𠜱平洋𠱓大西洋印度洋北冰洋';
+ printf ("found %d rows for Item='太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'\n", count);
+
+ count = 100;
+ EXEC SQL DELETE FROM tb1 WHERE Item=:uvarchar_array[2];
+ EXEC SQL SELECT count(*) INTO :count FROM tb1 WHERE Item='世界杯每隔四年就会举行一次每次𠲖个球队';
+ printf ("found %d rows for Item='世界杯每隔四年就会举行一次每次𠲖个球队'\n", count);
+
+ init_table_value();
+}
+
+//simple insert using uvarchar array
+void test_array_5()
+{
+ test("test_array_5 : simple insert using uvarchar array");
+ init_var();
+
+ EXEC SQL SELECT Item INTO :uvarchar_array FROM tb1 WHERE Count<=3;
+
+ EXEC SQL INSERT INTO tb1 values (:uvarchar_array[0], 11);
+ EXEC SQL SELECT count(*) INTO :count FROM tb1 WHERE Item='太𠮷𠜱平洋𠱓大西洋印度洋北冰洋';
+ printf ("found %d rows for Item='太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'\n", count);
+
+ EXEC SQL INSERT INTO tb1 values (:uvarchar_array[2], 13);
+ EXEC SQL SELECT count(*) INTO :count FROM tb1 WHERE Item='世界杯每隔四年就会举行一次每次𠲖个球队';
+ printf ("found %d rows for Item='世界杯每隔四年就会举行一次每次𠲖个球队'\n", count);
+
+ init_table_value();
+}
+
+//prepared select into uvarchar array
+void test_array_6()
+{
+ test("test_array_6 : prepared select into uvarchar array");
+ init_var();
+
+ EXEC SQL PREPARE stmt FROM "SELECT Item FROM tb1 WHERE Count<=?";
+
+ EXEC SQL EXECUTE stmt INTO :uvarchar_array USING 3;
+
+ print_array();
+
+ EXEC SQL DEALLOCATE PREPARE stmt;
+}
+
+//prepared select using uvarchar array
+void test_array_7()
+{
+ test("test_array_7 : prepared select using uvarchar array");
+ init_var();
+ EXEC SQL SELECT Item INTO :uvarchar_array FROM tb1 WHERE Count<=3;
+
+ count = 0;
+ EXEC SQL PREPARE stmt FROM "SELECT Count FROM tb1 WHERE Item=?";
+ EXEC SQL EXECUTE stmt INTO :count USING :uvarchar_array[0];
+
+ printf ("count=%d for Item='世界杯每隔四年就会举行一次每次𠲖个球队'\n", count);
+ EXEC SQL DEALLOCATE PREPARE stmt;
+}
+
+//prepared update using uvarchar array
+void test_array_8()
+{
+ test("test_array_8 : prepared update using uvarchar array");
+ init_var();
+ EXEC SQL SELECT Item INTO :uvarchar_array FROM tb1 WHERE Count<=3;
+
+ EXEC SQL PREPARE stmt FROM "UPDATE tb1 SET Item=? WHERE Count=?";
+ EXEC SQL EXECUTE stmt USING :uvarchar_array[0], 1;
+ EXEC SQL EXECUTE stmt USING :uvarchar_array[0], 2;
+ EXEC SQL SELECT count(*) INTO :count FROM tb1 WHERE Item='太𠮷𠜱平洋𠱓大西洋印度洋北冰洋';
+
+ printf ("found %d rows for Item='太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'\n", count);
+ EXEC SQL DEALLOCATE PREPARE stmt;
+
+ init_table_value();
+}
+
+//prepared delete using uvarchar array
+void test_array_9()
+{
+ test("test_array_9 : prepared delete using uvarchar array");
+ init_var();
+ EXEC SQL SELECT Item INTO :uvarchar_array FROM tb1 WHERE Count<=3;
+
+ count = 0;
+ EXEC SQL PREPARE stmt FROM "DELETE FROM tb1 WHERE Item=?";
+ EXEC SQL EXECUTE stmt USING :uvarchar_array[0];
+ EXEC SQL SELECT count(*) INTO :count FROM tb1 WHERE Item='太𠮷𠜱平洋𠱓大西洋印度洋北冰洋';
+
+ printf ("found %d rows for Item='太𠮷𠜱平洋𠱓大西洋印度洋北冰洋'\n", count);
+ EXEC SQL DEALLOCATE PREPARE stmt;
+
+ init_table_value();
+}
+
+//prepared insert using uvarchar array
+void test_array_10()
+{
+ test("test_array_10 : prepared insert using uvarchar array");
+ init_var();
+ EXEC SQL SELECT Item INTO :uvarchar_array FROM tb1 WHERE Count<=3;
+
+ EXEC SQL PREPARE stmt FROM "INSERT INTO tb1 values (?, ?)";
+ EXEC SQL EXECUTE stmt USING :uvarchar_array[2], 13;
+ EXEC SQL EXECUTE stmt USING :uvarchar_array[2], 15;
+ EXEC SQL SELECT count(*) INTO :count FROM tb1 WHERE Item='世界杯每隔四年就会举行一次每次𠲖个球队';
+
+ printf ("found %d rows for Item='世界杯每隔四年就会举行一次每次𠲖个球队'\n", count);
+ EXEC SQL DEALLOCATE PREPARE stmt;
+
+ init_table_value();
+}
+
+//Open cursor using uvarchar array
+void test_array_11()
+{
+ test("test_array_11 : Open cursor using uvarchar array");
+ init_var();
+
+ EXEC SQL SET AUTOCOMMIT TO OFF;
+ EXEC SQL SELECT Item INTO :uvarchar_array FROM tb1 WHERE Count<=3;
+
+ EXEC SQL PREPARE stmt FROM "SELECT Count FROM tb1 WHERE Item=?";
+ EXEC SQL DECLARE cursor_array_11 CURSOR FOR stmt;
+ EXEC SQL OPEN cursor_array_11 USING :uvarchar_array[2];
+ EXEC SQL FETCH cursor_array_11 INTO :count;
+ printf ("count=%d for Item='世界杯每隔四年就会举行一次每次𠲖个球队'\n", count);
+ EXEC SQL CLOSE cursor_array_11;
+ EXEC SQL DEALLOCATE PREPARE stmt;
+ EXEC SQL SET AUTOCOMMIT TO ON;
+}
+
+//Fecth cursor into uvarchar array
+void test_array_12()
+{
+ test("test_array_12 : Fecth cursor into uvarchar array");
+ init_var();
+
+ EXEC SQL SET AUTOCOMMIT TO OFF;
+ EXEC SQL PREPARE stmt FROM "SELECT Item FROM tb1 WHERE Count<=3";
+ EXEC SQL DECLARE cursor_array_12 CURSOR FOR stmt;
+ EXEC SQL OPEN cursor_array_12;
+ EXEC SQL FETCH cursor_array_12 INTO :uvarchar_array[0];
+ EXEC SQL FETCH cursor_array_12 INTO :uvarchar_array[1];
+ EXEC SQL FETCH cursor_array_12 INTO :uvarchar_array[2];
+ EXEC SQL CLOSE cursor_array_12;
+
+ print_array();
+
+ EXEC SQL DEALLOCATE PREPARE stmt;
+ EXEC SQL SET AUTOCOMMIT TO ON;
+}
+
+//Insert array with L string inited
+void test_array_13()
+{
+EXEC SQL BEGIN DECLARE SECTION;
+ uvarchar uvarchar_array13[3][VAR_SIZE];
+EXEC SQL END DECLARE SECTION;
+ test("test_array_13 : Insert array with L string inited");
+
+ memset((char*)&uvarchar_array13,0,sizeof(uvarchar_array13));
+
+ memcpy((char*)uvarchar_array13[0].arr, L"太𠮷𠜱平洋𠱓大西洋印度洋北冰洋", sizeof(L"太𠮷𠜱平洋𠱓大西洋印度洋北冰洋"));
+ uvarchar_array13[0].len = sizeof(L"太𠮷𠜱平洋𠱓大西洋印度洋北冰洋")/4;
+ memcpy((char*)uvarchar_array13[1].arr, L"足球篮球羽毛球乒乓球橄榄球棒球冰球", sizeof(L"足球篮球羽毛球乒乓球橄榄球棒球冰球"));
+ uvarchar_array13[1].len = sizeof(L"足球篮球羽毛球乒乓球橄榄球棒球冰球")/4;
+ memcpy((char*)uvarchar_array13[2].arr, L"世界杯每隔四年就会举行一次每次𠲖个球队", sizeof(L"世界杯每隔四年就会举行一次每次𠲖个球队"));
+ uvarchar_array13[2].len = sizeof(L"世界杯每隔四年就会举行一次每次𠲖个球队")/4;
+
+ EXEC SQL INSERT INTO tb1 values (:uvarchar_array13[0], 20);
+ EXEC SQL INSERT INTO tb1 values (:uvarchar_array13[1], 21);
+ EXEC SQL INSERT INTO tb1 values (:uvarchar_array13[2], 22);
+
+ init_var();
+ EXEC SQL SELECT Item INTO :uvarchar_array FROM tb1 WHERE Count<=22 AND Count>=20;
+ print_array();
+ init_table_value();
+
+}
+
+//uvarchar array working with NULL without using indicator
+void test_array_15()
+{
+EXEC SQL BEGIN DECLARE SECTION;
+ uvarchar uvarchar_local_array[3][20];
+EXEC SQL END DECLARE SECTION;
+ test("test_array_15 : Test uvarchar array working with NULL without using indicator");
+ memset(uvarchar_local_array,'a',sizeof(uvarchar_local_array));
+
+ EXEC SQL SELECT Item INTO :uvarchar_local_array FROM tb1 WHERE Count>=8 and Count<=10;
+
+ print_local_uvarchar(uvarchar_local_array[0].arr, 20);
+ print_local_uvarchar(uvarchar_local_array[1].arr, 20);
+ print_local_uvarchar(uvarchar_local_array[2].arr, 20);
+
+
+ memset(uvarchar_local_array,0x00,sizeof(uvarchar_local_array));
+ EXEC SQL INSERT INTO tb1 values (:uvarchar_local_array[0], 18);
+ EXEC SQL INSERT INTO tb1 values (:uvarchar_local_array[1], 19);
+ EXEC SQL INSERT INTO tb1 values (:uvarchar_local_array[2], 20);
+ EXEC SQL SELECT count(*) INTO :count FROM tb1 WHERE Item is NULL;
+ printf ("found %d rows for Item being NULL\n", count);
+
+ init_table_value();
+}
+
+//uvarchar array working with NULL using indicator
+void test_array_16()
+{
+EXEC SQL BEGIN DECLARE SECTION;
+ uvarchar uvarchar_local_array[3][20];
+ int uvarchar_array_ind[3];
+EXEC SQL END DECLARE SECTION;
+ test("test_array_16 : Test uvarchar array working with NULL using indicator");
+ memset(uvarchar_local_array,'a',sizeof(uvarchar_local_array));
+
+ EXEC SQL SELECT Item INTO :uvarchar_local_array:uvarchar_array_ind FROM tb1 WHERE Count>=8 and Count<=10;
+
+
+ print_local_uvarchar(uvarchar_local_array[0].arr, 20);
+ print_local_uvarchar(uvarchar_local_array[1].arr, 20);
+ print_local_uvarchar(uvarchar_local_array[2].arr, 20);
+
+ print_uvarchar_ind(uvarchar_array_ind[0]);
+ print_uvarchar_ind(uvarchar_array_ind[1]);
+ print_uvarchar_ind(uvarchar_array_ind[2]);
+
+ memset(uvarchar_local_array,0x00,sizeof(uvarchar_local_array));
+ uvarchar_array_ind[0]=-1;
+ EXEC SQL INSERT INTO tb1 values (:uvarchar_local_array[0]:uvarchar_array_ind[0], 18);
+ EXEC SQL INSERT INTO tb1 values (:uvarchar_local_array[1]:uvarchar_array_ind[0], 19);
+ EXEC SQL INSERT INTO tb1 values (:uvarchar_local_array[2]:uvarchar_array_ind[0], 20);
+ EXEC SQL SELECT count(*) INTO :count FROM tb1 WHERE Item is NULL;
+ printf ("found %d rows for Item being NULL\n", count);
+
+ init_table_value();
+}
+
+void test_all()
+{
+ test_var_1();
+ test_var_2();
+ test_var_3();
+ test_var_4();
+ test_var_5();
+ test_var_6();
+ test_var_7();
+ test_var_8();
+ test_var_9();
+ test_var_10();
+ test_var_11();
+ test_var_12();
+ test_var_13();
+ test_var_14();
+ test_var_15();
+ test_var_16();
+ test_array_1();
+ test_array_2();
+ test_array_3();
+ test_array_4();
+ test_array_5();
+ test_array_6();
+ test_array_7();
+ test_array_8();
+ test_array_9();
+ test_array_10();
+ test_array_11();
+ test_array_12();
+ test_array_13();
+ test_array_15();
+ test_array_16();
+}
+
+int main()
+{
+// ECPGdebug(1, stderr);
+ if(test_init() !=0)
+ return -1;
+
+ test_all();
+ test_finish();
+
+ return 0;
+}
diff --git a/src/interfaces/ecpg/test/unicode/uvarchar.sh b/src/interfaces/ecpg/test/unicode/uvarchar.sh
new file mode 100755
index 0000000..4d05ed0
--- /dev/null
+++ b/src/interfaces/ecpg/test/unicode/uvarchar.sh
@@ -0,0 +1,11 @@
+echo "../../preproc/ecpg --regression --enable-uvarchar -I./../../include -I. -o uvarchar.c uvarchar.pgc"
+
+../../preproc/ecpg --regression -r no_indicator --enable-utext -I./../../include -I. -o uvarchar.c uvarchar.pgc
+
+gcc -Wall -Wmissing-prototypes -Wpointer-arith -Wdeclaration-after-statement -Wendif-labels -Wmissing-format-attribute -Wformat-security -fno-strict-aliasing -fwrapv -fexcess-precision=standard -O0 -pthread -D_REENTRANT -D_THREAD_SAFE -D_POSIX_PTHREAD_SEMANTICS -I../../include -I../../../../../src/interfaces/ecpg/include -I../../../../../src/interfaces/libpq -I../../../../../src/include -DLINUX_OOM_SCORE_ADJ=0 -DLINUX_OOM_ADJ=0 -D_GNU_SOURCE -I/db/pgmaster/run/include -g -c -o uvarchar.o uvarchar.c
+
+
+gcc -Wall -Wmissing-prototypes -Wpointer-arith -Wdeclaration-after-statement -Wendif-labels -Wmissing-format-attribute -Wformat-security -fno-strict-aliasing -fwrapv -fexcess-precision=standard -O0 -pthread -D_REENTRANT -D_THREAD_SAFE -D_POSIX_PTHREAD_SEMANTICS uvarchar.o -L../../ecpglib -L../../pgtypeslib -L../../../../../src/interfaces/libpq -L../../../../../src/port -L../../../../../src/common -L/db/pgmaster/run/lib -Wl,--as-needed -Wl,-rpath,--enable-new-dtags -lecpg -lpgtypes -lpq -lpgcommon -lpgport -lselinux -lxslt -lxml2 -lpam -lssl -lcrypto -lgssapi_krb5 -lz -lrt -lcrypt -ldl -lm -g -o uvarchar
+
+
+./uvarchar >results/uvarchar.ret 2>&1
diff --git a/src/interfaces/libpq/exports.txt b/src/interfaces/libpq/exports.txt
index d6a38d0..8be711d 100644
--- a/src/interfaces/libpq/exports.txt
+++ b/src/interfaces/libpq/exports.txt
@@ -172,3 +172,8 @@ PQsslAttribute 169
PQsetErrorContextVisibility 170
PQresultVerboseErrorMessage 171
PQencryptPasswordConn 172
+PQGetEncodingFromPGres 173
+PQGetEncodingFromPGconn 174
+PQGetEncodingName 175
+PQGenEncodingMaxLen 176
+
diff --git a/src/interfaces/libpq/fe-exec.c b/src/interfaces/libpq/fe-exec.c
index c24bce6..3a1ca04 100644
--- a/src/interfaces/libpq/fe-exec.c
+++ b/src/interfaces/libpq/fe-exec.c
@@ -3813,3 +3813,54 @@ PQunescapeBytea(const unsigned char *strtext, size_t *retbuflen)
*retbuflen = buflen;
return tmpbuf;
}
+
+/*
+ * New added interface for ECOBPG NCHAR features
+ * to get client_encoding in src/interface/ecpg/ecpglib/data.c
+ * src/interface/ecpg/ecpglib/execute.c.
+ */
+
+int
+PQGetEncodingFromPGconn(const PGconn *conn)
+{
+ return conn->client_encoding;
+}
+
+int
+PQGetEncodingFromPGres(const PGresult *results)
+{
+ return results->client_encoding;
+}
+
+int
+PQGetencUTF8(void)
+{
+ return PG_UTF8;
+}
+
+int
+PQGetencEUCJP(void)
+{
+ return PG_EUC_JP;
+}
+
+char *
+PQGetEncodingName(int client_encoding)
+{
+ int i;
+
+ for (i = 0; pg_enc2gettext_tbl[i].name != NULL; i++)
+ {
+ if (pg_enc2gettext_tbl[i].encoding == client_encoding)
+ return pg_enc2gettext_tbl[i].name;
+ }
+
+ /* Should not go to here actually */
+ return NULL;
+}
+
+int
+PQGenEncodingMaxLen(int client_encoding)
+{
+ return pg_encmaxlen_tbl[client_encoding].len;
+}
diff --git a/src/interfaces/libpq/libpq-fe.h b/src/interfaces/libpq/libpq-fe.h
index 1d915e7..f5fcb6e 100644
--- a/src/interfaces/libpq/libpq-fe.h
+++ b/src/interfaces/libpq/libpq-fe.h
@@ -535,7 +535,23 @@ extern size_t PQescapeString(char *to, const char *from, size_t length);
extern unsigned char *PQescapeBytea(const unsigned char *from, size_t from_length,
size_t *to_length);
+/*
+ * New added interface for ECOBPG NCHAR features
+ * to get client_encoding in src/interface/ecpg/ecpglib/data.c
+ * src/interface/ecpg/ecpglib/execute.c.
+ */
+
+extern int PQGetEncodingFromPGconn(const PGconn *conn);
+
+extern int PQGetEncodingFromPGres(const PGresult *results);
+
+extern char *PQGetEncodingName(int client_encoding);
+
+extern int PQGenEncodingMaxLen(int client_encoding);
+
+extern int PQGetencUTF8(void);
+extern int PQGetencEUCJP(void);
/* === in fe-print.c === */
On Thu, Oct 26, 2017 at 12:29 PM, Jing Wang <jingwangian@gmail.com> wrote:
I would like to provide the patch file that ECPG can support the utf16/utf32
unicode host variable type. This feature is used to compatible the same
feature in Oracle's. Please find Oracle's feature in the [1].[1] https://docs.oracle.com/database/121/LNPCC/pc_05adv.htm#LNPCC3273
The core of the patch is roughly 800 lines, and it adds 20k lines of
tests, which is large to digest.
+PQGetEncodingFromPGres 173
+PQGetEncodingFromPGconn 174
+PQGetEncodingName 175
+PQGenEncodingMaxLen 176
This adds four undocumented APIs to libpq. And why not using client_encoding?
The patch does not apply anymore and needs a rebase. There are also a
bunch of whitespace errors, no documentation in the patch, and it
seems to me that this patch introduces many concepts so it could be
broken down into many individual steps. Finally, I strongly recommend
that you review other's patches. You have two patches, including this
one, registered into this commit fest but your name is showing nowhere
as a reviewer. The patch you are proposing here is large, the usual
recommendation being to review one patch of equal difficulty for each
patch sent to keep the inflow and outflow of patches balanced.
I am adding Michael Meskes to this thread, he is the maintainer of
ECPG so perhaps he would be interested in what you have here.
Thanks.
--
Michael
On Tue, Nov 21, 2017 at 4:02 PM, Michael Paquier
<michael.paquier@gmail.com> wrote:
The patch does not apply anymore and needs a rebase. There are also a
bunch of whitespace errors, no documentation in the patch, and it
seems to me that this patch introduces many concepts so it could be
broken down into many individual steps. Finally, I strongly recommend
that you review other's patches. You have two patches, including this
one, registered into this commit fest but your name is showing nowhere
as a reviewer. The patch you are proposing here is large, the usual
recommendation being to review one patch of equal difficulty for each
patch sent to keep the inflow and outflow of patches balanced.
With a high-level look, this patch requires a bit more work.. I am
unsure as well if that's a feature which would prove to be useful, but
without documentation it is hard to make an opinion of it. I am
marking the patch as returned with feedback.
--
Michael