Revision history for oEdtk
2.1131 2026-10-22
- DBAdmin: the schema detect, migration and additive reports no longer print the internal
"schema level" line; the driver, target and feature details are unchanged.
2.1130 2026-10-21
- DBAdmin: --with-constraints now really performs the primary-key change: PostgreSQL and
Oracle build a separate unique index and attach it, MySQL swaps the key in place, SQLite and
unknown drivers report the change as unsupported. Intermediate failures are reported instead
of ignored.
- DBAdmin: schema lookups ignore identifier case, so a PostgreSQL table folded to lower case
is found instead of being recreated.
- db_migrate: the additive preview lists the key-change statements; --with-constraints outside
--additive is rejected with an explicit error.
2.1129 2026-10-19
- Tracking: ED_SOURCE now holds the input file actually processed by the packaged tracker; it
stays empty when a run handles no file (the old "input-file" placeholder is gone).
- Tracking: a row logged without a message now records the name of the calling function in
ED_MESSAGE instead of a blank.
- tracker: --insert rows and the show_table helper follow the same rules (the source is now
passed correctly).
2.1128 2026-10-19
- Style: every Perl file under lib/, t/, tools/ and tracker/ is now perltidy-clean; the
reformatting is proven not to change behaviour.
- perlcritic: severity-5 violations drop from 41 to 1. Legacy scripts lose prototypes and
two-argument open calls and gain strict where it was missing; the remaining one (the octal
01 in cob2pm.pl) is deliberate.
2.1127 2026-10-19
- Dependencies: Text::QRCode becomes optional. It needs the native libqrencode library, so a
plain 'cpan oEdtk' failed on hosts without it. append_qr_code loads it on first use and
stops with a clear message when it is missing.
- Dependencies: DBD::mysql and DBD::Pg are no longer required for the tests (they were already
optional at run time), so installing the package no longer tries to build the database
drivers.
- The database integration tests skip with an explicit reason when a driver is missing. README
and cpanfile updated.
2.1126 2026-10-18
- DBAdmin: new force_copy parameter (tracker option --forceCopy) forces the plain PostgreSQL
COPY path and bypasses the ELT staging path before a large import.
- DBAdmin fix: the administration action duration is stored in whole seconds; PostgreSQL used
to reject the fractional value and leave the action open.
- Documentation: EDTK_DB_BURST_MO now states its real default of 50 MiB.
2.1125 2026-10-17
- DBAdmin: the stale-schema remediation hint can be copied and pasted as is (DSN and user are
quoted), and a host application can register its own wording.
- New read-only schema_AdditivePlan previews the in-place additive update (missing columns,
wider columns, missing tables, key) without writing anything; db_migrate.pl gains the
matching '--additive --dry-run'.
- Packaged tracker: new in-place '--upgradeSchema --additive' mode with a read-only '--dryRun'
preview.
2.1124 2026-10-16
- Performance pass driven by profiling: four measured hotspots are optimised without changing
behaviour (record parser, configuration loading, signed-amount table in Main, oEUser
descriptor dispatch). Figures in docs/perf/P80-rapport.md.
- All modules now carry the package version instead of the previous mix (0.01 ... 2.11NN);
every later release keeps them aligned.
- Documentation brought up to date (performance campaign, integration, DBAdmin and logger
contracts).
- Licence: the shipped COPYING is the Artistic License 2.0 named in the POD.
2.1110 2026-10-13
- Integration of the 0.8032 fork, phases S10 to S23. New features are inactive until
configured in edtk.ini.
- Requirements: Perl 5.028 minimum; the fork's runtime dependencies added (e.g. Data::UUID,
Text::CSV_XS, LWP::UserAgent, PDF::Tk, Text::QRCode, Try::Tiny, YAML::Tiny); dead fork
dependencies dropped; cpanfile is now generated from Makefile.PL; oEUser is not a
prerequisite (at most suggested).
- tplate.edtk.ini rebuilt as the union of the mainline and fork keys, with mainline defaults:
new [SERVICES] section (e-mailing, Keycloak, dissemination plan, ECM, SSL options), the
ed_idjob primary-key keys (EDTK_DB_PK_IDJOB, EDTK_DB_IDJOB_DEFAULT),
EDTK_DB_FetchHashKeyName and EDTK_LOG_LVL.
- The three shipped HTML forms carry the fork content, fully anonymised with neutral
placeholders (index.html gains three applications).
- The existing Perl tree is reformatted with perltidy (88 files, behaviour proven unchanged).
- New companion distribution oEUser 0.10 (requires oEdtk >= 2.1110): the fork's user-side
modules (Lib, ECM, Descriptor and its generated descriptors, XML readers).
- New generic modules: IBAN/BIC validation (fixes iban_letter_to_number, which only worked
from inside the checksum routine), Restitution, FixIdx (even page counts in index files),
LaTeX (latin-9 escaping, index helpers) and Utils (text, date and price helpers; the
corporate part moved to oEUser::Utils).
- ECM: new oEdtk::ECM uploads documents to the ECM service and stamps the mailed date through
REST; the URL and API key come from APIECM_URL and APIECM_APIKEY_EDITIQUE.
- XML: the DTD and XSD validators and the generic readers (Default, Generic) now live in
oEdtk. Fixes: documents without DOCTYPE no longer crash, valid documents are no longer
rejected, the schema is found next to the document.
- Network clients (Keycloak token, REST e-mailing, dissemination plan) live in oEUser, with
same-name stand-ins in oEdtk that load them on demand. TLS verification is on by default
(EDTK_SSL_VERIFY, EDTK_SSL_CA_PATH) instead of the fork's hard-coded settings; the e-mailing
bug that made every send die is fixed.
- Constants (document typology) and Infinite (COBOL flow readers) move to oEUser, with
stand-ins in oEdtk.
- Extension points: optional companion modules are loaded by fixed name, and a named callable
can be set in configuration (EDTK_ACQUIT_API) after validation; both are no-ops when absent.
- No corporate brand name remains in the generic tree.
2.1109 2026-10-11
- DBAdmin: distribution tables get indexes on job and batch date, so by-job and by-date
queries no longer scan the whole table.
- DBAdmin: the MySQL bulk load refreshes statistics after the import, like the PostgreSQL COPY
path.
- DBAdmin: admin_optimize_db uses a single connection; PostgreSQL now runs VACUUM ANALYZE
instead of VACUUM FULL (no exclusive lock); SQLite is supported.
- DBAdmin: db_backup_agent is no longer deprecated; a same-day re-run keeps the existing
archive instead of failing.
- SQLite can now be the main database, lot-identifier generation included.
- DBAdmin: new db_invalidate_meta_cache (called after schema changes); db_check_privileges
also probes INDEX, ALTER and SEQUENCE rights.
- Outmngr: all warnings go through the logger (timestamp, level, PID) instead of STDERR.
2.1108 2026-10-10
- Comments, POD and user-facing messages are written in English across lib/ and tracker/ (text
only, behaviour unchanged).
- DBAdmin: new db_check_privileges reports, without ever failing, whether the database user
may CREATE and DROP; schema_Create and schema_Upgrade call it up front and log a
non-blocking alert for any missing right.
2.1107 2026-10-10
- DBAdmin: dead code removed (731 lines): the deprecated copies of csv_import, insert_tData,
_get_col_meta, _db_check_driver_name and admin_optimize_db.
2.1106 2026-10-10
- DBAdmin: fixes a performance hot spot in the PostgreSQL COPY path: a 2-million-row load
drops from 722.7 s to 195.8 s (3.7x faster).
- New generator for a two-million-row test file (built on demand, not stored).
2.1105 2026-10-09
- DBAdmin: PostgreSQL COPY now streams the cleaned rows straight into COPY in 1 MiB blocks,
with no temporary file (File::Temp dependency dropped).
- DBAdmin: pg_copy_defer_pk => 1 also rebuilds the primary key around the load; a key
referenced by a foreign key is left alone, and any failure falls back to the non-deferred
load.
2.1104 2026-10-08
- DBAdmin: the bulk loaders (MySQL INFILE, MySQL LOCAL INFILE, PostgreSQL COPY) log the method
used and the number of rows.
- DBAdmin: the PostgreSQL COPY runs in one transaction; secondary indexes and unique /
foreign-key constraints are dropped before the load and rebuilt after it; synchronous commit
is relaxed for the transaction and ANALYZE runs afterwards. The load is atomic (a failure
rolls back data and DDL, with one retry without deferral); pg_copy_optimize => 0 keeps the
plain COPY.
2.1102 2026-10-06
- DBAdmin: new PostgreSQL fast path for csv_import using COPY FROM STDIN, automatic for the Pg
driver unless the mode is "merge". Rows are cleaned like the row-by-row path (truncation,
empty -> NULL), multi-line quoted fields are accepted and values are re-encoded to the
session client_encoding.
- First test suite (Test::More) under t/, with shared helpers, a test ini and a PostgreSQL
COPY check script.
- README.md merged with the old plain README and rewritten with the real archive contents;
copyright year 2026.
2.1071 2026-07-01
- DBAdmin: column metadata now tells text columns from numeric and date ones. Fixes wrong
truncation on PostgreSQL (the date 2026-07-09 became "2026") and "invalid input syntax for
type date" errors on empty values (empty -> NULL for numeric and date columns).
- Copyright year 2026.
2.1065 2026-06-05
- Version bump; copyright year 2026.
2.1064 2026-06-04
- DBAdmin: SQL rewritten in lower case for portability across MySQL, PostgreSQL, Oracle and
SQLite (MySQL upper-casing, empty -> NULL on PostgreSQL).
- DBAdmin: insert_tData and csv_import rewritten: driver-aware identifier case, column
metadata lookup, value cleaning (empty -> NULL for numerics, truncation to the column size).
The old versions are kept as deprecated copies.
- DBAdmin: db_connect: FetchHashKeyName is configurable (EDTK_DB_FetchHashKeyName, default
NAME_uc); the tracking table is created on connect when missing; the automatic database
check now runs only when EDTK_DB_CHECK_AUTO is explicitly YES (it used to default to YES).
- DBAdmin: admin_check_db renamed acheck_db_admin_on_connect; _drop_table becomes the public
db_drop_table; new on-demand maintenance job (acheck_db_admin2) with locking; driver
detection hardened; admin_optimize_db rewritten per driver.
- DBAdmin: portable index names (ix_<table>_<version>, create index if not exists); sequence
creation made repeatable; column definitions in lower case; some OUTMNGR columns no longer
NOT NULL.
- logger: package renamed oEdtk::logger (the file is still logger2.pm, version 1.9062); new
set_logger_level and set_warn_to_logger; levels can be given as letters; debug and context
levels swapped (7 and 8); new log line format; logger() return value changed; usage_logger
renamed logger_help.
- Tracking: table name uppercased on MySQL; statistics queries in lower case.
1.9013 2024-01-03
- DBAdmin: create_table_INDEX renamed create_table_OUTMNGR; every CREATE TABLE is now
repeatable (if not exists); schema_Create takes a single $dbh and no longer creates the
tracking table.
- DBAdmin tables: Tracking gets an ED_TSTAMP index (fixes the SQLite creation bug) and MyISAM
on MySQL; DISTRIB, AGREGE and OUTMNGR replace their primary key or separate indexes with one
composite index; AGREGE gains ED_TSTAMP and ED_CNTD_IDLDOC becomes INTEGER.
- DBAdmin: admin_optimize_db now takes a hash (CFG => $cfg) and runs repair then optimize per
table; the AGREGE rotation writes a new ED_TSTAMP and groups by ED_IDJOB;
EDTK_DB_MAX_DAYS_AGREGED falls back to EDTK_DB_MAX_DAYS_TRACKED.
- DBAdmin: fixes an operator-precedence bug in error messages; SQL debug logging added.
- Main: the system date is now really restored at program exit.
- tplate.edtk.ini: Linux defaults (base directory, perl path, Dev environment), new [EDTK_DB]
and [EDTK_STATS] sections, new [MAIL] key, [COMSET] removed.
- db_Schema_init.pl follows the rename; licence text changed to GPL v3; README trimmed.
1.9012 2024-01-02
- Revert of the 1.8122 and 1.8123 changes: create_table_INDEX name restored,
EDTK_DB_CHECK_AUTO fix reverted, Windows/Compuset configuration restored in tplate.edtk.ini,
licence text back to GPL v2; Config, Main, Outmngr, TexDoc, TexTag, db_Schema_init.pl and
README back to their earlier state.
- Version 1.9012; copyright 2005-2024.
1.8123 2023-12-03
- DBAdmin fix: the EDTK_DB_CHECK_AUTO test now accounts for the value being defined (YES) by
default.
- Copyright year 2025.
1.8122 2023-12-02
- New module logger2.pm.
- DBAdmin: major rewrite with new maintenance and schema functions (admin_check_db,
acheck_db_admin, agrege_idJob, schema_Create, schema_Upgrade, create_table_ADMIN / ID /
AGREGE / OUTMNGR); create_SCHEMA becomes schema_Create; MySQL infile loader.
- tplate.edtk.ini: new [EDTK_DB] and [EDTK_STATS] sections, [COMSET] removed, Linux defaults.
- README renamed README.md; licence changed to GPL v3.
- New dependencies: Image::Size, Log::Log4perl, PDF::Create.
1.5093 2020-09-03
- New Changes file.
- Perl 5.010 minimum, licence 'perl'; DBD::Oracle and DBD::Pg removed from the declared
prerequisites.
- oEdtk.pm: strict and warnings enabled.
1.5091 2020-09-01
- Perl 5.10.0 minimum.
- New dependencies: YAML, CPAN::DistnameInfo, DBD::Excel, DBD::Oracle, DBD::Pg, DBD::SQLite,
JSON, XML::Simple.
- Config: edtk.ini is now looked up in the program directory first, then in the module
directory.
- DBAdmin: new insert_tData (insert tracking data from outside); csv_import uses MySQL LOAD
DATA LOCAL INFILE when the DSN allows it; new tracking and distribution column definitions;
the tracking table gains ED_ACCOUNT.
- Tracking: track() accepts entity, account, object type, child type and id, parent id.
- logger: WARN and DIE can be reported to the tracking database ($WARN2LOGGER). trackEdtk:
event levels extended (Job, Spool, Document, Line, Warning, Error, Halt, Reject, Track).
0.8052 2013-05-02
- New META.json.
- HTML templates (edtk_ged, edtk_inged, index): hard-coded application and corporation names
replaced by placeholders.
- Authors updated (G Ballin added); copyright 2005-2013.
0.8035 2013-03-05
- Config: new get_ini_path() returns the path of the ini actually loaded (used by
check_oEdtk_ini.pl).
- EDMS: EDMS_package no longer takes a path argument; files are added by basename.
0.8034 2013-03-04
- EDMS: new EDMS_package packages several documents with one index in a zip archive for later
processing; the existing package function now returns 1 and prints the zip name.
0.8032 fork 2025-12-16
- Production fork based on the 0.8032 codebase: a divergent branch, not a mainline release. It
drops the Compuset/C7 subsystem and the tracking API, and adds ECM (Alfresco), REST
e-mailing, Keycloak authentication, IBAN/BIC validation, QR codes and LaTeX index handling.
The version string is not a valid CPAN version (kept for traceability).
- New modules: Utils, FixIdx, LaTeX, Emailing (Perl 5.028), Keycloak (Perl 5.020), Infinite,
IBAN, Constants (ECM typology), Restitution, DisseminationPlan, XML::DTD, XML::XSD and
XML::DTD::Utils.
- Main: oe_ID_LDOC now returns a Data::UUID string instead of the numeric YWWWDHHMMSSPPPP.r
format; new job-handling functions (oe_options, oe_params, oe_simple_job, ...); all
Compuset/C7 functions removed.
- Run: PDF backgrounds (bpdf), recto-verso documents with even page counts, LOTPDF.txt written
in UTF-8, EDTK_KEEP_OUT_FILE honoured, PDF existence checked.
- EDMS rewritten for Perl 5.20+: 36-column index CSV with an optional Alfresco header;
EDMS_import returns 0.
- DBAdmin: acknowledgement processing (ECM call, e-mail report, reference column, Oracle copy
hints); four ECM columns added to the index table; some table functions removed.
- Also changed: Config (hostname section no longer merged last, read_hash), RecordParser,
TexDoc (QR codes), Record (bind semantics) and Doc (one TeX command per line). Removed: the
trackEdtk tracking API, some libDev and libXls helpers, Spool::emit. New scripts db_move.pl
and edms_runner.pl; acq_Load.pl removed.
- cpanfile replaces the PREREQ_PM list; edtk.ini is shipped next to tplate.edtk.ini with new
keys (forms and backgrounds directories, lualatex switch, Alfresco keys, DB and stats
sections). New tests for IBAN, Utils and FixIdx.
0.8032 2013-03-02
- DBD::Oracle is no longer a hard prerequisite.
0.8031 2013-03-01
- EDMS: archives may contain .xls and .doc documents besides .pdf; non-PDF documents are not
split into pages but renamed to a Docubase-compatible name.
- Tracking: application names accept hyphens and underscores, long names are cut to their last
20 characters; new Reject (R) job event.
- Config: warning when the template ini is read. check_oEdtk_ini.pl: -h fix.
- New module OmgrIdxDoc (builds an index CSV row from the @INDEX_COLS tags).
- New dependency DBD::Oracle; README authors and install notes updated.
0.8022 2013-02-02
- DBAdmin: new copy_table (-create builds the target first; stops if the source is empty);
move_table is deprecated and delegates to it; historicize_table uses it; new db_backup_agent
backs up and purges old rows of the tracking, output-manager and acknowledgement tables
(EDTK_ENTIRE_YEARS_KEPT).
- Outmngr: inserts with start date '99999999' mean "no start date"; omgr_purge_fs backs up
before purging; doclibs referenced during the last EDTK_DCLIB_PURGE_WEEKS_KEPT weeks are
kept.
- New script db_copy.pl replaces db_move.pl; index_Purge_DCLIB.pl: -h fix.
0.8021 2013-02-01
- Tracking: the source defaults to the command line when not provided, so it is detected
automatically.
0.8014 2013-01-04
- Config: the Compuset block that stripped environment extensions from program names is
disabled.
- DBAdmin: EDTK_LOTS gains ED_CONSIGNE (VARCHAR2(250)). Outmngr: omgr_export includes
ED_CONSIGNE.
- Outmngr: omgr_stats return format changed: the array now starts with a format string and a
header row, and CORP comes first. Callers must shift them off; index_Run_lot.pl and
index_Statistics.pl are adapted.
- Run fix: intermediate files after zipping are kept only for Dev/Debug environments (any name
containing a "D", such as PROD, used to be affected).
- Tracking: the Job event records the full command line and ED_SOURCE.
- index_Block_refs.pl: no longer depends on Outmngr; blocks and unblocks by partial idldoc
with a % wildcard; STOP filter fixed (ED_STATUS).
- New dependency Roman; README install instructions (XML-LibXML, dmake on Windows).
0.7125 2012-12-05
- Version bump only; whitespace in the POD examples.
0.7121 2012-12-01
- Main: new --noinputfiles option (treatments without an input file); argument parsing
reworked.
- Outmngr: omgr_check_acquit shortens long postal codes; the job ticket gains ED_PRIORITE,
ED_REFIDDOC and ED_REFENC.
- Run: lotissement is no longer suspended for non-Mass/Debug/Test types; deletion of
intermediate files is driven by EDTK_TYPE_ENV.
- DBAdmin: columns widened (ED_REFENC 20 -> 32, ED_REFIMP 8 -> 16, ED_IDLOT 6 -> 8).
- README: XML-LibXML installation instructions; copyright 2013.
0.7029 2012-02-09
- TexDoc: LATEX dictionary substitution enabled in escape().
- RecordParser: new set_motif_to_denormalized_split().
- Dict: chr(N) keys are no longer decoded (feature removed).
- Packaging: META.yml updated, META.json removed, line endings changed (LF -> CRLF).
0.7028 2012-02-08
- Outmngr and DBAdmin: lot matching uses ED_REFIDDOC instead of ED_IDAPPDOC; in EDTK_LOTS,
ED_IDAPPDOC is no longer NOT NULL and ED_REFIDDOC VARCHAR2(20) NOT NULL is added.
- Main: cleanup of commented-out code.
- Packaging: META.json added; line endings changed (CRLF -> LF).
0.7027 2012-02-07
- Record: new seek_key attribute (set_seek_key()); the whole line is now unpacked.
- RecordParser: new dumper(); records are recognised by their seek_key; unknown records are
warned about and ignored instead of aborting.
- New prerequisite Data::Dumper; README TODO items.
0.7025 2012-02-05
- Outmngr: statistics read their table names from the EDTK_STATS configuration instead of
hard-coded names.
- Scripts: the historicize scripts wait 30*EDTK_WAITRUN (or 600) and abort on N/S;
params_Import.pl accepts an optional INI_SECTION; most lib scripts have -h/usage help;
edms_runner.pl removed.
0.7023 2012-02-03
- RecordParser: the denormalized-record split now splits on every separator instead of
collapsing consecutive ones.
0.7021 2012-02-01
- Run: oe_after_compo always removes $app.aux.
- Tracking: no undef warning on undefined data values.
0.7017 2012-01-07
- Doc, TexDoc, TexTag: LaTeX escaping moves from TexTag to TexDoc (Doc declares an abstract
escape); the digit-in-tag-name warning is emitted once.
- Outmngr: new omgr_track_no_omgr (stub); omgr_check_acquit: the condition between the date
and status checks changes from AND to OR.
- Run: oe_cmd_run dies instead of warning when a command fails.
- Tracking: the source defaults to an empty string; one extra data value is accepted for the
new message column.
- Dict substitution refactored; index_Check_tracked_docs.pl shows the YWWD value.
0.7014 2012-01-04
- oEdtk_version() renamed oEdtk_release(); the banner text changes.
- Main: new oe_CAP_sans_accents (replaces oe_oe_uc_sans_accents), oe_char_xlate
(dictionary-driven character translation from EDTK_DICO_XLAT) and oe_list_encodings; address
cleaning is now dictionary-driven; oe_new_job gains --input_code, opens files with encoding
layers and takes the output encoding from EDTK_OUT_ENCODING (default utf8).
- Dict: substitue_char renamed substitue; dictionary keys written chr(N) target special
characters.
- Doc and TexTag: new char_xlate; TexTag warns when a tag name contains digits.
- Record and RecordParser: configurable offsets and parser (skipped line, mute record, line
record, key offset and size, denormalized record) with setters; RecordParser dies on an
undefined filehandle.
- Tracking: warn and die handlers record Warn and Halt events when EDTK_TRACK_SIG is set; new
ED_MESSAGE column (also added to the DBAdmin tracking table as VARCHAR2(256)).
- Outmngr: statistics read EDTK_STATS_OUTMNGR; acknowledgement report ordering adjusted;
several WARN messages downgraded to INFO.
- Scripts: cob2pm.pl (longer identifiers, comments stripped, better errors); index_Run_lot.pl
mail subject no longer prefixed; message prefixes standardised.
0.6122 2011-12-02
- execution control on cgi
- ISO dictionary of country codes
- control of acknowledgement return to the finisher for verification
- technical folio numbering in the lotissement
0.6115 2011-11-05
- SGBD connexion retry (3 times)
- correcting bug in FIFO configuration
0.6000 2011-06-01
- added ed_host in check ini
- ED_SEQLOT widened to VARCHAR2(7) to carry the year ('391123' => '1391123')
- integrate the lotissement constraints (ed_cpdest => ed_constraint, e.g. "ED_CODRUPT =
'NOUVEL_ER'" or "ED_HOST ='SRVPROD'")
- clean up Main.pm => oEUser.pm
- move CodRupt to 8 characters
- group the .tar files in the same deployment directory
- preview resume at the end of runEdtk.pl
- rounding management oEdtk::Main::oe_round
0.5000 2010-01-01
- LaTeX integration
- Output management integration
- Electronic Documents Management and Sharing integration
0.400 2009-01-01
- File configuration for developpements
- Developpement application launcher
- Integration of DSC Compuset launcher
- Beta text user interface for developpements
- Records methods for production
- Excel file spliting
- tracking module
- Documentation
0.30 2008-01-01
- Optimized for production version.
0.21 2007-01-01
- Production test version.
0.10 2006-01-01
- Functionnal version.
0.01 2005-01-01
- Original beta version.
Keyboard Shortcuts
Global
s
Focus search bar
?
Bring up this help dialog
GitHub
gp
Go to pull requests
gi
Go to GitHub issues (only if GitHub is preferred repository)