Skip to content

Commit 1f928e5

Browse files
committed
Merge branch 'DBTOOLS-1988_loading_param' into 'master'
DBTOOLS-1988: Added loading param See merge request codekeeper/pgcodekeeper-cli!30
2 parents 35ad8b3 + 4a1be35 commit 1f928e5

10 files changed

Lines changed: 28 additions & 21 deletions

File tree

CHANGELOG.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@ and this project adheres to [Semantic Versioning](http://semver.org/).
99

1010
### Added
1111

12+
- Added the `--parallel-load` parameter. When specified, databases are loaded in parallel; by default, loading is performed sequentially.
13+
1214
### Changed
1315

1416
- Updated the JUnit library version from 5.x to version 6.

CHANGELOG.ru.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@
99

1010
### Добавлено
1111

12+
- Добавлен параметр `--parallel-load`. При его указании загрузка баз данных выполняется параллельно, по умолчанию загрузка выполняется последовательно.
13+
1214
### Изменено
1315

1416
- Обновлена версия библиотеки JUnit с 5.x до 6 версии.
@@ -20,7 +22,7 @@
2022
### Добавлено
2123

2224
- Добавлена обработка комментариев для ограничений NOT NULL в PostgreSQL.
23-
- Добавлена параметр `--cluster-name` для добавления в скрипт миграции синтаксиса ON CLUSTER для таблиц в ClickHouse (экспериментально).
25+
- Добавлен параметр `--cluster-name` для добавления в скрипт миграции синтаксиса ON CLUSTER для таблиц в ClickHouse (экспериментально).
2426
- Добавлен поиск файлов .pgcodekeeperignore и .pgcodekeeperignoreschema при чтении проекта. Это позволяет не использовать параметры `--ignore-list (-I)` и `--ignore-schema` с файлами проекта.
2527

2628
### Изменено

src/main/java/org/pgcodekeeper/cli/Application.java

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,9 +24,6 @@
2424
import org.pgcodekeeper.core.DangerStatement;
2525
import org.pgcodekeeper.core.api.PgCodeKeeperApi;
2626
import org.pgcodekeeper.core.database.api.loader.ILoader;
27-
import org.pgcodekeeper.core.database.ch.ChDatabaseProvider;
28-
import org.pgcodekeeper.core.database.ms.MsDatabaseProvider;
29-
import org.pgcodekeeper.core.database.pg.PgDatabaseProvider;
3027
import org.pgcodekeeper.core.settings.DiffSettings;
3128
import org.pgcodekeeper.core.utils.FileUtils;
3229
import org.pgcodekeeper.core.utils.UnixPrintWriter;

src/main/java/org/pgcodekeeper/cli/CliArgs.java

Lines changed: 17 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,7 @@ enum CliMode {
8383
this.graphDepth = DEFAULT_DEPTH;
8484
this.dbType = PG;
8585
this.mode = CliMode.DIFF;
86+
this.parallelLoad = false;
8687
}
8788
// SONAR-ON
8889

@@ -261,6 +262,9 @@ enum CliMode {
261262
@Option(name = "--cluster-name", metaVar = CliArgsLocalizationsBundle.NAME, usage = "cluster-name")
262263
private String clusterName;
263264

265+
@Option(name = "--parallel-load", aliases = "-par", usage = "parallel-load")
266+
private boolean parallelLoad;
267+
264268
CliMode getMode() {
265269
return mode;
266270
}
@@ -503,6 +507,11 @@ public String getClusterName() {
503507
return clusterName;
504508
}
505509

510+
@Override
511+
public boolean isParallelLoad() {
512+
return parallelLoad;
513+
}
514+
506515
@Override
507516
public CliArgs copy() {
508517
var args = new CliArgs();
@@ -558,6 +567,7 @@ public CliArgs copy() {
558567
args.usingTypeCastOff = usingTypeCastOff;
559568
args.provider = provider;
560569
args.clusterName = clusterName;
570+
args.parallelLoad = parallelLoad;
561571
return args;
562572
}
563573

@@ -609,20 +619,13 @@ public boolean parse(String[] args) throws CmdLineException {
609619
oldSrc = outputTarget;
610620
}
611621

622+
provider = switch (dbType) {
623+
case "PG" -> new PgDatabaseProvider();
624+
case "MS" -> new MsDatabaseProvider();
625+
case "CH" -> new ChDatabaseProvider();
626+
default -> throw new IllegalArgumentException(Messages.CliArgs_db_type);
627+
};
612628

613-
switch (dbType) {
614-
case "PG":
615-
provider = new PgDatabaseProvider();
616-
break;
617-
case "MS":
618-
provider = new MsDatabaseProvider();
619-
break;
620-
case "CH":
621-
provider = new ChDatabaseProvider();
622-
break;
623-
default:
624-
throw new IllegalArgumentException(Messages.CliArgs_db_type);
625-
}
626629
return true;
627630
}
628631

@@ -632,7 +635,7 @@ private void checkParams() throws CmdLineException {
632635
}
633636

634637
if (CliMode.DIFF == mode) {
635-
if (dbType.equals(PG) && addTransaction && concurrentlyMode) {
638+
if (PG.equals(dbType) && addTransaction && concurrentlyMode) {
636639
badArgs(Messages.CliArgs_error_concurrently_mode_wrong_option);
637640
}
638641
if (runOnTarget && !oldSrc.startsWith(URL_START_JDBC)) {

src/main/java/org/pgcodekeeper/cli/PgDiffCli.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@
2828
import java.util.Collections;
2929
import java.util.List;
3030

31-
3231
public final class PgDiffCli {
3332

3433
private final CliArgs arguments;
@@ -70,7 +69,6 @@ public String createDiff() throws InterruptedException, IOException {
7069
arguments.getSourceLibXmls(), arguments.getSourceLibs(), arguments.getSourceLibsWithoutPriv());
7170
var newDbLoader = getDatabaseLoader(arguments.getNewSrc(),
7271
arguments.getTargetLibXmls(), arguments.getTargetLibs(), arguments.getTargetLibsWithoutPriv());
73-
7472
var script = PgCodeKeeperApi.diff(arguments.getProvider(), oldDbLoader, newDbLoader, diffSettings);
7573

7674
assertErrorsEmpty();

src/main/java/org/pgcodekeeper/cli/localizations/CliArgsLocalizationsBundle.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,8 @@ protected Object[][] getContents() {
9999
{"graph-reverse", Messages.CliArgs_graph_reverse}, //$NON-NLS-1$
100100
{"graph-name", Messages.CliArgs_graph_name}, //$NON-NLS-1$
101101
{"graph-filter-object", Messages.CliArgs_graph_filter_object}, //$NON-NLS-1$
102-
{"graph-invert-filter", Messages.CliArgs_graph_invert_filter} //$NON-NLS-1$
102+
{"graph-invert-filter", Messages.CliArgs_graph_invert_filter}, //$NON-NLS-1$
103+
{"parallel-load", Messages.CliArgs_use_parallel_load} //$NON-NLS-1$
103104
};
104105
}
105106
}

src/main/java/org/pgcodekeeper/cli/localizations/Messages.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,7 @@ public class Messages {
8282
public static String CliArgs_tgt_lib_xml;
8383
public static String CliArgs_time_zone;
8484
public static String CliArgs_update_project;
85+
public static String CliArgs_use_parallel_load;
8586
public static String CliArgs_using_off;
8687
public static String CliArgs_Version;
8788
public static String Main_cach_clear;

src/main/resources/org/pgcodekeeper/cli/localizations/messages.properties

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@ CliArgs_tgt_lib_no_priv = add library dependency to destination without privileg
6060
CliArgs_tgt_lib_xml = add xml with library dependencies to target\nspecify multiple times to use several library xml's
6161
CliArgs_time_zone = use this timezone when working with database, also add SET TIMEZONE statement to the script
6262
CliArgs_update_project = update an existing project in parse mode
63+
CliArgs_use_parallel_load = use parallel database loading
6364
CliArgs_using_off = do not print USING expression for ALTER COLUMN TYPE
6465
Main_cach_clear = Library cache cleared
6566
Main_danger_statements = Script contains dangerous statements: %s. Use --allow-danger-ddl to override.

src/main/resources/org/pgcodekeeper/cli/localizations/messages_ru_RU.properties

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@ CliArgs_tgt_lib_no_priv = \u0434\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u043
6060
CliArgs_tgt_lib_xml = \u0434\u043E\u0431\u0430\u0432\u0438\u0442\u044C xml \u0441 \u0431\u0438\u0431\u043B\u0438\u043E\u0442\u0435\u0447\u043D\u044B\u043C\u0438 \u0437\u0430\u0432\u0438\u0441\u0438\u043C\u043E\u0441\u0442\u044F\u043C\u0438 \u043A \u043F\u0440\u0438\u0435\u043C\u043D\u0438\u043A\u0443\n\u0443\u043A\u0430\u0436\u0438\u0442\u0435 \u043D\u0435\u0441\u043A\u043E\u043B\u044C\u043A\u043E \u0440\u0430\u0437, \u0447\u0442\u043E\u0431\u044B \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u044C \u043D\u0435\u0441\u043A\u043E\u043B\u044C\u043A\u043E xml \u0441 \u0431\u0438\u0431\u043B\u0438\u043E\u0442\u0435\u043A\u0430\u043C\u0438
6161
CliArgs_time_zone = \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u044C \u0443\u043A\u0430\u0437\u0430\u043D\u043D\u044B\u0439 \u0447\u0430\u0441\u043E\u0432\u043E\u0439 \u043F\u043E\u044F\u0441 \u043F\u0440\u0438 \u0440\u0430\u0431\u043E\u0442\u0435 \u0441 \u0431\u0430\u0437\u043E\u0439 \u0434\u0430\u043D\u043D\u044B\u0445, \u0430 \u0442\u0430\u043A\u0436\u0435 \u0434\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u043E\u043F\u0435\u0440\u0430\u0442\u043E\u0440 SET TIMEZONE \u0432 \u0441\u043A\u0440\u0438\u043F\u0442
6262
CliArgs_update_project = \u043E\u0431\u043D\u043E\u0432\u0438\u0442\u044C \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044E\u0449\u0438\u0439 \u043F\u0440\u043E\u0435\u043A\u0442 \u0432 \u0440\u0435\u0436\u0438\u043C\u0435 parse
63+
CliArgs_use_parallel_load = \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u044C \u043F\u0430\u0440\u0430\u043B\u043B\u0435\u043B\u044C\u043D\u0443\u044E \u0437\u0430\u0433\u0440\u0443\u0437\u043A\u0443 \u0411\u0414
6364
CliArgs_using_off = \u043D\u0435 \u043F\u0435\u0447\u0430\u0442\u0430\u0442\u044C \u0432\u044B\u0440\u0430\u0436\u0435\u043D\u0438\u0435 USING \u0434\u043B\u044F ALTER COLUMN TYPE
6465
Main_cach_clear = \u041A\u044D\u0448 \u0431\u0438\u0431\u043B\u0438\u043E\u0442\u0435\u043A \u043E\u0447\u0438\u0449\u0435\u043D
6566
Main_danger_statements = \u0421\u043A\u0440\u0438\u043F\u0442 \u0441\u043E\u0434\u0435\u0440\u0436\u0438\u0442 \u043E\u043F\u0430\u0441\u043D\u044B\u0435 \u043E\u043F\u0435\u0440\u0430\u0442\u043E\u0440\u044B: %s. \u0418\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0439\u0442\u0435 --allow-danger-ddl \u0434\u043B\u044F \u043F\u0435\u0440\u0435\u043E\u043F\u0440\u0435\u0434\u0435\u043B\u0435\u043D\u0438\u044F.

src/test/resources/org/pgcodekeeper/cli/usage_check.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,7 @@ Usage
8686
--out-charset <charset> : output charset (default: UTF-8)
8787
--output (-o) <path> : script output file or parser output
8888
directory
89+
--parallel-load (-par) : use parallel database loading
8990
--post-script <path> : POST script file path or directory
9091
with POST scripts
9192
nested directories are loaded

0 commit comments

Comments
 (0)