Skip to content

Commit 3b3425d

Browse files
committed
support intervals for dummy data generation (function get_a_row)
1 parent c0009d7 commit 3b3425d

File tree

5 files changed

+69
-49
lines changed

5 files changed

+69
-49
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ SIGNATURE
8383
```sql
8484
PACKAGE om_tapigen AUTHID CURRENT_USER IS
8585
c_generator CONSTANT VARCHAR2(10 CHAR) := 'OM_TAPIGEN';
86-
c_generator_version CONSTANT VARCHAR2(10 CHAR) := '0.5.2.38';
86+
c_generator_version CONSTANT VARCHAR2(10 CHAR) := '0.5.2.39';
8787
```
8888

8989

om_tapigen_install.sql

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ end;
3636
prompt Compile package om_tapigen (spec)
3737
CREATE OR REPLACE PACKAGE om_tapigen AUTHID CURRENT_USER IS
3838
c_generator CONSTANT VARCHAR2(10 CHAR) := 'OM_TAPIGEN';
39-
c_generator_version CONSTANT VARCHAR2(10 CHAR) := '0.5.2.38';
39+
c_generator_version CONSTANT VARCHAR2(10 CHAR) := '0.5.2.39';
4040
/**
4141
Oracle PL/SQL Table API Generator
4242
=================================
@@ -3784,25 +3784,25 @@ CREATE OR REPLACE PACKAGE BODY om_tapigen IS
37843784
END || ')'
37853785
WHEN g_columns(i).data_type LIKE '%CHAR%' THEN
37863786
CASE
3787-
WHEN lower(g_columns(i).column_name) LIKE '%mail%' THEN
3787+
WHEN upper(g_columns(i).column_name) LIKE '%MAIL%' THEN
37883788
q'[sys.dbms_random.string('L', round(sys.dbms_random.value(6, ]' || to_char(least(g_columns(i).char_length - 18, 24)) || ')))' ||
37893789
q'[ || '@' || ]' ||
37903790
q'[sys.dbms_random.string('L', round(sys.dbms_random.value(6, 12)))]' ||
37913791
q'[ || '.' || ]' ||
37923792
q'[sys.dbms_random.string('L', round(sys.dbms_random.value(2, 4)))]'
3793-
WHEN lower(g_columns(i).column_name) LIKE '%phone%' THEN
3793+
WHEN upper(g_columns(i).column_name) LIKE '%PHONE%' THEN
37943794
q'[substr('+' || ]' ||
37953795
q'[to_char(round(sys.dbms_random.value(1, 99))) || ' ' || ]' ||
37963796
q'[to_char(round(sys.dbms_random.value(10, 9999))) || ' ' || ]' ||
37973797
q'[to_char(round(sys.dbms_random.value(100, 999))) || ' ' || ]' ||
37983798
q'[to_char(round(sys.dbms_random.value(100, 9999))), 1, ]' ||
37993799
to_char(g_columns(i).char_length) || ')'
3800-
WHEN lower(g_columns(i).column_name) LIKE '%name%'
3801-
OR lower(g_columns(i).column_name) LIKE '%city%'
3802-
OR lower(g_columns(i).column_name) LIKE '%country%'
3800+
WHEN upper(g_columns(i).column_name) LIKE '%NAME%'
3801+
OR upper(g_columns(i).column_name) LIKE '%CITY%'
3802+
OR upper(g_columns(i).column_name) LIKE '%COUNTRY%'
38033803
THEN
38043804
q'[initcap(sys.dbms_random.string('L', round(sys.dbms_random.value(3, ]' || to_char(g_columns(i).char_length) || '))))'
3805-
WHEN lower(g_columns(i).column_name) LIKE '%street%' THEN
3805+
WHEN upper(g_columns(i).column_name) LIKE '%STREET%' THEN
38063806
q'[initcap(sys.dbms_random.string('L', round(sys.dbms_random.value(3, ]' || to_char(g_columns(i).char_length - 4) || '))))' ||
38073807
q'[ || ' ' || ]' ||
38083808
q'[to_char(round(sys.dbms_random.value(1, 200)))]'
@@ -3811,6 +3811,14 @@ CREATE OR REPLACE PACKAGE BODY om_tapigen IS
38113811
END
38123812
WHEN g_columns(i).data_type = 'DATE' THEN
38133813
q'[to_date(round(sys.dbms_random.value(to_char(date '1900-01-01', 'j'), to_char(date '2099-12-31', 'j'))), 'j')]'
3814+
WHEN g_columns(i).data_type LIKE 'INTERVAL DAY%' THEN
3815+
q'[to_dsinterval(to_char(round(sys.dbms_random.value(0, ]' || rpad('9', g_columns(i).data_precision, '9') || q'[))) || ' ' ]' ||
3816+
q'[|| to_char(round(sys.dbms_random.value(0, 23))) || ':' ]' ||
3817+
q'[|| to_char(round(sys.dbms_random.value(0, 59))) || ':' ]' ||
3818+
q'[|| to_char(round(sys.dbms_random.value(0, 59))) )]'
3819+
WHEN g_columns(i).data_type LIKE 'INTERVAL YEAR%' THEN
3820+
q'[to_yminterval(to_char(round(sys.dbms_random.value(0, ]' || rpad('9', g_columns(i).data_precision, '9') || q'[))) || '-' ]' ||
3821+
q'[|| to_char(round(sys.dbms_random.value(0, 11))) )]'
38143822
WHEN g_columns(i).data_type LIKE 'TIMESTAMP%' THEN
38153823
'systimestamp'
38163824
WHEN g_columns(i).data_type = 'CLOB' THEN
@@ -4969,7 +4977,7 @@ CREATE OR REPLACE PACKAGE BODY {{ OWNER }}.{{ API_NAME }} IS
49694977
v_row {{ TABLE_NAME }}%ROWTYPE;
49704978
BEGIN
49714979
{% LIST_ROWCOLS_W_CUST_DEFAULTS %}
4972-
return v_row;
4980+
RETURN v_row;
49734981
END get_a_row;';
49744982
util_template_replace('API BODY');
49754983

src/OM_TAPIGEN.pkb

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3221,25 +3221,25 @@ CREATE OR REPLACE PACKAGE BODY om_tapigen IS
32213221
END || ')'
32223222
WHEN g_columns(i).data_type LIKE '%CHAR%' THEN
32233223
CASE
3224-
WHEN lower(g_columns(i).column_name) LIKE '%mail%' THEN
3224+
WHEN upper(g_columns(i).column_name) LIKE '%MAIL%' THEN
32253225
q'[sys.dbms_random.string('L', round(sys.dbms_random.value(6, ]' || to_char(least(g_columns(i).char_length - 18, 24)) || ')))' ||
32263226
q'[ || '@' || ]' ||
32273227
q'[sys.dbms_random.string('L', round(sys.dbms_random.value(6, 12)))]' ||
32283228
q'[ || '.' || ]' ||
32293229
q'[sys.dbms_random.string('L', round(sys.dbms_random.value(2, 4)))]'
3230-
WHEN lower(g_columns(i).column_name) LIKE '%phone%' THEN
3230+
WHEN upper(g_columns(i).column_name) LIKE '%PHONE%' THEN
32313231
q'[substr('+' || ]' ||
32323232
q'[to_char(round(sys.dbms_random.value(1, 99))) || ' ' || ]' ||
32333233
q'[to_char(round(sys.dbms_random.value(10, 9999))) || ' ' || ]' ||
32343234
q'[to_char(round(sys.dbms_random.value(100, 999))) || ' ' || ]' ||
32353235
q'[to_char(round(sys.dbms_random.value(100, 9999))), 1, ]' ||
32363236
to_char(g_columns(i).char_length) || ')'
3237-
WHEN lower(g_columns(i).column_name) LIKE '%name%'
3238-
OR lower(g_columns(i).column_name) LIKE '%city%'
3239-
OR lower(g_columns(i).column_name) LIKE '%country%'
3237+
WHEN upper(g_columns(i).column_name) LIKE '%NAME%'
3238+
OR upper(g_columns(i).column_name) LIKE '%CITY%'
3239+
OR upper(g_columns(i).column_name) LIKE '%COUNTRY%'
32403240
THEN
32413241
q'[initcap(sys.dbms_random.string('L', round(sys.dbms_random.value(3, ]' || to_char(g_columns(i).char_length) || '))))'
3242-
WHEN lower(g_columns(i).column_name) LIKE '%street%' THEN
3242+
WHEN upper(g_columns(i).column_name) LIKE '%STREET%' THEN
32433243
q'[initcap(sys.dbms_random.string('L', round(sys.dbms_random.value(3, ]' || to_char(g_columns(i).char_length - 4) || '))))' ||
32443244
q'[ || ' ' || ]' ||
32453245
q'[to_char(round(sys.dbms_random.value(1, 200)))]'
@@ -3248,6 +3248,14 @@ CREATE OR REPLACE PACKAGE BODY om_tapigen IS
32483248
END
32493249
WHEN g_columns(i).data_type = 'DATE' THEN
32503250
q'[to_date(round(sys.dbms_random.value(to_char(date '1900-01-01', 'j'), to_char(date '2099-12-31', 'j'))), 'j')]'
3251+
WHEN g_columns(i).data_type LIKE 'INTERVAL DAY%' THEN
3252+
q'[to_dsinterval(to_char(round(sys.dbms_random.value(0, ]' || rpad('9', g_columns(i).data_precision, '9') || q'[))) || ' ' ]' ||
3253+
q'[|| to_char(round(sys.dbms_random.value(0, 23))) || ':' ]' ||
3254+
q'[|| to_char(round(sys.dbms_random.value(0, 59))) || ':' ]' ||
3255+
q'[|| to_char(round(sys.dbms_random.value(0, 59))) )]'
3256+
WHEN g_columns(i).data_type LIKE 'INTERVAL YEAR%' THEN
3257+
q'[to_yminterval(to_char(round(sys.dbms_random.value(0, ]' || rpad('9', g_columns(i).data_precision, '9') || q'[))) || '-' ]' ||
3258+
q'[|| to_char(round(sys.dbms_random.value(0, 11))) )]'
32513259
WHEN g_columns(i).data_type LIKE 'TIMESTAMP%' THEN
32523260
'systimestamp'
32533261
WHEN g_columns(i).data_type = 'CLOB' THEN
@@ -4406,7 +4414,7 @@ CREATE OR REPLACE PACKAGE BODY {{ OWNER }}.{{ API_NAME }} IS
44064414
v_row {{ TABLE_NAME }}%ROWTYPE;
44074415
BEGIN
44084416
{% LIST_ROWCOLS_W_CUST_DEFAULTS %}
4409-
return v_row;
4417+
RETURN v_row;
44104418
END get_a_row;';
44114419
util_template_replace('API BODY');
44124420

src/OM_TAPIGEN.pks

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
CREATE OR REPLACE PACKAGE om_tapigen AUTHID CURRENT_USER IS
22
c_generator CONSTANT VARCHAR2(10 CHAR) := 'OM_TAPIGEN';
3-
c_generator_version CONSTANT VARCHAR2(10 CHAR) := '0.5.2.38';
3+
c_generator_version CONSTANT VARCHAR2(10 CHAR) := '0.5.2.39';
44
/**
55
Oracle PL/SQL Table API Generator
66
=================================

test/TEST_OM_TAPIGEN.pkb

Lines changed: 36 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -665,22 +665,24 @@ procedure util_create_test_table_objects is
665665
begin
666666
execute immediate q'[
667667
create table tag_all_data_types_single_pk (
668-
adt1_id integer generated always as identity,
669-
adt1_varchar varchar2(15 char) ,
670-
adt1_char char(1 char) not null ,
671-
adt1_integer integer ,
672-
adt1_number number ,
673-
adt1_number_x_5 number(*,5) ,
674-
adt1_number_20_5 number(20,5) ,
675-
adt1_float float ,
676-
adt1_float_size_30 float(30) ,
677-
adt1_xmltype xmltype ,
678-
adt1_clob clob ,
679-
adt1_blob blob ,
680-
adt1_date date ,
681-
adt1_timestamp timestamp ,
682-
adt1_timestamp_tz timestamp with time zone ,
683-
adt1_timestamp_ltz timestamp with local time zone ,
668+
adt1_id integer generated always as identity,
669+
adt1_varchar varchar2(15 char) ,
670+
adt1_char char(1 char) not null ,
671+
adt1_integer integer ,
672+
adt1_number number ,
673+
adt1_number_x_5 number(*,5) ,
674+
adt1_number_20_5 number(20,5) ,
675+
adt1_float float ,
676+
adt1_float_size_30 float(30) ,
677+
adt1_xmltype xmltype ,
678+
adt1_clob clob ,
679+
adt1_blob blob ,
680+
adt1_date date ,
681+
adt1_timestamp timestamp ,
682+
adt1_timestamp_tz timestamp with time zone ,
683+
adt1_timestamp_ltz timestamp with local time zone ,
684+
adt1_interval_day_to_second interval day (3) to second (6) ,
685+
adt1_interval_year_to_month interval year (2) to month ,
684686
--
685687
primary key (adt1_id),
686688
unique (adt1_varchar)
@@ -692,22 +694,24 @@ procedure util_create_test_table_objects is
692694
begin
693695
execute immediate q'[
694696
create table tag_all_data_types_multi_pk (
695-
adt2_id integer generated always as identity,
696-
adt2_varchar varchar2(15 char) ,
697-
adt2_char char(1 char) not null ,
698-
adt2_integer integer ,
699-
adt2_number number ,
700-
adt2_number_x_5 number(*,5) ,
701-
adt2_number_20_5 number(20,5) ,
702-
adt2_float float ,
703-
adt2_float_size_30 float(30) ,
704-
adt2_xmltype xmltype ,
705-
adt2_clob clob ,
706-
adt2_blob blob ,
707-
adt2_date date ,
708-
adt2_timestamp timestamp ,
709-
adt2_timestamp_tz timestamp with time zone ,
710-
adt2_timestamp_ltz timestamp with local time zone ,
697+
adt2_id integer generated always as identity,
698+
adt2_varchar varchar2(15 char) ,
699+
adt2_char char(1 char) not null ,
700+
adt2_integer integer ,
701+
adt2_number number ,
702+
adt2_number_x_5 number(*,5) ,
703+
adt2_number_20_5 number(20,5) ,
704+
adt2_float float ,
705+
adt2_float_size_30 float(30) ,
706+
adt2_xmltype xmltype ,
707+
adt2_clob clob ,
708+
adt2_blob blob ,
709+
adt2_date date ,
710+
adt2_timestamp timestamp ,
711+
adt2_timestamp_tz timestamp with time zone ,
712+
adt2_timestamp_ltz timestamp with local time zone ,
713+
adt2_interval_day_to_second interval day (3) to second (6) ,
714+
adt2_interval_year_to_month interval year (2) to month ,
711715
--
712716
primary key (adt2_id, adt2_varchar)
713717
)

0 commit comments

Comments
 (0)