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