plsqlwks 0.1.9.3__tar.gz → 0.2.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {plsqlwks-0.1.9.3 → plsqlwks-0.2.1}/PKG-INFO +244 -7
- {plsqlwks-0.1.9.3 → plsqlwks-0.2.1}/README.md +243 -6
- {plsqlwks-0.1.9.3 → plsqlwks-0.2.1}/doc/API.md +93 -3
- {plsqlwks-0.1.9.3 → plsqlwks-0.2.1}/doc/ARCHITECTURE.md +10 -0
- {plsqlwks-0.1.9.3 → plsqlwks-0.2.1}/doc/COMPATIBILITY.md +88 -28
- {plsqlwks-0.1.9.3 → plsqlwks-0.2.1}/doc/PLUGINS.md +27 -0
- plsqlwks-0.2.1/doc/PLUGIN_CATALOG.md +307 -0
- {plsqlwks-0.1.9.3 → plsqlwks-0.2.1}/doc/QUICKSTART.html +125 -94
- {plsqlwks-0.1.9.3 → plsqlwks-0.2.1}/doc/QUICKSTART.md +25 -0
- {plsqlwks-0.1.9.3 → plsqlwks-0.2.1}/plsqlwks/__init__.py +1 -1
- {plsqlwks-0.1.9.3 → plsqlwks-0.2.1}/plsqlwks/config/loader.py +5 -0
- {plsqlwks-0.1.9.3 → plsqlwks-0.2.1}/plsqlwks/config/models.py +5 -0
- {plsqlwks-0.1.9.3 → plsqlwks-0.2.1}/plsqlwks/config/settings.py +18 -0
- plsqlwks-0.2.1/plsqlwks/db/ddl_remap.py +132 -0
- plsqlwks-0.2.1/plsqlwks/db/dependencies.py +151 -0
- {plsqlwks-0.1.9.3 → plsqlwks-0.2.1}/plsqlwks/db/execution.py +45 -7
- {plsqlwks-0.1.9.3 → plsqlwks-0.2.1}/plsqlwks/db/models.py +3 -0
- {plsqlwks-0.1.9.3 → plsqlwks-0.2.1}/plsqlwks/db/session.py +32 -0
- plsqlwks-0.2.1/plsqlwks/db/table_export.py +464 -0
- plsqlwks-0.2.1/plsqlwks/db/timestamps.py +169 -0
- {plsqlwks-0.1.9.3 → plsqlwks-0.2.1}/plsqlwks/plugins/api.py +17 -0
- {plsqlwks-0.1.9.3 → plsqlwks-0.2.1}/plsqlwks/ui/app.py +84 -4
- {plsqlwks-0.1.9.3 → plsqlwks-0.2.1}/plsqlwks/ui/buffer.py +6 -0
- {plsqlwks-0.1.9.3 → plsqlwks-0.2.1}/plsqlwks/ui/commands.py +1 -0
- {plsqlwks-0.1.9.3 → plsqlwks-0.2.1}/plsqlwks/ui/constants.py +79 -8
- {plsqlwks-0.1.9.3 → plsqlwks-0.2.1}/plsqlwks/ui/db_operations.py +7 -4
- {plsqlwks-0.1.9.3 → plsqlwks-0.2.1}/plsqlwks/ui/db_session.py +2 -1
- plsqlwks-0.2.1/plsqlwks/ui/dependency_walker.py +290 -0
- {plsqlwks-0.1.9.3 → plsqlwks-0.2.1}/plsqlwks/ui/display.py +34 -0
- {plsqlwks-0.1.9.3 → plsqlwks-0.2.1}/plsqlwks/ui/documents.py +6 -1
- {plsqlwks-0.1.9.3 → plsqlwks-0.2.1}/plsqlwks/ui/errors.py +1 -1
- {plsqlwks-0.1.9.3 → plsqlwks-0.2.1}/plsqlwks/ui/key_reader.py +51 -7
- {plsqlwks-0.1.9.3 → plsqlwks-0.2.1}/plsqlwks/ui/keys.py +59 -61
- plsqlwks-0.2.1/plsqlwks/ui/output_selection.py +163 -0
- {plsqlwks-0.1.9.3 → plsqlwks-0.2.1}/plsqlwks/ui/plugin_host.py +27 -0
- {plsqlwks-0.1.9.3 → plsqlwks-0.2.1}/plsqlwks/ui/renderer.py +50 -22
- {plsqlwks-0.1.9.3 → plsqlwks-0.2.1}/plsqlwks/ui/result_controller.py +42 -0
- plsqlwks-0.2.1/plsqlwks/ui/sqlplus.py +182 -0
- {plsqlwks-0.1.9.3 → plsqlwks-0.2.1}/plsqlwks/ui/state.py +2 -0
- plsqlwks-0.2.1/plsqlwks/ui/table_export.py +242 -0
- {plsqlwks-0.1.9.3 → plsqlwks-0.2.1}/plsqlwks/ui/viewport.py +28 -4
- {plsqlwks-0.1.9.3 → plsqlwks-0.2.1}/plsqlwks.egg-info/SOURCES.txt +23 -1
- plsqlwks-0.2.1/plugins/dependencies-walker/install.plw +7 -0
- plsqlwks-0.2.1/plugins/dependencies-walker/payload/plugin.py +22 -0
- plsqlwks-0.2.1/plugins/packages/dependencies-walker-0.1.0.plwgn +0 -0
- plsqlwks-0.2.1/plugins/packages/sqlplus-0.1.0.plwgn +0 -0
- plsqlwks-0.2.1/plugins/packages/table-ddl-export-0.1.1.plwgn +0 -0
- plsqlwks-0.2.1/plugins/sqlplus/install.plw +7 -0
- plsqlwks-0.2.1/plugins/sqlplus/payload/__init__.py +0 -0
- plsqlwks-0.2.1/plugins/sqlplus/payload/plugin.py +22 -0
- plsqlwks-0.2.1/plugins/table-ddl-export/install.plw +7 -0
- plsqlwks-0.2.1/plugins/table-ddl-export/payload/__init__.py +0 -0
- plsqlwks-0.2.1/plugins/table-ddl-export/payload/plugin.py +21 -0
- plsqlwks-0.2.1/plugins/xlsx-export/payload/__init__.py +0 -0
- {plsqlwks-0.1.9.3 → plsqlwks-0.2.1}/tests/conftest.py +5 -0
- plsqlwks-0.2.1/tools/putty_keys.ps1 +286 -0
- plsqlwks-0.2.1/tools/windows_keys.cmd +4 -0
- plsqlwks-0.1.9.3/doc/PLUGIN_CATALOG.md +0 -100
- {plsqlwks-0.1.9.3 → plsqlwks-0.2.1}/license.txt +0 -0
- {plsqlwks-0.1.9.3 → plsqlwks-0.2.1}/plsqlwks/__main__.py +0 -0
- {plsqlwks-0.1.9.3 → plsqlwks-0.2.1}/plsqlwks/cli.py +0 -0
- {plsqlwks-0.1.9.3 → plsqlwks-0.2.1}/plsqlwks/config/__init__.py +0 -0
- {plsqlwks-0.1.9.3 → plsqlwks-0.2.1}/plsqlwks/config/paths.py +0 -0
- {plsqlwks-0.1.9.3 → plsqlwks-0.2.1}/plsqlwks/config/session.py +0 -0
- {plsqlwks-0.1.9.3 → plsqlwks-0.2.1}/plsqlwks/db/__init__.py +0 -0
- {plsqlwks-0.1.9.3 → plsqlwks-0.2.1}/plsqlwks/db/editing.py +0 -0
- {plsqlwks-0.1.9.3 → plsqlwks-0.2.1}/plsqlwks/db/explain.py +0 -0
- {plsqlwks-0.1.9.3 → plsqlwks-0.2.1}/plsqlwks/db/health.py +0 -0
- {plsqlwks-0.1.9.3 → plsqlwks-0.2.1}/plsqlwks/db/identifiers.py +0 -0
- {plsqlwks-0.1.9.3 → plsqlwks-0.2.1}/plsqlwks/db/metadata.py +0 -0
- {plsqlwks-0.1.9.3 → plsqlwks-0.2.1}/plsqlwks/db/sql_analysis.py +0 -0
- {plsqlwks-0.1.9.3 → plsqlwks-0.2.1}/plsqlwks/db/transactions.py +0 -0
- {plsqlwks-0.1.9.3 → plsqlwks-0.2.1}/plsqlwks/exporting.py +0 -0
- {plsqlwks-0.1.9.3 → plsqlwks-0.2.1}/plsqlwks/plugins/__init__.py +0 -0
- {plsqlwks-0.1.9.3 → plsqlwks-0.2.1}/plsqlwks/plugins/loader.py +0 -0
- {plsqlwks-0.1.9.3 → plsqlwks-0.2.1}/plsqlwks/plugins/management.py +0 -0
- {plsqlwks-0.1.9.3 → plsqlwks-0.2.1}/plsqlwks/sqlbinds.py +0 -0
- {plsqlwks-0.1.9.3 → plsqlwks-0.2.1}/plsqlwks/sqlsplit.py +0 -0
- {plsqlwks-0.1.9.3 → plsqlwks-0.2.1}/plsqlwks/ui/__init__.py +0 -0
- {plsqlwks-0.1.9.3 → plsqlwks-0.2.1}/plsqlwks/ui/application_controller.py +0 -0
- {plsqlwks-0.1.9.3 → plsqlwks-0.2.1}/plsqlwks/ui/browser.py +0 -0
- {plsqlwks-0.1.9.3 → plsqlwks-0.2.1}/plsqlwks/ui/catalog.py +0 -0
- {plsqlwks-0.1.9.3 → plsqlwks-0.2.1}/plsqlwks/ui/clipboard.py +0 -0
- {plsqlwks-0.1.9.3 → plsqlwks-0.2.1}/plsqlwks/ui/code_generation.py +0 -0
- {plsqlwks-0.1.9.3 → plsqlwks-0.2.1}/plsqlwks/ui/command_dispatcher.py +0 -0
- {plsqlwks-0.1.9.3 → plsqlwks-0.2.1}/plsqlwks/ui/completion.py +0 -0
- {plsqlwks-0.1.9.3 → plsqlwks-0.2.1}/plsqlwks/ui/db_worker.py +0 -0
- {plsqlwks-0.1.9.3 → plsqlwks-0.2.1}/plsqlwks/ui/dialogs.py +0 -0
- {plsqlwks-0.1.9.3 → plsqlwks-0.2.1}/plsqlwks/ui/editor_controller.py +0 -0
- {plsqlwks-0.1.9.3 → plsqlwks-0.2.1}/plsqlwks/ui/help.py +0 -0
- {plsqlwks-0.1.9.3 → plsqlwks-0.2.1}/plsqlwks/ui/input_controller.py +0 -0
- {plsqlwks-0.1.9.3 → plsqlwks-0.2.1}/plsqlwks/ui/menu.py +0 -0
- {plsqlwks-0.1.9.3 → plsqlwks-0.2.1}/plsqlwks/ui/ports.py +0 -0
- {plsqlwks-0.1.9.3 → plsqlwks-0.2.1}/plsqlwks/ui/query_controller.py +0 -0
- {plsqlwks-0.1.9.3 → plsqlwks-0.2.1}/plsqlwks/ui/result_export.py +0 -0
- {plsqlwks-0.1.9.3 → plsqlwks-0.2.1}/plsqlwks/ui/result_presenter.py +0 -0
- {plsqlwks-0.1.9.3 → plsqlwks-0.2.1}/plsqlwks/ui/results.py +0 -0
- {plsqlwks-0.1.9.3 → plsqlwks-0.2.1}/plsqlwks/ui/sql.py +0 -0
- {plsqlwks-0.1.9.3 → plsqlwks-0.2.1}/plsqlwks/ui/syntax.py +0 -0
- {plsqlwks-0.1.9.3 → plsqlwks-0.2.1}/plsqlwks/workspace.py +0 -0
- {plsqlwks-0.1.9.3 → plsqlwks-0.2.1}/plugins/csv-export/install.plw +0 -0
- {plsqlwks-0.1.9.3 → plsqlwks-0.2.1}/plugins/csv-export/payload/__init__.py +0 -0
- {plsqlwks-0.1.9.3 → plsqlwks-0.2.1}/plugins/csv-export/payload/plugin.py +0 -0
- {plsqlwks-0.1.9.3 → plsqlwks-0.2.1}/plugins/csv-export/payload/support.py +0 -0
- {plsqlwks-0.1.9.3 → plsqlwks-0.2.1}/plugins/csv-export/payload/writer.py +0 -0
- {plsqlwks-0.1.9.3 → plsqlwks-0.2.1}/plugins/csv2oratab/install.plw +0 -0
- {plsqlwks-0.1.9.3 → plsqlwks-0.2.1}/plugins/csv2oratab/payload/__init__.py +0 -0
- {plsqlwks-0.1.9.3 → plsqlwks-0.2.1}/plugins/csv2oratab/payload/csv2oratab.py +0 -0
- {plsqlwks-0.1.9.3 → plsqlwks-0.2.1}/plugins/csv2oratab/payload/plugin.py +0 -0
- {plsqlwks-0.1.9.3/plugins/html-export → plsqlwks-0.2.1/plugins/dependencies-walker}/payload/__init__.py +0 -0
- {plsqlwks-0.1.9.3 → plsqlwks-0.2.1}/plugins/html-export/install.plw +0 -0
- {plsqlwks-0.1.9.3/plugins/xlsx-export → plsqlwks-0.2.1/plugins/html-export}/payload/__init__.py +0 -0
- {plsqlwks-0.1.9.3 → plsqlwks-0.2.1}/plugins/html-export/payload/html_exporting.py +0 -0
- {plsqlwks-0.1.9.3 → plsqlwks-0.2.1}/plugins/html-export/payload/plugin.py +0 -0
- {plsqlwks-0.1.9.3 → plsqlwks-0.2.1}/plugins/html-export/payload/support.py +0 -0
- {plsqlwks-0.1.9.3 → plsqlwks-0.2.1}/plugins/html-export/payload/writer.py +0 -0
- {plsqlwks-0.1.9.3 → plsqlwks-0.2.1}/plugins/packages/csv-export-1.0.0.plwgn +0 -0
- {plsqlwks-0.1.9.3 → plsqlwks-0.2.1}/plugins/packages/csv2oratab-0.1.0.plwgn +0 -0
- {plsqlwks-0.1.9.3 → plsqlwks-0.2.1}/plugins/packages/html-export-1.0.0.plwgn +0 -0
- {plsqlwks-0.1.9.3 → plsqlwks-0.2.1}/plugins/packages/xlsx-export-1.0.0.plwgn +0 -0
- {plsqlwks-0.1.9.3 → plsqlwks-0.2.1}/plugins/xlsx-export/install.plw +0 -0
- {plsqlwks-0.1.9.3 → plsqlwks-0.2.1}/plugins/xlsx-export/payload/plugin.py +0 -0
- {plsqlwks-0.1.9.3 → plsqlwks-0.2.1}/plugins/xlsx-export/payload/support.py +0 -0
- {plsqlwks-0.1.9.3 → plsqlwks-0.2.1}/plugins/xlsx-export/payload/xlsx_exporting.py +0 -0
- {plsqlwks-0.1.9.3 → plsqlwks-0.2.1}/pyproject.toml +0 -0
- {plsqlwks-0.1.9.3 → plsqlwks-0.2.1}/pytest.ini +0 -0
- {plsqlwks-0.1.9.3 → plsqlwks-0.2.1}/rchar.py +0 -0
- {plsqlwks-0.1.9.3 → plsqlwks-0.2.1}/requirements.txt +0 -0
- {plsqlwks-0.1.9.3 → plsqlwks-0.2.1}/setup.cfg +0 -0
- {plsqlwks-0.1.9.3 → plsqlwks-0.2.1}/tests/fixtures/config_exports.txt +0 -0
- {plsqlwks-0.1.9.3 → plsqlwks-0.2.1}/tests/fixtures/ui_exports.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: plsqlwks
|
|
3
|
-
Version: 0.1
|
|
3
|
+
Version: 0.2.1
|
|
4
4
|
Summary: An ncurses SQL and PL/SQL workspace for Oracle databases.
|
|
5
5
|
Author: unu2000
|
|
6
6
|
License-Expression: LicenseRef-plsqlwks-Donationware
|
|
@@ -98,6 +98,55 @@ protect it with `chmod 600`.
|
|
|
98
98
|
`PLSQLWKS_ARRAYSIZE` sets the Oracle cursor array size. Both values must be
|
|
99
99
|
positive integers.
|
|
100
100
|
|
|
101
|
+
### Oracle Thin and Thick modes
|
|
102
|
+
|
|
103
|
+
Thin mode is the default and needs no Oracle Client installation. To use an
|
|
104
|
+
installed Oracle Client, start with `plsqlwks --thick`. Use `plsqlwks --thin` to
|
|
105
|
+
override a workspace's thick preference for one invocation. The flags are
|
|
106
|
+
mutually exclusive and are never saved to configuration.
|
|
107
|
+
|
|
108
|
+
For a persistent preference, edit the selected workspace's `config.ini` (or the
|
|
109
|
+
platform configuration file when using the default workspace):
|
|
110
|
+
|
|
111
|
+
```ini
|
|
112
|
+
[database]
|
|
113
|
+
thick_mode = no
|
|
114
|
+
oracle_client_lib_dir =
|
|
115
|
+
oracle_client_config_dir =
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
Set `thick_mode = yes` to enable Thick mode. Invalid boolean values are errors.
|
|
119
|
+
Both optional directories expand `~`; relative paths are resolved from the
|
|
120
|
+
configuration file's directory. Blank values use Oracle's normal discovery.
|
|
121
|
+
The directory settings are used only in Thick mode. All tabs and reconnects
|
|
122
|
+
share one driver mode; restart after changing mode or client settings.
|
|
123
|
+
|
|
124
|
+
Install an Oracle Instant Client **Basic** or **Basic Light** package compatible
|
|
125
|
+
with your Python architecture, python-oracledb version, and database. Libraries
|
|
126
|
+
are installed separately and are not bundled with PLSQLWKS. On Linux, normally
|
|
127
|
+
leave `oracle_client_lib_dir` blank and configure `ldconfig` or `LD_LIBRARY_PATH`
|
|
128
|
+
**before** launching Python. Setting that directory alone does not configure
|
|
129
|
+
Linux's dependent-library search path. On macOS, an explicit library directory
|
|
130
|
+
can be useful. When running through SSH or WSL, install the libraries where the
|
|
131
|
+
Python process runs. For a full Oracle Client installation, configure its
|
|
132
|
+
Oracle environment before launch.
|
|
133
|
+
|
|
134
|
+
`oracle_client_config_dir` selects the directory containing Oracle network
|
|
135
|
+
configuration such as `sqlnet.ora` and `tnsnames.ora`; when blank, Oracle uses
|
|
136
|
+
its normal lookup, including `TNS_ADMIN`. Native network encryption is configured
|
|
137
|
+
through Oracle Client's `sqlnet.ora` and the server's matching requirements.
|
|
138
|
+
The existing `ORACLE_USER`, `ORACLE_DSN`, and password-file authentication remain
|
|
139
|
+
in use. See the [Oracle Client initialization guide](https://python-oracledb.readthedocs.io/en/v3.4.2/user_guide/initialization.html)
|
|
140
|
+
for platform setup and the [compatibility contract](doc/COMPATIBILITY.md) for
|
|
141
|
+
validated combinations.
|
|
142
|
+
|
|
143
|
+
Client-loading failures such as `DPI-1047` stop startup before the terminal UI,
|
|
144
|
+
with no automatic fallback. Check library architecture, required system
|
|
145
|
+
libraries, and the pre-launch library search path. Mode conflicts or changed
|
|
146
|
+
initialization arguments require a process restart. Successful connection status
|
|
147
|
+
includes `Thin mode` or `Thick mode`. Help, version, and plugin management commands
|
|
148
|
+
do not initialize Oracle Client libraries.
|
|
149
|
+
|
|
101
150
|
## Install
|
|
102
151
|
|
|
103
152
|
Python 3.10 or newer is required, along with a compatible terminal and a Python
|
|
@@ -488,6 +537,149 @@ plsqlwks and asks whether to overwrite it, save under another name, or cancel.
|
|
|
488
537
|
Undo and redo update the unsaved-change marker by comparing the current content
|
|
489
538
|
with the last successful save.
|
|
490
539
|
|
|
540
|
+
## Windows PuTTY keyboard setup
|
|
541
|
+
|
|
542
|
+
For Windows PuTTY 0.83 and 0.85, use a saved session with these settings before
|
|
543
|
+
starting plsqlwks on the Linux/Unix host:
|
|
544
|
+
|
|
545
|
+
| PuTTY panel | Setting |
|
|
546
|
+
| --- | --- |
|
|
547
|
+
| Connection → Data | Terminal-type string: `xterm-256color` |
|
|
548
|
+
| Window → Translation | Remote character set: `UTF-8` |
|
|
549
|
+
| Terminal → Keyboard | Backspace: `Control-? (127)`; Home/End: `Standard` |
|
|
550
|
+
| Terminal → Keyboard | Function keys and keypad: `Xterm 216+` |
|
|
551
|
+
| Terminal → Keyboard | Shifted arrow keys: `xterm-style bitmap` |
|
|
552
|
+
| Terminal → Keyboard | Keep **Control-Alt is different from AltGr** enabled |
|
|
553
|
+
| Terminal → Features | Enable **Disable application cursor keys mode** and **Disable application keypad mode** |
|
|
554
|
+
| Terminal → Features | Leave **Disable bracketed paste mode** unchecked |
|
|
555
|
+
| Terminal | Local echo and local line editing: `Force off` |
|
|
556
|
+
|
|
557
|
+
Save the session and use a UTF-8 locale on the host. Disabling application cursor
|
|
558
|
+
keys is necessary because curses enables that mode, and PuTTY otherwise drops
|
|
559
|
+
arrow modifiers even when bitmap mode is selected.
|
|
560
|
+
|
|
561
|
+
### Exact Ctrl shortcuts with the Windows helper
|
|
562
|
+
|
|
563
|
+
Stock Windows PuTTY does not send Ctrl-Home/End, Ctrl-Shift-Home/End, or
|
|
564
|
+
Ctrl-Delete at all, and consumes modified PageUp/PageDown for scrollback.
|
|
565
|
+
Use the optional [Windows helper](tools/putty_keys.ps1) to make the original
|
|
566
|
+
shortcuts work. Run it on the **Windows computer running PuTTY**; from a checkout:
|
|
567
|
+
|
|
568
|
+
```powershell
|
|
569
|
+
powershell.exe -NoProfile -File .\tools\putty_keys.ps1
|
|
570
|
+
```
|
|
571
|
+
|
|
572
|
+
Focus the PuTTY window running plsqlwks, then press **Ctrl-Alt-F12** to enable
|
|
573
|
+
remapping for that window. The helper console confirms activation. It remaps
|
|
574
|
+
one selected PuTTY window while the helper is running. Press Ctrl-Alt-F12 again
|
|
575
|
+
to disable it before using another program in that terminal, or press Ctrl-C
|
|
576
|
+
in the helper console to stop it. Enabling a different PuTTY window switches
|
|
577
|
+
the selection to that window.
|
|
578
|
+
|
|
579
|
+
With the helper enabled, `Ctrl-Home` / `Ctrl-End` move to the beginning/end of
|
|
580
|
+
the editor buffer or the first/last result row. `Ctrl-Shift-Home` /
|
|
581
|
+
`Ctrl-Shift-End` select to buffer boundaries. The helper also restores
|
|
582
|
+
`Ctrl-Delete`, `Ctrl-Backspace`, `Ctrl-Enter`, `Ctrl-PageUp` / `Ctrl-PageDown`,
|
|
583
|
+
`Shift-PageUp` / `Shift-PageDown`, and `Ctrl+=`. Plain Enter and Backspace keep
|
|
584
|
+
their normal meaning. The helper requires only Windows PowerShell and its
|
|
585
|
+
included .NET runtime; it requires no administrator rights or installation.
|
|
586
|
+
Run the same command with `-SelfTest` to check its mappings without enabling it.
|
|
587
|
+
|
|
588
|
+
### Alternatives without the helper
|
|
589
|
+
|
|
590
|
+
Some physical combinations cannot reach plsqlwks distinctly in stock Windows
|
|
591
|
+
PuTTY. Use the following alternatives; they also work in terminals that send
|
|
592
|
+
these sequences, and the original bindings remain available elsewhere:
|
|
593
|
+
|
|
594
|
+
| Existing shortcut | PuTTY alternative | Action |
|
|
595
|
+
| --- | --- | --- |
|
|
596
|
+
| `Ctrl-Home` / `Ctrl-End` | `Alt-Home` / `Alt-End` | Editor buffer start/end; first/last result row |
|
|
597
|
+
| `Ctrl-Shift-Home` / `Ctrl-Shift-End` | `Alt-Shift-Home` / `Alt-Shift-End` | Select to editor buffer boundaries |
|
|
598
|
+
| `Ctrl-Delete` | `Alt-Delete` | Delete next word |
|
|
599
|
+
| `Ctrl-Enter` | `F5` or `Alt-X` | Execute selection/current statement |
|
|
600
|
+
| `Ctrl-PageUp` / `Ctrl-PageDown` | `Alt-PageUp` / `Alt-PageDown` | Page focused results; otherwise switch file tabs |
|
|
601
|
+
| `Shift-PageUp` / `Shift-PageDown` | `Ctrl-Shift-Up` / `Ctrl-Shift-Down` | Extend editor selection by page |
|
|
602
|
+
| `Ctrl-Backspace` | `Alt-Backspace` | Delete previous word |
|
|
603
|
+
| `Ctrl+=` | `Alt-O` → **Database** → **Reconnect** | Reconnect |
|
|
604
|
+
|
|
605
|
+
PuTTY sends the same carriage return for Enter and Ctrl-Enter, and the same
|
|
606
|
+
DEL byte for Backspace and Ctrl-Backspace. plsqlwks preserves newline and
|
|
607
|
+
single-character deletion for those bytes. PuTTY consumes Ctrl/Shift-PageUp
|
|
608
|
+
and PageDown for its own scrollback; changing the function-key setting does
|
|
609
|
+
not free them. See the [PuTTY keyboard settings](https://the.earth.li/~sgtatham/putty/0.85/htmldoc/Chapter4.html#config-keyboard)
|
|
610
|
+
and [scrollback shortcuts](https://the.earth.li/~sgtatham/putty/0.85/htmldoc/Chapter3.html#using-scrollback).
|
|
611
|
+
|
|
612
|
+
Use left Alt for application shortcuts; AltGr remains available for characters
|
|
613
|
+
on international keyboards. Shortcut digits and symbols refer to the character
|
|
614
|
+
on the active Windows layout: for example, Czech top-row digits need Shift,
|
|
615
|
+
so Alt-1 is typed with Alt-Shift-1. Use the layout's `+` or `=` character for
|
|
616
|
+
autocomplete refresh. `Ctrl-C`, `Ctrl-X`, and `Ctrl-V` operate on the
|
|
617
|
+
application/host clipboard with the existing internal fallback. SSH does not
|
|
618
|
+
make that the Windows clipboard. Use PuTTY's native paste (`Shift-Insert` or
|
|
619
|
+
right-click) to insert Windows clipboard text as bracketed paste, and PuTTY
|
|
620
|
+
mouse selection to copy to Windows. Leave plsqlwks' Ctrl-letter shortcuts
|
|
621
|
+
available to the server when customizing PuTTY clipboard settings.
|
|
622
|
+
|
|
623
|
+
For troubleshooting, run `python3 rchar.py` from the checkout in the same PuTTY
|
|
624
|
+
session to capture a key's actual bytes. Verify the session settings above
|
|
625
|
+
before reporting a shortcut failure.
|
|
626
|
+
|
|
627
|
+
## Windows Command Prompt keyboard setup
|
|
628
|
+
|
|
629
|
+
Use plsqlwks through `ssh.exe` or WSL inside **Command Prompt (`cmd.exe`)**.
|
|
630
|
+
The helper supports both the classic Windows console and Command Prompt hosted
|
|
631
|
+
by Windows Terminal. plsqlwks itself runs on the Linux/Unix host or inside WSL,
|
|
632
|
+
where Python provides curses.
|
|
633
|
+
|
|
634
|
+
In one Command Prompt window, connect to the host or start WSL:
|
|
635
|
+
|
|
636
|
+
```bat
|
|
637
|
+
ssh user@host
|
|
638
|
+
```
|
|
639
|
+
|
|
640
|
+
or:
|
|
641
|
+
|
|
642
|
+
```bat
|
|
643
|
+
wsl.exe
|
|
644
|
+
```
|
|
645
|
+
|
|
646
|
+
Then run the installed application in that Linux/Unix shell:
|
|
647
|
+
|
|
648
|
+
```sh
|
|
649
|
+
TERM=xterm-256color plsqlwks
|
|
650
|
+
```
|
|
651
|
+
|
|
652
|
+
In a **second Command Prompt window**, start the Windows helper from the checkout:
|
|
653
|
+
|
|
654
|
+
```bat
|
|
655
|
+
tools\windows_keys.cmd
|
|
656
|
+
```
|
|
657
|
+
|
|
658
|
+
Keep that helper window open. Focus the terminal running plsqlwks and press
|
|
659
|
+
**Ctrl-Alt-F12**; the helper confirms activation. The original shortcuts now
|
|
660
|
+
reach the application, including **Ctrl-Home/End**, **Ctrl-Shift-Home/End**,
|
|
661
|
+
modified arrows, word deletion, execution, paging, and `Ctrl+=`. `F11` executes
|
|
662
|
+
the script instead of switching Windows Terminal to fullscreen.
|
|
663
|
+
|
|
664
|
+
Use a dedicated terminal window for plsqlwks. The helper selects a window, so
|
|
665
|
+
disable it with Ctrl-Alt-F12 before switching that window to another tab, pane,
|
|
666
|
+
or program. Press Ctrl-C in the helper window to stop it. Left Alt is used for
|
|
667
|
+
shortcuts; AltGr remains available for typing. Leave the classic console's
|
|
668
|
+
**Use legacy console** option off. Use a UTF-8 locale on the Linux/Unix host.
|
|
669
|
+
|
|
670
|
+
For Windows Terminal, set `"altGrAliasing": false` in the Command Prompt
|
|
671
|
+
profile in its JSON settings. This keeps left Ctrl-Alt-C/R available for
|
|
672
|
+
commit/rollback on international keyboards while preserving the real AltGr
|
|
673
|
+
key. See Microsoft's [AltGr aliasing setting](https://learn.microsoft.com/en-us/windows/terminal/customize-settings/profile-advanced#altgr-aliasing).
|
|
674
|
+
|
|
675
|
+
The `.cmd` launcher uses the included Windows PowerShell runtime and applies
|
|
676
|
+
its script execution policy only to that helper process. No administrator
|
|
677
|
+
rights, installation, or permanent policy change is needed. Keep
|
|
678
|
+
`windows_keys.cmd` and `putty_keys.ps1` together when copying them elsewhere.
|
|
679
|
+
Run `tools\windows_keys.cmd -SelfTest` to check the helper without enabling it.
|
|
680
|
+
The original `powershell.exe -NoProfile -File .\tools\putty_keys.ps1` command
|
|
681
|
+
also works from Command Prompt and continues to support PuTTY.
|
|
682
|
+
|
|
491
683
|
## Keys
|
|
492
684
|
|
|
493
685
|
### Global
|
|
@@ -707,15 +899,27 @@ period; DATE and TIMESTAMP input uses ISO
|
|
|
707
899
|
Character and CLOB input is preserved as entered. Types that cannot be compared
|
|
708
900
|
without losing information, including time-zone timestamps and timestamps with
|
|
709
901
|
precision above six, are read-only in the grid.
|
|
710
|
-
In
|
|
711
|
-
|
|
712
|
-
lossless-fetch-unavailable markers
|
|
713
|
-
|
|
714
|
-
|
|
715
|
-
current Thin driver.
|
|
902
|
+
In both driver modes, ordinary SELECT/WITH queries format zoned timestamps on
|
|
903
|
+
Oracle to preserve their zone and fractional precision. Query forms that cannot
|
|
904
|
+
use this projection show explicit lossless-fetch-unavailable markers for
|
|
905
|
+
non-null zoned values on the native fetch path. Use an explicit `TO_CHAR`
|
|
906
|
+
expression with the required precision and zone fields for those query forms.
|
|
716
907
|
Displayed CLOB and BLOB values are limited to the first 65,536 characters or
|
|
717
908
|
bytes and include a truncation marker with the full size. Truncated LOB cells
|
|
718
909
|
cannot be edited safely. Schema-browser DDL is always read in full.
|
|
910
|
+
To copy DBMS_OUTPUT, show it with **F6** and focus it with **Tab**. Use
|
|
911
|
+
**Shift+navigation** to select text and **Ctrl+C** to copy; **Ctrl+A** selects
|
|
912
|
+
all output. **Alt-O -> Results -> Copy all DBMS_OUTPUT** also copies the whole
|
|
913
|
+
buffer while another pane is focused. Tab/Esc returns to the editor. Home/End
|
|
914
|
+
move within a displayed line; Ctrl+Home/End move to the output boundaries.
|
|
915
|
+
|
|
916
|
+
Copying preserves the stored text, whitespace, blank lines, and statement
|
|
917
|
+
headings, without screen wrapping or padding. The existing system clipboard
|
|
918
|
+
providers are used when available, with the internal clipboard as a fallback
|
|
919
|
+
(including remote PuTTY sessions). Ctrl+C still cancels a running operation
|
|
920
|
+
before performing a copy. Selection belongs to its file tab, survives appended
|
|
921
|
+
output and resizing, and resets when execution replaces the output.
|
|
922
|
+
|
|
719
923
|
DBMS_OUTPUT is collected after each statement and after every fetched result
|
|
720
924
|
page without replacing a real query grid. Output-read or cursor-cleanup failures
|
|
721
925
|
are displayed as warnings while preserving successfully fetched rows. PL/SQL
|
|
@@ -980,6 +1184,39 @@ lifecycle change requires a restart. See the
|
|
|
980
1184
|
[managed-package guide](https://gitlab.com/unununu/plsqlwks/-/blob/main/doc/PLUGINS.md#managed-plugin-packages)
|
|
981
1185
|
for the exact manifest, source layout, validation, replacement, and trust rules.
|
|
982
1186
|
|
|
1187
|
+
### Table DDL Export
|
|
1188
|
+
|
|
1189
|
+
Install `plugins/packages/table-ddl-export-0.1.1.plwgn` with
|
|
1190
|
+
`plsqlwks plugin install` and restart. **Alt-O -> Database -> Export table DDL**
|
|
1191
|
+
lets you choose a schema, filter table names as you type, select tables, and
|
|
1192
|
+
optionally remap them to another schema. It automatically includes related
|
|
1193
|
+
sequences and directly referencing packages, functions, procedures, and views, and follows
|
|
1194
|
+
required source-schema tables and views recursively. Definitions, constraints, indexes,
|
|
1195
|
+
foreign keys and triggers are ordered by creation dependencies in a new
|
|
1196
|
+
unsaved SQL tab for review. Generation activates that tab and focuses its editor.
|
|
1197
|
+
See the [selection keys and remapping details](doc/PLUGIN_CATALOG.md#table-ddl-export).
|
|
1198
|
+
|
|
1199
|
+
### Dependencies walker
|
|
1200
|
+
|
|
1201
|
+
Install the optional dependency browser and restart PLSQLWKS:
|
|
1202
|
+
|
|
1203
|
+
```bash
|
|
1204
|
+
plsqlwks plugin install plugins/packages/dependencies-walker-0.1.0.plwgn
|
|
1205
|
+
```
|
|
1206
|
+
|
|
1207
|
+
Choose **Alt-O -> Database -> Dependencies walker** and enter an object name,
|
|
1208
|
+
optionally qualified by schema. Expand with Enter/Right, collapse with Left,
|
|
1209
|
+
and use **D** (Depends on) or **U** (Used by) to follow the selected object in
|
|
1210
|
+
either direction. Backspace restores the previous tree; **R** refreshes and
|
|
1211
|
+
Esc closes. Packages combine specification/body relationships with labels.
|
|
1212
|
+
|
|
1213
|
+
The walker reads only visible Oracle-recorded dependencies, loads branches
|
|
1214
|
+
on demand, marks cycles, and leaves database-link references unexpanded.
|
|
1215
|
+
Dynamic SQL and foreign-key graphs are outside this view. See the
|
|
1216
|
+
[plugin catalog](https://gitlab.com/unununu/plsqlwks/-/blob/main/doc/PLUGIN_CATALOG.md#dependencies-walker)
|
|
1217
|
+
for all controls and installation details. No additional runtime dependency is
|
|
1218
|
+
required.
|
|
1219
|
+
|
|
983
1220
|
### Maintained csv2oratab integration
|
|
984
1221
|
|
|
985
1222
|
The maintained `csv2oratab-0.1.0.plwgn` catalog package adds **Alt-O -> Data ->
|
|
@@ -64,6 +64,55 @@ protect it with `chmod 600`.
|
|
|
64
64
|
`PLSQLWKS_ARRAYSIZE` sets the Oracle cursor array size. Both values must be
|
|
65
65
|
positive integers.
|
|
66
66
|
|
|
67
|
+
### Oracle Thin and Thick modes
|
|
68
|
+
|
|
69
|
+
Thin mode is the default and needs no Oracle Client installation. To use an
|
|
70
|
+
installed Oracle Client, start with `plsqlwks --thick`. Use `plsqlwks --thin` to
|
|
71
|
+
override a workspace's thick preference for one invocation. The flags are
|
|
72
|
+
mutually exclusive and are never saved to configuration.
|
|
73
|
+
|
|
74
|
+
For a persistent preference, edit the selected workspace's `config.ini` (or the
|
|
75
|
+
platform configuration file when using the default workspace):
|
|
76
|
+
|
|
77
|
+
```ini
|
|
78
|
+
[database]
|
|
79
|
+
thick_mode = no
|
|
80
|
+
oracle_client_lib_dir =
|
|
81
|
+
oracle_client_config_dir =
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
Set `thick_mode = yes` to enable Thick mode. Invalid boolean values are errors.
|
|
85
|
+
Both optional directories expand `~`; relative paths are resolved from the
|
|
86
|
+
configuration file's directory. Blank values use Oracle's normal discovery.
|
|
87
|
+
The directory settings are used only in Thick mode. All tabs and reconnects
|
|
88
|
+
share one driver mode; restart after changing mode or client settings.
|
|
89
|
+
|
|
90
|
+
Install an Oracle Instant Client **Basic** or **Basic Light** package compatible
|
|
91
|
+
with your Python architecture, python-oracledb version, and database. Libraries
|
|
92
|
+
are installed separately and are not bundled with PLSQLWKS. On Linux, normally
|
|
93
|
+
leave `oracle_client_lib_dir` blank and configure `ldconfig` or `LD_LIBRARY_PATH`
|
|
94
|
+
**before** launching Python. Setting that directory alone does not configure
|
|
95
|
+
Linux's dependent-library search path. On macOS, an explicit library directory
|
|
96
|
+
can be useful. When running through SSH or WSL, install the libraries where the
|
|
97
|
+
Python process runs. For a full Oracle Client installation, configure its
|
|
98
|
+
Oracle environment before launch.
|
|
99
|
+
|
|
100
|
+
`oracle_client_config_dir` selects the directory containing Oracle network
|
|
101
|
+
configuration such as `sqlnet.ora` and `tnsnames.ora`; when blank, Oracle uses
|
|
102
|
+
its normal lookup, including `TNS_ADMIN`. Native network encryption is configured
|
|
103
|
+
through Oracle Client's `sqlnet.ora` and the server's matching requirements.
|
|
104
|
+
The existing `ORACLE_USER`, `ORACLE_DSN`, and password-file authentication remain
|
|
105
|
+
in use. See the [Oracle Client initialization guide](https://python-oracledb.readthedocs.io/en/v3.4.2/user_guide/initialization.html)
|
|
106
|
+
for platform setup and the [compatibility contract](doc/COMPATIBILITY.md) for
|
|
107
|
+
validated combinations.
|
|
108
|
+
|
|
109
|
+
Client-loading failures such as `DPI-1047` stop startup before the terminal UI,
|
|
110
|
+
with no automatic fallback. Check library architecture, required system
|
|
111
|
+
libraries, and the pre-launch library search path. Mode conflicts or changed
|
|
112
|
+
initialization arguments require a process restart. Successful connection status
|
|
113
|
+
includes `Thin mode` or `Thick mode`. Help, version, and plugin management commands
|
|
114
|
+
do not initialize Oracle Client libraries.
|
|
115
|
+
|
|
67
116
|
## Install
|
|
68
117
|
|
|
69
118
|
Python 3.10 or newer is required, along with a compatible terminal and a Python
|
|
@@ -454,6 +503,149 @@ plsqlwks and asks whether to overwrite it, save under another name, or cancel.
|
|
|
454
503
|
Undo and redo update the unsaved-change marker by comparing the current content
|
|
455
504
|
with the last successful save.
|
|
456
505
|
|
|
506
|
+
## Windows PuTTY keyboard setup
|
|
507
|
+
|
|
508
|
+
For Windows PuTTY 0.83 and 0.85, use a saved session with these settings before
|
|
509
|
+
starting plsqlwks on the Linux/Unix host:
|
|
510
|
+
|
|
511
|
+
| PuTTY panel | Setting |
|
|
512
|
+
| --- | --- |
|
|
513
|
+
| Connection → Data | Terminal-type string: `xterm-256color` |
|
|
514
|
+
| Window → Translation | Remote character set: `UTF-8` |
|
|
515
|
+
| Terminal → Keyboard | Backspace: `Control-? (127)`; Home/End: `Standard` |
|
|
516
|
+
| Terminal → Keyboard | Function keys and keypad: `Xterm 216+` |
|
|
517
|
+
| Terminal → Keyboard | Shifted arrow keys: `xterm-style bitmap` |
|
|
518
|
+
| Terminal → Keyboard | Keep **Control-Alt is different from AltGr** enabled |
|
|
519
|
+
| Terminal → Features | Enable **Disable application cursor keys mode** and **Disable application keypad mode** |
|
|
520
|
+
| Terminal → Features | Leave **Disable bracketed paste mode** unchecked |
|
|
521
|
+
| Terminal | Local echo and local line editing: `Force off` |
|
|
522
|
+
|
|
523
|
+
Save the session and use a UTF-8 locale on the host. Disabling application cursor
|
|
524
|
+
keys is necessary because curses enables that mode, and PuTTY otherwise drops
|
|
525
|
+
arrow modifiers even when bitmap mode is selected.
|
|
526
|
+
|
|
527
|
+
### Exact Ctrl shortcuts with the Windows helper
|
|
528
|
+
|
|
529
|
+
Stock Windows PuTTY does not send Ctrl-Home/End, Ctrl-Shift-Home/End, or
|
|
530
|
+
Ctrl-Delete at all, and consumes modified PageUp/PageDown for scrollback.
|
|
531
|
+
Use the optional [Windows helper](tools/putty_keys.ps1) to make the original
|
|
532
|
+
shortcuts work. Run it on the **Windows computer running PuTTY**; from a checkout:
|
|
533
|
+
|
|
534
|
+
```powershell
|
|
535
|
+
powershell.exe -NoProfile -File .\tools\putty_keys.ps1
|
|
536
|
+
```
|
|
537
|
+
|
|
538
|
+
Focus the PuTTY window running plsqlwks, then press **Ctrl-Alt-F12** to enable
|
|
539
|
+
remapping for that window. The helper console confirms activation. It remaps
|
|
540
|
+
one selected PuTTY window while the helper is running. Press Ctrl-Alt-F12 again
|
|
541
|
+
to disable it before using another program in that terminal, or press Ctrl-C
|
|
542
|
+
in the helper console to stop it. Enabling a different PuTTY window switches
|
|
543
|
+
the selection to that window.
|
|
544
|
+
|
|
545
|
+
With the helper enabled, `Ctrl-Home` / `Ctrl-End` move to the beginning/end of
|
|
546
|
+
the editor buffer or the first/last result row. `Ctrl-Shift-Home` /
|
|
547
|
+
`Ctrl-Shift-End` select to buffer boundaries. The helper also restores
|
|
548
|
+
`Ctrl-Delete`, `Ctrl-Backspace`, `Ctrl-Enter`, `Ctrl-PageUp` / `Ctrl-PageDown`,
|
|
549
|
+
`Shift-PageUp` / `Shift-PageDown`, and `Ctrl+=`. Plain Enter and Backspace keep
|
|
550
|
+
their normal meaning. The helper requires only Windows PowerShell and its
|
|
551
|
+
included .NET runtime; it requires no administrator rights or installation.
|
|
552
|
+
Run the same command with `-SelfTest` to check its mappings without enabling it.
|
|
553
|
+
|
|
554
|
+
### Alternatives without the helper
|
|
555
|
+
|
|
556
|
+
Some physical combinations cannot reach plsqlwks distinctly in stock Windows
|
|
557
|
+
PuTTY. Use the following alternatives; they also work in terminals that send
|
|
558
|
+
these sequences, and the original bindings remain available elsewhere:
|
|
559
|
+
|
|
560
|
+
| Existing shortcut | PuTTY alternative | Action |
|
|
561
|
+
| --- | --- | --- |
|
|
562
|
+
| `Ctrl-Home` / `Ctrl-End` | `Alt-Home` / `Alt-End` | Editor buffer start/end; first/last result row |
|
|
563
|
+
| `Ctrl-Shift-Home` / `Ctrl-Shift-End` | `Alt-Shift-Home` / `Alt-Shift-End` | Select to editor buffer boundaries |
|
|
564
|
+
| `Ctrl-Delete` | `Alt-Delete` | Delete next word |
|
|
565
|
+
| `Ctrl-Enter` | `F5` or `Alt-X` | Execute selection/current statement |
|
|
566
|
+
| `Ctrl-PageUp` / `Ctrl-PageDown` | `Alt-PageUp` / `Alt-PageDown` | Page focused results; otherwise switch file tabs |
|
|
567
|
+
| `Shift-PageUp` / `Shift-PageDown` | `Ctrl-Shift-Up` / `Ctrl-Shift-Down` | Extend editor selection by page |
|
|
568
|
+
| `Ctrl-Backspace` | `Alt-Backspace` | Delete previous word |
|
|
569
|
+
| `Ctrl+=` | `Alt-O` → **Database** → **Reconnect** | Reconnect |
|
|
570
|
+
|
|
571
|
+
PuTTY sends the same carriage return for Enter and Ctrl-Enter, and the same
|
|
572
|
+
DEL byte for Backspace and Ctrl-Backspace. plsqlwks preserves newline and
|
|
573
|
+
single-character deletion for those bytes. PuTTY consumes Ctrl/Shift-PageUp
|
|
574
|
+
and PageDown for its own scrollback; changing the function-key setting does
|
|
575
|
+
not free them. See the [PuTTY keyboard settings](https://the.earth.li/~sgtatham/putty/0.85/htmldoc/Chapter4.html#config-keyboard)
|
|
576
|
+
and [scrollback shortcuts](https://the.earth.li/~sgtatham/putty/0.85/htmldoc/Chapter3.html#using-scrollback).
|
|
577
|
+
|
|
578
|
+
Use left Alt for application shortcuts; AltGr remains available for characters
|
|
579
|
+
on international keyboards. Shortcut digits and symbols refer to the character
|
|
580
|
+
on the active Windows layout: for example, Czech top-row digits need Shift,
|
|
581
|
+
so Alt-1 is typed with Alt-Shift-1. Use the layout's `+` or `=` character for
|
|
582
|
+
autocomplete refresh. `Ctrl-C`, `Ctrl-X`, and `Ctrl-V` operate on the
|
|
583
|
+
application/host clipboard with the existing internal fallback. SSH does not
|
|
584
|
+
make that the Windows clipboard. Use PuTTY's native paste (`Shift-Insert` or
|
|
585
|
+
right-click) to insert Windows clipboard text as bracketed paste, and PuTTY
|
|
586
|
+
mouse selection to copy to Windows. Leave plsqlwks' Ctrl-letter shortcuts
|
|
587
|
+
available to the server when customizing PuTTY clipboard settings.
|
|
588
|
+
|
|
589
|
+
For troubleshooting, run `python3 rchar.py` from the checkout in the same PuTTY
|
|
590
|
+
session to capture a key's actual bytes. Verify the session settings above
|
|
591
|
+
before reporting a shortcut failure.
|
|
592
|
+
|
|
593
|
+
## Windows Command Prompt keyboard setup
|
|
594
|
+
|
|
595
|
+
Use plsqlwks through `ssh.exe` or WSL inside **Command Prompt (`cmd.exe`)**.
|
|
596
|
+
The helper supports both the classic Windows console and Command Prompt hosted
|
|
597
|
+
by Windows Terminal. plsqlwks itself runs on the Linux/Unix host or inside WSL,
|
|
598
|
+
where Python provides curses.
|
|
599
|
+
|
|
600
|
+
In one Command Prompt window, connect to the host or start WSL:
|
|
601
|
+
|
|
602
|
+
```bat
|
|
603
|
+
ssh user@host
|
|
604
|
+
```
|
|
605
|
+
|
|
606
|
+
or:
|
|
607
|
+
|
|
608
|
+
```bat
|
|
609
|
+
wsl.exe
|
|
610
|
+
```
|
|
611
|
+
|
|
612
|
+
Then run the installed application in that Linux/Unix shell:
|
|
613
|
+
|
|
614
|
+
```sh
|
|
615
|
+
TERM=xterm-256color plsqlwks
|
|
616
|
+
```
|
|
617
|
+
|
|
618
|
+
In a **second Command Prompt window**, start the Windows helper from the checkout:
|
|
619
|
+
|
|
620
|
+
```bat
|
|
621
|
+
tools\windows_keys.cmd
|
|
622
|
+
```
|
|
623
|
+
|
|
624
|
+
Keep that helper window open. Focus the terminal running plsqlwks and press
|
|
625
|
+
**Ctrl-Alt-F12**; the helper confirms activation. The original shortcuts now
|
|
626
|
+
reach the application, including **Ctrl-Home/End**, **Ctrl-Shift-Home/End**,
|
|
627
|
+
modified arrows, word deletion, execution, paging, and `Ctrl+=`. `F11` executes
|
|
628
|
+
the script instead of switching Windows Terminal to fullscreen.
|
|
629
|
+
|
|
630
|
+
Use a dedicated terminal window for plsqlwks. The helper selects a window, so
|
|
631
|
+
disable it with Ctrl-Alt-F12 before switching that window to another tab, pane,
|
|
632
|
+
or program. Press Ctrl-C in the helper window to stop it. Left Alt is used for
|
|
633
|
+
shortcuts; AltGr remains available for typing. Leave the classic console's
|
|
634
|
+
**Use legacy console** option off. Use a UTF-8 locale on the Linux/Unix host.
|
|
635
|
+
|
|
636
|
+
For Windows Terminal, set `"altGrAliasing": false` in the Command Prompt
|
|
637
|
+
profile in its JSON settings. This keeps left Ctrl-Alt-C/R available for
|
|
638
|
+
commit/rollback on international keyboards while preserving the real AltGr
|
|
639
|
+
key. See Microsoft's [AltGr aliasing setting](https://learn.microsoft.com/en-us/windows/terminal/customize-settings/profile-advanced#altgr-aliasing).
|
|
640
|
+
|
|
641
|
+
The `.cmd` launcher uses the included Windows PowerShell runtime and applies
|
|
642
|
+
its script execution policy only to that helper process. No administrator
|
|
643
|
+
rights, installation, or permanent policy change is needed. Keep
|
|
644
|
+
`windows_keys.cmd` and `putty_keys.ps1` together when copying them elsewhere.
|
|
645
|
+
Run `tools\windows_keys.cmd -SelfTest` to check the helper without enabling it.
|
|
646
|
+
The original `powershell.exe -NoProfile -File .\tools\putty_keys.ps1` command
|
|
647
|
+
also works from Command Prompt and continues to support PuTTY.
|
|
648
|
+
|
|
457
649
|
## Keys
|
|
458
650
|
|
|
459
651
|
### Global
|
|
@@ -673,15 +865,27 @@ period; DATE and TIMESTAMP input uses ISO
|
|
|
673
865
|
Character and CLOB input is preserved as entered. Types that cannot be compared
|
|
674
866
|
without losing information, including time-zone timestamps and timestamps with
|
|
675
867
|
precision above six, are read-only in the grid.
|
|
676
|
-
In
|
|
677
|
-
|
|
678
|
-
lossless-fetch-unavailable markers
|
|
679
|
-
|
|
680
|
-
|
|
681
|
-
current Thin driver.
|
|
868
|
+
In both driver modes, ordinary SELECT/WITH queries format zoned timestamps on
|
|
869
|
+
Oracle to preserve their zone and fractional precision. Query forms that cannot
|
|
870
|
+
use this projection show explicit lossless-fetch-unavailable markers for
|
|
871
|
+
non-null zoned values on the native fetch path. Use an explicit `TO_CHAR`
|
|
872
|
+
expression with the required precision and zone fields for those query forms.
|
|
682
873
|
Displayed CLOB and BLOB values are limited to the first 65,536 characters or
|
|
683
874
|
bytes and include a truncation marker with the full size. Truncated LOB cells
|
|
684
875
|
cannot be edited safely. Schema-browser DDL is always read in full.
|
|
876
|
+
To copy DBMS_OUTPUT, show it with **F6** and focus it with **Tab**. Use
|
|
877
|
+
**Shift+navigation** to select text and **Ctrl+C** to copy; **Ctrl+A** selects
|
|
878
|
+
all output. **Alt-O -> Results -> Copy all DBMS_OUTPUT** also copies the whole
|
|
879
|
+
buffer while another pane is focused. Tab/Esc returns to the editor. Home/End
|
|
880
|
+
move within a displayed line; Ctrl+Home/End move to the output boundaries.
|
|
881
|
+
|
|
882
|
+
Copying preserves the stored text, whitespace, blank lines, and statement
|
|
883
|
+
headings, without screen wrapping or padding. The existing system clipboard
|
|
884
|
+
providers are used when available, with the internal clipboard as a fallback
|
|
885
|
+
(including remote PuTTY sessions). Ctrl+C still cancels a running operation
|
|
886
|
+
before performing a copy. Selection belongs to its file tab, survives appended
|
|
887
|
+
output and resizing, and resets when execution replaces the output.
|
|
888
|
+
|
|
685
889
|
DBMS_OUTPUT is collected after each statement and after every fetched result
|
|
686
890
|
page without replacing a real query grid. Output-read or cursor-cleanup failures
|
|
687
891
|
are displayed as warnings while preserving successfully fetched rows. PL/SQL
|
|
@@ -946,6 +1150,39 @@ lifecycle change requires a restart. See the
|
|
|
946
1150
|
[managed-package guide](https://gitlab.com/unununu/plsqlwks/-/blob/main/doc/PLUGINS.md#managed-plugin-packages)
|
|
947
1151
|
for the exact manifest, source layout, validation, replacement, and trust rules.
|
|
948
1152
|
|
|
1153
|
+
### Table DDL Export
|
|
1154
|
+
|
|
1155
|
+
Install `plugins/packages/table-ddl-export-0.1.1.plwgn` with
|
|
1156
|
+
`plsqlwks plugin install` and restart. **Alt-O -> Database -> Export table DDL**
|
|
1157
|
+
lets you choose a schema, filter table names as you type, select tables, and
|
|
1158
|
+
optionally remap them to another schema. It automatically includes related
|
|
1159
|
+
sequences and directly referencing packages, functions, procedures, and views, and follows
|
|
1160
|
+
required source-schema tables and views recursively. Definitions, constraints, indexes,
|
|
1161
|
+
foreign keys and triggers are ordered by creation dependencies in a new
|
|
1162
|
+
unsaved SQL tab for review. Generation activates that tab and focuses its editor.
|
|
1163
|
+
See the [selection keys and remapping details](doc/PLUGIN_CATALOG.md#table-ddl-export).
|
|
1164
|
+
|
|
1165
|
+
### Dependencies walker
|
|
1166
|
+
|
|
1167
|
+
Install the optional dependency browser and restart PLSQLWKS:
|
|
1168
|
+
|
|
1169
|
+
```bash
|
|
1170
|
+
plsqlwks plugin install plugins/packages/dependencies-walker-0.1.0.plwgn
|
|
1171
|
+
```
|
|
1172
|
+
|
|
1173
|
+
Choose **Alt-O -> Database -> Dependencies walker** and enter an object name,
|
|
1174
|
+
optionally qualified by schema. Expand with Enter/Right, collapse with Left,
|
|
1175
|
+
and use **D** (Depends on) or **U** (Used by) to follow the selected object in
|
|
1176
|
+
either direction. Backspace restores the previous tree; **R** refreshes and
|
|
1177
|
+
Esc closes. Packages combine specification/body relationships with labels.
|
|
1178
|
+
|
|
1179
|
+
The walker reads only visible Oracle-recorded dependencies, loads branches
|
|
1180
|
+
on demand, marks cycles, and leaves database-link references unexpanded.
|
|
1181
|
+
Dynamic SQL and foreign-key graphs are outside this view. See the
|
|
1182
|
+
[plugin catalog](https://gitlab.com/unununu/plsqlwks/-/blob/main/doc/PLUGIN_CATALOG.md#dependencies-walker)
|
|
1183
|
+
for all controls and installation details. No additional runtime dependency is
|
|
1184
|
+
required.
|
|
1185
|
+
|
|
949
1186
|
### Maintained csv2oratab integration
|
|
950
1187
|
|
|
951
1188
|
The maintained `csv2oratab-0.1.0.plwgn` catalog package adds **Alt-O -> Data ->
|