29 #include "dict0boot.ic"
55 block =
buf_page_get(DICT_HDR_SPACE, 0, DICT_HDR_PAGE_NO,
57 header = DICT_HDR + buf_block_get_frame(block);
59 buf_block_dbg_add_level(block, SYNC_DICT_HEADER);
83 dict_hdr = dict_hdr_get(&mtr);
102 if (fil_assign_new_space_id(space_id)) {
116 dict_hdr_flush_row_id(
void)
119 dict_hdr_t* dict_hdr;
129 dict_hdr = dict_hdr_get(&mtr);
147 dict_hdr_t* dict_header;
154 block = fseg_create(DICT_HDR_SPACE, 0,
155 DICT_HDR + DICT_HDR_FSEG_HEADER, mtr);
159 dict_header = dict_hdr_get(mtr);
164 DICT_HDR_FIRST_ID, mtr);
167 DICT_HDR_FIRST_ID, mtr);
170 DICT_HDR_FIRST_ID, mtr);
184 DICT_HDR_SPACE, 0, DICT_TABLES_ID,
185 dict_ind_redundant, mtr);
194 root_page_no = btr_create(
DICT_UNIQUE, DICT_HDR_SPACE, 0,
196 dict_ind_redundant, mtr);
206 DICT_HDR_SPACE, 0, DICT_COLUMNS_ID,
207 dict_ind_redundant, mtr);
217 DICT_HDR_SPACE, 0, DICT_INDEXES_ID,
218 dict_ind_redundant, mtr);
228 DICT_HDR_SPACE, 0, DICT_FIELDS_ID,
229 dict_ind_redundant, mtr);
252 dict_hdr_t* dict_hdr;
264 mutex_enter(&(dict_sys->
mutex));
267 dict_hdr = dict_hdr_get(&mtr);
279 dict_sys->
row_id = DICT_HDR_ROW_ID_WRITE_MARGIN
281 DICT_HDR_ROW_ID_WRITE_MARGIN);
286 table = dict_mem_table_create(
"SYS_TABLES", DICT_HDR_SPACE, 8, 0);
288 dict_mem_table_add_col(table, heap,
"NAME", DATA_BINARY, 0, 0);
289 dict_mem_table_add_col(table, heap,
"ID", DATA_BINARY, 0, 0);
291 dict_mem_table_add_col(table, heap,
"N_COLS", DATA_INT, 0, 4);
294 dict_mem_table_add_col(table, heap,
"TYPE", DATA_INT, 0, 4);
295 dict_mem_table_add_col(table, heap,
"MIX_ID", DATA_BINARY, 0, 0);
299 dict_mem_table_add_col(table, heap,
"MIX_LEN", DATA_INT, 0, 4);
300 dict_mem_table_add_col(table, heap,
"CLUSTER_NAME", DATA_BINARY, 0, 0);
301 dict_mem_table_add_col(table, heap,
"SPACE", DATA_INT, 0, 4);
303 table->
id = DICT_TABLES_ID;
305 dict_table_add_to_cache(table, heap);
309 index = dict_mem_index_create(
"SYS_TABLES",
"CLUST_IND",
313 dict_mem_index_add_field(index,
"NAME", 0);
315 index->
id = DICT_TABLES_ID;
317 error = dict_index_add_to_cache(table, index,
322 ut_a(error == DB_SUCCESS);
325 index = dict_mem_index_create(
"SYS_TABLES",
"ID_IND",
327 dict_mem_index_add_field(index,
"ID", 0);
329 index->
id = DICT_TABLE_IDS_ID;
330 error = dict_index_add_to_cache(table, index,
332 + DICT_HDR_TABLE_IDS,
335 ut_a(error == DB_SUCCESS);
338 table = dict_mem_table_create(
"SYS_COLUMNS", DICT_HDR_SPACE, 7, 0);
340 dict_mem_table_add_col(table, heap,
"TABLE_ID", DATA_BINARY, 0, 0);
341 dict_mem_table_add_col(table, heap,
"POS", DATA_INT, 0, 4);
342 dict_mem_table_add_col(table, heap,
"NAME", DATA_BINARY, 0, 0);
343 dict_mem_table_add_col(table, heap,
"MTYPE", DATA_INT, 0, 4);
344 dict_mem_table_add_col(table, heap,
"PRTYPE", DATA_INT, 0, 4);
345 dict_mem_table_add_col(table, heap,
"LEN", DATA_INT, 0, 4);
346 dict_mem_table_add_col(table, heap,
"PREC", DATA_INT, 0, 4);
348 table->
id = DICT_COLUMNS_ID;
350 dict_table_add_to_cache(table, heap);
354 index = dict_mem_index_create(
"SYS_COLUMNS",
"CLUST_IND",
358 dict_mem_index_add_field(index,
"TABLE_ID", 0);
359 dict_mem_index_add_field(index,
"POS", 0);
361 index->
id = DICT_COLUMNS_ID;
362 error = dict_index_add_to_cache(table, index,
367 ut_a(error == DB_SUCCESS);
370 table = dict_mem_table_create(
"SYS_INDEXES", DICT_HDR_SPACE, 7, 0);
372 dict_mem_table_add_col(table, heap,
"TABLE_ID", DATA_BINARY, 0, 0);
373 dict_mem_table_add_col(table, heap,
"ID", DATA_BINARY, 0, 0);
374 dict_mem_table_add_col(table, heap,
"NAME", DATA_BINARY, 0, 0);
375 dict_mem_table_add_col(table, heap,
"N_FIELDS", DATA_INT, 0, 4);
376 dict_mem_table_add_col(table, heap,
"TYPE", DATA_INT, 0, 4);
377 dict_mem_table_add_col(table, heap,
"SPACE", DATA_INT, 0, 4);
378 dict_mem_table_add_col(table, heap,
"PAGE_NO", DATA_INT, 0, 4);
381 #if DICT_SYS_INDEXES_PAGE_NO_FIELD != 6 + 2
382 #error "DICT_SYS_INDEXES_PAGE_NO_FIELD != 6 + 2"
384 #if DICT_SYS_INDEXES_SPACE_NO_FIELD != 5 + 2
385 #error "DICT_SYS_INDEXES_SPACE_NO_FIELD != 5 + 2"
387 #if DICT_SYS_INDEXES_TYPE_FIELD != 4 + 2
388 #error "DICT_SYS_INDEXES_TYPE_FIELD != 4 + 2"
390 #if DICT_SYS_INDEXES_NAME_FIELD != 2 + 2
391 #error "DICT_SYS_INDEXES_NAME_FIELD != 2 + 2"
394 table->
id = DICT_INDEXES_ID;
395 dict_table_add_to_cache(table, heap);
399 index = dict_mem_index_create(
"SYS_INDEXES",
"CLUST_IND",
403 dict_mem_index_add_field(index,
"TABLE_ID", 0);
404 dict_mem_index_add_field(index,
"ID", 0);
406 index->
id = DICT_INDEXES_ID;
407 error = dict_index_add_to_cache(table, index,
412 ut_a(error == DB_SUCCESS);
415 table = dict_mem_table_create(
"SYS_FIELDS", DICT_HDR_SPACE, 3, 0);
417 dict_mem_table_add_col(table, heap,
"INDEX_ID", DATA_BINARY, 0, 0);
418 dict_mem_table_add_col(table, heap,
"POS", DATA_INT, 0, 4);
419 dict_mem_table_add_col(table, heap,
"COL_NAME", DATA_BINARY, 0, 0);
421 table->
id = DICT_FIELDS_ID;
422 dict_table_add_to_cache(table, heap);
426 index = dict_mem_index_create(
"SYS_FIELDS",
"CLUST_IND",
430 dict_mem_index_add_field(index,
"INDEX_ID", 0);
431 dict_mem_index_add_field(index,
"POS", 0);
433 index->
id = DICT_FIELDS_ID;
434 error = dict_index_add_to_cache(table, index,
439 ut_a(error == DB_SUCCESS);
446 ibuf_init_at_db_start();
455 mutex_exit(&(dict_sys->
mutex));
463 dict_insert_initial_data(
void)
480 dict_hdr_create(&mtr);
486 dict_insert_initial_data();