Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@oracle/quicksql",
"version": "1.1.0",
"version": "1.1.1",
"description": "Quick SQL to DDL translator and GUI",
"main": "src/index.js",
"type": "module",
Expand Down
89 changes: 66 additions & 23 deletions src/tree.js
Original file line number Diff line number Diff line change
Expand Up @@ -1201,23 +1201,60 @@ let tree = (function(){
ret += 'insert into '+objName+' (\n';
let idColName = this.getGenIdColName();
if( idColName != null ) {
ret += tab + idColName +',\n';
ret += tab + idColName +',\n';
} else {
let pkNode = this.getExplicitPkNode();
if( pkNode != null ) {
ret += tab + pkNode.parseName() +',\n';
}
}
for( let fk in this.fks ) {
let parent = this.fks[fk];
ret += tab+singular(parent)+'_id,\n';
let parent = this.fks[fk];
let refNode = ddl.find(parent);
let _id = '';
if( refNode == null ) {
refNode = ddl.find(fk);
if( refNode.isMany2One() & !fk.endsWith('_id') ) {
parent = fk;
fk = singular(fk);
_id = '_id';
}
}
ret += tab+fk+_id+',\n';
}
for( let j = 0; j < this.children.length; j++ ) {
let child = this.children[j];
if( 0 == child.children.length )
ret += tab+child.parseName()+',\n';
let child = this.children[j];
if( idColName != null && child.parseName() == 'id' )
continue;
if (child.refId() == null ) {
if( child == this.getExplicitPkNode() )
continue; //ret += '--';
if( 0 == child.children.length )
ret += tab+child.parseName()+',\n';
}
}
if( ret.lastIndexOf(',\n') == ret.length-2 )
ret = ret.substr(0,ret.length-2)+'\n';

ret += ') values (\n';
if( ddl.optionEQvalue('Auto Primary Key','yes') ) {
ret += tab + (i+1)+ ',\n';

if( idColName != null ) {
ret += tab + (i+1)+ ',\n';
} else {
let pkNode = this.getExplicitPkNode();
if( pkNode != null ) {
const field = pkNode.parseName();
let tmp = getValue(ddl.data, null /*no name at level 0*/, field, this.parseName());
let v = -1;
if( elem != null )
v = elem[field];
if( tmp != null && tmp[i] != null ) {
v = tmp[i];
}
ret += tab + (v != null ? v : i+1)+ ',\n';
}
}

for( let fk in this.fks ) {
let ref = this.fks[fk];
let refNode = ddl.find(ref);
Expand Down Expand Up @@ -1246,23 +1283,29 @@ let tree = (function(){
}
for( let j = 0; j < this.children.length; j++ ) {
let child = this.children[j];
if( 0 == child.children.length ) {
let values = child.parseValues();
let cname = child.parseName();
if( elem != null ) {
let v = elem[cname];
if( v != null ) {
if( idColName != null && child.parseName() == 'id' )
continue;
if (child.refId() == null ) {
if( child == this.getExplicitPkNode() )
continue; //ret += '--';
if( 0 == child.children.length ) {
let values = child.parseValues();
let cname = child.parseName();
if( elem != null ) {
let v = elem[cname];
if( v != null ) {
values = [];
values[0] = v;
}
}
let tmp = getValue(ddl.data, null /*no name at level 0*/, cname, this.parseName());
if( tmp != null && tmp[i] != null ) {
values = [];
values[0] = v;
}
}
let tmp = getValue(ddl.data, null /*no name at level 0*/, cname, this.parseName());
if( tmp != null && tmp[i] != null ) {
values = [];
values[0] = tmp[i];
values[0] = tmp[i];
}
let datum = sample(objName, cname, child.parseType(), values);
ret += tab + translate(ddl.getOptionValue('Data Language'), datum)+',\n';
}
let datum = sample(objName, cname, child.parseType(), values);
ret += tab + translate(ddl.getOptionValue('Data Language'), datum)+',\n';
}
}
if( ret.lastIndexOf(',\n') == ret.length-2 )
Expand Down
8 changes: 4 additions & 4 deletions test/DV/car_racing/1.sql
Original file line number Diff line number Diff line change
Expand Up @@ -71,24 +71,24 @@ insert into team (
commit;

insert into driver (
team_id,
driverid,
team_id,
name,
points
) values (
302,
103,
302,
'Charles Leclerc',
192
);
insert into driver (
team_id,
driverid,
team_id,
name,
points
) values (
302,
104,
302,
'Carlos Sainz Jr',
118
);
Expand Down
12 changes: 6 additions & 6 deletions test/DV/car_racing/2.sql
Original file line number Diff line number Diff line change
Expand Up @@ -86,13 +86,13 @@ select JSON {
-- load data

insert into driver (
teamInfo_id,
driverId,
teamInfo_id,
name,
points
) values (
301,
101,
301,
'Max Verstappen',
258
);
Expand All @@ -110,25 +110,25 @@ insert into teamInfo (
commit;

insert into race (
driverRaceMapId,
raceInfo_id,
driver_id,
driverRaceMapId,
finalPosition
) values (
3,
201,
101,
3,
19
);
insert into race (
driverRaceMapId,
raceInfo_id,
driver_id,
driverRaceMapId,
finalPosition
) values (
11,
202,
101,
11,
1
);

Expand Down
5 changes: 5 additions & 0 deletions test/bugs/35950582.qsql
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
team_members
username
projects /insert 2
name
project_lead /nn /references team_members /cascade
61 changes: 61 additions & 0 deletions test/bugs/35950582.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
-- create tables
create table team_members (
id number generated by default on null as identity
constraint team_members_id_pk primary key,
username varchar2(255 char)
)
;

create table projects (
id number generated by default on null as identity
constraint projects_id_pk primary key,
project_lead number
constraint projects_project_lead_fk
references team_members on delete cascade not null,
name varchar2(255 char)
)
;

-- table index
create index projects_i1 on projects (project_lead);

-- load data
-- load data

insert into projects (
id,
project_lead,
name
) values (
1,
1,
'Corporate Portal'
);

insert into projects (
id,
project_lead,
name
) values (
2,
1,
'System Burst Performance Review'
);

commit;

alter table projects
modify id generated always as identity restart start with 3;


-- Generated by Quick SQL Thursday October 26, 2023 21:59:23

/*
team_members
username
projects /insert 2
name
project_lead /nn /references team_members

# settings = { semantics: "CHAR", language: "EN", APEX: true }
*/
2 changes: 1 addition & 1 deletion test/single_test.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import json2qsql from "../src/json2qsql.js";
import fs from "fs";

try {
let file = '//erd/Bug35814250/4.qsql';//'DV/donuts.json';
let file = '//DV/car_racing/2.qsql';//'DV/donuts.json';
let args = process.argv.slice(2);
if( 0 < args.length )
file = args[0];
Expand Down
4 changes: 2 additions & 2 deletions test/star/sales_product_customers.sql
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ create table customers (
insert into sales (
id,
product_id,
customer_id,
customers_id,
quantity
) values (
1,
Expand All @@ -49,7 +49,7 @@ insert into sales (
insert into sales (
id,
product_id,
customer_id,
customers_id,
quantity
) values (
2,
Expand Down