Skip to content

Commit 24bdcf6

Browse files
committed
Feat: IMPORT SYNOPSIS ~ FROM FILE
1 parent a18123f commit 24bdcf6

File tree

5 files changed

+29
-10
lines changed

5 files changed

+29
-10
lines changed

traindb-core/src/main/antlr4/traindb/sql/TrainDBSql.g4

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -166,7 +166,7 @@ exportToClause
166166
;
167167

168168
importSynopsis
169-
: K_IMPORT K_SYNOPSIS synopsisName K_FROM synopsisBinaryString
169+
: K_IMPORT K_SYNOPSIS synopsisName K_FROM ( synopsisBinaryString | K_FILE filenameString )?
170170
;
171171

172172
analyzeSynopsis

traindb-core/src/main/java/traindb/engine/TrainDBQueryEngine.java

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1356,8 +1356,8 @@ public TrainDBListResultSet exportSynopsis(String synopsisName, String exportFil
13561356
}
13571357

13581358
@Override
1359-
public TrainDBListResultSet importSynopsis(String synopsisName, String synopsisBinaryString)
1360-
throws Exception {
1359+
public TrainDBListResultSet importSynopsis(String synopsisName, String synopsisBinaryString,
1360+
String importFilename) throws Exception {
13611361
T_tracer.startTaskTracer("import synopsis " + synopsisName);
13621362

13631363
T_tracer.openTaskTime("find : synopsis");
@@ -1372,7 +1372,12 @@ public TrainDBListResultSet importSynopsis(String synopsisName, String synopsisB
13721372
T_tracer.closeTaskTime("SUCCESS");
13731373

13741374
T_tracer.openTaskTime("decode synopsis binary string");
1375-
byte[] zipBytes = Hex.decodeHex(synopsisBinaryString);
1375+
byte[] zipBytes;
1376+
if (importFilename != null) {
1377+
zipBytes = Files.readAllBytes(Paths.get(importFilename).toAbsolutePath());
1378+
} else {
1379+
zipBytes = Hex.decodeHex(synopsisBinaryString);
1380+
}
13761381
byte[] exportMetadata = ZipUtils.extractZipEntry(zipBytes, "export_synopsis.json");
13771382
if (exportMetadata == null) {
13781383
throw new TrainDBException(

traindb-core/src/main/java/traindb/sql/TrainDBSql.java

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -168,7 +168,7 @@ public static TrainDBListResultSet run(TrainDBSqlCommand command, TrainDBSqlRunn
168168
case IMPORT_SYNOPSIS:
169169
TrainDBSqlImportSynopsis importSynopsis = (TrainDBSqlImportSynopsis) command;
170170
return runner.importSynopsis(importSynopsis.getSynopsisName(),
171-
importSynopsis.getSynopsisBinaryString());
171+
importSynopsis.getSynopsisBinaryString(), importSynopsis.getImportFilename());
172172
case ALTER_SYNOPSIS_RENAME: {
173173
TrainDBSqlAlterSynopsis alterSynopsis = (TrainDBSqlAlterSynopsis) command;
174174
runner.renameSynopsis(alterSynopsis.getSynopsisName(), alterSynopsis.getNewSynopsisName());
@@ -407,9 +407,16 @@ public void exitExportSynopsis(TrainDBSqlParser.ExportSynopsisContext ctx) {
407407
@Override
408408
public void exitImportSynopsis(TrainDBSqlParser.ImportSynopsisContext ctx) {
409409
String synopsisName = ctx.synopsisName().getText();
410-
String synopsisBinaryString = ctx.synopsisBinaryString().getText();
410+
String synopsisBinaryString = null;
411+
String importFilename = null;
412+
if (ctx.synopsisBinaryString() != null) {
413+
synopsisBinaryString = ctx.synopsisBinaryString().getText();
414+
} else if (ctx.filenameString() != null) {
415+
importFilename = ctx.filenameString().getText();
416+
}
411417
LOG.debug("IMPORT SYNOPSIS: name=" + synopsisName);
412-
commands.add(new TrainDBSqlImportSynopsis(synopsisName, synopsisBinaryString));
418+
commands.add(new TrainDBSqlImportSynopsis(synopsisName, synopsisBinaryString,
419+
importFilename));
413420
}
414421

415422
@Override

traindb-core/src/main/java/traindb/sql/TrainDBSqlImportSynopsis.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,13 @@
1717
class TrainDBSqlImportSynopsis extends TrainDBSqlCommand {
1818
private final String synopsisName;
1919
private final String synopsisBinaryString;
20+
private final String importFilename;
2021

21-
TrainDBSqlImportSynopsis(String synopsisName, String synopsisBinaryString) {
22+
TrainDBSqlImportSynopsis(String synopsisName, String synopsisBinaryString,
23+
String importFilename) {
2224
this.synopsisName = synopsisName;
2325
this.synopsisBinaryString = synopsisBinaryString;
26+
this.importFilename = importFilename;
2427
}
2528

2629
String getSynopsisName() {
@@ -31,6 +34,10 @@ String getSynopsisBinaryString() {
3134
return synopsisBinaryString;
3235
}
3336

37+
String getImportFilename() {
38+
return importFilename;
39+
}
40+
3441
@Override
3542
public Type getType() {
3643
return Type.IMPORT_SYNOPSIS;

traindb-core/src/main/java/traindb/sql/TrainDBSqlRunner.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -82,8 +82,8 @@ void createSynopsis(String synopsisName, String modelName, int limitRows, float
8282

8383
TrainDBListResultSet exportSynopsis(String synopsisName, String exportFilename) throws Exception;
8484

85-
TrainDBListResultSet importSynopsis(String synopsisName, String synopsisBinaryString)
86-
throws Exception;
85+
TrainDBListResultSet importSynopsis(String synopsisName, String synopsisBinaryString,
86+
String importFilename) throws Exception;
8787

8888
void renameSynopsis(String synopsisName, String newSynopsisName) throws Exception;
8989

0 commit comments

Comments
 (0)