From: Mark O. <sky...@us...> - 2001-04-05 17:05:47
|
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; |