MCPcopy Create free account
hub / github.com/MariaDB/server / read_extra2

Function read_extra2

sql/table.cc:1641–1716  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1639}
1640
1641static
1642bool read_extra2(const uchar *frm_image, size_t len, extra2_fields *fields)
1643{
1644 const uchar *extra2= frm_image + 64;
1645
1646 DBUG_ENTER("read_extra2");
1647
1648 fields->reset();
1649
1650 if (*extra2 != '/') // old frm had '/' there
1651 {
1652 const uchar *e2end= extra2 + len;
1653 while (extra2 + 3 <= e2end)
1654 {
1655 extra2_frm_value_type type= (extra2_frm_value_type)*extra2++;
1656 size_t length= extra2_read_len(&extra2, e2end);
1657 if (!length)
1658 DBUG_RETURN(true);
1659
1660 bool fail= false;
1661 switch (type) {
1662 case EXTRA2_TABLEDEF_VERSION:
1663 if (fields->version.str) // see init_from_sql_statement_string()
1664 {
1665 if (length != fields->version.length)
1666 DBUG_RETURN(true);
1667 }
1668 else
1669 {
1670 fields->version.str= extra2;
1671 fields->version.length= length;
1672 }
1673 break;
1674 case EXTRA2_ENGINE_TABLEOPTS:
1675 fail= read_extra2_section_once(extra2, length, &fields->options);
1676 break;
1677 case EXTRA2_DEFAULT_PART_ENGINE:
1678 fields->engine.set((const char*)extra2, length);
1679 break;
1680 case EXTRA2_GIS:
1681 fail= read_extra2_section_once(extra2, length, &fields->gis);
1682 break;
1683 case EXTRA2_PERIOD_FOR_SYSTEM_TIME:
1684 fail= read_extra2_section_once(extra2, length, &fields->system_period)
1685 || length != 2 * frm_fieldno_size;
1686 break;
1687 case EXTRA2_FIELD_FLAGS:
1688 fail= read_extra2_section_once(extra2, length, &fields->field_flags);
1689 break;
1690 case EXTRA2_APPLICATION_TIME_PERIOD:
1691 fail= read_extra2_section_once(extra2, length, &fields->application_period);
1692 break;
1693 case EXTRA2_PERIOD_WITHOUT_OVERLAPS:
1694 fail= read_extra2_section_once(extra2, length, &fields->without_overlaps);
1695 break;
1696 case EXTRA2_FIELD_DATA_TYPE_INFO:
1697 fail= read_extra2_section_once(extra2, length, &fields->field_data_type_info);
1698 break;

Callers 1

Calls 4

extra2_read_lenFunction · 0.85
read_extra2_section_onceFunction · 0.85
resetMethod · 0.45
setMethod · 0.45

Tested by

no test coverage detected