mirror of
https://github.com/FirebirdSQL/firebird.git
synced 2025-01-23 00:03:02 +01:00
CORE-1799: improve the almost useless "expression evaluation not supported" error message.
Did the DSQL part for now.
This commit is contained in:
parent
cf2ac6beb0
commit
0c85fac2d4
@ -1696,6 +1696,40 @@ C --
|
||||
PARAMETER (GDS__dsql_col_more_than_once_view = 336397238)
|
||||
INTEGER*4 GDS__dsql_unsupported_in_auto_trans
|
||||
PARAMETER (GDS__dsql_unsupported_in_auto_trans = 336397239)
|
||||
INTEGER*4 GDS__dsql_eval_unknode
|
||||
PARAMETER (GDS__dsql_eval_unknode = 336397240)
|
||||
INTEGER*4 GDS__dsql_agg_wrongarg
|
||||
PARAMETER (GDS__dsql_agg_wrongarg = 336397241)
|
||||
INTEGER*4 GDS__dsql_agg2_wrongarg
|
||||
PARAMETER (GDS__dsql_agg2_wrongarg = 336397242)
|
||||
INTEGER*4 GDS__dsql_nodateortime_pm_string
|
||||
PARAMETER (GDS__dsql_nodateortime_pm_string = 336397243)
|
||||
INTEGER*4 GDS__dsql_invalid_datetime_subtract
|
||||
PARAMETER (GDS__dsql_invalid_datetime_subtract = 336397244)
|
||||
INTEGER*4 GDS__dsql_invalid_dateortime_add
|
||||
PARAMETER (GDS__dsql_invalid_dateortime_add = 336397245)
|
||||
INTEGER*4 GDS__dsql_invalid_type_minus_date
|
||||
PARAMETER (GDS__dsql_invalid_type_minus_date = 336397246)
|
||||
INTEGER*4 GDS__dsql_nostring_addsub_dial3
|
||||
PARAMETER (GDS__dsql_nostring_addsub_dial3 = 336397247)
|
||||
INTEGER*4 GDS__dsql_invalid_type_addsub_dial3
|
||||
PARAMETER (GDS__dsql_invalid_type_addsub_dial3 = 336397248)
|
||||
INTEGER*4 GDS__dsql_invalid_type_multip_dial1
|
||||
PARAMETER (GDS__dsql_invalid_type_multip_dial1 = 336397249)
|
||||
INTEGER*4 GDS__dsql_nostring_multip_dial3
|
||||
PARAMETER (GDS__dsql_nostring_multip_dial3 = 336397250)
|
||||
INTEGER*4 GDS__dsql_invalid_type_multip_dial3
|
||||
PARAMETER (GDS__dsql_invalid_type_multip_dial3 = 336397251)
|
||||
INTEGER*4 GDS__dsql_mustuse_numeric_div_dial1
|
||||
PARAMETER (GDS__dsql_mustuse_numeric_div_dial1 = 336397252)
|
||||
INTEGER*4 GDS__dsql_nostring_div_dial3
|
||||
PARAMETER (GDS__dsql_nostring_div_dial3 = 336397253)
|
||||
INTEGER*4 GDS__dsql_invalid_type_div_dial3
|
||||
PARAMETER (GDS__dsql_invalid_type_div_dial3 = 336397254)
|
||||
INTEGER*4 GDS__dsql_nostring_neg_dial3
|
||||
PARAMETER (GDS__dsql_nostring_neg_dial3 = 336397255)
|
||||
INTEGER*4 GDS__dsql_invalid_type_neg
|
||||
PARAMETER (GDS__dsql_invalid_type_neg = 336397256)
|
||||
INTEGER*4 GDS__gsec_cant_open_db
|
||||
PARAMETER (GDS__gsec_cant_open_db = 336723983)
|
||||
INTEGER*4 GDS__gsec_switches_error
|
||||
|
@ -855,6 +855,23 @@ const
|
||||
gds_dsql_cte_not_used = 336397237;
|
||||
gds_dsql_col_more_than_once_view = 336397238;
|
||||
gds_dsql_unsupported_in_auto_trans = 336397239;
|
||||
gds_dsql_eval_unknode = 336397240;
|
||||
gds_dsql_agg_wrongarg = 336397241;
|
||||
gds_dsql_agg2_wrongarg = 336397242;
|
||||
gds_dsql_nodateortime_pm_string = 336397243;
|
||||
gds_dsql_invalid_datetime_subtract = 336397244;
|
||||
gds_dsql_invalid_dateortime_add = 336397245;
|
||||
gds_dsql_invalid_type_minus_date = 336397246;
|
||||
gds_dsql_nostring_addsub_dial3 = 336397247;
|
||||
gds_dsql_invalid_type_addsub_dial3 = 336397248;
|
||||
gds_dsql_invalid_type_multip_dial1 = 336397249;
|
||||
gds_dsql_nostring_multip_dial3 = 336397250;
|
||||
gds_dsql_invalid_type_multip_dial3 = 336397251;
|
||||
gds_dsql_mustuse_numeric_div_dial1 = 336397252;
|
||||
gds_dsql_nostring_div_dial3 = 336397253;
|
||||
gds_dsql_invalid_type_div_dial3 = 336397254;
|
||||
gds_dsql_nostring_neg_dial3 = 336397255;
|
||||
gds_dsql_invalid_type_neg = 336397256;
|
||||
gds_gsec_cant_open_db = 336723983;
|
||||
gds_gsec_switches_error = 336723984;
|
||||
gds_gsec_no_op_spec = 336723985;
|
||||
|
389
src/dsql/gen.cpp
389
src/dsql/gen.cpp
File diff suppressed because it is too large
Load Diff
@ -24,15 +24,15 @@
|
||||
* See case nod_udf in MAKE_desc().
|
||||
* 2001.02.23 Claudio Valderrama: Fix SF bug #518350 with substring()
|
||||
* and text blobs containing charsets other than ASCII/NONE/BINARY.
|
||||
* 2002.07.30 Arno Brinkman:
|
||||
* 2002.07.30 Arno Brinkman:
|
||||
* COALESCE, CASE support added
|
||||
* procedure MAKE_desc_from_list added
|
||||
* procedure MAKE_desc_from_list added
|
||||
* 2003.01.25 Dmitry Yemanov: Fixed problem with concatenation which
|
||||
* trashed RDB$FIELD_LENGTH in the system tables. This change may
|
||||
* potentially interfere with the one made by Claudio one year ago.
|
||||
* Adriano dos Santos Fernandes
|
||||
*/
|
||||
|
||||
|
||||
//This MUST be before any other includes
|
||||
#ifdef DARWIN
|
||||
#define _STLP_CCTYPE
|
||||
@ -78,7 +78,7 @@ static inline bool could_be_date(const dsc& d)
|
||||
}
|
||||
|
||||
|
||||
// One of d1, d2 is time, the other is date
|
||||
// One of d1, d2 is time, the other is date
|
||||
static inline bool is_date_and_time(const dsc& d1, const dsc& d2)
|
||||
{
|
||||
return ((d1.dsc_dtype == dtype_sql_time) && (d2.dsc_dtype == dtype_sql_date)) ||
|
||||
@ -113,11 +113,11 @@ dsql_nod* MAKE_const_slong(SLONG value)
|
||||
|
||||
|
||||
/**
|
||||
|
||||
|
||||
MAKE_constant
|
||||
|
||||
|
||||
@brief Make a constant node.
|
||||
|
||||
|
||||
|
||||
@param constant
|
||||
@param numeric_flag
|
||||
@ -150,7 +150,7 @@ dsql_nod* MAKE_constant(dsql_str* constant, dsql_constant_type numeric_flag)
|
||||
* a string. The engine will convert it. Use dtype_double so that
|
||||
the engine can distinguish it from an actual string.
|
||||
Note: Due to the size of dsc_scale we are limited to numeric
|
||||
constants of less than 256 bytes.
|
||||
constants of less than 256 bytes.
|
||||
*/
|
||||
node->nod_desc.dsc_dtype = dtype_double;
|
||||
// Scale has no use for double
|
||||
@ -189,7 +189,7 @@ dsql_nod* MAKE_constant(dsql_str* constant, dsql_constant_type numeric_flag)
|
||||
// Hex constants coming through this code are guaranteed to be
|
||||
// valid - they start with X and contains only 0-9, A-F.
|
||||
// And, they will fit in a SINT64 without overflow.
|
||||
|
||||
|
||||
SINT64 value = 0;
|
||||
const char* p = constant->str_data;
|
||||
|
||||
@ -272,7 +272,7 @@ dsql_nod* MAKE_constant(dsql_str* constant, dsql_constant_type numeric_flag)
|
||||
case CONSTANT_TIME:
|
||||
case CONSTANT_TIMESTAMP:
|
||||
{
|
||||
// Setup the constant's descriptor
|
||||
// Setup the constant's descriptor
|
||||
|
||||
switch (numeric_flag) {
|
||||
case CONSTANT_DATE:
|
||||
@ -290,7 +290,7 @@ dsql_nod* MAKE_constant(dsql_str* constant, dsql_constant_type numeric_flag)
|
||||
node->nod_desc.dsc_length = type_lengths[node->nod_desc.dsc_dtype];
|
||||
node->nod_desc.dsc_address = (UCHAR*) node->nod_arg;
|
||||
|
||||
// Set up a descriptor to point to the string
|
||||
// Set up a descriptor to point to the string
|
||||
|
||||
dsc tmp;
|
||||
tmp.dsc_dtype = dtype_text;
|
||||
@ -300,7 +300,7 @@ dsql_nod* MAKE_constant(dsql_str* constant, dsql_constant_type numeric_flag)
|
||||
tmp.dsc_length = static_cast<USHORT>(constant->str_length);
|
||||
tmp.dsc_address = (UCHAR*) constant->str_data;
|
||||
|
||||
// Now invoke the string_to_date/time/timestamp routines
|
||||
// Now invoke the string_to_date/time/timestamp routines
|
||||
|
||||
CVT_move(&tmp, &node->nod_desc, ERRD_post);
|
||||
break;
|
||||
@ -317,7 +317,7 @@ dsql_nod* MAKE_constant(dsql_str* constant, dsql_constant_type numeric_flag)
|
||||
static_cast<USHORT>(constant->str_length);
|
||||
node->nod_desc.dsc_address = (UCHAR*) constant->str_data;
|
||||
node->nod_desc.dsc_ttype() = ttype_dynamic;
|
||||
// carry a pointer to the constant to resolve character set in pass1
|
||||
// carry a pointer to the constant to resolve character set in pass1
|
||||
node->nod_arg[0] = (dsql_nod*) constant;
|
||||
break;
|
||||
}
|
||||
@ -327,12 +327,12 @@ dsql_nod* MAKE_constant(dsql_str* constant, dsql_constant_type numeric_flag)
|
||||
|
||||
|
||||
/**
|
||||
|
||||
|
||||
MAKE_str_constant
|
||||
|
||||
@brief Make a constant node when the
|
||||
|
||||
@brief Make a constant node when the
|
||||
character set ID is already known.
|
||||
|
||||
|
||||
|
||||
@param constant
|
||||
@param character_set
|
||||
@ -353,7 +353,7 @@ dsql_nod* MAKE_str_constant(dsql_str* constant, SSHORT character_set)
|
||||
node->nod_desc.dsc_length = static_cast<USHORT>(constant->str_length);
|
||||
node->nod_desc.dsc_address = (UCHAR*) constant->str_data;
|
||||
node->nod_desc.dsc_ttype() = character_set;
|
||||
// carry a pointer to the constant to resolve character set in pass1
|
||||
// carry a pointer to the constant to resolve character set in pass1
|
||||
node->nod_arg[0] = (dsql_nod*) constant;
|
||||
|
||||
return node;
|
||||
@ -361,12 +361,12 @@ dsql_nod* MAKE_str_constant(dsql_str* constant, SSHORT character_set)
|
||||
|
||||
|
||||
/**
|
||||
|
||||
|
||||
MAKE_cstring
|
||||
|
||||
|
||||
@brief Make a string node for a string whose
|
||||
length is not known, but is null-terminated.
|
||||
|
||||
|
||||
|
||||
@param str
|
||||
|
||||
@ -379,9 +379,9 @@ dsql_str* MAKE_cstring(const char* str)
|
||||
|
||||
|
||||
/**
|
||||
|
||||
|
||||
MAKE_desc
|
||||
|
||||
|
||||
@brief Make a descriptor from input node.
|
||||
This function can modify node->nod_flags to add NOD_COMP_DIALECT
|
||||
|
||||
@ -453,7 +453,8 @@ void MAKE_desc(CompiledStatement* statement, dsc* desc, dsql_nod* node, dsql_nod
|
||||
if (!DTYPE_IS_NUMERIC(desc->dsc_dtype) &&
|
||||
!DTYPE_IS_TEXT(desc->dsc_dtype))
|
||||
{
|
||||
ERRD_post(Arg::Gds(isc_expression_eval_err));
|
||||
ERRD_post(Arg::Gds(isc_expression_eval_err) <<
|
||||
Arg::Gds(isc_dsql_agg_wrongarg) << Arg::Str("AVG"));
|
||||
}
|
||||
else if (DTYPE_IS_TEXT(desc->dsc_dtype)) {
|
||||
desc->dsc_dtype = dtype_double;
|
||||
@ -466,7 +467,8 @@ void MAKE_desc(CompiledStatement* statement, dsc* desc, dsql_nod* node, dsql_nod
|
||||
desc->dsc_flags = DSC_nullable;
|
||||
dtype = desc->dsc_dtype;
|
||||
if (!DTYPE_IS_NUMERIC(dtype)) {
|
||||
ERRD_post(Arg::Gds(isc_expression_eval_err));
|
||||
ERRD_post(Arg::Gds(isc_expression_eval_err) <<
|
||||
Arg::Gds(isc_dsql_agg2_wrongarg) << Arg::Str("AVG"));
|
||||
}
|
||||
else if (DTYPE_IS_EXACT(dtype)) {
|
||||
desc->dsc_dtype = dtype_int64;
|
||||
@ -484,7 +486,8 @@ void MAKE_desc(CompiledStatement* statement, dsc* desc, dsql_nod* node, dsql_nod
|
||||
if (!DTYPE_IS_NUMERIC(desc->dsc_dtype) &&
|
||||
!DTYPE_IS_TEXT(desc->dsc_dtype))
|
||||
{
|
||||
ERRD_post(Arg::Gds(isc_expression_eval_err));
|
||||
ERRD_post(Arg::Gds(isc_expression_eval_err) <<
|
||||
Arg::Gds(isc_dsql_agg_wrongarg) << Arg::Str("SUM"));
|
||||
}
|
||||
else if (desc->dsc_dtype == dtype_short) {
|
||||
desc->dsc_dtype = dtype_long;
|
||||
@ -505,7 +508,8 @@ void MAKE_desc(CompiledStatement* statement, dsc* desc, dsql_nod* node, dsql_nod
|
||||
MAKE_desc(statement, desc, node->nod_arg[0], null_replacement);
|
||||
dtype = desc->dsc_dtype;
|
||||
if (!DTYPE_IS_NUMERIC(dtype)) {
|
||||
ERRD_post(Arg::Gds(isc_expression_eval_err));
|
||||
ERRD_post(Arg::Gds(isc_expression_eval_err) <<
|
||||
Arg::Gds(isc_dsql_agg2_wrongarg) << Arg::Str("SUM"));
|
||||
}
|
||||
else if (DTYPE_IS_EXACT(dtype)) {
|
||||
desc->dsc_dtype = dtype_int64;
|
||||
@ -550,7 +554,7 @@ void MAKE_desc(CompiledStatement* statement, dsc* desc, dsql_nod* node, dsql_nod
|
||||
desc->dsc_length = sizeof(USHORT) + DSC_string_length(&desc1);
|
||||
desc->dsc_flags = desc1.dsc_flags & DSC_nullable;
|
||||
return;
|
||||
|
||||
|
||||
case nod_substr:
|
||||
MAKE_desc(statement, &desc1, node->nod_arg[0], null_replacement);
|
||||
MAKE_desc(statement, &desc2, node->nod_arg[1], null_replacement);
|
||||
@ -652,19 +656,23 @@ void MAKE_desc(CompiledStatement* statement, dsc* desc, dsql_nod* node, dsql_nod
|
||||
switch (dtype) {
|
||||
case dtype_sql_time:
|
||||
case dtype_sql_date:
|
||||
/* Forbid <date/time> +- <string> */
|
||||
// CVC: I don't see how this case can happen since dialect 1 doesn't accept DATE or TIME
|
||||
// Forbid <date/time> +- <string>
|
||||
if (DTYPE_IS_TEXT(desc1.dsc_dtype) ||
|
||||
DTYPE_IS_TEXT(desc2.dsc_dtype))
|
||||
{
|
||||
ERRD_post(Arg::Gds(isc_expression_eval_err));
|
||||
ERRD_post(Arg::Gds(isc_expression_eval_err) <<
|
||||
Arg::Gds(isc_dsql_nodateortime_pm_string));
|
||||
}
|
||||
|
||||
case dtype_timestamp:
|
||||
|
||||
/* Allow <timestamp> +- <string> (historical) */
|
||||
if (could_be_date(desc1) && could_be_date(desc2)) {
|
||||
if (node->nod_type == nod_subtract) {
|
||||
/* <any date> - <any date> */
|
||||
// Allow <timestamp> +- <string> (historical)
|
||||
if (could_be_date(desc1) && could_be_date(desc2))
|
||||
{
|
||||
if (node->nod_type == nod_subtract)
|
||||
{
|
||||
// <any date> - <any date>
|
||||
|
||||
/* Legal permutations are:
|
||||
<timestamp> - <timestamp>
|
||||
@ -673,7 +681,7 @@ void MAKE_desc(CompiledStatement* statement, dsc* desc, dsql_nod* node, dsql_nod
|
||||
<date> - <timestamp>
|
||||
<time> - <time>
|
||||
<timestamp> - <string>
|
||||
<string> - <timestamp>
|
||||
<string> - <timestamp>
|
||||
<string> - <string> */
|
||||
|
||||
if (DTYPE_IS_TEXT(desc1.dsc_dtype))
|
||||
@ -693,7 +701,8 @@ void MAKE_desc(CompiledStatement* statement, dsc* desc, dsql_nod* node, dsql_nod
|
||||
dtype = dtype_timestamp;
|
||||
}
|
||||
else {
|
||||
ERRD_post(Arg::Gds(isc_expression_eval_err));
|
||||
ERRD_post(Arg::Gds(isc_expression_eval_err) <<
|
||||
Arg::Gds(isc_dsql_invalid_datetime_subtract));
|
||||
}
|
||||
|
||||
if (dtype == dtype_sql_date) {
|
||||
@ -715,15 +724,18 @@ void MAKE_desc(CompiledStatement* statement, dsc* desc, dsql_nod* node, dsql_nod
|
||||
}
|
||||
}
|
||||
else if (is_date_and_time(desc1, desc2)) {
|
||||
/* <date> + <time> */
|
||||
/* <time> + <date> */
|
||||
// <date> + <time>
|
||||
// <time> + <date>
|
||||
desc->dsc_dtype = dtype_timestamp;
|
||||
desc->dsc_length = type_lengths[dtype_timestamp];
|
||||
desc->dsc_scale = 0;
|
||||
}
|
||||
else {
|
||||
/* <date> + <date> */
|
||||
ERRD_post(Arg::Gds(isc_expression_eval_err));
|
||||
// <date> + <date>
|
||||
// <time> + <time>
|
||||
// CVC: Hard to see it, since we are in dialect 1.
|
||||
ERRD_post(Arg::Gds(isc_expression_eval_err) <<
|
||||
Arg::Gds(isc_dsql_invalid_dateortime_add));
|
||||
}
|
||||
}
|
||||
else if (DTYPE_IS_DATE(desc1.dsc_dtype) || (node->nod_type == nod_add))
|
||||
@ -738,9 +750,10 @@ void MAKE_desc(CompiledStatement* statement, dsc* desc, dsql_nod* node, dsql_nod
|
||||
desc->dsc_scale = 0;
|
||||
}
|
||||
else {
|
||||
/* <non-date> - <date> */
|
||||
// <non-date> - <date>
|
||||
fb_assert(node->nod_type == nod_subtract);
|
||||
ERRD_post(Arg::Gds(isc_expression_eval_err));
|
||||
ERRD_post(Arg::Gds(isc_expression_eval_err) <<
|
||||
Arg::Gds(isc_dsql_invalid_type_minus_date));
|
||||
}
|
||||
return;
|
||||
|
||||
@ -780,7 +793,7 @@ void MAKE_desc(CompiledStatement* statement, dsc* desc, dsql_nod* node, dsql_nod
|
||||
dtype1 = desc1.dsc_dtype;
|
||||
dtype2 = desc2.dsc_dtype;
|
||||
|
||||
// Arrays and blobs can never partipate in addition/subtraction
|
||||
// Arrays and blobs can never partipate in addition/subtraction
|
||||
if (DTYPE_IS_BLOB(dtype1) || DTYPE_IS_BLOB(dtype2)) {
|
||||
ERRD_post(Arg::Gds(isc_sqlerr) << Arg::Num(-607) <<
|
||||
Arg::Gds(isc_dsql_no_blob_array));
|
||||
@ -790,7 +803,8 @@ void MAKE_desc(CompiledStatement* statement, dsc* desc, dsql_nod* node, dsql_nod
|
||||
// (use a specific cast instead)
|
||||
if (DTYPE_IS_TEXT(dtype1) || DTYPE_IS_TEXT(dtype2))
|
||||
{
|
||||
ERRD_post(Arg::Gds(isc_expression_eval_err));
|
||||
ERRD_post(Arg::Gds(isc_expression_eval_err)
|
||||
<< Arg::Gds(isc_dsql_nostring_addsub_dial3));
|
||||
}
|
||||
|
||||
/* Determine the TYPE of arithmetic to perform, store it
|
||||
@ -807,9 +821,9 @@ void MAKE_desc(CompiledStatement* statement, dsc* desc, dsql_nod* node, dsql_nod
|
||||
dtype = dtype_double;
|
||||
}
|
||||
else {
|
||||
// mixed numeric and non-numeric:
|
||||
// mixed numeric and non-numeric:
|
||||
|
||||
// The MAX(dtype) rule doesn't apply with dtype_int64
|
||||
// The MAX(dtype) rule doesn't apply with dtype_int64
|
||||
|
||||
if (dtype_int64 == dtype1)
|
||||
dtype1 = dtype_double;
|
||||
@ -831,7 +845,7 @@ void MAKE_desc(CompiledStatement* statement, dsc* desc, dsql_nod* node, dsql_nod
|
||||
{
|
||||
if (node->nod_type == nod_subtract2)
|
||||
{
|
||||
/* <any date> - <any date> */
|
||||
// <any date> - <any date>
|
||||
/* Legal permutations are:
|
||||
<timestamp> - <timestamp>
|
||||
<timestamp> - <date>
|
||||
@ -846,7 +860,8 @@ void MAKE_desc(CompiledStatement* statement, dsc* desc, dsql_nod* node, dsql_nod
|
||||
else if (dtype2 == dtype_timestamp && dtype1 == dtype_sql_date)
|
||||
dtype = dtype_timestamp;
|
||||
else
|
||||
ERRD_post(Arg::Gds(isc_expression_eval_err));
|
||||
ERRD_post(Arg::Gds(isc_expression_eval_err) <<
|
||||
Arg::Gds(isc_dsql_invalid_datetime_subtract));
|
||||
|
||||
if (dtype == dtype_sql_date)
|
||||
{
|
||||
@ -879,7 +894,12 @@ void MAKE_desc(CompiledStatement* statement, dsc* desc, dsql_nod* node, dsql_nod
|
||||
desc->dsc_scale = 0;
|
||||
}
|
||||
else
|
||||
ERRD_post(Arg::Gds(isc_expression_eval_err)); // <date> + <date>
|
||||
{
|
||||
// <date> + <date>
|
||||
// <time> + <time>
|
||||
ERRD_post(Arg::Gds(isc_expression_eval_err) <<
|
||||
Arg::Gds(isc_dsql_invalid_dateortime_add));
|
||||
}
|
||||
}
|
||||
else if (DTYPE_IS_DATE(desc1.dsc_dtype) || (node->nod_type == nod_add2))
|
||||
{
|
||||
@ -896,7 +916,8 @@ void MAKE_desc(CompiledStatement* statement, dsc* desc, dsql_nod* node, dsql_nod
|
||||
{
|
||||
/* <non-date> - <date> */
|
||||
fb_assert(node->nod_type == nod_subtract2);
|
||||
ERRD_post(Arg::Gds(isc_expression_eval_err));
|
||||
ERRD_post(Arg::Gds(isc_expression_eval_err) <<
|
||||
Arg::Gds(isc_dsql_invalid_type_minus_date));
|
||||
}
|
||||
return;
|
||||
|
||||
@ -929,8 +950,9 @@ void MAKE_desc(CompiledStatement* statement, dsc* desc, dsql_nod* node, dsql_nod
|
||||
break;
|
||||
|
||||
default:
|
||||
// a type which cannot participate in an add or subtract
|
||||
ERRD_post(Arg::Gds(isc_expression_eval_err));
|
||||
// a type which cannot participate in an add or subtract
|
||||
ERRD_post(Arg::Gds(isc_expression_eval_err) <<
|
||||
Arg::Gds(isc_dsql_invalid_type_addsub_dial3));
|
||||
}
|
||||
return;
|
||||
|
||||
@ -971,7 +993,8 @@ void MAKE_desc(CompiledStatement* statement, dsc* desc, dsql_nod* node, dsql_nod
|
||||
break;
|
||||
|
||||
default:
|
||||
ERRD_post(Arg::Gds(isc_expression_eval_err));
|
||||
ERRD_post(Arg::Gds(isc_expression_eval_err) <<
|
||||
Arg::Gds(isc_dsql_invalid_type_multip_dial1));
|
||||
}
|
||||
return;
|
||||
|
||||
@ -987,14 +1010,15 @@ void MAKE_desc(CompiledStatement* statement, dsc* desc, dsql_nod* node, dsql_nod
|
||||
return;
|
||||
}
|
||||
|
||||
// In Dialect 2 or 3, strings can never partipate in multiplication
|
||||
// In Dialect 2 or 3, strings can never partipate in multiplication
|
||||
// (use a specific cast instead)
|
||||
if (DTYPE_IS_TEXT(desc1.dsc_dtype) || DTYPE_IS_TEXT(desc2.dsc_dtype))
|
||||
{
|
||||
ERRD_post(Arg::Gds(isc_expression_eval_err));
|
||||
ERRD_post(Arg::Gds(isc_expression_eval_err) <<
|
||||
Arg::Gds(isc_dsql_nostring_multip_dial3));
|
||||
}
|
||||
|
||||
// Arrays and blobs can never partipate in multiplication
|
||||
// Arrays and blobs can never partipate in multiplication
|
||||
if (DTYPE_IS_BLOB(desc1.dsc_dtype) || DTYPE_IS_BLOB(desc2.dsc_dtype)) {
|
||||
ERRD_post(Arg::Gds(isc_sqlerr) << Arg::Num(-607) <<
|
||||
Arg::Gds(isc_dsql_no_blob_array));
|
||||
@ -1020,7 +1044,8 @@ void MAKE_desc(CompiledStatement* statement, dsc* desc, dsql_nod* node, dsql_nod
|
||||
break;
|
||||
|
||||
default:
|
||||
ERRD_post(Arg::Gds(isc_expression_eval_err));
|
||||
ERRD_post(Arg::Gds(isc_expression_eval_err) <<
|
||||
Arg::Gds(isc_dsql_invalid_type_multip_dial3));
|
||||
}
|
||||
return;
|
||||
|
||||
@ -1046,7 +1071,7 @@ void MAKE_desc(CompiledStatement* statement, dsc* desc, dsql_nod* node, dsql_nod
|
||||
return;
|
||||
}
|
||||
|
||||
// Arrays and blobs can never partipate in division
|
||||
// Arrays and blobs can never partipate in division
|
||||
if (DTYPE_IS_BLOB(desc1.dsc_dtype) || DTYPE_IS_BLOB(desc2.dsc_dtype)) {
|
||||
ERRD_post(Arg::Gds(isc_sqlerr) << Arg::Num(-607) <<
|
||||
Arg::Gds(isc_dsql_no_blob_array));
|
||||
@ -1063,7 +1088,8 @@ void MAKE_desc(CompiledStatement* statement, dsc* desc, dsql_nod* node, dsql_nod
|
||||
dtype = MAX(dtype1, dtype2);
|
||||
|
||||
if (!DTYPE_IS_NUMERIC(dtype)) {
|
||||
ERRD_post(Arg::Gds(isc_expression_eval_err));
|
||||
ERRD_post(Arg::Gds(isc_expression_eval_err) <<
|
||||
Arg::Gds(isc_dsql_mustuse_numeric_div_dial1));
|
||||
}
|
||||
|
||||
desc->dsc_dtype = dtype_double;
|
||||
@ -1088,10 +1114,11 @@ void MAKE_desc(CompiledStatement* statement, dsc* desc, dsql_nod* node, dsql_nod
|
||||
// (use a specific cast instead)
|
||||
if (DTYPE_IS_TEXT(desc1.dsc_dtype) || DTYPE_IS_TEXT(desc2.dsc_dtype))
|
||||
{
|
||||
ERRD_post(Arg::Gds(isc_expression_eval_err));
|
||||
ERRD_post(Arg::Gds(isc_expression_eval_err) <<
|
||||
Arg::Gds(isc_dsql_nostring_div_dial3));
|
||||
}
|
||||
|
||||
// Arrays and blobs can never partipate in division
|
||||
// Arrays and blobs can never partipate in division
|
||||
if (DTYPE_IS_BLOB(desc1.dsc_dtype) || DTYPE_IS_BLOB(desc2.dsc_dtype)) {
|
||||
ERRD_post(Arg::Gds(isc_sqlerr) << Arg::Num(-607) <<
|
||||
Arg::Gds(isc_dsql_no_blob_array));
|
||||
@ -1114,7 +1141,8 @@ void MAKE_desc(CompiledStatement* statement, dsc* desc, dsql_nod* node, dsql_nod
|
||||
break;
|
||||
|
||||
default:
|
||||
ERRD_post(Arg::Gds(isc_expression_eval_err));
|
||||
ERRD_post(Arg::Gds(isc_expression_eval_err) <<
|
||||
Arg::Gds(isc_dsql_invalid_type_div_dial3));
|
||||
}
|
||||
|
||||
return;
|
||||
@ -1133,7 +1161,8 @@ void MAKE_desc(CompiledStatement* statement, dsc* desc, dsql_nod* node, dsql_nod
|
||||
// (use a specific cast instead)
|
||||
if (DTYPE_IS_TEXT(desc->dsc_dtype)) {
|
||||
if (statement->req_client_dialect >= SQL_DIALECT_V6_TRANSITION) {
|
||||
ERRD_post(Arg::Gds(isc_expression_eval_err));
|
||||
ERRD_post(Arg::Gds(isc_expression_eval_err) <<
|
||||
Arg::Gds(isc_dsql_nostring_neg_dial3));
|
||||
}
|
||||
desc->dsc_dtype = dtype_double;
|
||||
desc->dsc_length = sizeof(double);
|
||||
@ -1146,7 +1175,8 @@ void MAKE_desc(CompiledStatement* statement, dsc* desc, dsql_nod* node, dsql_nod
|
||||
}
|
||||
// Forbid other not numeric datatypes
|
||||
else if (!DTYPE_IS_NUMERIC(desc->dsc_dtype)) {
|
||||
ERRD_post(Arg::Gds(isc_expression_eval_err));
|
||||
ERRD_post(Arg::Gds(isc_expression_eval_err) <<
|
||||
Arg::Gds(isc_dsql_invalid_type_neg));
|
||||
}
|
||||
return;
|
||||
|
||||
@ -1155,7 +1185,7 @@ void MAKE_desc(CompiledStatement* statement, dsc* desc, dsql_nod* node, dsql_nod
|
||||
return;
|
||||
|
||||
case nod_dbkey:
|
||||
// Fix for bug 10072 check that the target is a relation
|
||||
// Fix for bug 10072 check that the target is a relation
|
||||
context = (dsql_ctx*) node->nod_arg[0]->nod_arg[0];
|
||||
relation = context->ctx_relation;
|
||||
if (relation != 0) {
|
||||
@ -1183,8 +1213,8 @@ void MAKE_desc(CompiledStatement* statement, dsc* desc, dsql_nod* node, dsql_nod
|
||||
the fact that any UDF can return NULL simply returning a NULL
|
||||
pointer. */
|
||||
desc->dsc_flags = DSC_nullable;
|
||||
|
||||
if (desc->dsc_dtype <= dtype_any_text) {
|
||||
|
||||
if (desc->dsc_dtype <= dtype_any_text) {
|
||||
desc->dsc_ttype() = userFunc->udf_character_set_id;
|
||||
}
|
||||
else {
|
||||
@ -1310,7 +1340,7 @@ void MAKE_desc(CompiledStatement* statement, dsc* desc, dsql_nod* node, dsql_nod
|
||||
switch (*(ULONG *) node->nod_arg[e_extract_part]->nod_desc.dsc_address)
|
||||
{
|
||||
case blr_extract_second:
|
||||
// QUADDATE - maybe this should be DECIMAL(6,4)
|
||||
// QUADDATE - maybe this should be DECIMAL(6,4)
|
||||
desc->makeLong(ISC_TIME_SECONDS_PRECISION_SCALE);
|
||||
break;
|
||||
|
||||
@ -1337,7 +1367,7 @@ void MAKE_desc(CompiledStatement* statement, dsc* desc, dsql_nod* node, dsql_nod
|
||||
|
||||
case nod_parameter:
|
||||
/* We don't actually know the datatype of a parameter -
|
||||
we have to guess it based on the context that the
|
||||
we have to guess it based on the context that the
|
||||
parameter appears in. (This is done is pass1.c::set_parameter_type())
|
||||
However, a parameter can appear as part of an expression.
|
||||
As MAKE_desc is used for both determination of parameter
|
||||
@ -1353,7 +1383,7 @@ void MAKE_desc(CompiledStatement* statement, dsc* desc, dsql_nod* node, dsql_nod
|
||||
* SELECT NULL FROM TABLE1;
|
||||
* As we don't have a <dtype_null, SQL_NULL> datatype pairing,
|
||||
* we don't know how to map this NULL to a host-language
|
||||
* datatype. Therefore we now describe it as a
|
||||
* datatype. Therefore we now describe it as a
|
||||
* CHAR(1) CHARACTER SET NONE type.
|
||||
* No value will ever be sent back, as the value of the select
|
||||
* will be NULL - this is only for purposes of DESCRIBING
|
||||
@ -1376,7 +1406,7 @@ void MAKE_desc(CompiledStatement* statement, dsc* desc, dsql_nod* node, dsql_nod
|
||||
MAKE_desc(statement, desc, node->nod_arg[e_via_value_1], null_replacement);
|
||||
/**
|
||||
Set the descriptor flag as nullable. The
|
||||
select expression may or may not return
|
||||
select expression may or may not return
|
||||
this row based on the WHERE clause. Setting this
|
||||
flag warns the client to expect null values.
|
||||
(bug 10379)
|
||||
@ -1389,9 +1419,9 @@ void MAKE_desc(CompiledStatement* statement, dsc* desc, dsql_nod* node, dsql_nod
|
||||
return;
|
||||
|
||||
default:
|
||||
fb_assert(false); // unexpected dsql_nod type
|
||||
fb_assert(false); // unexpected dsql_nod type
|
||||
|
||||
case nod_dom_value: // computed value not used
|
||||
case nod_dom_value: // computed value not used
|
||||
/* By the time we get here, any nod_dom_value node should have had
|
||||
* its descriptor set to the type of the domain being created, or
|
||||
* to the type of the existing domain to which a CHECK constraint
|
||||
@ -1406,11 +1436,11 @@ void MAKE_desc(CompiledStatement* statement, dsc* desc, dsql_nod* node, dsql_nod
|
||||
|
||||
|
||||
/**
|
||||
|
||||
|
||||
MAKE_desc_from_field
|
||||
|
||||
|
||||
@brief Compute a DSC from a field's description information.
|
||||
|
||||
|
||||
|
||||
@param desc
|
||||
@param field
|
||||
@ -1439,12 +1469,12 @@ void MAKE_desc_from_field(dsc* desc, const dsql_fld* field)
|
||||
|
||||
|
||||
/**
|
||||
|
||||
|
||||
MAKE_desc_from_list
|
||||
|
||||
@brief Make a descriptor from a list of values
|
||||
|
||||
@brief Make a descriptor from a list of values
|
||||
according to the sql-standard.
|
||||
|
||||
|
||||
|
||||
@param desc
|
||||
@param node
|
||||
@ -1479,11 +1509,11 @@ void MAKE_desc_from_list(CompiledStatement* statement, dsc* desc, dsql_nod* node
|
||||
|
||||
|
||||
/**
|
||||
|
||||
|
||||
MAKE_field
|
||||
|
||||
|
||||
@brief Make up a field node.
|
||||
|
||||
|
||||
|
||||
@param context
|
||||
@param field
|
||||
@ -1556,11 +1586,11 @@ dsql_nod* MAKE_field(dsql_ctx* context, dsql_fld* field, dsql_nod* indices)
|
||||
|
||||
|
||||
/**
|
||||
|
||||
|
||||
MAKE_field_name
|
||||
|
||||
|
||||
@brief Make up a field name node.
|
||||
|
||||
|
||||
|
||||
@param field_name
|
||||
|
||||
@ -1574,11 +1604,11 @@ dsql_nod* MAKE_field_name(const char* field_name)
|
||||
|
||||
|
||||
/**
|
||||
|
||||
|
||||
MAKE_list
|
||||
|
||||
|
||||
@brief Make a list node from a linked list stack of things.
|
||||
|
||||
|
||||
|
||||
@param stack
|
||||
|
||||
@ -1599,11 +1629,11 @@ dsql_nod* MAKE_list(DsqlNodStack& stack)
|
||||
|
||||
|
||||
/**
|
||||
|
||||
|
||||
MAKE_node
|
||||
|
||||
|
||||
@brief Make a node of given type.
|
||||
|
||||
|
||||
|
||||
@param type
|
||||
@param count
|
||||
@ -1622,12 +1652,12 @@ dsql_nod* MAKE_node(NOD_TYPE type, int count)
|
||||
|
||||
|
||||
/**
|
||||
|
||||
|
||||
MAKE_parameter
|
||||
|
||||
|
||||
@brief Generate a parameter block for a message. If requested,
|
||||
set up for a null flag as well.
|
||||
|
||||
|
||||
|
||||
@param message
|
||||
@param sqlda_flag
|
||||
@ -1643,10 +1673,10 @@ dsql_par* MAKE_parameter(dsql_msg* message, bool sqlda_flag, bool null_flag,
|
||||
ERRD_post(Arg::Gds(isc_sqlerr) << Arg::Num(-901) <<
|
||||
Arg::Gds(isc_badmsgnum));
|
||||
}
|
||||
|
||||
|
||||
DEV_BLKCHK(message, dsql_type_msg);
|
||||
|
||||
if (sqlda_flag && sqlda_index && sqlda_index <= message->msg_index)
|
||||
|
||||
if (sqlda_flag && sqlda_index && sqlda_index <= message->msg_index)
|
||||
{
|
||||
// This parameter possibly already here. Look for it
|
||||
for (dsql_par* temp = message->msg_parameters; temp; temp = temp->par_next) {
|
||||
@ -1671,7 +1701,7 @@ dsql_par* MAKE_parameter(dsql_msg* message, bool sqlda_flag, bool null_flag,
|
||||
make_parameter_names(parameter, node);
|
||||
}
|
||||
|
||||
// If the parameter is used declared, set SQLDA index
|
||||
// If the parameter is used declared, set SQLDA index
|
||||
if (sqlda_flag) {
|
||||
if (sqlda_index) {
|
||||
parameter->par_index = sqlda_index;
|
||||
@ -1682,8 +1712,8 @@ dsql_par* MAKE_parameter(dsql_msg* message, bool sqlda_flag, bool null_flag,
|
||||
parameter->par_index = ++message->msg_index;
|
||||
}
|
||||
}
|
||||
|
||||
// If a null handing has been requested, set up a null flag
|
||||
|
||||
// If a null handing has been requested, set up a null flag
|
||||
|
||||
if (null_flag) {
|
||||
dsql_par* null = MAKE_parameter(message, false, false, 0, NULL);
|
||||
@ -1697,11 +1727,11 @@ dsql_par* MAKE_parameter(dsql_msg* message, bool sqlda_flag, bool null_flag,
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
|
||||
MAKE_string
|
||||
|
||||
|
||||
@brief Generalized routine for making a string block.
|
||||
|
||||
|
||||
|
||||
@param str
|
||||
@param length
|
||||
@ -1715,11 +1745,11 @@ dsql_str* MAKE_string(const char* str, int length)
|
||||
|
||||
|
||||
/**
|
||||
|
||||
|
||||
MAKE_symbol
|
||||
|
||||
|
||||
@brief Make a symbol for an object and insert symbol into hash table.
|
||||
|
||||
|
||||
|
||||
@param database
|
||||
@param name
|
||||
@ -1756,12 +1786,12 @@ dsql_sym* MAKE_symbol(dsql_dbb* database,
|
||||
|
||||
|
||||
/**
|
||||
|
||||
|
||||
MAKE_tagged_string
|
||||
|
||||
|
||||
@brief Generalized routine for making a string block.
|
||||
Which is tagged with a character set descriptor.
|
||||
|
||||
|
||||
|
||||
@param str_
|
||||
@param length
|
||||
@ -1782,11 +1812,11 @@ dsql_str* MAKE_tagged_string(const char* strvar, size_t length, const char* char
|
||||
|
||||
|
||||
/**
|
||||
|
||||
|
||||
MAKE_trigger_type
|
||||
|
||||
|
||||
@brief Make a trigger type
|
||||
|
||||
|
||||
|
||||
@param prefix_node
|
||||
@param suffix_node
|
||||
@ -1803,11 +1833,11 @@ dsql_nod* MAKE_trigger_type(dsql_nod* prefix_node, dsql_nod* suffix_node)
|
||||
|
||||
|
||||
/**
|
||||
|
||||
|
||||
MAKE_variable
|
||||
|
||||
|
||||
@brief Make up a field node.
|
||||
|
||||
|
||||
|
||||
@param field
|
||||
@param name
|
||||
@ -1844,11 +1874,11 @@ dsql_nod* MAKE_variable(dsql_fld* field, const TEXT* name, const dsql_var_type t
|
||||
/**
|
||||
|
||||
make_null
|
||||
|
||||
|
||||
@brief Prepare a descriptor to signal SQL NULL
|
||||
|
||||
|
||||
@param desc
|
||||
|
||||
|
||||
**/
|
||||
static void make_null(dsc* const desc)
|
||||
{
|
||||
@ -2015,7 +2045,7 @@ static void make_parameter_names(dsql_par* parameter, const dsql_nod* item)
|
||||
name_alias = variable->var_field->fld_name.c_str();
|
||||
break;
|
||||
}
|
||||
case nod_udf:
|
||||
case nod_udf:
|
||||
{
|
||||
dsql_udf* userFunc = (dsql_udf*) item->nod_arg[0];
|
||||
name_alias = userFunc->udf_name.c_str();
|
||||
@ -2064,7 +2094,7 @@ static void make_parameter_names(dsql_par* parameter, const dsql_nod* item)
|
||||
node = node->nod_arg[0];
|
||||
++level;
|
||||
}
|
||||
|
||||
|
||||
switch (node->nod_type)
|
||||
{
|
||||
case nod_constant:
|
||||
@ -2175,7 +2205,7 @@ static void make_parameter_names(dsql_par* parameter, const dsql_nod* item)
|
||||
case nod_coalesce:
|
||||
name_alias = "COALESCE";
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (name_alias) {
|
||||
parameter->par_name = parameter->par_alias = name_alias;
|
||||
|
@ -844,6 +844,23 @@ static const struct {
|
||||
{"dsql_cte_not_used", 336397237},
|
||||
{"dsql_col_more_than_once_view", 336397238},
|
||||
{"dsql_unsupported_in_auto_trans", 336397239},
|
||||
{"dsql_eval_unknode", 336397240},
|
||||
{"dsql_agg_wrongarg", 336397241},
|
||||
{"dsql_agg2_wrongarg", 336397242},
|
||||
{"dsql_nodateortime_pm_string", 336397243},
|
||||
{"dsql_invalid_datetime_subtract", 336397244},
|
||||
{"dsql_invalid_dateortime_add", 336397245},
|
||||
{"dsql_invalid_type_minus_date", 336397246},
|
||||
{"dsql_nostring_addsub_dial3", 336397247},
|
||||
{"dsql_invalid_type_addsub_dial3", 336397248},
|
||||
{"dsql_invalid_type_multip_dial1", 336397249},
|
||||
{"dsql_nostring_multip_dial3", 336397250},
|
||||
{"dsql_invalid_type_multip_dial3", 336397251},
|
||||
{"dsql_mustuse_numeric_div_dial1", 336397252},
|
||||
{"dsql_nostring_div_dial3", 336397253},
|
||||
{"dsql_invalid_type_div_dial3", 336397254},
|
||||
{"dsql_nostring_neg_dial3", 336397255},
|
||||
{"dsql_invalid_type_neg", 336397256},
|
||||
{"gsec_cant_open_db", 336723983},
|
||||
{"gsec_switches_error", 336723984},
|
||||
{"gsec_no_op_spec", 336723985},
|
||||
|
@ -878,6 +878,23 @@ const ISC_STATUS isc_dsql_unsupp_feature_dialect = 336397236L;
|
||||
const ISC_STATUS isc_dsql_cte_not_used = 336397237L;
|
||||
const ISC_STATUS isc_dsql_col_more_than_once_view = 336397238L;
|
||||
const ISC_STATUS isc_dsql_unsupported_in_auto_trans = 336397239L;
|
||||
const ISC_STATUS isc_dsql_eval_unknode = 336397240L;
|
||||
const ISC_STATUS isc_dsql_agg_wrongarg = 336397241L;
|
||||
const ISC_STATUS isc_dsql_agg2_wrongarg = 336397242L;
|
||||
const ISC_STATUS isc_dsql_nodateortime_pm_string = 336397243L;
|
||||
const ISC_STATUS isc_dsql_invalid_datetime_subtract = 336397244L;
|
||||
const ISC_STATUS isc_dsql_invalid_dateortime_add = 336397245L;
|
||||
const ISC_STATUS isc_dsql_invalid_type_minus_date = 336397246L;
|
||||
const ISC_STATUS isc_dsql_nostring_addsub_dial3 = 336397247L;
|
||||
const ISC_STATUS isc_dsql_invalid_type_addsub_dial3 = 336397248L;
|
||||
const ISC_STATUS isc_dsql_invalid_type_multip_dial1 = 336397249L;
|
||||
const ISC_STATUS isc_dsql_nostring_multip_dial3 = 336397250L;
|
||||
const ISC_STATUS isc_dsql_invalid_type_multip_dial3 = 336397251L;
|
||||
const ISC_STATUS isc_dsql_mustuse_numeric_div_dial1 = 336397252L;
|
||||
const ISC_STATUS isc_dsql_nostring_div_dial3 = 336397253L;
|
||||
const ISC_STATUS isc_dsql_invalid_type_div_dial3 = 336397254L;
|
||||
const ISC_STATUS isc_dsql_nostring_neg_dial3 = 336397255L;
|
||||
const ISC_STATUS isc_dsql_invalid_type_neg = 336397256L;
|
||||
const ISC_STATUS isc_gsec_cant_open_db = 336723983L;
|
||||
const ISC_STATUS isc_gsec_switches_error = 336723984L;
|
||||
const ISC_STATUS isc_gsec_no_op_spec = 336723985L;
|
||||
@ -945,7 +962,7 @@ const ISC_STATUS isc_fbsvcmgr_query_err = 336986117L;
|
||||
const ISC_STATUS isc_fbsvcmgr_switch_unknown = 336986118L;
|
||||
const ISC_STATUS isc_fbsvcmgr_bad_sm = 336986159L;
|
||||
const ISC_STATUS isc_utl_trusted_switch = 337051649L;
|
||||
const ISC_STATUS isc_err_max = 889;
|
||||
const ISC_STATUS isc_err_max = 906;
|
||||
|
||||
#else /* c definitions */
|
||||
|
||||
@ -1793,6 +1810,23 @@ const ISC_STATUS isc_err_max = 889;
|
||||
#define isc_dsql_cte_not_used 336397237L
|
||||
#define isc_dsql_col_more_than_once_view 336397238L
|
||||
#define isc_dsql_unsupported_in_auto_trans 336397239L
|
||||
#define isc_dsql_eval_unknode 336397240L
|
||||
#define isc_dsql_agg_wrongarg 336397241L
|
||||
#define isc_dsql_agg2_wrongarg 336397242L
|
||||
#define isc_dsql_nodateortime_pm_string 336397243L
|
||||
#define isc_dsql_invalid_datetime_subtract 336397244L
|
||||
#define isc_dsql_invalid_dateortime_add 336397245L
|
||||
#define isc_dsql_invalid_type_minus_date 336397246L
|
||||
#define isc_dsql_nostring_addsub_dial3 336397247L
|
||||
#define isc_dsql_invalid_type_addsub_dial3 336397248L
|
||||
#define isc_dsql_invalid_type_multip_dial1 336397249L
|
||||
#define isc_dsql_nostring_multip_dial3 336397250L
|
||||
#define isc_dsql_invalid_type_multip_dial3 336397251L
|
||||
#define isc_dsql_mustuse_numeric_div_dial1 336397252L
|
||||
#define isc_dsql_nostring_div_dial3 336397253L
|
||||
#define isc_dsql_invalid_type_div_dial3 336397254L
|
||||
#define isc_dsql_nostring_neg_dial3 336397255L
|
||||
#define isc_dsql_invalid_type_neg 336397256L
|
||||
#define isc_gsec_cant_open_db 336723983L
|
||||
#define isc_gsec_switches_error 336723984L
|
||||
#define isc_gsec_no_op_spec 336723985L
|
||||
@ -1860,7 +1894,7 @@ const ISC_STATUS isc_err_max = 889;
|
||||
#define isc_fbsvcmgr_switch_unknown 336986118L
|
||||
#define isc_fbsvcmgr_bad_sm 336986159L
|
||||
#define isc_utl_trusted_switch 337051649L
|
||||
#define isc_err_max 889
|
||||
#define isc_err_max 906
|
||||
|
||||
#endif
|
||||
|
||||
|
@ -844,72 +844,89 @@ static const struct {
|
||||
{336397237, "CTE \"@1\" is not used in query"}, /* 820, dsql_cte_not_used */
|
||||
{336397238, "column @1 appears more than once in ALTER VIEW"}, /* 821, dsql_col_more_than_once_view */
|
||||
{336397239, "@1 is not supported inside IN AUTONOMOUS TRANSACTION block"}, /* 822, dsql_unsupported_in_auto_trans */
|
||||
{336723983, "unable to open database"}, /* 823, gsec_cant_open_db */
|
||||
{336723984, "error in switch specifications"}, /* 824, gsec_switches_error */
|
||||
{336723985, "no operation specified"}, /* 825, gsec_no_op_spec */
|
||||
{336723986, "no user name specified"}, /* 826, gsec_no_usr_name */
|
||||
{336723987, "add record error"}, /* 827, gsec_err_add */
|
||||
{336723988, "modify record error"}, /* 828, gsec_err_modify */
|
||||
{336723989, "find/modify record error"}, /* 829, gsec_err_find_mod */
|
||||
{336723990, "record not found for user: @1"}, /* 830, gsec_err_rec_not_found */
|
||||
{336723991, "delete record error"}, /* 831, gsec_err_delete */
|
||||
{336723992, "find/delete record error"}, /* 832, gsec_err_find_del */
|
||||
{336723996, "find/display record error"}, /* 833, gsec_err_find_disp */
|
||||
{336723997, "invalid parameter, no switch defined"}, /* 834, gsec_inv_param */
|
||||
{336723998, "operation already specified"}, /* 835, gsec_op_specified */
|
||||
{336723999, "password already specified"}, /* 836, gsec_pw_specified */
|
||||
{336724000, "uid already specified"}, /* 837, gsec_uid_specified */
|
||||
{336724001, "gid already specified"}, /* 838, gsec_gid_specified */
|
||||
{336724002, "project already specified"}, /* 839, gsec_proj_specified */
|
||||
{336724003, "organization already specified"}, /* 840, gsec_org_specified */
|
||||
{336724004, "first name already specified"}, /* 841, gsec_fname_specified */
|
||||
{336724005, "middle name already specified"}, /* 842, gsec_mname_specified */
|
||||
{336724006, "last name already specified"}, /* 843, gsec_lname_specified */
|
||||
{336724008, "invalid switch specified"}, /* 844, gsec_inv_switch */
|
||||
{336724009, "ambiguous switch specified"}, /* 845, gsec_amb_switch */
|
||||
{336724010, "no operation specified for parameters"}, /* 846, gsec_no_op_specified */
|
||||
{336724011, "no parameters allowed for this operation"}, /* 847, gsec_params_not_allowed */
|
||||
{336724012, "incompatible switches specified"}, /* 848, gsec_incompat_switch */
|
||||
{336724044, "Invalid user name (maximum 31 bytes allowed)"}, /* 849, gsec_inv_username */
|
||||
{336724045, "Warning - maximum 8 significant bytes of password used"}, /* 850, gsec_inv_pw_length */
|
||||
{336724046, "database already specified"}, /* 851, gsec_db_specified */
|
||||
{336724047, "database administrator name already specified"}, /* 852, gsec_db_admin_specified */
|
||||
{336724048, "database administrator password already specified"}, /* 853, gsec_db_admin_pw_specified */
|
||||
{336724049, "SQL role name already specified"}, /* 854, gsec_sql_role_specified */
|
||||
{336789504, "The license file does not exist or could not be opened for read"}, /* 855, license_no_file */
|
||||
{336789523, "operation already specified"}, /* 856, license_op_specified */
|
||||
{336789524, "no operation specified"}, /* 857, license_op_missing */
|
||||
{336789525, "invalid switch"}, /* 858, license_inv_switch */
|
||||
{336789526, "invalid switch combination"}, /* 859, license_inv_switch_combo */
|
||||
{336789527, "illegal operation/switch combination"}, /* 860, license_inv_op_combo */
|
||||
{336789528, "ambiguous switch"}, /* 861, license_amb_switch */
|
||||
{336789529, "invalid parameter, no switch specified"}, /* 862, license_inv_parameter */
|
||||
{336789530, "switch does not take any parameter"}, /* 863, license_param_specified */
|
||||
{336789531, "switch requires a parameter"}, /* 864, license_param_req */
|
||||
{336789532, "syntax error in command line"}, /* 865, license_syntx_error */
|
||||
{336789534, "The certificate was not added. A duplicate ID exists in the license file."}, /* 866, license_dup_id */
|
||||
{336789535, "The certificate was not added. Invalid certificate ID / Key combination."}, /* 867, license_inv_id_key */
|
||||
{336789536, "The certificate was not removed. The key does not exist or corresponds to a temporary evaluation license."}, /* 868, license_err_remove */
|
||||
{336789537, "An error occurred updating the license file. Operation cancelled."}, /* 869, license_err_update */
|
||||
{336789538, "The certificate could not be validated based on the information given. Please recheck the ID and key information."}, /* 870, license_err_convert */
|
||||
{336789539, "Operation failed. An unknown error occurred."}, /* 871, license_err_unk */
|
||||
{336789540, "Add license operation failed, KEY: @1 ID: @2"}, /* 872, license_svc_err_add */
|
||||
{336789541, "Remove license operation failed, KEY: @1"}, /* 873, license_svc_err_remove */
|
||||
{336789563, "The evaluation license has already been used on this server. You need to purchase a non-evaluation license."}, /* 874, license_eval_exists */
|
||||
{336920577, "found unknown switch"}, /* 875, gstat_unknown_switch */
|
||||
{336920578, "please retry, giving a database name"}, /* 876, gstat_retry */
|
||||
{336920579, "Wrong ODS version, expected @1, encountered @2"}, /* 877, gstat_wrong_ods */
|
||||
{336920580, "Unexpected end of database file."}, /* 878, gstat_unexpected_eof */
|
||||
{336920605, "Can't open database file @1"}, /* 879, gstat_open_err */
|
||||
{336920606, "Can't read a database page"}, /* 880, gstat_read_err */
|
||||
{336920607, "System memory exhausted"}, /* 881, gstat_sysmemex */
|
||||
{336986113, "Wrong value for access mode"}, /* 882, fbsvcmgr_bad_am */
|
||||
{336986114, "Wrong value for write mode"}, /* 883, fbsvcmgr_bad_wm */
|
||||
{336986115, "Wrong value for reserve space"}, /* 884, fbsvcmgr_bad_rs */
|
||||
{336986116, "Unknown tag (@1) in info_svr_db_info block after isc_svc_query()"}, /* 885, fbsvcmgr_info_err */
|
||||
{336986117, "Unknown tag (@1) in isc_svc_query() results"}, /* 886, fbsvcmgr_query_err */
|
||||
{336986118, "Unknown switch \"@1\""}, /* 887, fbsvcmgr_switch_unknown */
|
||||
{336986159, "Wrong value for shutdown mode"}, /* 888, fbsvcmgr_bad_sm */
|
||||
{337051649, "Switches trusted_svc and trusted_role are not supported from command line"}, /* 889, utl_trusted_switch */
|
||||
{336397240, "Unknown node type @1 in dsql/GEN_expr"}, /* 823, dsql_eval_unknode */
|
||||
{336397241, "Argument for @1 in dialect 1 must be string or numeric"}, /* 824, dsql_agg_wrongarg */
|
||||
{336397242, "Argument for @1 in dialect 2 must be numeric"}, /* 825, dsql_agg2_wrongarg */
|
||||
{336397243, "Strings cannot be added to or subtracted from DATE or TIME types"}, /* 826, dsql_nodateortime_pm_string */
|
||||
{336397244, "Invalid data type for subtraction involving DATE, TIME or TIMESTAMP types"}, /* 827, dsql_invalid_datetime_subtract */
|
||||
{336397245, "Adding two DATE values or two TIME values is not allowed"}, /* 828, dsql_invalid_dateortime_add */
|
||||
{336397246, "DATE value cannot be subtracted from the provided data type"}, /* 829, dsql_invalid_type_minus_date */
|
||||
{336397247, "Strings cannot be added or subtracted in dialect 3"}, /* 830, dsql_nostring_addsub_dial3 */
|
||||
{336397248, "Invalid data type for addition or subtraction in dialect 3"}, /* 831, dsql_invalid_type_addsub_dial3 */
|
||||
{336397249, "Invalid data type for multiplication in dialect 1"}, /* 832, dsql_invalid_type_multip_dial1 */
|
||||
{336397250, "Strings cannot be multiplied in dialect 3"}, /* 833, dsql_nostring_multip_dial3 */
|
||||
{336397251, "Invalid data type for multiplication in dialect 3"}, /* 834, dsql_invalid_type_multip_dial3 */
|
||||
{336397252, "Division in dialect 1 must be between numeric data types"}, /* 835, dsql_mustuse_numeric_div_dial1 */
|
||||
{336397253, "Strings cannot be divided in dialect 3"}, /* 836, dsql_nostring_div_dial3 */
|
||||
{336397254, "Invalid data type for division in dialect 3"}, /* 837, dsql_invalid_type_div_dial3 */
|
||||
{336397255, "Strings cannot be negated (applied the minus operator) in dialect 3"}, /* 838, dsql_nostring_neg_dial3 */
|
||||
{336397256, "Invalid data type for negation (minus operator)"}, /* 839, dsql_invalid_type_neg */
|
||||
{336723983, "unable to open database"}, /* 840, gsec_cant_open_db */
|
||||
{336723984, "error in switch specifications"}, /* 841, gsec_switches_error */
|
||||
{336723985, "no operation specified"}, /* 842, gsec_no_op_spec */
|
||||
{336723986, "no user name specified"}, /* 843, gsec_no_usr_name */
|
||||
{336723987, "add record error"}, /* 844, gsec_err_add */
|
||||
{336723988, "modify record error"}, /* 845, gsec_err_modify */
|
||||
{336723989, "find/modify record error"}, /* 846, gsec_err_find_mod */
|
||||
{336723990, "record not found for user: @1"}, /* 847, gsec_err_rec_not_found */
|
||||
{336723991, "delete record error"}, /* 848, gsec_err_delete */
|
||||
{336723992, "find/delete record error"}, /* 849, gsec_err_find_del */
|
||||
{336723996, "find/display record error"}, /* 850, gsec_err_find_disp */
|
||||
{336723997, "invalid parameter, no switch defined"}, /* 851, gsec_inv_param */
|
||||
{336723998, "operation already specified"}, /* 852, gsec_op_specified */
|
||||
{336723999, "password already specified"}, /* 853, gsec_pw_specified */
|
||||
{336724000, "uid already specified"}, /* 854, gsec_uid_specified */
|
||||
{336724001, "gid already specified"}, /* 855, gsec_gid_specified */
|
||||
{336724002, "project already specified"}, /* 856, gsec_proj_specified */
|
||||
{336724003, "organization already specified"}, /* 857, gsec_org_specified */
|
||||
{336724004, "first name already specified"}, /* 858, gsec_fname_specified */
|
||||
{336724005, "middle name already specified"}, /* 859, gsec_mname_specified */
|
||||
{336724006, "last name already specified"}, /* 860, gsec_lname_specified */
|
||||
{336724008, "invalid switch specified"}, /* 861, gsec_inv_switch */
|
||||
{336724009, "ambiguous switch specified"}, /* 862, gsec_amb_switch */
|
||||
{336724010, "no operation specified for parameters"}, /* 863, gsec_no_op_specified */
|
||||
{336724011, "no parameters allowed for this operation"}, /* 864, gsec_params_not_allowed */
|
||||
{336724012, "incompatible switches specified"}, /* 865, gsec_incompat_switch */
|
||||
{336724044, "Invalid user name (maximum 31 bytes allowed)"}, /* 866, gsec_inv_username */
|
||||
{336724045, "Warning - maximum 8 significant bytes of password used"}, /* 867, gsec_inv_pw_length */
|
||||
{336724046, "database already specified"}, /* 868, gsec_db_specified */
|
||||
{336724047, "database administrator name already specified"}, /* 869, gsec_db_admin_specified */
|
||||
{336724048, "database administrator password already specified"}, /* 870, gsec_db_admin_pw_specified */
|
||||
{336724049, "SQL role name already specified"}, /* 871, gsec_sql_role_specified */
|
||||
{336789504, "The license file does not exist or could not be opened for read"}, /* 872, license_no_file */
|
||||
{336789523, "operation already specified"}, /* 873, license_op_specified */
|
||||
{336789524, "no operation specified"}, /* 874, license_op_missing */
|
||||
{336789525, "invalid switch"}, /* 875, license_inv_switch */
|
||||
{336789526, "invalid switch combination"}, /* 876, license_inv_switch_combo */
|
||||
{336789527, "illegal operation/switch combination"}, /* 877, license_inv_op_combo */
|
||||
{336789528, "ambiguous switch"}, /* 878, license_amb_switch */
|
||||
{336789529, "invalid parameter, no switch specified"}, /* 879, license_inv_parameter */
|
||||
{336789530, "switch does not take any parameter"}, /* 880, license_param_specified */
|
||||
{336789531, "switch requires a parameter"}, /* 881, license_param_req */
|
||||
{336789532, "syntax error in command line"}, /* 882, license_syntx_error */
|
||||
{336789534, "The certificate was not added. A duplicate ID exists in the license file."}, /* 883, license_dup_id */
|
||||
{336789535, "The certificate was not added. Invalid certificate ID / Key combination."}, /* 884, license_inv_id_key */
|
||||
{336789536, "The certificate was not removed. The key does not exist or corresponds to a temporary evaluation license."}, /* 885, license_err_remove */
|
||||
{336789537, "An error occurred updating the license file. Operation cancelled."}, /* 886, license_err_update */
|
||||
{336789538, "The certificate could not be validated based on the information given. Please recheck the ID and key information."}, /* 887, license_err_convert */
|
||||
{336789539, "Operation failed. An unknown error occurred."}, /* 888, license_err_unk */
|
||||
{336789540, "Add license operation failed, KEY: @1 ID: @2"}, /* 889, license_svc_err_add */
|
||||
{336789541, "Remove license operation failed, KEY: @1"}, /* 890, license_svc_err_remove */
|
||||
{336789563, "The evaluation license has already been used on this server. You need to purchase a non-evaluation license."}, /* 891, license_eval_exists */
|
||||
{336920577, "found unknown switch"}, /* 892, gstat_unknown_switch */
|
||||
{336920578, "please retry, giving a database name"}, /* 893, gstat_retry */
|
||||
{336920579, "Wrong ODS version, expected @1, encountered @2"}, /* 894, gstat_wrong_ods */
|
||||
{336920580, "Unexpected end of database file."}, /* 895, gstat_unexpected_eof */
|
||||
{336920605, "Can't open database file @1"}, /* 896, gstat_open_err */
|
||||
{336920606, "Can't read a database page"}, /* 897, gstat_read_err */
|
||||
{336920607, "System memory exhausted"}, /* 898, gstat_sysmemex */
|
||||
{336986113, "Wrong value for access mode"}, /* 899, fbsvcmgr_bad_am */
|
||||
{336986114, "Wrong value for write mode"}, /* 900, fbsvcmgr_bad_wm */
|
||||
{336986115, "Wrong value for reserve space"}, /* 901, fbsvcmgr_bad_rs */
|
||||
{336986116, "Unknown tag (@1) in info_svr_db_info block after isc_svc_query()"}, /* 902, fbsvcmgr_info_err */
|
||||
{336986117, "Unknown tag (@1) in isc_svc_query() results"}, /* 903, fbsvcmgr_query_err */
|
||||
{336986118, "Unknown switch \"@1\""}, /* 904, fbsvcmgr_switch_unknown */
|
||||
{336986159, "Wrong value for shutdown mode"}, /* 905, fbsvcmgr_bad_sm */
|
||||
{337051649, "Switches trusted_svc and trusted_role are not supported from command line"}, /* 906, utl_trusted_switch */
|
||||
{0, NULL}
|
||||
};
|
||||
|
@ -843,6 +843,23 @@ static const struct {
|
||||
{336397237, -104}, /* 949 dsql_cte_not_used */
|
||||
{336397238, -104}, /* 950 dsql_col_more_than_once_view */
|
||||
{336397239, -901}, /* 951 dsql_unsupported_in_auto_trans */
|
||||
{336397240, -833}, /* 952 dsql_eval_unknode */
|
||||
{336397241, -833}, /* 953 dsql_agg_wrongarg */
|
||||
{336397242, -833}, /* 954 dsql_agg2_wrongarg */
|
||||
{336397243, -833}, /* 955 dsql_nodateortime_pm_string */
|
||||
{336397244, -833}, /* 956 dsql_invalid_datetime_subtract */
|
||||
{336397245, -833}, /* 957 dsql_invalid_dateortime_add */
|
||||
{336397246, -833}, /* 958 dsql_invalid_type_minus_date */
|
||||
{336397247, -833}, /* 959 dsql_nostring_addsub_dial3 */
|
||||
{336397248, -833}, /* 960 dsql_invalid_type_addsub_dial3 */
|
||||
{336397249, -833}, /* 961 dsql_invalid_type_multip_dial1 */
|
||||
{336397250, -833}, /* 962 dsql_nostring_multip_dial3 */
|
||||
{336397251, -833}, /* 963 dsql_invalid_type_multip_dial3 */
|
||||
{336397252, -833}, /* 964 dsql_mustuse_numeric_div_dial1 */
|
||||
{336397253, -833}, /* 965 dsql_nostring_div_dial3 */
|
||||
{336397254, -833}, /* 966 dsql_invalid_type_div_dial3 */
|
||||
{336397255, -833}, /* 967 dsql_nostring_neg_dial3 */
|
||||
{336397256, -833}, /* 968 dsql_invalid_type_neg */
|
||||
{336723983, -901}, /* 15 gsec_cant_open_db */
|
||||
{336723984, -901}, /* 16 gsec_switches_error */
|
||||
{336723985, -901}, /* 17 gsec_no_op_spec */
|
||||
|
@ -843,6 +843,23 @@ static const struct {
|
||||
{336397237, "42000"}, // 949 dsql_cte_not_used
|
||||
{336397238, "42000"}, // 950 dsql_col_more_than_once_view
|
||||
{336397239, "HY000"}, // 951 dsql_unsupported_in_auto_trans
|
||||
{336397240, "42000"}, // 952 dsql_eval_unknode
|
||||
{336397241, "42000"}, // 953 dsql_agg_wrongarg
|
||||
{336397242, "42000"}, // 954 dsql_agg2_wrongarg
|
||||
{336397243, "42000"}, // 955 dsql_nodateortime_pm_string
|
||||
{336397244, "42000"}, // 956 dsql_invalid_datetime_subtract
|
||||
{336397245, "42000"}, // 957 dsql_invalid_dateortime_add
|
||||
{336397246, "42000"}, // 958 dsql_invalid_type_minus_date
|
||||
{336397247, "42000"}, // 959 dsql_nostring_addsub_dial3
|
||||
{336397248, "42000"}, // 960 dsql_invalid_type_addsub_dial3
|
||||
{336397249, "42000"}, // 961 dsql_invalid_type_multip_dial1
|
||||
{336397250, "42000"}, // 962 dsql_nostring_multip_dial3
|
||||
{336397251, "42000"}, // 963 dsql_invalid_type_multip_dial3
|
||||
{336397252, "42000"}, // 964 dsql_mustuse_numeric_div_dial1
|
||||
{336397253, "42000"}, // 965 dsql_nostring_div_dial3
|
||||
{336397254, "42000"}, // 966 dsql_invalid_type_div_dial3
|
||||
{336397255, "42000"}, // 967 dsql_nostring_neg_dial3
|
||||
{336397256, "42000"}, // 968 dsql_invalid_type_neg
|
||||
{336723983, "00000"}, // 15 gsec_cant_open_db
|
||||
{336723984, "00000"}, // 16 gsec_switches_error
|
||||
{336723985, "00000"}, // 17 gsec_no_op_spec
|
||||
|
@ -18,7 +18,7 @@ set bulk_insert INSERT INTO FACILITIES (LAST_CHANGE, FACILITY, FAC_CODE, MAX_NUM
|
||||
('1996-11-07 13:39:40', 'INSTALL', 10, 1)
|
||||
('1996-11-07 13:38:41', 'TEST', 11, 4)
|
||||
('2008-04-10 23:40:00', 'GBAK', 12, 306)
|
||||
('2008-03-17 12:05:00', 'SQLERR', 13, 952)
|
||||
('2008-09-26 07:37:16', 'SQLERR', 13, 969)
|
||||
('1996-11-07 13:38:42', 'SQLWARN', 14, 613)
|
||||
('2006-09-10 03:04:31', 'JRD_BUGCHK', 15, 307)
|
||||
--
|
||||
|
@ -37,8 +37,8 @@ the total length of a blob in a call to gds_$database_info.');
|
||||
problem may be an obvious one, such as incorrect file name or
|
||||
a file protection problem. If that does not eliminate the
|
||||
problem, check your program logic. To avoid errors when
|
||||
the user enters a database name interactively,
|
||||
add an error handler to the statement that causes this
|
||||
the user enters a database name interactively,
|
||||
add an error handler to the statement that causes this
|
||||
message to appear.', 'Your program encountered an input or output error.');
|
||||
('lock_conflict', NULL, NULL, NULL, 0, 25, NULL, 'lock conflict on no wait transaction', NULL, NULL);
|
||||
('metadata_corrupt', NULL, NULL, NULL, 0, 26, NULL, 'corrupt system table', NULL, NULL);
|
||||
@ -64,7 +64,7 @@ receive this error while using GDML or SQL, please submit
|
||||
a bug report.', 'The actual length of a buffer does not correspond to what
|
||||
the request language says it should be.');
|
||||
('read_only_field', NULL, NULL, NULL, 0, 39, NULL, 'attempted update of read-only column', 'If the read-only field is in a system relation, change your
|
||||
program. If the field is a COMPUTED field, you have to
|
||||
program. If the field is a COMPUTED field, you have to
|
||||
change the source fields to change its value. If the field
|
||||
takes part in a view, update it in its source relations.', 'Your program tried to change the value of a read-only
|
||||
field in a system relation, a COMPUTED field, or a field
|
||||
@ -74,28 +74,28 @@ reserved for READ access.');
|
||||
('read_only_trans', NULL, NULL, NULL, 0, 41, NULL, 'attempted update during read-only transaction', 'If you want to update the database, use a READ_WRITE
|
||||
transaction.', 'Your program tried to update during a READ_ONLY translation.');
|
||||
('read_only_view', NULL, NULL, NULL, 0, 42, NULL, 'cannot update read-only view @1', 'Views that include a record select, join, or project cannot
|
||||
be updated. If you want to perform updates, you must do so
|
||||
be updated. If you want to perform updates, you must do so
|
||||
through the source relations. If you are updating join terms,
|
||||
make sure that you change them in all relations. In any case,
|
||||
update the source relations in a single transaction so that
|
||||
you make the changes consistently.', 'Your program tried to update a view that contains a
|
||||
update the source relations in a single transaction so that
|
||||
you make the changes consistently.', 'Your program tried to update a view that contains a
|
||||
record select, join, or project operation.');
|
||||
('req_no_trans', NULL, NULL, NULL, 0, 43, NULL, 'no transaction for request', 'Check and correct your program logic. Commit or roll back
|
||||
the transaction only after you have completed all operations
|
||||
that you want in the transaction.', 'Your program tried to continue a request after the enveloping
|
||||
transaction had been committed or rolled back.');
|
||||
('req_sync', NULL, NULL, NULL, 0, 44, NULL, 'request synchronization error', 'For call interface programs, locate and correct the program
|
||||
error. If you received this error while using GDML or SQL,
|
||||
error. If you received this error while using GDML or SQL,
|
||||
please submit a bug report. ', 'Your program issued a send or receive for a message type
|
||||
that did not match the logic of the BLR request.');
|
||||
('req_wrong_db', NULL, NULL, NULL, 0, 45, NULL, 'request referenced an unavailable database', 'Change your program so that the required database is
|
||||
within the scope of the transaction.', 'Your program referenced a relation from a database that is
|
||||
within the scope of the transaction.', 'Your program referenced a relation from a database that is
|
||||
not available within the current transaction.');
|
||||
('segment', NULL, NULL, NULL, 0, 46, NULL, 'segment buffer length shorter than expected', 'Check the segment_buffer_length parameter on the blob calls
|
||||
and make sure that it is long enough for handling the
|
||||
segments of the blob field you are accessing. Alternately,
|
||||
you could trap for this error and accept truncated values.', 'The length of the segment_buffer on a blob call was shorter
|
||||
than the segment returned by the database software.
|
||||
than the segment returned by the database software.
|
||||
Therefore, the database software could return only part of
|
||||
the segment.');
|
||||
('segstr_eof', NULL, NULL, NULL, 0, 47, NULL, 'attempted retrieval of more segments than exist', 'Change your program so that it tests for this condition
|
||||
@ -113,15 +113,15 @@ creating.');
|
||||
('segstr_no_trans', NULL, NULL, NULL, 0, 50, NULL, 'attempted action on BLOB outside transaction', 'Change your program so that you perform whatever data
|
||||
manipulation is required in a transaction before you end
|
||||
that transaction.', 'Your program reference a blob field after it committed or
|
||||
rolled back the transaction that had been processing the
|
||||
rolled back the transaction that had been processing the
|
||||
field.');
|
||||
('segstr_no_write', NULL, NULL, NULL, 0, 51, NULL, 'attempted write to read-only BLOB', 'If you are using the call interface, open the blob for
|
||||
by calling gds_$create_blob. If you are using GDML, open
|
||||
the blob with the create_blob statement.', 'Your program tried to write to a blob field that
|
||||
that had been opened for read access.');
|
||||
('segstr_wrong_db', NULL, NULL, NULL, 0, 52, NULL, 'attempted reference to BLOB in unavailable database', 'Change your program so that the required database is
|
||||
available to the current transaction.', 'Your program referenced a blob field from a relation
|
||||
in a database that is not available to the current
|
||||
available to the current transaction.', 'Your program referenced a blob field from a relation
|
||||
in a database that is not available to the current
|
||||
transaction.');
|
||||
('sys_request', NULL, NULL, NULL, 0, 53, NULL, 'operating system directive @1 failed', 'Check secondary messages for more information. When you
|
||||
isolate the problem, you may want to include an error handler
|
||||
@ -224,7 +224,7 @@ on the computer you are using.');
|
||||
('obj_in_use', NULL, NULL, NULL, 0, 133, NULL, 'object @1 is in use', NULL, 'The named relation or index is currently in use and cannot be deleted.');
|
||||
('nofilter', NULL, NULL, NULL, 0, 134, 0, 'filter not found to convert type @1 to type @2', NULL, NULL);
|
||||
('shadow_accessed', NULL, NULL, NULL, 0, 135, NULL, 'cannot attach active shadow file', 'If the original database file is available,
|
||||
erase the record(s) in RDB$FILES which
|
||||
erase the record(s) in RDB$FILES which
|
||||
defines the shadow. Otherwise, use the
|
||||
GFIX activate switch to convert the shadow
|
||||
to an active database.', 'You have attempted to attach a file currently
|
||||
@ -2600,6 +2600,25 @@ ERROR: Backup incomplete', NULL, NULL);
|
||||
('dsql_cte_not_used', 'dsql_req::checkUnusedCTEs', 'pass1.cpp', NULL, 13, 949, NULL, 'CTE "@1" is not used in query', NULL, NULL);
|
||||
('dsql_col_more_than_once_view', 'define_view', 'ddl.cpp', NULL, 13, 950, NULL, 'column @1 appears more than once in ALTER VIEW', NULL, NULL);
|
||||
('dsql_unsupported_in_auto_trans', 'PASS1_statement', 'pass1.cpp', NULL, 13, 951, NULL, '@1 is not supported inside IN AUTONOMOUS TRANSACTION block', NULL, NULL);
|
||||
-- These add more information to the dumb isc_expression_eval_err
|
||||
('dsql_eval_unknode', 'GEN_expr', 'dsql/gen.c', NULL, 13, 952, NULL, 'Unknown node type @1 in dsql/GEN_expr', NULL, NULL)
|
||||
('dsql_agg_wrongarg', 'MAKE_desc', 'make.cpp', NULL, 13, 953, NULL, 'Argument for @1 in dialect 1 must be string or numeric', NULL, NULL)
|
||||
('dsql_agg2_wrongarg', 'MAKE_desc', 'make.cpp', NULL, 13, 954, NULL, 'Argument for @1 in dialect 2 must be numeric', NULL, NULL)
|
||||
('dsql_nodateortime_pm_string', 'MAKE_desc', 'make.cpp', NULL, 13, 955, NULL, 'Strings cannot be added to or subtracted from DATE or TIME types', NULL, NULL)
|
||||
('dsql_invalid_datetime_subtract', 'MAKE_desc', 'make.cpp', NULL, 13, 956, NULL, 'Invalid data type for subtraction involving DATE, TIME or TIMESTAMP types', NULL, NULL)
|
||||
('dsql_invalid_dateortime_add', 'MAKE_desc', 'make.cpp', NULL, 13, 957, NULL, 'Adding two DATE values or two TIME values is not allowed', NULL, NULL)
|
||||
('dsql_invalid_type_minus_date', 'MAKE_desc', 'make.cpp', NULL, 13, 958, NULL, 'DATE value cannot be subtracted from the provided data type', NULL, NULL)
|
||||
('dsql_nostring_addsub_dial3', 'MAKE_desc', 'make.cpp', NULL, 13, 959, NULL, 'Strings cannot be added or subtracted in dialect 3', NULL, NULL)
|
||||
('dsql_invalid_type_addsub_dial3', 'MAKE_desc', 'make.cpp', NULL, 13, 960, NULL, 'Invalid data type for addition or subtraction in dialect 3', NULL, NULL)
|
||||
('dsql_invalid_type_multip_dial1', 'MAKE_desc', 'make.cpp', NULL, 13, 961, NULL, 'Invalid data type for multiplication in dialect 1', NULL, NULL)
|
||||
('dsql_nostring_multip_dial3', 'MAKE_desc', 'make.cpp', NULL, 13, 962, NULL, 'Strings cannot be multiplied in dialect 3', NULL, NULL)
|
||||
('dsql_invalid_type_multip_dial3', 'MAKE_desc', 'make.cpp', NULL, 13, 963, NULL, 'Invalid data type for multiplication in dialect 3', NULL, NULL)
|
||||
('dsql_mustuse_numeric_div_dial1', 'MAKE_desc', 'make.cpp', NULL, 13, 964, NULL, 'Division in dialect 1 must be between numeric data types', NULL, NULL)
|
||||
('dsql_nostring_div_dial3', 'MAKE_desc', 'make.cpp', NULL, 13, 965, NULL, 'Strings cannot be divided in dialect 3', NULL, NULL)
|
||||
('dsql_invalid_type_div_dial3', 'MAKE_desc', 'make.cpp', NULL, 13, 966, NULL, 'Invalid data type for division in dialect 3', NULL, NULL)
|
||||
('dsql_nostring_neg_dial3', 'MAKE_desc', 'make.cpp', NULL, 13, 967, NULL, 'Strings cannot be negated (applied the minus operator) in dialect 3', NULL, NULL)
|
||||
('dsql_invalid_type_neg', 'MAKE_desc', 'make.cpp', NULL, 13, 968, NULL, 'Invalid data type for negation (minus operator)', NULL, NULL)
|
||||
-- End of extras for isc_expression_eval_err
|
||||
-- SQLWARN
|
||||
(NULL, NULL, NULL, NULL, 14, 100, NULL, 'Row not found for fetch, update or delete, or the result of a query is an empty table.', NULL, NULL);
|
||||
(NULL, NULL, NULL, NULL, 14, 101, NULL, 'segment buffer length shorter than expected', NULL, NULL);
|
||||
|
@ -829,6 +829,25 @@ COMMIT WORK;
|
||||
(-104, '42', '000', 13, 949, 'dsql_cte_not_used', NULL, NULL)
|
||||
(-104, '42', '000', 13, 950, 'dsql_col_more_than_once_view', NULL, NULL)
|
||||
(-901, 'HY', '000', 13, 951, 'dsql_unsupported_in_auto_trans', NULL, NULL)
|
||||
-- For the following values I simply copied the error code and SQL codes from expression_eval_err
|
||||
(-833, '42', '000', 13, 952, 'dsql_eval_unknode', NULL, NULL)
|
||||
(-833, '42', '000', 13, 953, 'dsql_agg_wrongarg', NULL, NULL)
|
||||
(-833, '42', '000', 13, 954, 'dsql_agg2_wrongarg', NULL, NULL)
|
||||
(-833, '42', '000', 13, 955, 'dsql_nodateortime_pm_string', NULL, NULL)
|
||||
(-833, '42', '000', 13, 956, 'dsql_invalid_datetime_subtract', NULL, NULL)
|
||||
(-833, '42', '000', 13, 957, 'dsql_invalid_dateortime_add', NULL, NULL)
|
||||
(-833, '42', '000', 13, 958, 'dsql_invalid_type_minus_date', NULL, NULL)
|
||||
(-833, '42', '000', 13, 959, 'dsql_nostring_addsub_dial3', NULL, NULL)
|
||||
(-833, '42', '000', 13, 960, 'dsql_invalid_type_addsub_dial3', NULL, NULL)
|
||||
(-833, '42', '000', 13, 961, 'dsql_invalid_type_multip_dial1', NULL, NULL)
|
||||
(-833, '42', '000', 13, 962, 'dsql_nostring_multip_dial3', NULL, NULL)
|
||||
(-833, '42', '000', 13, 963, 'dsql_invalid_type_multip_dial3', NULL, NULL)
|
||||
(-833, '42', '000', 13, 964, 'dsql_mustuse_numeric_div_dial1', NULL, NULL)
|
||||
(-833, '42', '000', 13, 965, 'dsql_nostring_div_dial3', NULL, NULL)
|
||||
(-833, '42', '000', 13, 966, 'dsql_invalid_type_div_dial3', NULL, NULL)
|
||||
(-833, '42', '000', 13, 967, 'dsql_nostring_neg_dial3', NULL, NULL)
|
||||
(-833, '42', '000', 13, 968, 'dsql_invalid_type_neg', NULL, NULL)
|
||||
-- End of expression_eval_err subcodes
|
||||
-- GSEC
|
||||
(-901, '00', '000', 18, 15, 'gsec_cant_open_db', NULL, NULL)
|
||||
(-901, '00', '000', 18, 16, 'gsec_switches_error', NULL, NULL)
|
||||
|
Loading…
Reference in New Issue
Block a user