MetaName Jrd::Attachment::nameToUserCharSet(thread_db* tdbb, const MetaName& name) { if (att_charset == CS_METADATA || att_charset == CS_NONE) return name; UCHAR buffer[MAX_SQL_IDENTIFIER_SIZE]; ULONG len = INTL_convert_bytes(tdbb, att_charset, buffer, MAX_SQL_IDENTIFIER_LEN, CS_METADATA, (const BYTE*) name.c_str(), name.length(), ERR_post); buffer[len] = '\0'; return MetaName((const char*) buffer); }
void PAR_dependency(thread_db* tdbb, CompilerScratch* csb, StreamType stream, SSHORT id, const MetaName& field_name) { /************************************** * * P A R _ d e p e n d e n c y * ************************************** * * Functional description * Register a field, relation, procedure or exception reference * as a dependency. * **************************************/ SET_TDBB(tdbb); CompilerScratch::Dependency dependency(0); if (csb->csb_rpt[stream].csb_relation) { dependency.relation = csb->csb_rpt[stream].csb_relation; // How do I determine reliably this is a view? // At this time, rel_view_rse is still null. //if (is_view) // dependency.objType = obj_view; //else dependency.objType = obj_relation; } else if (csb->csb_rpt[stream].csb_procedure) { if (csb->csb_rpt[stream].csb_procedure->isSubRoutine()) return; dependency.procedure = csb->csb_rpt[stream].csb_procedure; dependency.objType = obj_procedure; } if (field_name.length() > 0) dependency.subName = FB_NEW_POOL(*tdbb->getDefaultPool()) MetaName(*tdbb->getDefaultPool(), field_name); else if (id >= 0) dependency.subNumber = id; csb->csb_dependencies.push(dependency); }