Compare commits

...

9 Commits
v7.3.0 ... main

Author SHA1 Message Date
semantic-release-bot
52ae3404ee chore(release): 7.4.1 [skip ci]
## [7.4.1](https://git.datacontroller.io/dc/dc/compare/v7.4.0...v7.4.1) (2026-03-12)

### Bug Fixes

* support for SASIOSNF engine (SNOW alias) plus meta assignment ([7694d1b](7694d1b0fb))
2026-03-12 00:52:17 +00:00
eecb4f4f53 Merge pull request 'fix: support for SASIOSNF engine (SNOW alias) plus meta assignment' (#209) from snowfixes into main
All checks were successful
Release / Build-production-and-ng-test (push) Successful in 3m41s
Release / Build-and-test-development (push) Successful in 9m52s
Release / release (push) Successful in 7m57s
Reviewed-on: #209
2026-03-12 00:35:16 +00:00
744345af81 chore: bump sasjs/cli
All checks were successful
Build / Build-and-ng-test (pull_request) Successful in 3m51s
Build / Build-and-test-development (pull_request) Successful in 9m58s
Lighthouse Checks / lighthouse (24.5.0) (pull_request) Successful in 18m48s
2026-03-12 00:16:10 +00:00
_
7694d1b0fb fix: support for SASIOSNF engine (SNOW alias) plus meta assignment
All checks were successful
Build / Build-and-ng-test (pull_request) Successful in 3m46s
Build / Build-and-test-development (pull_request) Successful in 9m38s
Lighthouse Checks / lighthouse (24.5.0) (pull_request) Successful in 18m18s
2026-03-10 23:50:57 +00:00
semantic-release-bot
d8010d4c0c chore(release): 7.4.0 [skip ci]
# [7.4.0](https://git.datacontroller.io/dc/dc/compare/v7.3.0...v7.4.0) (2026-02-20)

### Bug Fixes

* cli bump for mf_getscheme support ([a84ba41](a84ba41ea9))
* missing upcase on SNOW section, plus local sasjs target ([dc20064](dc200646f7))

### Features

* SAS code changes for snowflake support ([e273e87](e273e870ef))
2026-02-20 18:53:31 +00:00
a57b49c936 Merge pull request 'feat: SAS code changes for snowflake support' (#208) from sf into main
All checks were successful
Release / Build-production-and-ng-test (push) Successful in 4m0s
Release / Build-and-test-development (push) Successful in 9m57s
Release / release (push) Successful in 7m57s
Reviewed-on: #208
2026-02-20 18:36:00 +00:00
a84ba41ea9 fix: cli bump for mf_getscheme support
All checks were successful
Build / Build-and-ng-test (pull_request) Successful in 4m10s
Build / Build-and-test-development (pull_request) Successful in 10m4s
Lighthouse Checks / lighthouse (24.5.0) (pull_request) Successful in 18m58s
2026-02-20 18:15:31 +00:00
dc200646f7 fix: missing upcase on SNOW section, plus local sasjs target
All checks were successful
Build / Build-and-ng-test (pull_request) Successful in 4m11s
Build / Build-and-test-development (pull_request) Successful in 9m55s
Lighthouse Checks / lighthouse (24.5.0) (pull_request) Successful in 18m25s
2026-02-20 01:08:55 +00:00
e273e870ef feat: SAS code changes for snowflake support
All checks were successful
Build / Build-and-ng-test (pull_request) Successful in 4m9s
Build / Build-and-test-development (pull_request) Successful in 10m1s
Lighthouse Checks / lighthouse (24.5.0) (pull_request) Successful in 18m57s
2026-02-20 00:15:23 +00:00
7 changed files with 785 additions and 334 deletions

View File

@@ -1,3 +1,23 @@
## [7.4.1](https://git.datacontroller.io/dc/dc/compare/v7.4.0...v7.4.1) (2026-03-12)
### Bug Fixes
* support for SASIOSNF engine (SNOW alias) plus meta assignment ([7694d1b](https://git.datacontroller.io/dc/dc/commit/7694d1b0fb2bd0407c8598147fbae87a00d889a8))
# [7.4.0](https://git.datacontroller.io/dc/dc/compare/v7.3.0...v7.4.0) (2026-02-20)
### Bug Fixes
* cli bump for mf_getscheme support ([a84ba41](https://git.datacontroller.io/dc/dc/commit/a84ba41ea9f0c97ae24f0a572b8cf5ec200f2132))
* missing upcase on SNOW section, plus local sasjs target ([dc20064](https://git.datacontroller.io/dc/dc/commit/dc200646f7df2fd1910841f392c314532aae7581))
### Features
* SAS code changes for snowflake support ([e273e87](https://git.datacontroller.io/dc/dc/commit/e273e870efbf7875db869b760f2c7b1f39d571ae))
# [7.3.0](https://git.datacontroller.io/dc/dc/compare/v7.2.8...v7.3.0) (2026-02-10)

View File

@@ -1,6 +1,6 @@
{
"name": "dcfrontend",
"version": "7.3.0",
"version": "7.4.1",
"description": "Data Controller",
"devDependencies": {
"@saithodev/semantic-release-gitea": "^2.1.0",

994
sas/package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -28,7 +28,7 @@
},
"private": true,
"dependencies": {
"@sasjs/cli": "^4.13.1",
"@sasjs/core": "^4.60.0"
"@sasjs/cli": "^4.15.0",
"@sasjs/core": "^4.62.0"
}
}

View File

@@ -26,8 +26,7 @@ NOTES:
One cannot use BETWEEN
One cannot use &xx_from LE [tstamp] LE &xx_from (equivalent to above).
Background:
http://stackoverflow.com/questions/20005950/best-practice-for-scd-date-pairs-closing-opening-timestamps
Background: https://stackoverflow.com/questions/20005950
Areas for optimisation
- loading temporal history (currently experimental)
@@ -220,7 +219,8 @@ Areas for optimisation
%local engine_type;
%let engine_type=%mf_getengine(&base_lib);
%if (&engine_type=REDSHIFT or &engine_type=POSTGRES) and %length(&CLOSE_VARS)>0
%if %length(&CLOSE_VARS)>0 and (&engine_type=REDSHIFT or &engine_type=POSTGRES
or &engine_type=SNOW or &engine_type=SASIOSNF)
%then %do;
%put NOTE:; %put NOTE-;%put NOTE-;%put NOTE-;
%put NOTE- CLOSE_VARS functionality not yet supported in &engine_type;
@@ -636,7 +636,9 @@ data work.bitemp0_append &keepvars &outds_del(drop=&md5_col )
%dc_assignlib(WRITE,&base_lib,passthru=myAlias)
create table work.bitemp0_base as select * from connection to myAlias(
%end;
%else %if &engine_type=REDSHIFT or &engine_type=POSTGRES %then %do;
%else %if &engine_type=REDSHIFT or &engine_type=POSTGRES or &engine_type=SNOW
or &engine_type=SASIOSNF
%then %do;
/* grab schema */
%let baselib_schema=%mf_getschema(&base_lib);
%if &baselib_schema.X ne X %then %let baselib_schema=&baselib_schema..;
@@ -652,18 +654,24 @@ data work.bitemp0_append &keepvars &outds_del(drop=&md5_col )
call symputx('redcnt',x,'l');
run;
%end;
/* cannot persist temp tables so must create a temporary permanent table */
%let temp_table=%mf_getuniquename(prefix=XDCTEMP);
%let temp_table=%upcase(%mf_getuniquename(prefix=XDCTEMP));
%if &loadtype=BITEMPORAL or &loadtype=TXTEMPORAL %then
%let base_table=(select * from &baselib_schema.&base_dsn
where timestamp &sqlnow < &tech_to );
%else %let base_table=&baselib_schema.&base_dsn;
/* make empty table first - must clone & drop extra cols as autoload is bad */
/* make in-db empty table with PK + MD5 only */
%dc_assignlib(WRITE,&base_lib,passthru=myAlias)
exec (create table &temp_table (like &baselib_schema.&base_dsn)) by myAlias;
%if &engine_type=REDSHIFT %then %do;
exec (alter table &temp_table alter sortkey none) by myAlias;
%if &engine_type=SNOW or &engine_type=SASIOSNF %then %do;
exec (create transient table &baselib_schema.&temp_table
like &baselib_schema.&base_dsn
) by myAlias;
%end;
%else %do;
/* cannot persist temp tables so must create a temporary permanent table */
exec (create table &temp_table (like &baselib_schema.&base_dsn)) by myAlias;
%if &engine_type=REDSHIFT %then %do;
exec (alter table &temp_table alter sortkey none) by myAlias;
%end;
%end;
%local dropcols;
%let dropcols=%mf_wordsinstr1butnotstr2(
@@ -678,9 +686,12 @@ data work.bitemp0_append &keepvars &outds_del(drop=&md5_col )
exec (alter table &temp_table add column &md5_col varchar(32);) by myAlias;
/* create view to strip formats and avoid warns in log */
data work.vw_bitemp0/view=work.vw_bitemp0;
/* inherit remote length to handle byte expansion */
if 0 then set &base_lib..&temp_table(keep=&md5_col);
set work.bitemp0_append(keep=&pk &md5_col);
format _all_;
run;
proc append base=&base_lib..&temp_table
%if &engine_type=REDSHIFT %then %do;
(
@@ -733,6 +744,7 @@ data work.bitemp0_append &keepvars &outds_del(drop=&md5_col )
%if &engine_type=OLEDB or &engine_type=REDSHIFT or &engine_type=POSTGRES
or &engine_type=SNOW or &engine_type=SASIOSNF
%then %do;
); proc sql; drop table &base_lib.."&temp_table"n;
%end;
@@ -1187,7 +1199,7 @@ run;
%else %if (&loadtype=BITEMPORAL or &loadtype=TXTEMPORAL or &loadtype=UPDATE)
%then %do;
data _null_;
putlog "&sysmacroname: &loadtype operation using &engine_type engine";
putlog "&sysmacroname: &loadtype operation using *&engine_type* engine";
run;
%local flexinow;
proc sql;
@@ -1203,16 +1215,27 @@ run;
%dc_assignlib(WRITE,&base_lib,passthru=myAlias)
execute(
%end;
%else %if &engine_type=REDSHIFT or &engine_type=POSTGRES %then %do;
%let innertable=%mf_getuniquename(prefix=XDCTEMP);
%else %if &engine_type=REDSHIFT or &engine_type=POSTGRES or &engine_type=SNOW
or &engine_type=SASIOSNF
%then %do;
%let innertable=%upcase(%mf_getuniquename(prefix=XDCTEMP));
%let top_table=&baselib_schema.&base_dsn;
%let flexinow=timestamp &SQLNOW;
/* make empty table first - must clone & drop extra cols
as autoload is bad */
%dc_assignlib(WRITE,&base_lib,passthru=myAlias)
exec (create table &innertable (like &baselib_schema.&base_dsn)) by myAlias;
%if &engine_type=REDSHIFT %then %do;
exec (alter table &innertable alter sortkey none) by myAlias;
%if &engine_type=SNOW or &engine_type=SASIOSNF %then %do;
exec (create transient table &baselib_schema.&innertable
like &baselib_schema.&base_dsn
) by myAlias;
%end;
%else %do;
exec (create table &innertable
(like &baselib_schema.&base_dsn)
) by myAlias;
%if &engine_type=REDSHIFT %then %do;
exec (alter table &innertable alter sortkey none) by myAlias;
%end;
%end;
%let dropcols=%mf_wordsinstr1butnotstr2(
str1=%upcase(%mf_getvarlist(&basecopy))
@@ -1240,6 +1263,7 @@ run;
execute(
%end;
%else %do;
%put Not using passthrough for *&engine_type* engine;
%let innertable=bitemp5d_subquery;
%let top_table=&base_lib..&base_dsn;
%let flexinow=&now;
@@ -1292,6 +1316,7 @@ run;
1=1);
%if &engine_type=OLEDB or &engine_type=REDSHIFT or &engine_type=POSTGRES
or &engine_type=SNOW or &engine_type=SASIOSNF
%then %do;
) by myAlias;
execute (drop table &baselib_schema.&innertable) by myAlias;

View File

@@ -1,5 +1,5 @@
/**
@file mpe_refreshtables.sas
@file
@brief Refreshes the data catalog
@details Assumes library is already assigned.
Usage:
@@ -11,6 +11,7 @@
@version 9.3
@author 4GL Apps Ltd
**/
%macro mpe_refreshcatalogs(lib,cat=#all);

View File

@@ -238,6 +238,43 @@
"assetPaths": []
}
},
{
"name": "local",
"serverUrl": "http://localhost:5000",
"serverType": "SASJS",
"httpsAgentOptions": {
"rejectUnauthorized": false,
"allowInsecureRequests": true
},
"appLoc": "/Public/app/dc",
"deployConfig": {
"deployServicePack": true,
"deployScripts": []
},
"macroFolders": [
"sasjs/targets/server/macros_server"
],
"programFolders": [
"sasjs/db/datactrl"
],
"serviceConfig": {
"serviceFolders": [
"sasjs/targets/server/services_server/admin",
"sasjs/targets/server/services_server/usernav"
],
"initProgram": "sasjs/utils/serviceinitserver.sas",
"termProgram": "",
"macroVars": {}
},
"streamConfig": {
"streamWeb": true,
"streamWebFolder": "web",
"webSourcePath": "../client/dist",
"streamServiceName": "DataController",
"streamLogo": "favicon.ico",
"assetPaths": []
}
},
{
"name": "server-mihajlo",
"serverUrl": "https://sas9.4gl.io",