xerial/sqlite-jdbc

Returning FK_NAME empty

SunandaS76 opened this issue · 0 comments

Description:

rs = metaData.getImportedKeys(dbConn.getCatalog(), null, tableName);
String fkName = rs.getString("FK_NAME");

Problem:
fkName = "" for all the tables in the schema.

Schema used is as follows:

                      create table classroom
                          (building		varchar(15),
                           room_number		varchar(7),
                           capacity		numeric(4,0),
                           primary key (building, room_number)
                          );
                      
                      create table department
                          (dept_name		varchar(20), 
                           building		varchar(15), 
                           budget		        numeric(12,2) check (budget > 0),
                           primary key (dept_name)
                          );
                      
                      create table course
                          (course_id		varchar(8), 
                           title			varchar(50), 
                           dept_name		varchar(20),
                           credits		numeric(2,0) check (credits > 0),
                           primary key (course_id),
                           foreign key (dept_name) references department (dept_name)
	                          on delete set null
                          );
                      
                      create table instructor
                          (ID			varchar(5), 
                           name			varchar(20) not null, 
                           dept_name		varchar(20), 
                           salary			numeric(8,2) check (salary > 29000),
                           primary key (ID),
                           foreign key (dept_name) references department (dept_name)
	                          on delete set null
                          );
                      
                      create table section
                          (course_id		varchar(8), 
                               sec_id			varchar(8),
                           semester		varchar(6)
	                          check (semester in ('Fall', 'Winter', 'Spring', 'Summer')), 
                           year			numeric(4,0) check (year > 1701 and year < 2100), 
                           building		varchar(15),
                           room_number		varchar(7),
                           time_slot_id		varchar(4),
                           primary key (course_id, sec_id, semester, year),
                           foreign key (course_id) references course (course_id)
	                          on delete cascade,
                           foreign key (building, room_number) references classroom (building, room_number)
	                          on delete set null
                          );
                      
                      create table teaches
                          (ID			varchar(5), 
                           course_id		varchar(8),
                           sec_id			varchar(8), 
                           semester		varchar(6),
                           year			numeric(4,0),
                           primary key (ID, course_id, sec_id, semester, year),
                           foreign key (course_id, sec_id, semester, year) references section (course_id, sec_id, semester, year)
	                          on delete cascade,
                           foreign key (ID) references instructor (ID)
	                          on delete cascade
                          );
                      
                      create table student
                          (ID			varchar(5), 
                           name			varchar(20) not null, 
                           dept_name		varchar(20), 
                           tot_cred		numeric(3,0) check (tot_cred >= 0),
                           primary key (ID),
                           foreign key (dept_name) references department (dept_name)
	                          on delete set null
                          );
                      
                      create table takes
                          (ID			varchar(5), 
                           course_id		varchar(8),
                           sec_id			varchar(8), 
                           semester		varchar(6),
                           year			numeric(4,0),
                           grade		        varchar(2),
                           primary key (ID, course_id, sec_id, semester, year),
                           foreign key (course_id, sec_id, semester, year) references section (course_id, sec_id, semester, year)
	                          on delete cascade,
                           foreign key (ID) references student (ID)
	                          on delete cascade
                          );
                      
                      create table advisor
                          (s_ID			varchar(5),
                           i_ID			varchar(5),
                           primary key (s_ID),
                           foreign key (i_ID) references instructor (ID)
	                          on delete set null,
                           foreign key (s_ID) references student (ID)
	                          on delete cascade
                          );
                      
                      create table time_slot
                          (time_slot_id		varchar(4),
                           day			varchar(1),
                           start_hr		numeric(2) check (start_hr >= 0 and start_hr < 24),
                           start_min		numeric(2) check (start_min >= 0 and start_min < 60),
                           end_hr			numeric(2) check (end_hr >= 0 and end_hr < 24),
                           end_min		numeric(2) check (end_min >= 0 and end_min < 60),
                           primary key (time_slot_id, day, start_hr, start_min)
                          );
                      
                      create table prereq
                          (course_id		varchar(8), 
                           prereq_id		varchar(8),
                           primary key (course_id, prereq_id),
                           foreign key (course_id) references course (course_id)
	                          on delete cascade,
                           foreign key (prereq_id) references course (course_id)
                          );
                          
                      create table grade_value
                          (grade 		varchar(2),
                           value 		numeric(4,2),	
                           primary key(grade)
                          );

Expected behavior
Need to get a valid FK_NAME

Environment:

  • OS: [e.g. Ubuntu Ubuntu 22.04.3 LTS]
  • CPU architecture: [e.g. x86_64]
  • sqlite-jdbc version [e.g. 3.45.2.0]