mirror of
https://github.com/FirebirdSQL/firebird.git
synced 2025-01-24 21:23:04 +01:00
226 lines
4.9 KiB
C
226 lines
4.9 KiB
C
/*
|
|
* The contents of this file are subject to the Interbase Public
|
|
* License Version 1.0 (the "License"); you may not use this file
|
|
* except in compliance with the License. You may obtain a copy
|
|
* of the License at http://www.Inprise.com/IPL.html
|
|
*
|
|
* Software distributed under the License is distributed on an
|
|
* "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express
|
|
* or implied. See the License for the specific language governing
|
|
* rights and limitations under the License.
|
|
*
|
|
* The Original Code was created by Inprise Corporation
|
|
* and its predecessors. Portions created by Inprise Corporation are
|
|
* Copyright (C) Inprise Corporation.
|
|
*
|
|
* All Rights Reserved.
|
|
* Contributor(s): ______________________________________.
|
|
*
|
|
* 2001.07.28: John Bellardo: Added skip and current_role to table.
|
|
* Adriano dos Santos Fernandes
|
|
*/
|
|
static const struct
|
|
{
|
|
const char* blr_string;
|
|
const UCHAR* blr_operators;
|
|
} blr_table[] =
|
|
{
|
|
{NULL, NULL},
|
|
{"assignment", two},
|
|
{"begin", begin},
|
|
{"declare", declare},
|
|
{"message", message},
|
|
{"erase", byte},
|
|
{"fetch", two},
|
|
{"for", two},
|
|
{"if", three},
|
|
{"loop", one},
|
|
{"modify", byte_byte_verb}, // 10
|
|
{"handler", one},
|
|
{"receive", byte_verb},
|
|
{"select", begin},
|
|
{"send", byte_verb},
|
|
{"store", two},
|
|
{NULL, NULL},
|
|
{"label", byte_verb},
|
|
{"leave", byte},
|
|
{"store2", three},
|
|
{"post", one}, // 20
|
|
{"literal", literal},
|
|
{"dbkey", byte},
|
|
{"field", field},
|
|
{"fid", parm},
|
|
{"parameter", parm},
|
|
{"variable", variable},
|
|
{"average", two},
|
|
{"count", one},
|
|
{"maximum", two},
|
|
{"minimum", two}, // 30
|
|
{"total", two},
|
|
{NULL, NULL}, // {"count2", two},
|
|
{NULL, NULL},
|
|
{"add", two},
|
|
{"subtract", two},
|
|
{"multiply", two},
|
|
{"divide", two},
|
|
{"negate", one},
|
|
{"concatenate", two},
|
|
{"substring", three}, // 40
|
|
{"parameter2", parm2},
|
|
{"from", two},
|
|
{"via", three},
|
|
{"user_name", zero},
|
|
{"null", zero},
|
|
{"equiv", two},
|
|
{"eql", two},
|
|
{"neq", two},
|
|
{"gtr", two},
|
|
{"geq", two}, // 50
|
|
{"lss", two},
|
|
{"leq", two},
|
|
{"containing", two},
|
|
{"matching", two},
|
|
{"starting", two},
|
|
{"between", three},
|
|
{"or", two},
|
|
{"and", two},
|
|
{"not", one},
|
|
{"any", one}, // 60
|
|
{"missing", one},
|
|
{"unique", one},
|
|
{"like", two},
|
|
{NULL, NULL},
|
|
{NULL, NULL},
|
|
{NULL, NULL},
|
|
{"rse", rse},
|
|
{"first", one},
|
|
{"project", byte_args},
|
|
{"sort", byte_args}, // 70
|
|
{"boolean", one},
|
|
{"ascending", one},
|
|
{"descending", one},
|
|
{"relation", relation},
|
|
{"rid", rid},
|
|
{"union", union_ops},
|
|
{"map", map},
|
|
{"group_by", byte_args},
|
|
{"aggregate", aggregate},
|
|
{"join_type", join}, // 80
|
|
{NULL, NULL},
|
|
{NULL, NULL},
|
|
{"agg_count", zero},
|
|
{"agg_max", one},
|
|
{"agg_min", one},
|
|
{"agg_total", one},
|
|
{"agg_average", one},
|
|
{"parameter3", parm3},
|
|
{NULL, NULL},
|
|
{NULL, NULL}, // 90
|
|
{NULL, NULL},
|
|
{NULL, NULL},
|
|
{"agg_count2", one},
|
|
{"agg_count_distinct", one},
|
|
{"agg_total_distinct", one},
|
|
{"agg_average_distinct", one},
|
|
{NULL, NULL},
|
|
{NULL, NULL},
|
|
{NULL, NULL},
|
|
{"function", function}, // 100
|
|
{"gen_id", gen_id},
|
|
{"prot_mask", two},
|
|
{"upcase", one},
|
|
{"lock_state", one},
|
|
{"value_if", three},
|
|
{"matching2", three},
|
|
{"index", indx},
|
|
{"ansi_like", three},
|
|
{NULL, NULL},
|
|
{NULL, NULL}, // 110
|
|
{NULL, NULL},
|
|
{"seek", seek},
|
|
{NULL, NULL},
|
|
{NULL, NULL},
|
|
{NULL, NULL},
|
|
{NULL, NULL},
|
|
{NULL, NULL},
|
|
{NULL, NULL},
|
|
{"rs_stream", rse},
|
|
{"exec_proc", exec_proc}, // 120
|
|
{NULL, NULL},
|
|
{NULL, NULL},
|
|
{NULL, NULL},
|
|
{"procedure", procedure},
|
|
{"pid", pid},
|
|
{NULL, NULL},
|
|
{"singular", one},
|
|
{"abort", set_error},
|
|
{"block", begin},
|
|
{"error_handler", error_handler}, // 130
|
|
{"cast", cast},
|
|
{NULL, NULL},
|
|
{NULL, NULL},
|
|
{"start_savepoint", zero},
|
|
{"end_savepoint", zero},
|
|
{NULL, NULL},
|
|
{NULL, NULL},
|
|
{NULL, NULL},
|
|
{"plan", one},
|
|
{"merge", byte_args}, // 140
|
|
{"join", byte_args},
|
|
{"sequential", zero},
|
|
{"navigational", byte_literal},
|
|
{"indices", indices},
|
|
{"retrieve", two},
|
|
{"relation2", relation2},
|
|
{"rid2", rid2},
|
|
{NULL, NULL},
|
|
{NULL, NULL},
|
|
{"set_generator", gen_id}, // 150
|
|
{"ansi_any", one},
|
|
{"exists", one},
|
|
{NULL, NULL},
|
|
{"record_version", byte},
|
|
{"stall", zero},
|
|
{NULL, NULL},
|
|
{NULL, NULL},
|
|
{"ansi_all", one},
|
|
// New BLR in 6.0
|
|
{"extract", extract},
|
|
{"current_date", zero}, // 160
|
|
{"current_timestamp", zero},
|
|
{"current_time", zero},
|
|
{"post_arg", two},
|
|
{"exec_into", exec_into},
|
|
{"user_savepoint", user_savepoint},
|
|
{"dcl_cursor", dcl_cursor},
|
|
{"cursor_stmt", cursor_stmt},
|
|
{"current_timestamp2", byte},
|
|
{"current_time2", byte},
|
|
{"agg_list", two}, // 170
|
|
{"agg_list_distinct", two},
|
|
/***
|
|
// These verbs were added in 6.0, primarily to support 64-bit integers, now obsolete
|
|
{"gen_id2", gen_id},
|
|
{"set_generator2", gen_id},
|
|
***/
|
|
{"modify2", modify2},
|
|
{NULL, NULL},
|
|
// New BLR in FB1
|
|
{"current_role", zero},
|
|
{"skip", one},
|
|
// New BLR in FB2
|
|
{"exec_sql", one},
|
|
{"internal_info", one},
|
|
{"nullsfirst", zero},
|
|
{"writelock", zero},
|
|
{"nullslast", zero}, // 180
|
|
{"lowcase", one},
|
|
{"strlen", strlength},
|
|
{"trim", trim},
|
|
{"init_variable", variable},
|
|
{"recurse", union_ops},
|
|
{"sys_function", function},
|
|
{0, 0}
|
|
};
|
|
|