fix(makedata): shorten the DC_MAXCELLS_WEBEDIT description to fit var_desc
Lighthouse Checks / lighthouse (pull_request) Successful in 20m46s
Build / Build-and-ng-test (pull_request) Successful in 5m23s
Build / Build-and-test-development (pull_request) Successful in 30m13s

MPE_CONFIG.VAR_DESC is varchar(300), but the description written for
DC_MAXCELLS_WEBEDIT is 336 characters, so the insert truncates it.  The
truncation raises a WARNING, which sets SYSCC, and makedata aborts on
`&syscc ne 0` immediately after %mpe_makedata():

    WARNING: Character expression will be truncated when assigned to
      character column var_desc.
    ERROR: Execution terminated by an ABORT CANCEL statement

The abort happens before the settings job is written, so a fresh deploy
ends with no control library and no settings.sas at all.  It goes
unnoticed because the SAS test suite reuses whatever library is already
on the estate - the first time it bites is a deploy from scratch.

The description is shortened to 201 characters in both places it is
written - mpe_makedata (new installs) and the 20261003 row/cell limits
migration (existing installs).  The rationale it carried is user-visible
help text, so it moves to a SAS comment above each insert rather than
being dropped.

Verified on a real Viya estate, deploying from scratch:
  - before: makedata aborted, "Err during VIYA1337 build", no settings.sas
  - after:  makedata completed with zero warnings, and the SAS test suite
            then ran 59/59 green
This commit is contained in:
dc committed 2026-10-19 12:22:13 +00:00
1 parent 026930d3e4
commit a51d9e5574
2 files changed
+11 -7

No files matched your search

@@ -97,6 +97,10 @@ quit;
set tx_to=&now
where var_name='DC_MAXCELLS_WEBEDIT' and var_active=1 and &now lt tx_to;
/* Why the cell limit exists, kept out of var_desc - MPE_CONFIG.VAR_DESC
is varchar(300), and a truncation WARNING aborts the build. A wide
table is expensive long before it is tall - 250 rows of a 1000 column
table is a quarter of a million cells. */
insert into &dclib..mpe_config
set tx_from=&now
,tx_to='31DEC9999:23:59:59'dt
@@ -106,10 +110,8 @@ quit;
,var_active=1
,var_desc='This sets the maximum number of CELLS (rows multiplied by'
!!' columns) that can be loaded into the browser for editing in the'
!!' EDIT screen. It exists because a wide table is expensive long'
!!' before it is tall - 250 rows of a 1000 column table is a quarter'
!!' of a million cells. Whichever of this and DC_MAXOBS_WEBEDIT is'
!!' reached first applies.';
!!' EDIT screen. Whichever of this and DC_MAXOBS_WEBEDIT is reached'
!!' first applies.';
quit;
%end;
%else %do;
+5 -3
View File
@@ -79,6 +79,10 @@ insert into &lib..mpe_config set
!!' will require a decent browser (ie, not IE) and more memory on the'
!!' client side. The DC_MAXCELLS_WEBEDIT limit is applied at the same'
!!' time, whichever is reached first.';
/* Why the cell limit exists, kept out of var_desc - MPE_CONFIG.VAR_DESC is
varchar(300), and a truncation WARNING aborts this whole build. A wide
table is expensive long before it is tall - 250 rows of a 1000 column
table is a quarter of a million cells. */
insert into &lib..mpe_config set
tx_from=0
,tx_to='31DEC9999:23:59:59'dt
@@ -88,9 +92,7 @@ insert into &lib..mpe_config set
,var_active=1
,var_desc='This sets the maximum number of CELLS (rows multiplied by'
!!' columns) that can be loaded into the browser for editing in the EDIT'
!!' screen. It exists because a wide table is expensive long before it'
!!' is tall - 250 rows of a 1000 column table is a quarter of a million'
!!' cells. Whichever of this and DC_MAXOBS_WEBEDIT is reached first'
!!' screen. Whichever of this and DC_MAXOBS_WEBEDIT is reached first'
!!' applies.';
insert into &lib..mpe_config set
tx_from=0