mirror of
https://github.com/FirebirdSQL/firebird.git
synced 2025-01-23 23:23:04 +01:00
Misc
This commit is contained in:
parent
54d0cd6f73
commit
736659c1a1
@ -524,8 +524,8 @@ void DDL_resolve_intl_type2(CompiledStatement* statement,
|
||||
{
|
||||
if (ENCODE_ODS(statement->req_dbb->dbb_ods_version, statement->req_dbb->dbb_minor_version) < ODS_11_1)
|
||||
{
|
||||
// Feature not supported on ODS version older than %d.%d
|
||||
ERRD_post(Arg::Gds(isc_sqlerr) << Arg::Num(-804) <<
|
||||
// Feature not supported on ODS version older than %d.%d
|
||||
Arg::Gds(isc_dsql_feature_not_supported_ods) << Arg::Num(11) << Arg::Num(1));
|
||||
}
|
||||
|
||||
@ -559,8 +559,8 @@ void DDL_resolve_intl_type2(CompiledStatement* statement,
|
||||
|
||||
if (!fld)
|
||||
{
|
||||
// column @1 does not exist in table/view @2
|
||||
ERRD_post(Arg::Gds(isc_sqlerr) << Arg::Num(-607) << Arg::Gds(isc_dsql_command_err) <<
|
||||
// column @1 does not exist in table/view @2
|
||||
Arg::Gds(isc_dyn_column_does_not_exist) <<
|
||||
Arg::Str(field->fld_type_of_name) << Arg::Str(field->fld_type_of_table->str_data));
|
||||
}
|
||||
@ -569,8 +569,8 @@ void DDL_resolve_intl_type2(CompiledStatement* statement,
|
||||
{
|
||||
if (!METD_get_domain(statement, field, field->fld_type_of_name.c_str()))
|
||||
{
|
||||
// Specified domain or source field does not exist
|
||||
ERRD_post(Arg::Gds(isc_sqlerr) << Arg::Num(-607) << Arg::Gds(isc_dsql_command_err) <<
|
||||
// Specified domain or source field does not exist
|
||||
Arg::Gds(isc_dsql_domain_not_found) << Arg::Str(field->fld_type_of_name));
|
||||
}
|
||||
}
|
||||
@ -599,13 +599,14 @@ void DDL_resolve_intl_type2(CompiledStatement* statement,
|
||||
{
|
||||
ERRD_post(Arg::Gds(isc_sqlerr) << Arg::Num(-204) <<
|
||||
Arg::Gds(isc_dsql_datatype_err) <<
|
||||
Arg::Gds(isc_dsql_blob_type_unknown) << Arg::Str(((dsql_str*)field->fld_sub_type_name)->str_data));
|
||||
Arg::Gds(isc_dsql_blob_type_unknown) << Arg::Str(((dsql_str*) field->fld_sub_type_name)->str_data));
|
||||
}
|
||||
field->fld_sub_type = blob_sub_type;
|
||||
}
|
||||
if (field->fld_sub_type > isc_blob_text)
|
||||
{
|
||||
ERRD_post(Arg::Gds(isc_sqlerr) << Arg::Num(-204) << Arg::Gds(isc_dsql_datatype_err) <<
|
||||
ERRD_post(Arg::Gds(isc_sqlerr) << Arg::Num(-204) <<
|
||||
Arg::Gds(isc_dsql_datatype_err) <<
|
||||
Arg::Gds(isc_subtype_for_internal_use));
|
||||
}
|
||||
if (field->fld_character_set && (field->fld_sub_type == isc_blob_untyped))
|
||||
@ -614,12 +615,14 @@ void DDL_resolve_intl_type2(CompiledStatement* statement,
|
||||
}
|
||||
if (field->fld_character_set && (field->fld_sub_type != isc_blob_text))
|
||||
{
|
||||
ERRD_post(Arg::Gds(isc_sqlerr) << Arg::Num(-204) << Arg::Gds(isc_dsql_datatype_err) <<
|
||||
ERRD_post(Arg::Gds(isc_sqlerr) << Arg::Num(-204) <<
|
||||
Arg::Gds(isc_dsql_datatype_err) <<
|
||||
Arg::Gds(isc_collation_requires_text));
|
||||
}
|
||||
if (collation_name && (field->fld_sub_type != isc_blob_text))
|
||||
{
|
||||
ERRD_post(Arg::Gds(isc_sqlerr) << Arg::Num(-204) << Arg::Gds(isc_dsql_datatype_err) <<
|
||||
ERRD_post(Arg::Gds(isc_sqlerr) << Arg::Num(-204) <<
|
||||
Arg::Gds(isc_dsql_datatype_err) <<
|
||||
Arg::Gds(isc_collation_requires_text));
|
||||
}
|
||||
if (field->fld_sub_type != isc_blob_text) {
|
||||
@ -716,7 +719,8 @@ void DDL_resolve_intl_type2(CompiledStatement* statement,
|
||||
if (!resolved_charset)
|
||||
{
|
||||
// specified character set not found
|
||||
ERRD_post(Arg::Gds(isc_sqlerr) << Arg::Num(-204) << Arg::Gds(isc_dsql_datatype_err) <<
|
||||
ERRD_post(Arg::Gds(isc_sqlerr) << Arg::Num(-204) <<
|
||||
Arg::Gds(isc_dsql_datatype_err) <<
|
||||
Arg::Gds(isc_charset_not_found) << Arg::Str(charset_name));
|
||||
}
|
||||
field->fld_character_set_id = resolved_charset->intlsym_charset_id;
|
||||
@ -738,7 +742,8 @@ void DDL_resolve_intl_type2(CompiledStatement* statement,
|
||||
charSetName = METD_get_charset_name(statement, field->fld_character_set_id);
|
||||
|
||||
// Specified collation not found
|
||||
ERRD_post(Arg::Gds(isc_sqlerr) << Arg::Num(-204) << Arg::Gds(isc_dsql_datatype_err) <<
|
||||
ERRD_post(Arg::Gds(isc_sqlerr) << Arg::Num(-204) <<
|
||||
Arg::Gds(isc_dsql_datatype_err) <<
|
||||
Arg::Gds(isc_collation_not_found) << Arg::Str(collation_name->str_data) << Arg::Str(charSetName));
|
||||
}
|
||||
|
||||
@ -749,7 +754,8 @@ void DDL_resolve_intl_type2(CompiledStatement* statement,
|
||||
if ((field->fld_character_set_id != resolved_type->intlsym_charset_id)
|
||||
&& (field->fld_character_set_id != ttype_dynamic))
|
||||
{
|
||||
ERRD_post(Arg::Gds(isc_sqlerr) << Arg::Num(-204) << Arg::Gds(isc_dsql_datatype_err) <<
|
||||
ERRD_post(Arg::Gds(isc_sqlerr) << Arg::Num(-204) <<
|
||||
Arg::Gds(isc_dsql_datatype_err) <<
|
||||
Arg::Gds(isc_collation_not_for_charset) << Arg::Str(collation_name->str_data));
|
||||
}
|
||||
|
||||
@ -795,7 +801,8 @@ static void assign_field_length (
|
||||
}
|
||||
if (field_length > MAX_COLUMN_SIZE)
|
||||
{
|
||||
ERRD_post(Arg::Gds(isc_sqlerr) << Arg::Num(-204) << Arg::Gds(isc_dsql_datatype_err) <<
|
||||
ERRD_post(Arg::Gds(isc_sqlerr) << Arg::Num(-204) <<
|
||||
Arg::Gds(isc_dsql_datatype_err) <<
|
||||
Arg::Gds(isc_imp_exc) <<
|
||||
Arg::Gds(isc_field_name) << Arg::Str(field->fld_name));
|
||||
}
|
||||
@ -1830,7 +1837,7 @@ static void define_domain(CompiledStatement* statement)
|
||||
constraint, context number 0 is reserved for the
|
||||
"blr_fid, 0, 0, 0," which is emitted for a
|
||||
nod_dom_value, corresponding to an occurance of the
|
||||
VALUE keyword in the bod of the check constraint.
|
||||
VALUE keyword in the body of the check constraint.
|
||||
-- chrisj 1999-08-20 */
|
||||
statement->req_context_number++;
|
||||
|
||||
@ -1941,15 +1948,15 @@ static void define_field(CompiledStatement* statement,
|
||||
|
||||
if (!METD_get_domain(statement, field, domain_name->str_data))
|
||||
{
|
||||
// Specified domain or source field does not exist
|
||||
ERRD_post(Arg::Gds(isc_sqlerr) << Arg::Num(-607) <<
|
||||
Arg::Gds(isc_dsql_command_err) <<
|
||||
// Specified domain or source field does not exist
|
||||
Arg::Gds(isc_dsql_domain_not_found) << Arg::Str(domain_name->str_data));
|
||||
}
|
||||
|
||||
DDL_resolve_intl_type( statement,
|
||||
field,
|
||||
reinterpret_cast<const dsql_str*>(element->nod_arg[e_dfl_collate]));
|
||||
DDL_resolve_intl_type(statement, field,
|
||||
reinterpret_cast<const dsql_str*>(element->nod_arg[e_dfl_collate]));
|
||||
|
||||
if (element->nod_arg[e_dfl_collate]) {
|
||||
statement->append_number(isc_dyn_fld_collation,
|
||||
field->fld_collation_id);
|
||||
@ -3049,9 +3056,9 @@ static void define_shadow(CompiledStatement* statement)
|
||||
|
||||
if (!length && !file->fil_start)
|
||||
{
|
||||
// Preceding file did not specify length, so %s must include starting page number
|
||||
ERRD_post(Arg::Gds(isc_sqlerr) << Arg::Num(-607) <<
|
||||
Arg::Gds(isc_dsql_command_err) <<
|
||||
// Preceding file did not specify length, so %s must include starting page number
|
||||
Arg::Gds(isc_dsql_file_length_err) << Arg::Str(file->fil_name->str_data));
|
||||
}
|
||||
|
||||
@ -3315,9 +3322,9 @@ static void define_udf(CompiledStatement* statement)
|
||||
field->fld_dtype == dtype_blob ||
|
||||
field->fld_dtype == dtype_timestamp))
|
||||
{
|
||||
// Return mode by value not allowed for this data type
|
||||
ERRD_post(Arg::Gds(isc_sqlerr) << Arg::Num(-60) <<
|
||||
Arg::Gds(isc_dsql_command_err) <<
|
||||
// Return mode by value not allowed for this data type
|
||||
Arg::Gds(isc_return_mode_err));
|
||||
}
|
||||
|
||||
@ -3329,10 +3336,10 @@ static void define_udf(CompiledStatement* statement)
|
||||
blob_position = (arguments) ? arguments->nod_count + 1 : 1;
|
||||
if (blob_position > MAX_UDF_ARGUMENTS)
|
||||
{
|
||||
// External functions can not have more than 10 parameters
|
||||
// Or 9 if the function returns a BLOB
|
||||
ERRD_post(Arg::Gds(isc_sqlerr) << Arg::Num(-607) <<
|
||||
Arg::Gds(isc_dsql_command_err) <<
|
||||
// External functions can not have more than 10 parameters
|
||||
// Or 9 if the function returns a BLOB
|
||||
Arg::Gds(isc_extern_func_err));
|
||||
}
|
||||
|
||||
@ -3421,9 +3428,9 @@ static void define_udf(CompiledStatement* statement)
|
||||
{
|
||||
if (position > MAX_UDF_ARGUMENTS)
|
||||
{
|
||||
// External functions can not have more than 10 parameters
|
||||
ERRD_post(Arg::Gds(isc_sqlerr) << Arg::Num(-607) <<
|
||||
Arg::Gds(isc_dsql_command_err) <<
|
||||
// External functions can not have more than 10 parameters
|
||||
Arg::Gds(isc_extern_func_err));
|
||||
}
|
||||
|
||||
@ -3841,9 +3848,9 @@ static void define_view(CompiledStatement* statement, NOD_TYPE op)
|
||||
|
||||
if (!ptr && !field_string)
|
||||
{
|
||||
// must specify field name for view select expression
|
||||
ERRD_post(Arg::Gds(isc_sqlerr) << Arg::Num(-607) <<
|
||||
Arg::Gds(isc_dsql_command_err) <<
|
||||
// must specify field name for view select expression
|
||||
Arg::Gds(isc_specify_field_err));
|
||||
}
|
||||
|
||||
@ -3873,9 +3880,9 @@ static void define_view(CompiledStatement* statement, NOD_TYPE op)
|
||||
{
|
||||
if (modified_fields.exist(rel_field))
|
||||
{
|
||||
// column @1 appears more than once in ALTER VIEW
|
||||
ERRD_post(Arg::Gds(isc_sqlerr) << Arg::Num(-104) <<
|
||||
Arg::Gds(isc_dsql_command_err) <<
|
||||
// column @1 appears more than once in ALTER VIEW
|
||||
Arg::Gds(isc_dsql_col_more_than_once_view) << Arg::Str(field_string));
|
||||
}
|
||||
|
||||
@ -3933,9 +3940,9 @@ static void define_view(CompiledStatement* statement, NOD_TYPE op)
|
||||
|
||||
if (ptr != end)
|
||||
{
|
||||
// number of fields does not match select list
|
||||
ERRD_post(Arg::Gds(isc_sqlerr) << Arg::Num(-607) <<
|
||||
Arg::Gds(isc_dsql_command_err) <<
|
||||
// number of fields does not match select list
|
||||
Arg::Gds(isc_num_field_err));
|
||||
}
|
||||
|
||||
@ -4469,19 +4476,19 @@ static void foreign_key(CompiledStatement* statement, dsql_nod* element, const c
|
||||
referenced field, fail. */
|
||||
if (!columns2)
|
||||
{
|
||||
ERRD_post (Arg::Gds(isc_sqlerr) << Arg::Num(-607) <<
|
||||
Arg::Gds(isc_dsql_command_err) <<
|
||||
/* "REFERENCES table" without "(column)" requires PRIMARY
|
||||
KEY on referenced table */
|
||||
// "REFERENCES table" without "(column)" requires PRIMARY
|
||||
// KEY on referenced table
|
||||
ERRD_post(Arg::Gds(isc_sqlerr) << Arg::Num(-607) <<
|
||||
Arg::Gds(isc_dsql_command_err) <<
|
||||
Arg::Gds(isc_reftable_requires_pk));
|
||||
}
|
||||
}
|
||||
|
||||
if (columns2 && (columns1->nod_count != columns2->nod_count))
|
||||
{
|
||||
ERRD_post (Arg::Gds(isc_sqlerr) << Arg::Num(-607) <<
|
||||
Arg::Gds(isc_dsql_command_err) <<
|
||||
// foreign key field count does not match primary key
|
||||
// foreign key field count does not match primary key
|
||||
ERRD_post(Arg::Gds(isc_sqlerr) << Arg::Num(-607) <<
|
||||
Arg::Gds(isc_dsql_command_err) <<
|
||||
Arg::Gds(isc_key_field_count_err));
|
||||
}
|
||||
|
||||
@ -7139,4 +7146,3 @@ void clearPermanentField (dsql_rel* relation, bool perm)
|
||||
relation->rel_fields->fld_relation = relation;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -556,7 +556,7 @@ void DSQL_free_statement(thread_db* tdbb,
|
||||
// Just close the cursor associated with the request
|
||||
if (!(request->req_flags & REQ_cursor_open))
|
||||
{
|
||||
ERRD_post(Arg::Gds(isc_sqlerr) << Arg::Num(- 501) <<
|
||||
ERRD_post(Arg::Gds(isc_sqlerr) << Arg::Num(-501) <<
|
||||
Arg::Gds(isc_dsql_cursor_close_err));
|
||||
}
|
||||
close_cursor(tdbb, request);
|
||||
@ -602,8 +602,8 @@ void DSQL_insert(thread_db* tdbb,
|
||||
if (!(request->req_flags & REQ_cursor_open))
|
||||
{
|
||||
ERRD_post(Arg::Gds(isc_sqlerr) << Arg::Num(-504) <<
|
||||
Arg::Gds(isc_dsql_cursor_err) <<
|
||||
Arg::Gds(isc_dsql_cursor_not_open));
|
||||
Arg::Gds(isc_dsql_cursor_err) <<
|
||||
Arg::Gds(isc_dsql_cursor_not_open));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -727,12 +727,12 @@ void GEN_port(CompiledStatement* statement, dsql_msg* message)
|
||||
|
||||
message->msg_length = (USHORT) offset;
|
||||
|
||||
// Allocate buffer for message
|
||||
// Allocate buffer for message
|
||||
const ULONG new_len = message->msg_length + DOUBLE_ALIGN - 1;
|
||||
dsql_str* buffer = FB_NEW_RPT(*tdbb->getDefaultPool(), new_len) dsql_str;
|
||||
message->msg_buffer = (UCHAR *) FB_ALIGN((U_IPTR) buffer->str_data, DOUBLE_ALIGN);
|
||||
|
||||
// Relocate parameter descriptors to point direction into message buffer
|
||||
// Relocate parameter descriptors to point direction into message buffer
|
||||
|
||||
for (parameter = message->msg_parameters; parameter;
|
||||
parameter = parameter->par_next)
|
||||
|
@ -2917,51 +2917,53 @@ numeric_type : KW_NUMERIC prec_scale
|
||||
|
||||
prec_scale :
|
||||
{
|
||||
lex.g_field->fld_dtype = dtype_long;
|
||||
lex.g_field->fld_dtype = dtype_long;
|
||||
lex.g_field->fld_length = sizeof (SLONG);
|
||||
lex.g_field->fld_precision = 9;
|
||||
}
|
||||
lex.g_field->fld_precision = 9;
|
||||
}
|
||||
| '(' signed_long_integer ')'
|
||||
{
|
||||
if ( ((IPTR) $2 < 1) || ((IPTR) $2 > 18) )
|
||||
yyabandon (-842, isc_precision_err);
|
||||
/* Precision most be between 1 and 18. */
|
||||
if ((IPTR) $2 > 9)
|
||||
{
|
||||
{
|
||||
if ( ( (client_dialect <= SQL_DIALECT_V5) &&
|
||||
(db_dialect > SQL_DIALECT_V5) ) ||
|
||||
( (client_dialect > SQL_DIALECT_V5) &&
|
||||
(db_dialect <= SQL_DIALECT_V5) ) )
|
||||
(db_dialect > SQL_DIALECT_V5) ) ||
|
||||
( (client_dialect > SQL_DIALECT_V5) &&
|
||||
(db_dialect <= SQL_DIALECT_V5) ) )
|
||||
ERRD_post(Arg::Gds(isc_sqlerr) << Arg::Num(-817) <<
|
||||
Arg::Gds(isc_ddl_not_allowed_by_db_sql_dial) << Arg::Num(db_dialect));
|
||||
if (client_dialect <= SQL_DIALECT_V5)
|
||||
{
|
||||
{
|
||||
lex.g_field->fld_dtype = dtype_double;
|
||||
lex.g_field->fld_length = sizeof (double);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
{
|
||||
if (client_dialect == SQL_DIALECT_V6_TRANSITION)
|
||||
{
|
||||
{
|
||||
ERRD_post_warning(Arg::Warning(isc_dsql_warn_precision_ambiguous));
|
||||
ERRD_post_warning(Arg::Warning(isc_dsql_warn_precision_ambiguous1));
|
||||
ERRD_post_warning(Arg::Warning(isc_dsql_warn_precision_ambiguous2));
|
||||
}
|
||||
}
|
||||
lex.g_field->fld_dtype = dtype_int64;
|
||||
lex.g_field->fld_length = sizeof (SINT64);
|
||||
}
|
||||
}
|
||||
else
|
||||
}
|
||||
else
|
||||
{
|
||||
if ((IPTR) $2 < 5)
|
||||
{
|
||||
{
|
||||
lex.g_field->fld_dtype = dtype_short;
|
||||
lex.g_field->fld_length = sizeof (SSHORT);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
{
|
||||
lex.g_field->fld_dtype = dtype_long;
|
||||
lex.g_field->fld_length = sizeof (SLONG);
|
||||
}
|
||||
}
|
||||
}
|
||||
lex.g_field->fld_precision = (USHORT)(IPTR) $2;
|
||||
}
|
||||
| '(' signed_long_integer ',' signed_long_integer ')'
|
||||
@ -2973,44 +2975,46 @@ prec_scale :
|
||||
yyabandon (-842, isc_scale_nogt);
|
||||
/* Scale must be between 0 and precision */
|
||||
if ((IPTR) $2 > 9)
|
||||
{
|
||||
{
|
||||
if ( ( (client_dialect <= SQL_DIALECT_V5) &&
|
||||
(db_dialect > SQL_DIALECT_V5) ) ||
|
||||
( (client_dialect > SQL_DIALECT_V5) &&
|
||||
(db_dialect <= SQL_DIALECT_V5) ) )
|
||||
(db_dialect > SQL_DIALECT_V5) ) ||
|
||||
( (client_dialect > SQL_DIALECT_V5) &&
|
||||
(db_dialect <= SQL_DIALECT_V5) ) )
|
||||
{
|
||||
ERRD_post(Arg::Gds(isc_sqlerr) << Arg::Num(-817) <<
|
||||
Arg::Gds(isc_ddl_not_allowed_by_db_sql_dial) << Arg::Num(db_dialect));
|
||||
}
|
||||
if (client_dialect <= SQL_DIALECT_V5)
|
||||
{
|
||||
{
|
||||
lex.g_field->fld_dtype = dtype_double;
|
||||
lex.g_field->fld_length = sizeof (double);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
{
|
||||
if (client_dialect == SQL_DIALECT_V6_TRANSITION)
|
||||
{
|
||||
{
|
||||
ERRD_post_warning(Arg::Warning(isc_dsql_warn_precision_ambiguous));
|
||||
ERRD_post_warning(Arg::Warning(isc_dsql_warn_precision_ambiguous1));
|
||||
ERRD_post_warning(Arg::Warning(isc_dsql_warn_precision_ambiguous2));
|
||||
}
|
||||
}
|
||||
/* client_dialect >= SQL_DIALECT_V6 */
|
||||
lex.g_field->fld_dtype = dtype_int64;
|
||||
lex.g_field->fld_length = sizeof (SINT64);
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
{
|
||||
if ((IPTR) $2 < 5)
|
||||
{
|
||||
{
|
||||
lex.g_field->fld_dtype = dtype_short;
|
||||
lex.g_field->fld_length = sizeof (SSHORT);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
{
|
||||
lex.g_field->fld_dtype = dtype_long;
|
||||
lex.g_field->fld_length = sizeof (SLONG);
|
||||
}
|
||||
}
|
||||
}
|
||||
lex.g_field->fld_precision = (USHORT)(IPTR) $2;
|
||||
lex.g_field->fld_scale = - (SSHORT)(IPTR) $4;
|
||||
}
|
||||
@ -4251,25 +4255,33 @@ value : column_name
|
||||
datetime_value_expression : CURRENT_DATE
|
||||
{
|
||||
if (client_dialect < SQL_DIALECT_V6_TRANSITION)
|
||||
{
|
||||
ERRD_post(Arg::Gds(isc_sqlerr) << Arg::Num(-104) <<
|
||||
Arg::Gds(isc_sql_dialect_datatype_unsupport) << Arg::Num(client_dialect) <<
|
||||
Arg::Str("DATE"));
|
||||
}
|
||||
if (db_dialect < SQL_DIALECT_V6_TRANSITION)
|
||||
{
|
||||
ERRD_post(Arg::Gds(isc_sqlerr) << Arg::Num(-104) <<
|
||||
Arg::Gds(isc_sql_dialect_datatype_unsupport) << Arg::Num(db_dialect) <<
|
||||
Arg::Str("DATE"));
|
||||
}
|
||||
$$ = make_node (nod_current_date, 0, NULL);
|
||||
}
|
||||
| CURRENT_TIME sec_precision_opt
|
||||
{
|
||||
if (client_dialect < SQL_DIALECT_V6_TRANSITION)
|
||||
{
|
||||
ERRD_post(Arg::Gds(isc_sqlerr) << Arg::Num(-104) <<
|
||||
Arg::Gds(isc_sql_dialect_datatype_unsupport) << Arg::Num(client_dialect) <<
|
||||
Arg::Str("TIME"));
|
||||
}
|
||||
if (db_dialect < SQL_DIALECT_V6_TRANSITION)
|
||||
{
|
||||
ERRD_post(Arg::Gds(isc_sqlerr) << Arg::Num(-104) <<
|
||||
Arg::Gds(isc_sql_dialect_datatype_unsupport) << Arg::Num(db_dialect) <<
|
||||
Arg::Str("TIME"));
|
||||
}
|
||||
$$ = make_node (nod_current_time, 1, $2);
|
||||
}
|
||||
| CURRENT_TIMESTAMP sec_precision_opt
|
||||
@ -4320,25 +4332,33 @@ u_constant : u_numeric_constant
|
||||
| DATE STRING
|
||||
{
|
||||
if (client_dialect < SQL_DIALECT_V6_TRANSITION)
|
||||
{
|
||||
ERRD_post(Arg::Gds(isc_sqlerr) << Arg::Num(-104) <<
|
||||
Arg::Gds(isc_sql_dialect_datatype_unsupport) << Arg::Num(client_dialect) <<
|
||||
Arg::Str("DATE"));
|
||||
}
|
||||
if (db_dialect < SQL_DIALECT_V6_TRANSITION)
|
||||
{
|
||||
ERRD_post(Arg::Gds(isc_sqlerr) << Arg::Num(-104) <<
|
||||
Arg::Gds(isc_sql_dialect_datatype_unsupport) << Arg::Num(db_dialect) <<
|
||||
Arg::Str("DATE"));
|
||||
}
|
||||
$$ = MAKE_constant ((dsql_str*) $2, CONSTANT_DATE);
|
||||
}
|
||||
| TIME STRING
|
||||
{
|
||||
if (client_dialect < SQL_DIALECT_V6_TRANSITION)
|
||||
{
|
||||
ERRD_post(Arg::Gds(isc_sqlerr) << Arg::Num(-104) <<
|
||||
Arg::Gds(isc_sql_dialect_datatype_unsupport) << Arg::Num(client_dialect) <<
|
||||
Arg::Str("TIME"));
|
||||
}
|
||||
if (db_dialect < SQL_DIALECT_V6_TRANSITION)
|
||||
{
|
||||
ERRD_post(Arg::Gds(isc_sqlerr) << Arg::Num(-104) <<
|
||||
Arg::Gds(isc_sql_dialect_datatype_unsupport) << Arg::Num(db_dialect) <<
|
||||
Arg::Str("TIME"));
|
||||
}
|
||||
$$ = MAKE_constant ((dsql_str*) $2, CONSTANT_TIME);
|
||||
}
|
||||
| TIMESTAMP STRING
|
||||
@ -6126,10 +6146,12 @@ void Parser::yyerror_detailed(const TEXT* error_string, int yychar, YYSTYPE&, YY
|
||||
}
|
||||
|
||||
if (yychar < 1)
|
||||
{
|
||||
ERRD_post(Arg::Gds(isc_sqlerr) << Arg::Num(-104) <<
|
||||
/* Unexpected end of command */
|
||||
Arg::Gds(isc_command_end_err2) << Arg::Num(lines) <<
|
||||
Arg::Num(lex.last_token - line_start + 1));
|
||||
}
|
||||
else
|
||||
{
|
||||
ERRD_post (Arg::Gds(isc_sqlerr) << Arg::Num(-104) <<
|
||||
|
@ -691,7 +691,7 @@ dsql_nod* PASS1_node(CompiledStatement* statement, dsql_nod* input)
|
||||
{
|
||||
if (statement->isPsql())
|
||||
{
|
||||
ERRD_post(Arg::Gds(isc_sqlerr) << Arg::Num(- 206) <<
|
||||
ERRD_post(Arg::Gds(isc_sqlerr) << Arg::Num(-206) <<
|
||||
Arg::Gds(isc_dsql_subselect_err));
|
||||
}
|
||||
|
||||
@ -1858,10 +1858,12 @@ dsql_nod* PASS1_statement(CompiledStatement* statement, dsql_nod* input)
|
||||
|
||||
case nod_breakleave:
|
||||
if (!statement->req_loop_level)
|
||||
{
|
||||
ERRD_post(Arg::Gds(isc_sqlerr) << Arg::Num(-104) <<
|
||||
// Token unknown
|
||||
Arg::Gds(isc_token_err) <<
|
||||
Arg::Gds(isc_random) << Arg::Str("BREAK/LEAVE"));
|
||||
}
|
||||
input->nod_arg[e_breakleave_label] = pass1_label(statement, input);
|
||||
return input;
|
||||
|
||||
@ -1943,28 +1945,34 @@ dsql_nod* PASS1_statement(CompiledStatement* statement, dsql_nod* input)
|
||||
|
||||
case nod_user_savepoint:
|
||||
if (statement->req_flags & REQ_block) // blocks, procedures and triggers
|
||||
{
|
||||
ERRD_post(Arg::Gds(isc_sqlerr) << Arg::Num(-104) <<
|
||||
// Token unknown
|
||||
Arg::Gds(isc_token_err) <<
|
||||
Arg::Gds(isc_random) << Arg::Str("SAVEPOINT"));
|
||||
}
|
||||
statement->req_type = REQ_SAVEPOINT;
|
||||
return input;
|
||||
|
||||
case nod_release_savepoint:
|
||||
if (statement->req_flags & REQ_block) // blocks, procedures and triggers
|
||||
{
|
||||
ERRD_post(Arg::Gds(isc_sqlerr) << Arg::Num(-104) <<
|
||||
// Token unknown
|
||||
Arg::Gds(isc_token_err) <<
|
||||
Arg::Gds(isc_random) << Arg::Str("RELEASE"));
|
||||
}
|
||||
statement->req_type = REQ_SAVEPOINT;
|
||||
return input;
|
||||
|
||||
case nod_undo_savepoint:
|
||||
if (statement->req_flags & REQ_block) // blocks, procedures and triggers
|
||||
{
|
||||
ERRD_post(Arg::Gds(isc_sqlerr) << Arg::Num(-104) <<
|
||||
// Token unknown
|
||||
Arg::Gds(isc_token_err) <<
|
||||
Arg::Gds(isc_random) << Arg::Str("ROLLBACK"));
|
||||
}
|
||||
statement->req_type = REQ_SAVEPOINT;
|
||||
return input;
|
||||
|
||||
@ -4404,7 +4412,7 @@ static dsql_nod* pass1_join_is_recursive(CompiledStatement* statement, dsql_nod*
|
||||
|
||||
if (leftRecursive && join_type != nod_join_inner) {
|
||||
ERRD_post(Arg::Gds(isc_sqlerr) << Arg::Num(-104) <<
|
||||
// Recursive member of CTE can''t be member of an outer join
|
||||
// Recursive member of CTE can't be member of an outer join
|
||||
Arg::Gds(isc_dsql_cte_outer_join));
|
||||
}
|
||||
|
||||
@ -9369,7 +9377,7 @@ static dsql_nod* pass1_update_or_insert(CompiledStatement* statement, dsql_nod*
|
||||
++match_count;
|
||||
|
||||
dsql_nod*& expr = insert->nod_arg[e_sto_statement]->nod_arg[
|
||||
field_ptr - fields->nod_arg]->nod_arg[0];
|
||||
field_ptr - fields->nod_arg]->nod_arg[0];
|
||||
dsql_nod* var = pass1_hidden_variable(statement, expr);
|
||||
|
||||
if (var)
|
||||
@ -9470,7 +9478,7 @@ static dsql_nod* pass1_update_or_insert(CompiledStatement* statement, dsql_nod*
|
||||
if_nod->nod_arg[e_if_condition] = eql;
|
||||
if_nod->nod_arg[e_if_true] = insert;
|
||||
|
||||
// build the UPDATE / IF nodes
|
||||
// build the temporary vars / UPDATE / IF nodes
|
||||
dsql_nod* list = MAKE_node(nod_list, 3);
|
||||
list->nod_arg[0] = MAKE_list(varStack);
|
||||
list->nod_arg[0]->nod_flags |= NOD_SIMPLE_LIST;
|
||||
@ -10293,8 +10301,7 @@ static bool set_parameter_type(CompiledStatement* statement, dsql_nod* in_node,
|
||||
ERRD_post(Arg::Gds(isc_sqlerr) << Arg::Num(-204) <<
|
||||
//Arg::Gds(isc_dsql_datatype_err)
|
||||
Arg::Gds(isc_imp_exc)
|
||||
//Arg::Gds(isc_field_name) << Arg::Str(parameter->par_name)
|
||||
);
|
||||
//Arg::Gds(isc_field_name) << Arg::Str(parameter->par_name));
|
||||
}
|
||||
|
||||
parameter->par_desc.dsc_length += sizeof(USHORT);
|
||||
|
Loading…
Reference in New Issue
Block a user