Skip to content

[#603] [V63012] Merge GT.M V6.3-012 into YottaDB mainline

Brad Westhafer requested to merge bradwesthafer/YDB:v63012 into master

Below is the sequence of commit message of all commits in this MR (in reverse chronological order):

commit 4413b253816c0c7cd6bc7e2a4ba1afbeb69767fe
Author: Narayanan Iyer <nars@yottadb.com>
Date:   Fri Apr 1 14:08:25 2022 -0400

    [#603] [V63012] Define dqnoop() macro only if DEBUG_TRIPLES; Or else can lead to correctness issues
    
    Background
    ----------
    * We noticed that after merging the V6.3-012 code changes, the machine listing output of the following
      M program changed.
    
      ```sh
      $ cat x.m
      xecute "for i=1"
    
      $ $ydb_dist/yottadb -machine -lis=x.lis x.m
      $ grep -E ";OC_|PUSHL" x.lis
      ```
    
      **From**
      ```
        1      PUSHL       I^#0 [0x0]                               ;OC_LINEFETCH
        3      MOVC3       @GTM$LITERAL+0x0, @B^0(r8)               ;OC_STOLIT
        4      JSB         @W^xf_restartpc(R11)                     ;OC_FORCHK1
        6      JSB         @B^xf_ret(R11)                           ;OC_RET
      ```
    
      **To**
      ```
        1      PUSHL       I^#0 [0x0]                               ;OC_LINEFETCH
        3      PUSHL       I^#19 [0x13]                             ;OC_COMMARG
        6      JSB         @B^xf_ret(R11)                           ;OC_RET
      ```
    
    * The original version was optimized (i.e. the `for` command got compiled outside of the `xecute`)
      whereas the newer version was not.
    
    Issue
    -----
    * The dqnoop() macro was introduced in GT.M V6.3-012 to do what seems like triple debugging.
      It compared the opcode of the triple macro parameter against `OCQ_INVALID` which was defined to be -1.
      This comparison was alerted by clang as always evaluating to FALSE. As part of the YottaDB code merge
      of GT.M V6.3-012, a prior commit fixed this warning by type casting the negative value to an unsigned
      type that way the comparison will not be always false. But that had the side effect of altering the
      triple chains in YottaDB. Additional `OC_NOOP` opcode triples were inserted in the current chain
      whenever a `ins_triple()` call was made as that invoked the `dqnoop()` macro.
    
    * While compiling the `for` command, this caused us to return from line 172 below because we found
      a `OC_NOOP` triple instead of the expected `OC_VAR` triple.
    
      **sr_port/m_for.c**
      ```c
        148                 control_ref = (TREF(curtchain))->exorder.bl;
        149                 if (!lvn(&control_variable, OC_SAVLVN, NULL))
          .
          .
        168                 if (OC_VAR != control_ref->exorder.fl->opcode)
        169                 {
        170                         FOR_POP(BLOWN_FOR);
        171                         REVERT;
        172                         return FALSE;
        173                 }
      ```
    
    * Various parts of the compiler logic expect certain opcodes for adjacent triples and all of those would
      get confused by adding a `OC_NOOP` after every inserted triple in the current chain (`TREF(curtchain)`).
      The above `sr_port/m_for.c` case is just one example.
    
    * Therefore, I suspect the way the `dqnoop()` macro was coded was intentional and that they wanted the
      check to always evaluates to `FALSE` and do nothing (i.e. no new `OC_NOOP` triples) in the normal case.
      And that when they wanted to debug the triple chains, they would remove the `if` check in the `dqnoop`
      macro so the `OC_NOOP` triple insertion happens all the time. Note that this is all just a theory based
      on the available upstream code changes.
    
    Fix
    ---
    * The `dqnoop()` macro should be a no-op in the normal case and should do the `OC_NOOP` triple additions
      only in the case of triple debugging. So it is defined as nothing in the normal case and defined to the
      big block of code when `DEBUG_TRIPLES` (the macro that is usually turned on to debug triples) is defined.
    
    * With these changes, the YottaDB version of the above simple M program does show an optimized machine listing.
commit 9225f2b7e78156ee770f208da151a4edad19b0cf
Author: Brad Westhafer <brad@yottadb.com>
Date:   Fri Apr 1 13:09:38 2022 -0400

    [#603] [V63012] Improve fix for dqnoop and add comment in gtm_malloc_src.h
    
    This commit makes 2 changes:
    
    * The major change is that the fix for the `dqnoop()` in
      bc477fa8bedbb6c634c20877260d295a5660b536 is replaced by a new
      version that turns OCQ_INVALID into an opcode and pulls
      `sr_port/opcode.h` into `sr_port/mdq.h`. See https://gitlab.com/YottaDB/DB/YDB/-/merge_requests/1132#note_896788583
      for more information.
    * This commit also makes a minor change to `sr_port/gtm_malloc_src.h`
      which adds a new comment pointing to the gitlab discussion related
      to that change.
commit 559fd411e6d42cf76e197939823051ad066ad7d1
Author: Brad Westhafer <brad@yottadb.com>
Date:   Thu Mar 31 15:42:24 2022 -0400

    [#603] [V63012] Fix v54002/C9B03001660 test failure by adding missed REVERT in sr_port/m_for.c
    
    After the changes to fix the `dqnoop()` clang compiler warning in
    bc477fa8bedbb6c634c20877260d295a5660b536, the v54002/C9B03001660 test started
    failing with SIG-11s due to a missed REVERT in `sr_port/m_for.c`. This failure
    can be illustrated with the following 2 lines of M code:
    
    ```
     xecute "for i=1"
     for a=1:1:2 kill a
    ```
    
    The `dqnoop()` changes exposed this issue which is a merge conflict caused
    by YottaDB having an `ESTABLISH` in this file (and thus needing a `REVERT`)
    for every return path but GT.M not having an `ESTABLISH` in the file. By
    adding the revert, this fixes the failure. A `v63012/missedrevert` test will
    be added using the above 2 lines of M to test for this bug.
commit 052ae01e8cd831182ef1ca0907180cfb2ebeed9b
Author: Brad Westhafer <brad@yottadb.com>
Date:   Fri Mar 25 17:38:02 2022 -0400

    [#603] [V63012] Revert incorrect changes to caller_id()
    
    This commit reverts several incorrect changes to `caller_id()` calls, changing their paramater back to `0` not `1`.
commit bc477fa8bedbb6c634c20877260d295a5660b536
Author: Brad Westhafer <brad@yottadb.com>
Date:   Fri Mar 25 10:30:01 2022 -0400

    [#603] [V63012] Fixes for v62001/hash failure and dqnoop compiler warning in clang builds
    
    This commit adds the fixes by @estess that fixed the v62001/hash test failure and
    the compiler warnings in clang builds for the `dqnoop()` macro:
    
    * The fix for the clang compiler warning was a cast to (uint4). Since the `dqnoop()`
      macro no longer produces a compiler warning, its full contents are restored to
      `sr_port/mdq.h`.
    * The change to `sr_port/gtm_malloc_src.h` fixes the `v62001/hash` test failure
      by saving and restoring the value of `smCallerIdExtraLevels`.
commit 8a5a4b2c3956003d050ff72dfb5e50bb68e5621b
Author: Brad Westhafer <brad@yottadb.com>
Date:   Tue Mar 22 17:13:13 2022 -0400

    [#603] [V63012] Address third round of review comments
    
    This commit addresses the third round of review comments:
    
    * Added a comment to `sr_port/resolve_ref.c` explaining the reason why a `TRIP_REF` check was added (`$ZYSQLNULL`).
    * Set the value of `caller_id()` calls in `sr_port/lv_getslot.c` and `sr_unix/gtm_exit_handler.c` to 1. This change
      is necessary because `caller_id()` now requires a value.
    * Corrected the value of some `caller_id()` calls in `sr_port/lv_getslot.c` and `sr_port/op_tcommit.c` from 0 to 1.
      This ensures that they will return the address of the caller not the address of the call-site to `caller_id()`
commit ae12adac4ad22a9a5fdd15e404616d902fab8597
Author: Brad Westhafer <brad@yottadb.com>
Date:   Fri Mar 18 14:09:01 2022 -0400

    [#603] [V63012] Address second round of review comments
    
    This commit addresses review comments from the second round of review comments:
    
    * `$HOROLOG` no longer rounds up to the nearest second as this could cause confusion
      and also caused the `rollback_A/full_qual` test to fail.
      (see https://gitlab.com/YottaDB/DB/YDB/-/merge_requests/1132#note_880595231)
    * A comment is modified in `sr_port/db_auto_upgrade` to mention that V6.3-012 was
      merged after r1.34.
    * The V6.3-012 changes to errorsp.h are integrated instead of discarded. This is
      because the purpose of the `&` operation appears to be removal of a flag from
      error codes not changing their sign. They have been integrated by making the
      equivalent changes to the `IS_YDB_ERROR()` macro that replaced `IS_GTM_ERROR()`
      in our codebase.
commit a6b62dd47e52c6f339393ee3090435e0af6d628a
Author: Brad Westhafer <brad@yottadb.com>
Date:   Wed Mar 16 16:29:14 2022 -0400

    [#603] [V63012] Address first round of review comments
    
    This commit addresses the first round of review comments:
    
    * In various places, `caller_id(0)` is changed to `caller_id(1) to return the address of the caller not the
      address of the call-site to` caller_id()`
    * An unnecessary blank line in `sr_port/m_xecute.c` is removed
    * The value of `OBJ_UNIX_LABEL` in `sr_port/objlabel.h` is increased from `9` to `10`. This bump is usually
      done if there are compiler changes in a release. There are a few compiler code changes in GT.M V6.3-012
      that we noticed so to be safe we bumped the object file format even though GT.M V6.3-012 did not do this
      bump. This is to ensure that all object code will need to be recompiled for r1.36 and that it will be
      impossible for a user to run incorrectly compiled object code. See
      https://gitlab.com/YottaDB/DB/YDB/-/merge_requests/1132#note_879003309 for discussion about this change.
commit 95355b3348949ca21f6eeae7aacb07b854ea6bde
Author: Brad Westhafer <brad@yottadb.com>
Date:   Tue Mar 15 16:20:37 2022 -0400

    [#603][#859] [V63012] Fix incorrect V6.3-012 changes to $HOROLOG and $ZUT
    
    This commit fixes a couple bugs in V6.3-012's changes to `$ZUT` and `$HOROLOG`.
    
    * In V6.3-012, a `FLOAT_SKEW` was added to `$ZUT`. This `FLOAT_SKEW` incorrectly subtracted 10 microseconds from the
      output causing `$ZUT` to report incorrect times. See https://gitlab.com/YottaDB/DB/YDB/-/merge_requests/1132#note_880595231
      for discussion about this change.
    * V6.3-012 also introduced a rounding bug in `$HOROLOG`. Although the number of microseconds is known to `$HOROLOG`
      due to it now using the same code paths as `$ZHOROLOG`, it did not round the microseconds to the nearest microsecond.
    
    This commit fixes both of the above. It also brings forward the V7.0-001 changes that changed the time function from
    `gettimeofday` to `clock_gettime` and stores the time internally in nanoseconds instead of microseconds.
commit 17d51e76463a46b5269717deae15bed8e1bb3272
Author: Brad Westhafer <brad@yottadb.com>
Date:   Mon Mar 14 15:53:06 2022 -0400

    [#603] [V63012] Fix r130/ydb607 test failure caused by incorrect merge conflict resolution in sr_port/db_auto_upgrade.c
    
    This commit fixes a r130/ydb607 test failure caused by an incorrect merge conflict resolution in
    `sr_port/db_auto_upgrade.c`. The test selects an old version of YottaDB or GT.M between V6.3-003 and V6.3-006 and
    YottaDB versions based on those GT.M versions. Whenever the test selected YottaDB versions r1.22 or r1.24, it would
    fail due to the return of the YDB#607 bug. The cause was an incorrect `break` statement in the minor version for
    V6.3-012 which caused the upgrade for versions with the minor version for r1.22 (which is the same as V6.3-007's)
    to break out of the loop early and not do the YottaDB updates to the database including the update that fixed the
    bug. The fix is to remove this `break` and an additional incorrect `break` after the block for r1.34's minor version.
commit a5e17e98fb2534e816f1dc65b0b32d128420d825
Author: Brad Westhafer <brad@yottadb.com>
Date:   Thu Mar 10 16:13:06 2022 -0500

    [#603] [V63012] Fix v53003/D9H12002672 test failure by restoring if (mupip_debug) block in sr_unix/ss_initiate.c
    
    With the V6.3-012 changes merged into YottaDB, the v53003/D9H12002672 test would fail occasionally due to an extra
    `Start kill-in-prog wait` message that appeared in its `MUPIP INTEG`. This message would show up whenever the test
    system randomly chose an online integ. This was caused by the removal of an `if (debug_mupip)` around a `GET_CUR_TIME`
    and a `util_out_print` in `sr_unix/ss_initiate.c`. This would print an extra message. Suspiciously, a later
    `if (debug_mupip)` block that printed `Done with kill-in-prog wait` was left inside the `if`. As this upstream change
    appears to be incorrect, the fix is to restore the `if (debug_mupip)`. With this restored, the test now passes reliably.
    
    This block in `sr_unix/ss_initiate.c` has very similar code to `sr_port/mupip_backup.c` and `sr_port/region_freeze.c`
    so reverting this is fine to maintain consistency with other code controlled by `debug_mupip`.
commit 30618cbc14122dc45107dac95da166268d276e39
Author: Brad Westhafer <brad@yottadb.com>
Date:   Mon Feb 21 18:31:05 2022 -0500

    [#603] [V63012] Regenerate GTMDefinedTypesInit*.m for sr_aarch64 and sr_armv7l
commit e1428205f569c114b8bb2a56e0f1a345cbf9b7ce
Author: Brad Westhafer <brad@yottadb.com>
Date:   Fri Feb 18 16:05:46 2022 -0500

    [#603] [V63012] Address clang-tidy pipeline failure
    
    This commit addresses the clang-tidy pipeline failures by updating the clang-tidy warning files to reflect
    V6.3-012 changes and by fixing a clang-tidy warning in `gtm_putmsg.list`. The change to `gtm_putmsg_list.c`
    fixes the following warning:
    
    `gtm_putmsg_list.c:warning: Value stored to 'f_actual' is never read [clang-analyzer-deadcode.DeadStores]`
    
    As the `f_actual` store is never used, the right fix is to not set it and only set `f_count` instead.
    This addresses the warning. The other changes in this commit are to adjust the amount of padding for 2
    warnings in `gtm_threadgbl_deftypes` and remove a couple warnings on pro builds that are fixed by V6.3-012.
    These changes should fix the clang-tidy pipeline.

commit 9b24d02782a9592c0b2e4f1c1444bd74637b2c31
Author: Brad Westhafer <brad@yottadb.com>
Date:   Fri Feb 18 15:55:22 2022 -0500

    [#603] [V63012] Code fixes for dbg test failures
    
    This commit fixes 2 different types of test failures.
    
    * Firstly, it fixes the r130/ydb607 test failure. The test failed with `record("sgmnt_data.flush_trigger_top")=0` when
      it is supposed to be `960`. The cause of this failure was an incorrect merge conflict resolution in
      `sr_port/db_auto_upgrade.c`. Specifically, the minor DB version for GT.M V6.3-012 should have been placed before all
      YottaDB versions. Instead, it was placed later. Due to this, the test did not execute the line that sets this field
      causing it to be initialized as 0. After correcting the order of the minor versions in `sr_port/db_auto_upgrade.c`,
      the r130/ydb607 test passes as expected.
    
    * Secondly, this fixes the following assert failure:
      `Assert failed in /sr_port/resolve_ref.c line 316 for expression  ((NO_REF == tripref->operand[1].oprclass) && (NO_REF == tripref->destination.oprclass))`
      The fix is to also accept the value `TRIP_REF` for `tripref->operand[1].oprclass` just like in `sr_port/alloc_reg.c`
      (see 5b1b5b1bf22225eeb39ad565f2b4cfb6c33dc2a5). On a debug build, this assert was causing test failures in
      `r130/ydb553`, `r130/ydb554`, `relink/basic`, `v62000/gtm7971`, `v62000/gtm8015`, `r124/ydb363`, `r124/ydb371`,
      `v63009/gtm9123`, `v62002/gtm8261`, `v60001/gtm3907`, `v60001/misceval`, `v6000/gtm7277` and `v54002/C9B04001673`.
commit 77882f2b722b5218bc0b2e0b3e99b252699573e0
Author: Brad Westhafer <brad@yottadb.com>
Date:   Thu Feb 17 16:03:48 2022 -0500

    [#603] [V63012] Fix compiler warnings inherited from V6.3-012
    
    When building YottaDB with the V6.3-012 changes, we received the following 4 warnings:
    
    ```
    /sr_port/mu_int_maps.c:196:24: warning: if statement has empty body [-Wempty-body]
                                            if (free_blk_base);
                                                              ^
    /sr_port/mu_int_maps.c:196:24: note: put the semicolon on a separate line to silence this warning
    ```
    
    ```
    /sr_port/ins_triple.c:23:2: warning: result of comparison of constant -1 with expression of type 'opctype' (aka 'enum opcode_enum') is always false [-Wtautological-constant-out-of-range-compare]
            dqnoop(TREF(curtchain));
            ^~~~~~~~~~~~~~~~~~~~~~~
    /sr_port/mdq.h:68:19: note: expanded from macro 'dqnoop'
            if ((OCQ_INVALID == ((triple *)(Q))->opcode)            \
                 ~~~~~~~~~~~ ^  ~~~~~~~~~~~~~~~~~~~~~~~
    ```
    
    ```
    /sr_port/f_reversequery1.c:103:5: warning: implicitly declaring library function 'memcmp' with type 'int (const void *, const void *, unsigned long)' [-Wimplicit-function-declaration]
                                    START_GVBIND_CHAIN(&save_state, oldchain);
                                    ^
    /sr_port/compiler.h:364:2: note: expanded from macro 'START_GVBIND_CHAIN'
            dqinit(&(SS)->tmpchain, exorder);                                       \
            ^
    /sr_port/mdq.h:58:7: note: expanded from macro 'dqinit'
            if (!memcmp(#N, "exorder", 3))                  \
                 ^
    /sr_port/f_reversequery1.c:103:5: note: include the header <string.h> or explicitly provide a declaration for 'memcmp'
    /sr_port/compiler.h:364:2: note: expanded from macro 'START_GVBIND_CHAIN'
            dqinit(&(SS)->tmpchain, exorder);                                       \
            ^
    /sr_port/mdq.h:58:7: note: expanded from macro 'dqinit'
            if (!memcmp(#N, "exorder", 3))                  \
                 ^
    ```
    
    ```
    /Distrib/YottaDB/V996_R133_63012/sr_port/f_query1.c:128:4: warning: implicitly declaring library function 'memcmp' with type 'int (const void *, const void *, unsigned long)' [-Wimplicit-function-declaration]
                            START_GVBIND_CHAIN(&save_state, oldchain);
                            ^
    /Distrib/YottaDB/V996_R133_63012/sr_port/compiler.h:364:2: note: expanded from macro 'START_GVBIND_CHAIN'
            dqinit(&(SS)->tmpchain, exorder);                                       \
            ^
    /Distrib/YottaDB/V996_R133_63012/sr_port/mdq.h:58:7: note: expanded from macro 'dqinit'
            if (!memcmp(#N, "exorder", 3))                  \
                 ^
    /Distrib/YottaDB/V996_R133_63012/sr_port/f_query1.c:128:4: note: include the header <string.h> or explicitly provide a declaration for 'memcmp'
    /Distrib/YottaDB/V996_R133_63012/sr_port/compiler.h:364:2: note: expanded from macro 'START_GVBIND_CHAIN'
            dqinit(&(SS)->tmpchain, exorder);                                       \
            ^
    /Distrib/YottaDB/V996_R133_63012/sr_port/mdq.h:58:7: note: expanded from macro 'dqinit'
            if (!memcmp(#N, "exorder", 3))                  \
                 ^
    ```
    
    The `mu_int_maps.c` warning exposed a GT.M V6.3-012 bug which was not fixed until V7.0-001:
    
    ```
                                            if (free_blk_base);
                                                    free(free_blk_base);
    ```
    
    Due to this bug, the `free()` is always run even if `free_blk_base` is 0 (NULL). Since freeing a NULL pointer is safe in C, this bug, at worst, would just make an unnecessary `free()` call and waste a few CPU cycles.
    
    The warning in `sr_port/ins_triple.h` was fixed by removing an if block that always evaluated to `FALSE` from the `dqnoop()` macro's code. The block was checking if an opcode was equal to a constant of `-1L` which is impossible because the opcode is an enum that starts at 0.
    
    The other fixes in this commit are to include `gtm_string.h` in 2 files so that `memcmp` will always be defined when the `dqinit()` macro is called. This addresses the other 2 warnings.
commit e617e09e1b2027cf04cf1a0eb03c97cbb54f494f
Author: Brad Westhafer <brad@yottadb.com>
Date:   Tue Feb 15 15:09:15 2022 -0500

    [#603] [V63012] Regenerate GTMDefinedTypesInit*.m for sr_x86_64
commit ed45b5967b4f1408ec2b2edf1b37de57909e6030
Author: Brad Westhafer <brad@yottadb.com>
Date:   Tue Feb 15 13:29:20 2022 -0500

    [#603] [V63012] Resolve conflicts during merge of of GT.M V6.3-012 into YottaDB master
    
    * This commit manually resolves all conflicts related to the prior commit that merged V6.3-012 into master with conflicts.
    
    * In general, each conflict section is identified by a sequence of `<<<<<<<`, `=======` and `>>>>>>>` markers.
          The block of code between the `<<<<<<<` and `=======` markers is code that was changed by YottaDB.
          The block of code between the `=======` and `>>>>>>>` markers is code that was changed by GT.M.
    
    * Below is a list of files where the GT.M changes have been discarded and the YottaDB part of the conflict retained:
    
    - `CMakeLists.txt`
    - `LICENSE`
    - `sr_linux/release_name.h`
    - `sr_port/f_select.c`: V6.3-012 changes to this file were already merged into YottaDB in a previous commit.
    - `sr_unix/errorsp.h`: The GTM change to the `IS_GTM_ERROR()` macro forces the error code to be positive by doing an
       `& 0x0FFFFFFF`. This makes no sense in the context of YottaDB since error codes that start with YDB use negative numbers.
    - `sr_x86_64/GDEDefinedTypesInit*.m`: Discarded the changes because these files will be regenerated in a later commit.
    - `sr_x86_64/ttt.c`
    
    * Below is a list of files where the GT.M changes have been retrofitted into YottaDB, preserving the intent of both the
      YottaDB and GT.M changes:
    
    - `sr_port/alloc_reg.c`
    - `sr_port/cdbg_dump.c`: First change appeared straightforward (only showed up as a conflict becasue of a previous YDB
      change that removed a variable declaration a line above) but caused a compiler error because the field `.bpt` was
      renamed to `.bkptr`. Changing it to `.bkptr` fixed the error. Second change involved formatting changes to a printf
      that was previously changed on the YDB side. Both the YDB and GT.M changes to the printf were retained.
    - `sr_port/comp_init.c`: The new GT.M global `source_line` was added and the previously removed by us global
      `aligned_source_buffer` was not restored.
    - `sr_port/create_dummy_gbldir.c`
    - `sr_port/db_auto_upgrade.c`: This conflict was handled based on the comment in this file: the GT.M changes related to
      the new minor version were placed at the appropriate spot and a new YDB minor version was added that duplicates these
      changes. Removed GDSMVFILLER1 (now GDSMV63012).
    - `sr_port/dse_dmp_fhead.c`
    - `sr_port/err_check.c`
    - `sr_port/eval_expr.c`: GT.M change was blank line after `DCL_THREADGBL_ACCESS;` not before. Also changed `gtmDebugLevel`
      to `ydbDebugLevel` to get the build working.
    - `sr_port/f_incr.c`: Kept the new assert, discarded the previously removed assert (which was removed for being incorrect).
    - `sr_port/f_order1.c`
    - `sr_port/f_query.c`
    - `sr_port/gbldefs.c`: The change the replaced `smCallerId` with `smCallerIdExtraLevels` was adopted. The global
      `ydb_fullblockwrites` as the GT.M
      equivalent `gtm_fullblockwrites` was removed in V6.3-012.
    - `sr_port/gdeerrors_ctl.c`
    - `sr_port/gdeinit.m`: Previous YottaDB changes to the `s tfile` line (which was unchanged on the GT.M side in V6.3-012)
      were retained. GT.M changes were adopted for previous 2 lines.
    - `sr_port/gdsdbver_sp.h`: Replaced minor version `GDSMVFILLER1` with `GDSMV63012` and added new minor version `GDSMR136`.
    - `sr_port/gdsfhead.h`: First two changes were coding standards changes where a comment had been changed on the YDB side.
      Third change was resolved by keeping our change to `flush_time` and their new fields. Final change was to a field where
      we'd changed the type from `bool` to `unsigned char` and they changed formatting for coding standards. Kept both changes.
    - `sr_port/gtm_env_init.c`: Removed the YottaDB equivalents of `gtm_fullblockwrites` and `$gtm_string_pool_limit` which
      were removed on the GT.M side in V6.3-012. The 3rd conflict is resolved by removing the `Full Database-block Write mode`
      section and rejecting the previously removed code (on the YottaDB side) that is still there on the GT.M side. The 4th
      conflict was resolved by removing the YottaDB equivalent of the `$gtm_string_pool_limit` but retaining our
      `ydb_repl_filter_timeout` code.
    - `sr_port/gtm_malloc_src.h`
    - `sr_port/gtm_threadgbl_defs.h`
    - `sr_port/gtmsource_comm_init.c`: First 2 conflicts are straightforward. The 3rd conflict is resolved by retaining
      the #481 changes that protect getaddrinfo() from deadlocks and the V6.3-012 changes. The 4th conflict was
      straightforward. Previous YottaDB change was a coding standards change.
    - `sr_port/gvcst_init.c`
    - `sr_port/gvn.c`
    - `sr_port/jmp_opto.c`: Conflict was straightforward. Needed to change a cdbg_dump_triple_all() call to the YDB replacement
      cdbg_dump_t_orig() to get the build working.
    - `sr_port/lv_getslot.c`
    - `sr_port/m_xecute.c`: Kept the GT.M changes to the block of code and retrofitted them into the #440 changes (TK_EOL check
       of the window token).
    - `sr_port/mdq.h`
    - `sr_port/merrors.msg`: Discarded the first conflict (which was removing a `!` line where we'd previously removed 2 such
      lines) and the last conflict (changes to `SEQNUMSEARCHTIMEOUT` which we nixed in r1.24 because it is no longer used
      anywhere). Kept the change to `FILEOPENFAIL`, `BKUPTMPFILOPEN` and `BKUPTMPFILWRITE`.
    - `sr_port/mlkdef.h`: GT.M change was to a comment. Adopted this change and fixed the indentation of this structure to be
       aligned (it was misaligned in both YDB and GT.M).
    - `sr_port/mu_int_blk.c`
    - `sr_port/mumps.hlp`: First 2 conflicts were straightforward. The last 3 conflicts involve paragraph abouts ZINInterrupt,
      ZPosition and ZQuit being moved. The solution to it was to retrofit the YottaDB changes at the new locations.
    - `sr_port/mupip.hlp`: Only conflict involved the addition of the new MUPIP SET option FULLBLKWRT to a table.
    - `sr_port/mupip_backup.c`: A previously removed `SNPRINTF` command appeared as part of the GT.M changes and was discarded.
      Kept the new block of code.
    - `sr_port/mupip_integ.c`
    - `sr_port/op_indincr.c`
    - `sr_port/op_indsavglvn.c`
    - `sr_port/op_indsavlvn.c`
    - `sr_port/resolve_ref.c`: Did not show up as a conflict but needed 2 changes to fix build errors. Those were changing a
      `gtmDebugLevel` to `ydbDebugLevel` and the `.bpt` field of a triple to `.bkptr`.
    - `sr_port/shrink_trips.c`: Did not show up as a conflict but needed to change 2 cdbg_dump_triple_all() calls to the YDB
      replacement cdbg_dump_t_orig()  to get the build working.
    - `sr_port/t_commit_cleanup.c`: Did not show up as a conflict but needed a change from `gtm_white_box_test_case_enabled`
       to `ydb_white_box_test_case_enabled` to fix a build error
    - `sr_port/t_end_sysops.c`
    - `sr_port/wbox_test_init.h`
    - `sr_port_cm/gvcmz_netopen.c`: On the GT.M side, the `VMS_ONLY()` block was removed and the `c->mbf = stringpool.free()`
      line was moved slightly later. The removed block showed up on the YDB side of the conflict along with a duplicate of
      the moved line. Both have been removed.
    - `sr_unix/buildaux_gde.csh`: changed $gtm_icu_version to $ydb_icu_version
    - `sr_unix/buildaux_gtmcrypt.csh`: changed $gtm_icu_version to $ydb_icu_version
    - `sr_unix/comlist.csh`: GT.M change in conflict was removing `dbcertify` from a `tar` command. Also changed a
      $gtm_icu_version to $ydb_icu_version.
    - `sr_unix/gdeget.m`: The conflict was caused by a previous change that altered a `zm` to `d message^gde`. This change
      was re-applied to the V6.3-012 changes.
    - `sr_unix/gtm_putmsg_list.c`: The references to the global `gtm_dist_ok_to_use` added in V6.3-012 were changed to
      `ydb_dist_ok_to_use` because it was previously renamed in YottaDB.
    - `sr_unix/gtm_startup.c`: Modified the V6.3-012 changes to work with `ydb_trans_numeric()` since the `GTM_STRPLLIM`
      and `trans_numeric()` that they depended on were replaced by `YDBENVINDX_STRING_POOL_LIMIT` and `ydb_trans_numeric()`
      in YottaDB. Removed the `log_name` variable because it is unused after making this change.
    - `sr_unix/gtmdef.csh`
    - `sr_unix/gvcst_init_sysops.c`
    - `sr_unix/mupip_set_file.c`
    - `sr_unix/util_output.c`
    - `sr_unix/ztimeout_routines.c`: Only GT.M change was moving the `SIGPROCMASK()` call so only change needed was to
       remove SIGPROCMASK() from the YDB side.
    - `sr_unix_gnp/cmj_err.c`
    - `sr_unix/cmj_postevent.c`
    
    * The following files were automatically generated as part of this commit:
    
    - `sr_port/libydberrors.h`
    - `sr_port/merrors_ansi.h`
    - `sr_port/merrors_ctl.c`
    - `sr_port/ydbmerrors.h`
commit 5ea8db9381eb05ac86524084d776c82c64c5e041
Author: Brad Westhafer <brad@yottadb.com>
Date:   Fri Feb 11 12:14:59 2022 -0500

    [#603] [V63012] Address merge conflicts involving deleted files
    
    * This commit addresses merge conflicts involving deleted files.
    
    * The list of deleted files from the previous commit was:
    
    ```
            deleted:    sr_unix/newverdir.csh
            deleted:    sr_unix/op_horolog.c
            deleted:    sr_unix/synch_env_version.csh
            deleted by us:   README
            deleted by us:   sr_i386/cmierrors_ctl.c
            deleted by us:   sr_i386/gdeerrors_ctl.c
            deleted by us:   sr_unix/gtm_logicals.h
            deleted by them: sr_unix/setactive1.csh
            deleted by us:   sr_x86_64/cmerrors_ctl.c
            deleted by us:   sr_x86_64/merrors_ansi.h
            deleted by us:   sr_x86_64/merrors_ctl.c
    ```
    
    * The files that show up as just `deleted:` do not need any changes as they were automatically deleted by the previous
      commit.
    
    * The files that show up as `deleted by us:` or `deleted by them:` are handled in this commit. All of them are deleted
      by this commit. This is a straightforward change.
    
    * The changes to `sr_unix/gtm_logicals.h` require changes to the equivalent file in the YottaDB code base
      (`sr_port/ydb_logicals_tab.h`) and the copy of this file in the YDBEncrypt repo. The change to the YDB version is
      made in this repo. The YDBEncrypt change will be made in a future commit to that repo.
    
    * Conflicts related to the removal of the `$gtm_fullblockwrites` environment variable's YottaDB equivalent
      `$ydb_fullblockwrites` will be handled in a future commit.
commit a4e7d6ec50b61b4c243a5111b84930607c7a4d9a
Author: Narayanan Iyer <nars@yottadb.com>
Date:   Thu Apr 16 06:30:41 2020 -0400

    [#603] [V63012] Merge GT.M V6.3-012 into YottaDB mainline (with conflicts)
    
    * This commit does not address merge conflicts as they will be addressed in future commits.
    
    * This commit does not update copyrights as it was automatically generated.
Edited by Brad Westhafer

Merge request reports