1. 22 Oct, 2022 1 commit
    • Alexander Barkov's avatar
      MDEV-29481 mariadb-upgrade prints confusing statement · 2a57396e
      Alexander Barkov authored
      This is a new version of the patch instead of the reverted:
      
        MDEV-28727 ALTER TABLE ALGORITHM=NOCOPY does not work after upgrade
      
      Ignore the difference in key packing flags HA_BINARY_PACK_KEY and HA_PACK_KEY
      during ALTER to allow ALGORITHM=INSTANT and ALGORITHM=NOCOPY in more cases.
      
      If for some reasons (e.g. due to a bug fix such as MDEV-20704) these
      cumulative (over all segments) flags in KEY::flags are different for
      the old and new table inside compare_keys_but_name(), the difference
      in HA_BINARY_PACK_KEY and HA_PACK_KEY in KEY::flags is not really important:
      
      MyISAM and Aria can handle such cases well: per-segment flags are stored in
      MYI and MAI files anyway and they are read during ha_myisam::open()
      ha_maria::open() time. So indexes get opened with correct per-segment
      flags that were calculated during the table CREATE time, no matter
      what the old (CREATE time) and new (ALTER TIME) per-index compression
      flags are, and no matter if they are equal or not.
      
      All other engine ignore key compression flags, so this change
      is safe for other engines as well.
      2a57396e
  2. 21 Oct, 2022 1 commit
  3. 14 Oct, 2022 4 commits
  4. 13 Oct, 2022 2 commits
  5. 12 Oct, 2022 2 commits
    • Nikita Malyavin's avatar
      MDEV-29753 An error is wrongly reported during INSERT with vcol index · 128356b4
      Nikita Malyavin authored
      See also commits aa8a31da and 64678c for a Bug #22990029 fix.
      
      In this scenario INSERT chose to check if delete unmarking is available for
      a just deleted record. To build an update vector, it needed to calculate
      the vcols as well. Since this INSERT was not IGNORE-flagged, recalculation
      failed.
      
      Solutiuon: temporarily set abort_on_warning=true, while calculating the
      column for delete-unmarked insert.
      128356b4
    • Nikita Malyavin's avatar
      MDEV-29299 SELECT from table with vcol index reports warning · 3cd2c1e8
      Nikita Malyavin authored
      As of now innodb does not store trx_id for each record in secondary index.
      The idea behind is following: let us store only per-page max_trx_id, and
      delete-mark the records when they are deleted/updated.
      
      If the read starts, it rememders the lowest id of currently active
      transaction. Innodb refers to it as trx->read_view->m_up_limit_id.
      See also ReadView::open.
      
      When the page is fetched, its max_trx_id is compared to m_up_limit_id.
      If the value is lower, and the secondary index record is not delete-marked,
      then this page is just safe to read as is. Else, a clustered index could be
      needed ato access. See page_get_max_trx_id call in row_search_mvcc, and the
      corresponding switch (row_search_idx_cond_check(...)) below.
      
      Virtual columns are required to be updated in case if the record was
      delete-marked. The motivation behind it is documented in
      Row_sel_get_clust_rec_for_mysql::operator() near
      row_sel_sec_rec_is_for_clust_rec call.
      
      This was basically a description why virtual column computation can
      normally happen during SELECT, and, generally, a vcol index access.
      
      Sometimes stats tables are updated by innodb. This starts a new
      transaction, and it can happen that it didn't finish to the moment of
      SELECT execution, forcing virtual columns recomputation. If the result was
      a something that normally outputs a warning, like division by zero, then
      it could be outputted in a racy manner.
      
      The solution is to suppress the warnings when a column is computed
      for the described purpose.
      ignore_wrnings argument is added innobase_get_computed_value.
      Currently, it is only true for a call from
      row_sel_sec_rec_is_for_clust_rec.
      3cd2c1e8
  6. 11 Oct, 2022 9 commits
  7. 10 Oct, 2022 3 commits
  8. 09 Oct, 2022 6 commits
  9. 07 Oct, 2022 5 commits
  10. 06 Oct, 2022 5 commits
  11. 05 Oct, 2022 2 commits