Update of /cvsroot/firebird/interbase/dsql
In directory usw-pr-cvs1:/tmp/cvs-serv32292/dsql
Modified Files:
pass1.c
Log Message:
Committed Changes made in the borland tree
Committed Changes made by Mike Nordel re, 64 bit io for win32 and bug fixes
Index: pass1.c
===================================================================
RCS file: /cvsroot/firebird/interbase/dsql/pass1.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -r1.2 -r1.3
*** pass1.c 2000/08/07 03:54:35 1.2
--- pass1.c 2001/04/05 17:05:43 1.3
***************
*** 1822,1825 ****
--- 1822,1853 ----
return TRUE;
}
+ else if (node->nod_type == nod_dbkey)
+ {
+ CTX context;
+ NOD reference, rel_node;
+
+ if (!list)
+ return TRUE;
+ rel_node = (NOD) node->nod_arg [0];
+ context = (CTX) rel_node->nod_arg [0];
+
+ DEV_BLKCHK (context, type_ctx);
+
+ for (ptr = list->nod_arg, end = ptr + list->nod_count; ptr < end; ptr++)
+ {
+ DEV_BLKCHK (*ptr, type_nod);
+ reference = *ptr;
+ if ((*ptr)->nod_type == nod_cast)
+ {
+ reference = (*ptr)->nod_arg[e_cast_source];
+ }
+ DEV_BLKCHK (reference, type_nod);
+ if (reference->nod_type == nod_dbkey &&
+ rel_node == (NOD) reference->nod_arg [0] &&
+ context == (CTX) rel_node->nod_arg [0])
+ return FALSE;
+ }
+ return TRUE;
+ }
else
{
***************
*** 2579,2584 ****
context = (CTX) stack->lls_object;
DEV_BLKCHK (context, type_ctx);
! if (strcmp (qualifier->str_data, context->ctx_relation->rel_name) && (
! !(context->ctx_alias) ||
strcmp (qualifier->str_data, context->ctx_alias)))
continue;
--- 2607,2613 ----
context = (CTX) stack->lls_object;
DEV_BLKCHK (context, type_ctx);
! if ((!(context->ctx_relation) ||
! strcmp (qualifier->str_data, context->ctx_relation->rel_name)) &&
! (!(context->ctx_alias) ||
strcmp (qualifier->str_data, context->ctx_alias)))
continue;
|