git: 7fc5c9713a63 - main - databases/p5-SQL-SplitStatement: Add p5-SQL-SplitStatement 1.00023
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Thu, 18 Jul 2024 16:48:21 UTC
The branch main has been updated by sunpoet: URL: https://cgit.FreeBSD.org/ports/commit/?id=7fc5c9713a63e0ab4da05ae240d1c2baebd73f96 commit 7fc5c9713a63e0ab4da05ae240d1c2baebd73f96 Author: Po-Chuan Hsieh <sunpoet@FreeBSD.org> AuthorDate: 2024-07-18 16:44:41 +0000 Commit: Po-Chuan Hsieh <sunpoet@FreeBSD.org> CommitDate: 2024-07-18 16:44:41 +0000 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(+) 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 <bsd.port.mk> 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