MCPcopy Create free account
hub / github.com/FirebirdSQL/firebird / JRDMET_init

Function JRDMET_init

src/gpre/jrdmet.cpp:48–143  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

46//
47
48void JRDMET_init( gpre_dbb* db)
49{
50 const int* relfld = relfields;
51
52 while (relfld[RFLD_R_NAME])
53 {
54 gpre_rel* relation = (gpre_rel*) MSC_alloc(REL_LEN);
55 relation->rel_database = db;
56 relation->rel_next = db->dbb_relations;
57 relation->rel_id = relfld[RFLD_R_ID];
58 db->dbb_relations = relation;
59 gpre_sym* symbol = (gpre_sym*) MSC_alloc(SYM_LEN);
60 relation->rel_symbol = symbol;
61 symbol->sym_type = SYM_relation;
62 symbol->sym_object = (gpre_ctx*) relation;
63
64 symbol->sym_string = names[relfld[RFLD_R_NAME]];
65 HSH_insert(symbol);
66
67 const int* fld = relfld + RFLD_RPT;
68 for (int n = 0; fld[RFLD_F_NAME]; ++n, fld += RFLD_F_LENGTH)
69 {
70 const gfld* gfield = &gfields[fld[RFLD_F_ID]];
71 gpre_fld* field = (gpre_fld*) MSC_alloc(FLD_LEN);
72 relation->rel_fields = field;
73 field->fld_relation = relation;
74 field->fld_next = relation->rel_fields;
75 field->fld_id = n;
76 field->fld_length = gfield->gfld_length;
77 field->fld_dtype = gfield->gfld_dtype;
78 field->fld_sub_type = gfield->gfld_sub_type;
79 if (field->fld_dtype == dtype_varying || field->fld_dtype == dtype_text)
80 {
81 if (gfield->gfld_sub_type == dsc_text_type_fixed)
82 field->fld_dtype = dtype_text;
83 else
84 {
85 field->fld_dtype = dtype_cstring;
86 ++field->fld_length;
87 }
88
89 field->fld_flags |= FLD_text;
90
91 if (gfield->gfld_sub_type == dsc_text_type_metadata)
92 {
93 if (gpreGlob.sw_language == lang_internal)
94 field->fld_flags |= FLD_charset;
95
96 field->fld_charset_id = CS_METADATA;
97 field->fld_collate_id = COLLATE_NONE;
98 field->fld_ttype = ttype_metadata;
99 }
100 else
101 {
102 if (gpreGlob.sw_language == lang_internal)
103 field->fld_flags |= FLD_charset;
104
105 field->fld_charset_id = gfield->gfld_sub_type == dsc_text_type_fixed ? CS_BINARY : CS_NONE;

Callers 1

MET_databaseFunction · 0.85

Calls 2

MSC_allocFunction · 0.85
HSH_insertFunction · 0.85

Tested by

no test coverage detected