Skip to content

Commit c29cfeb

Browse files
committed
Update deployment script and documentation
1 parent acc78b7 commit c29cfeb

2 files changed

Lines changed: 160 additions & 88 deletions

File tree

dz_json_deploy.pdf

5.85 KB
Binary file not shown.

dz_json_deploy.sql

Lines changed: 160 additions & 88 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,46 @@ PROMPT sqlplus_header.sql;
55
WHENEVER SQLERROR EXIT -99;
66
WHENEVER OSERROR EXIT -98;
77
SET DEFINE OFF;
8+
--
9+
--*************************--
10+
PROMPT DZ_JSON_CONSTANTS.pks;
11+
12+
CREATE OR REPLACE PACKAGE dz_json_constants
13+
AUTHID CURRENT_USER
14+
AS
15+
-----------------------------------------------------------------------------
16+
-----------------------------------------------------------------------------
17+
/*
18+
Constant: dz_json_constants.c_json_unescaped_slashes
19+
Flag to control whether to escape forward slashes. Certain libraries may
20+
or may not require such escaping.
21+
*/
22+
c_json_unescaped_slashes CONSTANT BOOLEAN := TRUE;
23+
24+
-----------------------------------------------------------------------------
25+
-----------------------------------------------------------------------------
26+
/*
27+
Constant: dz_json_constants.c_json_unescaped_unicode
28+
Flag to control escaping of unicode characters into /u format. Set to TRUE
29+
to leave all unicode text as received. Note this is not recommended for
30+
most JSON handling.
31+
*/
32+
c_json_unescaped_unicode CONSTANT BOOLEAN := FALSE;
33+
34+
-----------------------------------------------------------------------------
35+
-----------------------------------------------------------------------------
36+
/*
37+
Constant: dz_json_constants.c_json_escape_all_nonascii
38+
Flag to control whether to escape all non-ascii characters into /u format.
39+
May be helpful for certain character sets or use cases.
40+
*/
41+
c_json_escape_all_nonascii CONSTANT BOOLEAN := FALSE;
42+
43+
END dz_json_constants;
44+
/
45+
46+
GRANT EXECUTE ON dz_json_constants TO PUBLIC;
47+
848
--
949
--*************************--
1050
PROMPT DZ_JSON_UTIL.pks;
@@ -1667,16 +1707,16 @@ AS
16671707
/*
16681708
header: DZ_JSON
16691709

1670-
- Build ID: 37
1671-
- Change Set: 34d20bf89b8269ad25851e24544c58537d74501c
1710+
- Build ID: 51
1711+
- Change Set: acc78b726846553f324d43d4951bf24453c71115
16721712

16731713
Utility for the creation of JSON and GeoJSON from Oracle data types and
16741714
structures. Support for the deserialization of JSON is not implemented.
16751715

16761716
*/
16771717
-----------------------------------------------------------------------------
16781718
-----------------------------------------------------------------------------
1679-
1719+
16801720
-----------------------------------------------------------------------------
16811721
-----------------------------------------------------------------------------
16821722
/*
@@ -4293,56 +4333,72 @@ AS
42934333
RETURN 'null';
42944334

42954335
ELSE
4336+
4337+
IF NOT dz_json_constants.c_json_unescaped_slashes
4338+
THEN
4339+
str_output := REGEXP_REPLACE(str_output,'/','\/');
4340+
4341+
END IF;
4342+
42964343
str_output := REGEXP_REPLACE(str_output,'\\' ,'\\\');
4297-
str_output := REGEXP_REPLACE(str_output,'/' ,'\/');
42984344
str_output := REGEXP_REPLACE(str_output,'"' ,'\"');
4299-
43004345
str_output := REGEXP_REPLACE(str_output,CHR(8) ,'\b');
43014346
str_output := REGEXP_REPLACE(str_output,CHR(9) ,'\t');
43024347
str_output := REGEXP_REPLACE(str_output,CHR(10) ,'\n');
43034348
str_output := REGEXP_REPLACE(str_output,CHR(12) ,'\f');
43044349
str_output := REGEXP_REPLACE(str_output,CHR(13) ,'');
43054350
str_output := REGEXP_REPLACE(str_output,CHR(21) ,'\u0015');
43064351

4307-
str_output := REGEXP_REPLACE(str_output,UNISTR('\00AE'),'\u00AE');
4308-
str_output := REGEXP_REPLACE(str_output,UNISTR('\00B0'),'\u00B0');
4309-
str_output := REGEXP_REPLACE(str_output,UNISTR('\00B1'),'\u00B1');
4310-
str_output := REGEXP_REPLACE(str_output,UNISTR('\00B2'),'\u00B2');
4311-
str_output := REGEXP_REPLACE(str_output,UNISTR('\00B3'),'\u00B3');
4312-
str_output := REGEXP_REPLACE(str_output,UNISTR('\00B4'),'\u00B4');
4313-
str_output := REGEXP_REPLACE(str_output,UNISTR('\00B5'),'\u00B5');
4314-
str_output := REGEXP_REPLACE(str_output,UNISTR('\00B7'),'\u00B7');
4315-
str_output := REGEXP_REPLACE(str_output,UNISTR('\00BC'),'\u00BC');
4316-
str_output := REGEXP_REPLACE(str_output,UNISTR('\00BD'),'\u00BD');
4317-
str_output := REGEXP_REPLACE(str_output,UNISTR('\00C9'),'\u00C9');
4318-
str_output := REGEXP_REPLACE(str_output,UNISTR('\00D7'),'\u00D7');
4319-
str_output := REGEXP_REPLACE(str_output,UNISTR('\00E0'),'\u00E0');
4320-
str_output := REGEXP_REPLACE(str_output,UNISTR('\00E1'),'\u00E1');
4321-
str_output := REGEXP_REPLACE(str_output,UNISTR('\00E2'),'\u00E2');
4322-
str_output := REGEXP_REPLACE(str_output,UNISTR('\00E3'),'\u00E3');
4323-
str_output := REGEXP_REPLACE(str_output,UNISTR('\00E7'),'\u00E7');
4324-
str_output := REGEXP_REPLACE(str_output,UNISTR('\00E8'),'\u00E8');
4325-
str_output := REGEXP_REPLACE(str_output,UNISTR('\00E9'),'\u00E9');
4326-
str_output := REGEXP_REPLACE(str_output,UNISTR('\00EA'),'\u00EA');
4327-
str_output := REGEXP_REPLACE(str_output,UNISTR('\00EB'),'\u00EB');
4328-
str_output := REGEXP_REPLACE(str_output,UNISTR('\00EC'),'\u00EC');
4329-
str_output := REGEXP_REPLACE(str_output,UNISTR('\00ED'),'\u00ED');
4330-
str_output := REGEXP_REPLACE(str_output,UNISTR('\00D1'),'\u00D1');
4331-
str_output := REGEXP_REPLACE(str_output,UNISTR('\00F3'),'\u00F3');
4332-
str_output := REGEXP_REPLACE(str_output,UNISTR('\00F6'),'\u00F6');
4333-
str_output := REGEXP_REPLACE(str_output,UNISTR('\0161'),'\u0161');
4334-
str_output := REGEXP_REPLACE(str_output,UNISTR('\2013'),'\u2013');
4335-
str_output := REGEXP_REPLACE(str_output,UNISTR('\2014'),'\u2014');
4336-
str_output := REGEXP_REPLACE(str_output,UNISTR('\2015'),'\u2015');
4337-
str_output := REGEXP_REPLACE(str_output,UNISTR('\2018'),'\u2018');
4338-
str_output := REGEXP_REPLACE(str_output,UNISTR('\2019'),'\u2019');
4339-
str_output := REGEXP_REPLACE(str_output,UNISTR('\201B'),'\u201B');
4340-
str_output := REGEXP_REPLACE(str_output,UNISTR('\201C'),'\u201C');
4341-
str_output := REGEXP_REPLACE(str_output,UNISTR('\201D'),'\u201D');
4342-
str_output := REGEXP_REPLACE(str_output,UNISTR('\201F'),'\u201F');
4343-
str_output := REGEXP_REPLACE(str_output,UNISTR('\2022'),'\u2022');
4344-
str_output := REGEXP_REPLACE(str_output,UNISTR('\20AC'),'\u20AC');
4345-
str_output := REGEXP_REPLACE(str_output,UNISTR('\2122'),'\u2122');
4352+
IF NOT dz_json_constants.c_json_unescaped_unicode
4353+
THEN
4354+
IF dz_json_constants.c_json_escape_all_nonascii
4355+
THEN
4356+
str_output := REGEXP_REPLACE(ASCIISTR(str_output),'\\','\\u');
4357+
4358+
ELSE
4359+
str_output := REGEXP_REPLACE(str_output,UNISTR('\00AE'),'\u00AE');
4360+
str_output := REGEXP_REPLACE(str_output,UNISTR('\00B0'),'\u00B0');
4361+
str_output := REGEXP_REPLACE(str_output,UNISTR('\00B1'),'\u00B1');
4362+
str_output := REGEXP_REPLACE(str_output,UNISTR('\00B2'),'\u00B2');
4363+
str_output := REGEXP_REPLACE(str_output,UNISTR('\00B3'),'\u00B3');
4364+
str_output := REGEXP_REPLACE(str_output,UNISTR('\00B4'),'\u00B4');
4365+
str_output := REGEXP_REPLACE(str_output,UNISTR('\00B5'),'\u00B5');
4366+
str_output := REGEXP_REPLACE(str_output,UNISTR('\00B7'),'\u00B7');
4367+
str_output := REGEXP_REPLACE(str_output,UNISTR('\00BC'),'\u00BC');
4368+
str_output := REGEXP_REPLACE(str_output,UNISTR('\00BD'),'\u00BD');
4369+
str_output := REGEXP_REPLACE(str_output,UNISTR('\00C9'),'\u00C9');
4370+
str_output := REGEXP_REPLACE(str_output,UNISTR('\00D7'),'\u00D7');
4371+
str_output := REGEXP_REPLACE(str_output,UNISTR('\00E0'),'\u00E0');
4372+
str_output := REGEXP_REPLACE(str_output,UNISTR('\00E1'),'\u00E1');
4373+
str_output := REGEXP_REPLACE(str_output,UNISTR('\00E2'),'\u00E2');
4374+
str_output := REGEXP_REPLACE(str_output,UNISTR('\00E3'),'\u00E3');
4375+
str_output := REGEXP_REPLACE(str_output,UNISTR('\00E7'),'\u00E7');
4376+
str_output := REGEXP_REPLACE(str_output,UNISTR('\00E8'),'\u00E8');
4377+
str_output := REGEXP_REPLACE(str_output,UNISTR('\00E9'),'\u00E9');
4378+
str_output := REGEXP_REPLACE(str_output,UNISTR('\00EA'),'\u00EA');
4379+
str_output := REGEXP_REPLACE(str_output,UNISTR('\00EB'),'\u00EB');
4380+
str_output := REGEXP_REPLACE(str_output,UNISTR('\00EC'),'\u00EC');
4381+
str_output := REGEXP_REPLACE(str_output,UNISTR('\00ED'),'\u00ED');
4382+
str_output := REGEXP_REPLACE(str_output,UNISTR('\00D1'),'\u00D1');
4383+
str_output := REGEXP_REPLACE(str_output,UNISTR('\00F3'),'\u00F3');
4384+
str_output := REGEXP_REPLACE(str_output,UNISTR('\00F6'),'\u00F6');
4385+
str_output := REGEXP_REPLACE(str_output,UNISTR('\0161'),'\u0161');
4386+
str_output := REGEXP_REPLACE(str_output,UNISTR('\2013'),'\u2013');
4387+
str_output := REGEXP_REPLACE(str_output,UNISTR('\2014'),'\u2014');
4388+
str_output := REGEXP_REPLACE(str_output,UNISTR('\2015'),'\u2015');
4389+
str_output := REGEXP_REPLACE(str_output,UNISTR('\2018'),'\u2018');
4390+
str_output := REGEXP_REPLACE(str_output,UNISTR('\2019'),'\u2019');
4391+
str_output := REGEXP_REPLACE(str_output,UNISTR('\201B'),'\u201B');
4392+
str_output := REGEXP_REPLACE(str_output,UNISTR('\201C'),'\u201C');
4393+
str_output := REGEXP_REPLACE(str_output,UNISTR('\201D'),'\u201D');
4394+
str_output := REGEXP_REPLACE(str_output,UNISTR('\201F'),'\u201F');
4395+
str_output := REGEXP_REPLACE(str_output,UNISTR('\2022'),'\u2022');
4396+
str_output := REGEXP_REPLACE(str_output,UNISTR('\20AC'),'\u20AC');
4397+
str_output := REGEXP_REPLACE(str_output,UNISTR('\2122'),'\u2122');
4398+
4399+
END IF;
4400+
4401+
END IF;
43464402

43474403
IF p_quote_strings = 'FALSE'
43484404
THEN
@@ -4434,56 +4490,72 @@ AS
44344490
RETURN TO_CLOB('null');
44354491

44364492
ELSE
4493+
4494+
IF NOT dz_json_constants.c_json_unescaped_slashes
4495+
THEN
4496+
clb_output := REGEXP_REPLACE(clb_output,'/' ,'\/');
4497+
4498+
END IF;
4499+
44374500
clb_output := REGEXP_REPLACE(clb_output,'\\' ,'\\\');
4438-
clb_output := REGEXP_REPLACE(clb_output,'/' ,'\/');
44394501
clb_output := REGEXP_REPLACE(clb_output,'"' ,'\"');
4440-
44414502
clb_output := REGEXP_REPLACE(clb_output,CHR(8) ,'\b');
44424503
clb_output := REGEXP_REPLACE(clb_output,CHR(9) ,'\t');
44434504
clb_output := REGEXP_REPLACE(clb_output,CHR(10) ,'\n');
44444505
clb_output := REGEXP_REPLACE(clb_output,CHR(12) ,'\f');
44454506
clb_output := REGEXP_REPLACE(clb_output,CHR(13) ,'');
44464507
clb_output := REGEXP_REPLACE(clb_output,CHR(21) ,'\u0015');
44474508

4448-
clb_output := REGEXP_REPLACE(clb_output,UNISTR('\00AE'),'\u00AE');
4449-
clb_output := REGEXP_REPLACE(clb_output,UNISTR('\00B0'),'\u00B0');
4450-
clb_output := REGEXP_REPLACE(clb_output,UNISTR('\00B1'),'\u00B1');
4451-
clb_output := REGEXP_REPLACE(clb_output,UNISTR('\00B2'),'\u00B2');
4452-
clb_output := REGEXP_REPLACE(clb_output,UNISTR('\00B3'),'\u00B3');
4453-
clb_output := REGEXP_REPLACE(clb_output,UNISTR('\00B4'),'\u00B4');
4454-
clb_output := REGEXP_REPLACE(clb_output,UNISTR('\00B5'),'\u00B5');
4455-
clb_output := REGEXP_REPLACE(clb_output,UNISTR('\00B7'),'\u00B7');
4456-
clb_output := REGEXP_REPLACE(clb_output,UNISTR('\00BC'),'\u00BC');
4457-
clb_output := REGEXP_REPLACE(clb_output,UNISTR('\00BD'),'\u00BD');
4458-
clb_output := REGEXP_REPLACE(clb_output,UNISTR('\00C9'),'\u00C9');
4459-
clb_output := REGEXP_REPLACE(clb_output,UNISTR('\00D7'),'\u00D7');
4460-
clb_output := REGEXP_REPLACE(clb_output,UNISTR('\00E0'),'\u00E0');
4461-
clb_output := REGEXP_REPLACE(clb_output,UNISTR('\00E1'),'\u00E1');
4462-
clb_output := REGEXP_REPLACE(clb_output,UNISTR('\00E2'),'\u00E2');
4463-
clb_output := REGEXP_REPLACE(clb_output,UNISTR('\00E3'),'\u00E3');
4464-
clb_output := REGEXP_REPLACE(clb_output,UNISTR('\00E7'),'\u00E7');
4465-
clb_output := REGEXP_REPLACE(clb_output,UNISTR('\00E8'),'\u00E8');
4466-
clb_output := REGEXP_REPLACE(clb_output,UNISTR('\00E9'),'\u00E9');
4467-
clb_output := REGEXP_REPLACE(clb_output,UNISTR('\00EA'),'\u00EA');
4468-
clb_output := REGEXP_REPLACE(clb_output,UNISTR('\00EB'),'\u00EB');
4469-
clb_output := REGEXP_REPLACE(clb_output,UNISTR('\00EC'),'\u00EC');
4470-
clb_output := REGEXP_REPLACE(clb_output,UNISTR('\00ED'),'\u00ED');
4471-
clb_output := REGEXP_REPLACE(clb_output,UNISTR('\00D1'),'\u00D1');
4472-
clb_output := REGEXP_REPLACE(clb_output,UNISTR('\00F3'),'\u00F3');
4473-
clb_output := REGEXP_REPLACE(clb_output,UNISTR('\00F6'),'\u00F6');
4474-
clb_output := REGEXP_REPLACE(clb_output,UNISTR('\0161'),'\u0161');
4475-
clb_output := REGEXP_REPLACE(clb_output,UNISTR('\2013'),'\u2013');
4476-
clb_output := REGEXP_REPLACE(clb_output,UNISTR('\2014'),'\u2014');
4477-
clb_output := REGEXP_REPLACE(clb_output,UNISTR('\2015'),'\u2015');
4478-
clb_output := REGEXP_REPLACE(clb_output,UNISTR('\2018'),'\u2018');
4479-
clb_output := REGEXP_REPLACE(clb_output,UNISTR('\2019'),'\u2019');
4480-
clb_output := REGEXP_REPLACE(clb_output,UNISTR('\201B'),'\u201B');
4481-
clb_output := REGEXP_REPLACE(clb_output,UNISTR('\201C'),'\u201C');
4482-
clb_output := REGEXP_REPLACE(clb_output,UNISTR('\201D'),'\u201D');
4483-
clb_output := REGEXP_REPLACE(clb_output,UNISTR('\201F'),'\u201F');
4484-
clb_output := REGEXP_REPLACE(clb_output,UNISTR('\2022'),'\u2022');
4485-
clb_output := REGEXP_REPLACE(clb_output,UNISTR('\20AC'),'\u20AC');
4486-
clb_output := REGEXP_REPLACE(clb_output,UNISTR('\2122'),'\u2122');
4509+
IF NOT dz_json_constants.c_json_unescaped_unicode
4510+
THEN
4511+
IF dz_json_constants.c_json_escape_all_nonascii
4512+
THEN
4513+
clb_output := REGEXP_REPLACE(ASCIISTR(clb_output),'\\','\\u');
4514+
4515+
ELSE
4516+
clb_output := REGEXP_REPLACE(clb_output,UNISTR('\00AE'),'\u00AE');
4517+
clb_output := REGEXP_REPLACE(clb_output,UNISTR('\00B0'),'\u00B0');
4518+
clb_output := REGEXP_REPLACE(clb_output,UNISTR('\00B1'),'\u00B1');
4519+
clb_output := REGEXP_REPLACE(clb_output,UNISTR('\00B2'),'\u00B2');
4520+
clb_output := REGEXP_REPLACE(clb_output,UNISTR('\00B3'),'\u00B3');
4521+
clb_output := REGEXP_REPLACE(clb_output,UNISTR('\00B4'),'\u00B4');
4522+
clb_output := REGEXP_REPLACE(clb_output,UNISTR('\00B5'),'\u00B5');
4523+
clb_output := REGEXP_REPLACE(clb_output,UNISTR('\00B7'),'\u00B7');
4524+
clb_output := REGEXP_REPLACE(clb_output,UNISTR('\00BC'),'\u00BC');
4525+
clb_output := REGEXP_REPLACE(clb_output,UNISTR('\00BD'),'\u00BD');
4526+
clb_output := REGEXP_REPLACE(clb_output,UNISTR('\00C9'),'\u00C9');
4527+
clb_output := REGEXP_REPLACE(clb_output,UNISTR('\00D7'),'\u00D7');
4528+
clb_output := REGEXP_REPLACE(clb_output,UNISTR('\00E0'),'\u00E0');
4529+
clb_output := REGEXP_REPLACE(clb_output,UNISTR('\00E1'),'\u00E1');
4530+
clb_output := REGEXP_REPLACE(clb_output,UNISTR('\00E2'),'\u00E2');
4531+
clb_output := REGEXP_REPLACE(clb_output,UNISTR('\00E3'),'\u00E3');
4532+
clb_output := REGEXP_REPLACE(clb_output,UNISTR('\00E7'),'\u00E7');
4533+
clb_output := REGEXP_REPLACE(clb_output,UNISTR('\00E8'),'\u00E8');
4534+
clb_output := REGEXP_REPLACE(clb_output,UNISTR('\00E9'),'\u00E9');
4535+
clb_output := REGEXP_REPLACE(clb_output,UNISTR('\00EA'),'\u00EA');
4536+
clb_output := REGEXP_REPLACE(clb_output,UNISTR('\00EB'),'\u00EB');
4537+
clb_output := REGEXP_REPLACE(clb_output,UNISTR('\00EC'),'\u00EC');
4538+
clb_output := REGEXP_REPLACE(clb_output,UNISTR('\00ED'),'\u00ED');
4539+
clb_output := REGEXP_REPLACE(clb_output,UNISTR('\00D1'),'\u00D1');
4540+
clb_output := REGEXP_REPLACE(clb_output,UNISTR('\00F3'),'\u00F3');
4541+
clb_output := REGEXP_REPLACE(clb_output,UNISTR('\00F6'),'\u00F6');
4542+
clb_output := REGEXP_REPLACE(clb_output,UNISTR('\0161'),'\u0161');
4543+
clb_output := REGEXP_REPLACE(clb_output,UNISTR('\2013'),'\u2013');
4544+
clb_output := REGEXP_REPLACE(clb_output,UNISTR('\2014'),'\u2014');
4545+
clb_output := REGEXP_REPLACE(clb_output,UNISTR('\2015'),'\u2015');
4546+
clb_output := REGEXP_REPLACE(clb_output,UNISTR('\2018'),'\u2018');
4547+
clb_output := REGEXP_REPLACE(clb_output,UNISTR('\2019'),'\u2019');
4548+
clb_output := REGEXP_REPLACE(clb_output,UNISTR('\201B'),'\u201B');
4549+
clb_output := REGEXP_REPLACE(clb_output,UNISTR('\201C'),'\u201C');
4550+
clb_output := REGEXP_REPLACE(clb_output,UNISTR('\201D'),'\u201D');
4551+
clb_output := REGEXP_REPLACE(clb_output,UNISTR('\201F'),'\u201F');
4552+
clb_output := REGEXP_REPLACE(clb_output,UNISTR('\2022'),'\u2022');
4553+
clb_output := REGEXP_REPLACE(clb_output,UNISTR('\20AC'),'\u20AC');
4554+
clb_output := REGEXP_REPLACE(clb_output,UNISTR('\2122'),'\u2122');
4555+
4556+
END IF;
4557+
4558+
END IF;
44874559

44884560
IF p_quote_strings = 'FALSE'
44894561
THEN
@@ -8197,10 +8269,10 @@ CREATE OR REPLACE PACKAGE dz_json_test
81978269
AUTHID DEFINER
81988270
AS
81998271

8200-
C_CHANGESET CONSTANT VARCHAR2(255 Char) := '34d20bf89b8269ad25851e24544c58537d74501c';
8272+
C_CHANGESET CONSTANT VARCHAR2(255 Char) := 'acc78b726846553f324d43d4951bf24453c71115';
82018273
C_JENKINS_JOBNM CONSTANT VARCHAR2(255 Char) := 'DZ_JSON';
8202-
C_JENKINS_BUILD CONSTANT NUMBER := 37;
8203-
C_JENKINS_BLDID CONSTANT VARCHAR2(255 Char) := '37';
8274+
C_JENKINS_BUILD CONSTANT NUMBER := 51;
8275+
C_JENKINS_BLDID CONSTANT VARCHAR2(255 Char) := '51';
82048276

82058277
C_PREREQUISITES CONSTANT MDSYS.SDO_STRING2_ARRAY := MDSYS.SDO_STRING2_ARRAY(
82068278
);

0 commit comments

Comments
 (0)