From 7fc5c9713a63e0ab4da05ae240d1c2baebd73f96 Mon Sep 17 00:00:00 2001 From: Po-Chuan Hsieh Date: Fri, 19 Jul 2024 00:44:41 +0800 Subject: [PATCH] databases/p5-SQL-SplitStatement: Add p5-SQL-SplitStatement 1.00023 SQL::SplitStatement is a simple module which tries to split any SQL code, even including non-standard extensions, into the atomic statements it is composed of. The logic used to split the SQL code is more sophisticated than a raw split on the ; (semicolon) character: first, various different statement terminator tokens are recognized (see below for the list), then this module is able to correctly handle the presence of said tokens inside identifiers, values, comments, BEGIN ... END blocks (even nested), dollar-quoted strings, MySQL custom DELIMITERs, procedural code etc., as (partially) exemplified in the "SYNOPSIS" above. Consider however that this is by no means a validating parser (technically speaking, it's just a context-sensitive tokenizer). It should rather be seen as an in-progress heuristic approach, which will gradually improve as test cases will be reported. This also means that, except for the "LIMITATIONS" detailed below, there is no known (to the author) SQL code the most current release of this module can't correctly split. --- databases/Makefile | 1 + databases/p5-SQL-SplitStatement/Makefile | 27 +++++++++++++++++++++++ databases/p5-SQL-SplitStatement/distinfo | 3 +++ databases/p5-SQL-SplitStatement/pkg-descr | 17 ++++++++++++++ databases/p5-SQL-SplitStatement/pkg-plist | 6 +++++ 5 files changed, 54 insertions(+) create mode 100644 databases/p5-SQL-SplitStatement/Makefile create mode 100644 databases/p5-SQL-SplitStatement/distinfo create mode 100644 databases/p5-SQL-SplitStatement/pkg-descr create mode 100644 databases/p5-SQL-SplitStatement/pkg-plist diff --git a/databases/Makefile b/databases/Makefile index 14cbeddc4d2a..1e6dbfa87208 100644 --- a/databases/Makefile +++ b/databases/Makefile @@ -480,6 +480,7 @@ SUBDIR += p5-SQL-Maker SUBDIR += p5-SQL-NamedPlaceholder SUBDIR += p5-SQL-ReservedWords + SUBDIR += p5-SQL-SplitStatement SUBDIR += p5-SQL-Statement SUBDIR += p5-SQL-Translator SUBDIR += p5-SQLite-Work diff --git a/databases/p5-SQL-SplitStatement/Makefile b/databases/p5-SQL-SplitStatement/Makefile new file mode 100644 index 000000000000..86ad3f2a097f --- /dev/null +++ b/databases/p5-SQL-SplitStatement/Makefile @@ -0,0 +1,27 @@ +PORTNAME= SQL-SplitStatement +PORTVERSION= 1.00023 +CATEGORIES= databases perl5 +MASTER_SITES= CPAN +PKGNAMEPREFIX= p5- + +MAINTAINER= sunpoet@FreeBSD.org +COMMENT= Split any SQL code into atomic statements +WWW= https://metacpan.org/dist/SQL-SplitStatement + +LICENSE= ART10 GPLv1+ +LICENSE_COMB= dual +LICENSE_FILE= ${WRKSRC}/LICENSE + +BUILD_DEPENDS= ${RUN_DEPENDS} +RUN_DEPENDS= p5-Class-Accessor>=0:devel/p5-Class-Accessor \ + p5-List-MoreUtils>=0:lang/p5-List-MoreUtils \ + p5-Regexp-Common>=0:textproc/p5-Regexp-Common +TEST_DEPENDS= p5-Test-Differences>=0.680:devel/p5-Test-Differences \ + p5-Test-Exception>=0.27:devel/p5-Test-Exception + +USES= perl5 +USE_PERL5= configure + +NO_ARCH= yes + +.include diff --git a/databases/p5-SQL-SplitStatement/distinfo b/databases/p5-SQL-SplitStatement/distinfo new file mode 100644 index 000000000000..3c5b96d40838 --- /dev/null +++ b/databases/p5-SQL-SplitStatement/distinfo @@ -0,0 +1,3 @@ +TIMESTAMP = 1721280200 +SHA256 (SQL-SplitStatement-1.00023.tar.gz) = 1a748420cd2ad341c2524ef1185b76ef7172969f17a9e4bab6f4376f0de9f35e +SIZE (SQL-SplitStatement-1.00023.tar.gz) = 63709 diff --git a/databases/p5-SQL-SplitStatement/pkg-descr b/databases/p5-SQL-SplitStatement/pkg-descr new file mode 100644 index 000000000000..bad86fbc8dff --- /dev/null +++ b/databases/p5-SQL-SplitStatement/pkg-descr @@ -0,0 +1,17 @@ +SQL::SplitStatement is a simple module which tries to split any SQL code, even +including non-standard extensions, into the atomic statements it is composed of. + +The logic used to split the SQL code is more sophisticated than a raw split on +the ; (semicolon) character: first, various different statement terminator +tokens are recognized (see below for the list), then this module is able to +correctly handle the presence of said tokens inside identifiers, values, +comments, BEGIN ... END blocks (even nested), dollar-quoted strings, MySQL +custom DELIMITERs, procedural code etc., as (partially) exemplified in the +"SYNOPSIS" above. + +Consider however that this is by no means a validating parser (technically +speaking, it's just a context-sensitive tokenizer). It should rather be seen as +an in-progress heuristic approach, which will gradually improve as test cases +will be reported. This also means that, except for the "LIMITATIONS" detailed +below, there is no known (to the author) SQL code the most current release of +this module can't correctly split. diff --git a/databases/p5-SQL-SplitStatement/pkg-plist b/databases/p5-SQL-SplitStatement/pkg-plist new file mode 100644 index 000000000000..c959247c43c3 --- /dev/null +++ b/databases/p5-SQL-SplitStatement/pkg-plist @@ -0,0 +1,6 @@ +bin/sql-split +%%SITE_PERL%%/SQL/SplitStatement.pm +%%SITE_PERL%%/SQL/SplitStatement/Tokenizer.pm +%%PERL5_MAN1%%/sql-split.1.gz +%%PERL5_MAN3%%/SQL::SplitStatement.3.gz +%%PERL5_MAN3%%/SQL::SplitStatement::Tokenizer.3.gz