teradatasql 20.0.0

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.
Files changed (59) hide show
  1. package/LICENSE +196 -0
  2. package/README.md +1447 -0
  3. package/THIRDPARTYLICENSE +40 -0
  4. package/lib/index.d.ts +14 -0
  5. package/lib/index.d.ts.map +1 -0
  6. package/lib/index.js +50 -0
  7. package/lib/index.js.map +1 -0
  8. package/lib/teradata-connection.d.ts +74 -0
  9. package/lib/teradata-connection.d.ts.map +1 -0
  10. package/lib/teradata-connection.js +280 -0
  11. package/lib/teradata-connection.js.map +1 -0
  12. package/lib/teradata-cursor.d.ts +58 -0
  13. package/lib/teradata-cursor.d.ts.map +1 -0
  14. package/lib/teradata-cursor.js +746 -0
  15. package/lib/teradata-cursor.js.map +1 -0
  16. package/lib/teradata-exceptions.d.ts +19 -0
  17. package/lib/teradata-exceptions.d.ts.map +1 -0
  18. package/lib/teradata-exceptions.js +52 -0
  19. package/lib/teradata-exceptions.js.map +1 -0
  20. package/lib/teradata-logging.d.ts +23 -0
  21. package/lib/teradata-logging.d.ts.map +1 -0
  22. package/lib/teradata-logging.js +79 -0
  23. package/lib/teradata-logging.js.map +1 -0
  24. package/lib/teradatasql.dll +0 -0
  25. package/lib/teradatasql.dylib +0 -0
  26. package/lib/teradatasql.so +0 -0
  27. package/package.json +33 -0
  28. package/samples/AGKRBatchInsert.js +38 -0
  29. package/samples/AGKRInsertSelect.js +28 -0
  30. package/samples/BatchInsPerf.js +47 -0
  31. package/samples/BatchInsert.js +17 -0
  32. package/samples/BatchInsertCSV.js +54 -0
  33. package/samples/CharPadding.js +31 -0
  34. package/samples/CommitRollback.js +31 -0
  35. package/samples/DecimalDigits.js +49 -0
  36. package/samples/DriverDatabaseVersion.js +14 -0
  37. package/samples/ElicitFile.js +19 -0
  38. package/samples/ExportCSVResult.js +54 -0
  39. package/samples/ExportCSVResults.js +60 -0
  40. package/samples/FakeExportCSVResults.js +82 -0
  41. package/samples/FakeResultSetCon.js +72 -0
  42. package/samples/FakeResultSetEsc.js +72 -0
  43. package/samples/FastExportCSV.js +102 -0
  44. package/samples/FastExportTable.js +76 -0
  45. package/samples/FastLoadBatch.js +152 -0
  46. package/samples/FastLoadCSV.js +116 -0
  47. package/samples/HelpSession.js +18 -0
  48. package/samples/IgnoreErrors.js +125 -0
  49. package/samples/InsertLob.js +62 -0
  50. package/samples/InsertXML.js +37 -0
  51. package/samples/LoadCSVFile.js +41 -0
  52. package/samples/LobLocators.js +57 -0
  53. package/samples/MetadataFromPrepare.js +23 -0
  54. package/samples/ParamDataTypes.js +70 -0
  55. package/samples/ShowCommand.js +31 -0
  56. package/samples/StoredProc.js +77 -0
  57. package/samples/TJEncryptPassword.js +270 -0
  58. package/samples/airports.csv +9 -0
  59. package/samples/udfinc.c +6 -0
@@ -0,0 +1,116 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
+ }) : (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ o[k2] = m[k];
8
+ }));
9
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
10
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
11
+ }) : function(o, v) {
12
+ o["default"] = v;
13
+ });
14
+ var __importStar = (this && this.__importStar) || function (mod) {
15
+ if (mod && mod.__esModule) return mod;
16
+ var result = {};
17
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18
+ __setModuleDefault(result, mod);
19
+ return result;
20
+ };
21
+ Object.defineProperty(exports, "__esModule", { value: true });
22
+ const teradatasql_1 = require("teradatasql");
23
+ const fs = __importStar(require("fs"));
24
+ const con = new teradatasql_1.TeradataConnection();
25
+ con.connect({ host: "whomooz", user: "guest", password: "please" });
26
+ const cur = con.cursor();
27
+ const sTableName = "FastLoadCSV";
28
+ let sRequest = "DROP TABLE " + sTableName;
29
+ console.log(sRequest);
30
+ cur.execute(sRequest, undefined, 3807);
31
+ sRequest = "DROP TABLE " + sTableName + "_ERR_1";
32
+ console.log(sRequest);
33
+ cur.execute(sRequest, undefined, 3807);
34
+ sRequest = "DROP TABLE " + sTableName + "_ERR_2";
35
+ console.log(sRequest);
36
+ cur.execute(sRequest, undefined, 3807);
37
+ const records = ["c1,c2", "1,", "2,abc", "3,def", "4,mno", "5,", "6,pqr", "7,uvw", "8,xyz", "9,"];
38
+ console.log("records", records);
39
+ const csvFileName = "dataJs.csv";
40
+ for (const record of records) {
41
+ fs.appendFileSync(csvFileName, record + "\n");
42
+ }
43
+ try {
44
+ sRequest = "CREATE TABLE " + sTableName + " (c1 INTEGER NOT NULL, c2 VARCHAR(10))";
45
+ console.log(sRequest);
46
+ cur.execute(sRequest);
47
+ try {
48
+ console.log("con.autocommit = false");
49
+ con.autocommit = false;
50
+ try {
51
+ const sInsert = "{fn teradata_require_fastload}{fn teradata_read_csv(" + csvFileName + ")}INSERT INTO " + sTableName + " (?, ?)";
52
+ console.log(sInsert);
53
+ cur.execute(sInsert);
54
+ sRequest = "{fn teradata_nativesql}{fn teradata_get_warnings}" + sInsert;
55
+ console.log(sRequest);
56
+ cur.execute(sRequest);
57
+ let rows = cur.fetchall();
58
+ for (const row of rows) {
59
+ console.log(row);
60
+ }
61
+ sRequest = "{fn teradata_nativesql}{fn teradata_get_errors}" + sInsert;
62
+ console.log(sRequest);
63
+ cur.execute(sRequest);
64
+ rows = cur.fetchall();
65
+ for (const row of rows) {
66
+ console.log(row);
67
+ }
68
+ sRequest = "{fn teradata_nativesql}{fn teradata_logon_sequence_number}" + sInsert;
69
+ console.log(sRequest);
70
+ cur.execute(sRequest);
71
+ rows = cur.fetchall();
72
+ for (const row of rows) {
73
+ console.log(row);
74
+ }
75
+ console.log("con.commit()");
76
+ con.commit();
77
+ sRequest = "{fn teradata_nativesql}{fn teradata_get_warnings}" + sInsert;
78
+ console.log(sRequest);
79
+ cur.execute(sRequest);
80
+ rows = cur.fetchall();
81
+ for (const row of rows) {
82
+ console.log(row);
83
+ }
84
+ sRequest = "{fn teradata_nativesql}{fn teradata_get_errors}" + sInsert;
85
+ console.log(sRequest);
86
+ cur.execute(sRequest);
87
+ rows = cur.fetchall();
88
+ for (const row of rows) {
89
+ console.log(row);
90
+ }
91
+ }
92
+ finally {
93
+ console.log("con.autocommit = true");
94
+ con.autocommit = true;
95
+ }
96
+ sRequest = "SELECT * FROM " + sTableName + " ORDER BY 1";
97
+ console.log(sRequest);
98
+ cur.execute(sRequest);
99
+ const rows = cur.fetchall();
100
+ for (const row of rows) {
101
+ console.log(row);
102
+ }
103
+ }
104
+ finally {
105
+ sRequest = "DROP TABLE " + sTableName;
106
+ console.log(sRequest);
107
+ cur.execute(sRequest);
108
+ }
109
+ }
110
+ finally {
111
+ console.log(`delete ${csvFileName}`);
112
+ fs.unlinkSync(csvFileName);
113
+ }
114
+ cur.close();
115
+ con.close();
116
+ //# sourceMappingURL=FastLoadCSV.js.map
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const teradatasql_1 = require("teradatasql");
4
+ const con = new teradatasql_1.TeradataConnection();
5
+ con.connect({ host: "whomooz", user: "guest", password: "please" });
6
+ const cur = con.cursor();
7
+ cur.execute("help session");
8
+ const row = cur.fetchone();
9
+ if (row) {
10
+ for (let i = 0; i < row.length; i++) {
11
+ if (cur.description) {
12
+ console.log(`${cur.description[i][0].padEnd(40)}, ${row[i]}`);
13
+ }
14
+ }
15
+ }
16
+ cur.close();
17
+ con.close();
18
+ //# sourceMappingURL=HelpSession.js.map
@@ -0,0 +1,125 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const teradatasql_1 = require("teradatasql");
4
+ const con = new teradatasql_1.TeradataConnection();
5
+ con.connect({ host: "whomooz", user: "guest", password: "please" });
6
+ const cur = con.cursor();
7
+ console.log("Demonstrating how to ignore caught exceptions:");
8
+ console.log("drop user NonExistentUser");
9
+ try {
10
+ cur.execute("drop user NonExistentUser");
11
+ }
12
+ catch (ex) {
13
+ if (ex instanceof teradatasql_1.OperationalError && ex.message.includes("[Error 3802]")) {
14
+ console.log("Ignoring", ex.message.split("\n")[0]);
15
+ }
16
+ else {
17
+ throw ex;
18
+ }
19
+ }
20
+ console.log("drop view NonExistentView");
21
+ try {
22
+ cur.execute("drop view NonExistentView");
23
+ }
24
+ catch (ex) {
25
+ if (ex instanceof teradatasql_1.OperationalError && ex.message.includes("[Error 3807]")) {
26
+ console.log("Ignoring", ex.message.split("\n")[0]);
27
+ }
28
+ else {
29
+ throw ex;
30
+ }
31
+ }
32
+ console.log("drop macro NonExistentMacro");
33
+ try {
34
+ cur.execute("drop macro NonExistentMacro");
35
+ }
36
+ catch (ex) {
37
+ if (ex instanceof teradatasql_1.OperationalError && ex.message.includes("[Error 3824]")) {
38
+ console.log("Ignoring", ex.message.split("\n")[0]);
39
+ }
40
+ else {
41
+ throw ex;
42
+ }
43
+ }
44
+ console.log("drop table NonExistentTable");
45
+ try {
46
+ cur.execute("drop table NonExistentTable");
47
+ }
48
+ catch (ex) {
49
+ if (ex instanceof teradatasql_1.OperationalError && ex.message.includes("[Error 3807]")) {
50
+ console.log("Ignoring", ex.message.split("\n")[0]);
51
+ }
52
+ else {
53
+ throw ex;
54
+ }
55
+ }
56
+ console.log("drop database NonExistentDbase");
57
+ try {
58
+ cur.execute("drop database NonExistentDbase");
59
+ }
60
+ catch (ex) {
61
+ if (ex instanceof teradatasql_1.OperationalError && ex.message.includes("[Error 3802]")) {
62
+ console.log("Ignoring", ex.message.split("\n")[0]);
63
+ }
64
+ else {
65
+ throw ex;
66
+ }
67
+ }
68
+ console.log("drop procedure NonExistentProc");
69
+ try {
70
+ cur.execute("drop procedure NonExistentProc");
71
+ }
72
+ catch (ex) {
73
+ if (ex instanceof teradatasql_1.OperationalError && ex.message.includes("[Error 5495]")) {
74
+ console.log("Ignoring", ex.message.split("\n")[0]);
75
+ }
76
+ else {
77
+ throw ex;
78
+ }
79
+ }
80
+ console.log();
81
+ console.log("Demonstrating how to ignore a single error:");
82
+ console.log("drop table NonExistentTable");
83
+ cur.execute("drop table NonExistentTable", undefined, 3807);
84
+ console.log();
85
+ console.log("Demonstrating how to ignore several different errors:");
86
+ const nonExistenceErrors = [
87
+ 3526,
88
+ 3802,
89
+ 3807,
90
+ 3824,
91
+ 3913,
92
+ 4322,
93
+ 5322,
94
+ 5495,
95
+ 5589,
96
+ 5620,
97
+ 5623,
98
+ 5653,
99
+ 5901,
100
+ 6808,
101
+ 6831,
102
+ 6834,
103
+ 6849,
104
+ 6863,
105
+ 6934,
106
+ 6938,
107
+ 7972,
108
+ 9213,
109
+ 9403,
110
+ ];
111
+ console.log("drop user NonExistentUser");
112
+ cur.execute("drop user NonExistentUser", undefined, nonExistenceErrors);
113
+ console.log("drop view NonExistentView");
114
+ cur.execute("drop view NonExistentView", undefined, nonExistenceErrors);
115
+ console.log("drop macro NonExistentMacro");
116
+ cur.execute("drop macro NonExistentMacro", undefined, nonExistenceErrors);
117
+ console.log("drop table NonExistentTable");
118
+ cur.execute("drop table NonExistentTable", undefined, nonExistenceErrors);
119
+ console.log("drop database NonExistentDbase");
120
+ cur.execute("drop database NonExistentDbase", undefined, nonExistenceErrors);
121
+ console.log("drop procedure NonExistentProc");
122
+ cur.execute("drop procedure NonExistentProc", undefined, nonExistenceErrors);
123
+ cur.close();
124
+ con.close();
125
+ //# sourceMappingURL=IgnoreErrors.js.map
@@ -0,0 +1,62 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const teradatasql_1 = require("teradatasql");
4
+ function byte(s, encoding) {
5
+ return Uint8Array.from(Buffer.from(s, encoding));
6
+ }
7
+ function FormatValue(oValue) {
8
+ let s;
9
+ if (typeof oValue === "string") {
10
+ s = oValue;
11
+ if (s.length > 20) {
12
+ s = s.slice(0, 20) + " ...";
13
+ }
14
+ return s + ` (len=${oValue.length})`;
15
+ }
16
+ else if (oValue instanceof Uint8Array) {
17
+ s = Buffer.from(oValue).toString();
18
+ if (s.length > 20) {
19
+ s = s.slice(0, 20) + " ...";
20
+ }
21
+ return `byte('${s}')` + ` (len=${oValue.length})`;
22
+ }
23
+ else {
24
+ return oValue;
25
+ }
26
+ }
27
+ const con = new teradatasql_1.TeradataConnection();
28
+ con.connect({ host: "whomooz", user: "guest", password: "please", log: "8" });
29
+ const cur = con.cursor();
30
+ let sSQL = "create volatile table voltab (c1 integer, c2 blob, c3 clob) on commit preserve rows";
31
+ console.log(sSQL);
32
+ cur.execute(sSQL);
33
+ const abySmallBlob = byte("abc");
34
+ const abyLargeBlob = byte("ABC".repeat(75000));
35
+ const sSmallClob = "xyz";
36
+ const sLargeClob = "XYZ".repeat(25000);
37
+ sSQL = "insert into voltab values (?, ?, ?)";
38
+ console.log(sSQL);
39
+ cur.execute(sSQL, [1, abySmallBlob, sSmallClob]);
40
+ console.log(sSQL);
41
+ cur.execute(sSQL, [2, abyLargeBlob, sLargeClob]);
42
+ sSQL = "select * from voltab order by 1";
43
+ console.log(sSQL);
44
+ cur.execute(sSQL);
45
+ let nRow = 0;
46
+ let row = null;
47
+ while (true) {
48
+ row = cur.fetchone();
49
+ if (!row) {
50
+ break;
51
+ }
52
+ nRow += 1;
53
+ if (cur.description) {
54
+ for (let iColumn = 0; iColumn < row.length; iColumn++) {
55
+ console.log(`Row ${nRow} Column ${iColumn + 1} "${cur.description[iColumn][0]}" = ${FormatValue(row[iColumn])}`);
56
+ }
57
+ }
58
+ }
59
+ console.log(`Fetched ${nRow} rows`);
60
+ cur.close();
61
+ con.close();
62
+ //# sourceMappingURL=InsertLob.js.map
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const teradatasql_1 = require("teradatasql");
4
+ const con = new teradatasql_1.TeradataConnection();
5
+ con.connect({ host: "whomooz", user: "guest", password: "please" });
6
+ const cur = con.cursor();
7
+ cur.execute("create volatile table voltab (c1 integer, c2 xml) on commit preserve rows");
8
+ cur.execute("{fn teradata_parameter(2,XML)}insert into voltab values (?, ?)", [
9
+ [1, "<hello>world</hello>"],
10
+ [2, "<hello>moon</hello>"],
11
+ ]);
12
+ cur.execute("{fn teradata_fake_result_sets}select * from voltab order by 1");
13
+ const asTypeNames = [];
14
+ let row = cur.fetchone();
15
+ if (row) {
16
+ const json = JSON.parse(row[7].toString());
17
+ for (const elem of json) {
18
+ for (const k in elem) {
19
+ if (k === "TypeName") {
20
+ asTypeNames.push(elem[k]);
21
+ }
22
+ }
23
+ }
24
+ }
25
+ cur.nextset();
26
+ const rows = cur.fetchall();
27
+ for (let nRow = 0; nRow < rows.length; nRow++) {
28
+ row = rows[nRow];
29
+ if (row && cur.description) {
30
+ for (let iColumn = 0; iColumn < row.length; iColumn++) {
31
+ console.log(`Row ${nRow + 1} Column ${cur.description[iColumn][0]} ${asTypeNames[iColumn].padEnd(7)} ${row[iColumn]}`);
32
+ }
33
+ }
34
+ }
35
+ cur.close();
36
+ con.close();
37
+ //# sourceMappingURL=InsertXML.js.map
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
+ }) : (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ o[k2] = m[k];
8
+ }));
9
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
10
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
11
+ }) : function(o, v) {
12
+ o["default"] = v;
13
+ });
14
+ var __importStar = (this && this.__importStar) || function (mod) {
15
+ if (mod && mod.__esModule) return mod;
16
+ var result = {};
17
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18
+ __setModuleDefault(result, mod);
19
+ return result;
20
+ };
21
+ Object.defineProperty(exports, "__esModule", { value: true });
22
+ const fs = __importStar(require("fs"));
23
+ const sync_1 = require("csv-parse/sync");
24
+ const teradatasql_1 = require("teradatasql");
25
+ const con = new teradatasql_1.TeradataConnection();
26
+ con.connect({ host: "whomooz", user: "guest", password: "please" });
27
+ const cur = con.cursor();
28
+ cur.execute("create volatile table Airports (City varchar(100), Airport varchar(100), AirportCode varchar(10)) on commit preserve rows");
29
+ console.log("Slower approach - use a cvs module to parse data values from a CSV file");
30
+ const records = sync_1.parse(fs.readFileSync("airports.csv", { encoding: "utf-8" }));
31
+ cur.execute("insert into Airports (?, ?, ?)", records);
32
+ cur.execute("select AirportCode, Airport, City from Airports order by AirportCode");
33
+ console.log(cur.fetchall());
34
+ cur.execute("delete from Airports");
35
+ console.log("Faster approach - the driver loads data values from a CSV file");
36
+ cur.execute("{fn teradata_read_csv(airports.csv)}insert into Airports (?, ?, ?)");
37
+ cur.execute("select AirportCode, Airport, City from Airports order by AirportCode");
38
+ console.log(cur.fetchall());
39
+ cur.close();
40
+ con.close();
41
+ //# sourceMappingURL=LoadCSVFile.js.map
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const teradatasql_1 = require("teradatasql");
4
+ function byte(s, encoding) {
5
+ return Uint8Array.from(Buffer.from(s, encoding));
6
+ }
7
+ function ReadLobValueFromLobLocator(con, abyLocator, sTypeName) {
8
+ if (!(abyLocator instanceof Uint8Array)) {
9
+ throw TypeError("abyLocator must be Unint8Array");
10
+ }
11
+ const cur = con.cursor();
12
+ sSQL = "{fn teradata_parameter(1," + sTypeName + ")}select ?";
13
+ console.log(sSQL);
14
+ cur.execute(sSQL, [abyLocator]);
15
+ const row = cur.fetchone();
16
+ let result = null;
17
+ if (row) {
18
+ result = row[0];
19
+ }
20
+ cur.close();
21
+ return result;
22
+ }
23
+ const con = new teradatasql_1.TeradataConnection();
24
+ con.connect({ host: "whomooz", user: "guest", password: "please" });
25
+ const cur = con.cursor();
26
+ let sSQL = "create volatile table voltab (c1 integer, c2 blob, c3 clob, c4 xml, c5 st_geometry, c6 json) on commit preserve rows";
27
+ console.log(sSQL);
28
+ cur.execute(sSQL);
29
+ const sXML = '<?xml version="1.0" encoding="UTF-8"?><foo>bar</foo>';
30
+ const sJSON = '{"foo":"bar"}';
31
+ sSQL =
32
+ "insert into voltab values (1, '" + Buffer.from(byte("ABC")).toString("hex") + "'xbv, 'clobval', '" + sXML + "', 'point(1 2)', '" + sJSON + "')";
33
+ console.log(sSQL);
34
+ cur.execute(sSQL);
35
+ sSQL = "{fn teradata_lobselect(S)}{fn teradata_fake_result_sets}select * from voltab order by 1";
36
+ console.log(sSQL);
37
+ cur.execute(sSQL);
38
+ const aoFakeResultSetRow = cur.fetchone();
39
+ if (aoFakeResultSetRow) {
40
+ const sResultSetColumnMetadataJSON = aoFakeResultSetRow[7].toString();
41
+ const amapResultSetColumnMetadata = JSON.parse(sResultSetColumnMetadataJSON);
42
+ cur.nextset();
43
+ const aoRealResultSetRow = cur.fetchone();
44
+ if (aoRealResultSetRow) {
45
+ for (let iColumn = 0; iColumn < aoRealResultSetRow.length; iColumn++) {
46
+ let oValue = aoRealResultSetRow[iColumn];
47
+ const sTypeName = amapResultSetColumnMetadata[iColumn]["TypeName"];
48
+ if (sTypeName.startsWith("LOCATOR(")) {
49
+ oValue = ReadLobValueFromLobLocator(con, oValue, sTypeName);
50
+ }
51
+ console.log(`Column ${iColumn + 1} ${sTypeName} value: ${oValue}`);
52
+ }
53
+ }
54
+ }
55
+ cur.close();
56
+ con.close();
57
+ //# sourceMappingURL=LobLocators.js.map
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const teradatasql_1 = require("teradatasql");
4
+ const con = new teradatasql_1.TeradataConnection();
5
+ con.connect({ host: "whomooz", user: "guest", password: "please" });
6
+ const cur = con.cursor();
7
+ cur.execute("{fn teradata_rpo(S)}{fn teradata_fake_result_sets}select * from dbc.dbcinfo where infokey=?");
8
+ const row = cur.fetchone();
9
+ if (row && cur.description) {
10
+ console.log("SQL statement metadata from prepare operation:");
11
+ console.log();
12
+ for (let i = 0; i < cur.description.length; i++) {
13
+ console.log(` Column [${i}] ${cur.description[i][0].padEnd(18)} : ${row[i]}`);
14
+ }
15
+ console.log("Result set column metadata as JSON:");
16
+ console.log(JSON.parse(row[7]));
17
+ console.log();
18
+ console.log("Parameter marker metadata as JSON:");
19
+ console.log(JSON.parse(row[8]));
20
+ }
21
+ cur.close();
22
+ con.close();
23
+ //# sourceMappingURL=MetadataFromPrepare.js.map
@@ -0,0 +1,70 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const teradatasql_1 = require("teradatasql");
4
+ function byte(s, encoding) {
5
+ return Uint8Array.from(Buffer.from(s, encoding));
6
+ }
7
+ const con = new teradatasql_1.TeradataConnection();
8
+ con.connect({ host: "whomooz", user: "guest", password: "please" });
9
+ const cur = con.cursor();
10
+ const aao = [
11
+ ["BYTEINT", 1n],
12
+ ["SMALLINT", 2n],
13
+ ["INTEGER", 3n],
14
+ ["BIGINT", 4n],
15
+ ["FLOAT", "5"],
16
+ ["NUMBER", "6"],
17
+ ["DECIMAL(18)", "7"],
18
+ ["DECIMAL(38)", "8"],
19
+ ["PERIOD(DATE)", "0009-09-09,0909-09-09"],
20
+ ["PERIOD(TIME)", "10:10:10.101000,10:10:10.101010"],
21
+ ["PERIOD(TIME WITH TIME ZONE)", "11:11:11.111110+11:11,11:11:11.111111+11:11"],
22
+ ["PERIOD(TIMESTAMP)", "1212-01-12 12:12:12.121212,1212-02-12 12:12:12.121212"],
23
+ ["PERIOD(TIMESTAMP WITH TIME ZONE)", "1313-01-13 13:13:13.131313+13:13,1313-02-13 13:13:13.131313+13:13"],
24
+ ["INTERVAL YEAR(4)", "-1414"],
25
+ ["INTERVAL YEAR(4) TO MONTH", "-1515-11"],
26
+ ["INTERVAL MONTH(4)", "-1616"],
27
+ ["INTERVAL DAY(4)", "-1717"],
28
+ ["INTERVAL DAY(4) TO HOUR", "-1818 18"],
29
+ ["INTERVAL DAY(4) TO MINUTE", "-1919 19:19"],
30
+ ["INTERVAL DAY(4) TO SECOND", "-2020 20:20:20.202020"],
31
+ ["INTERVAL HOUR(4)", "-2121"],
32
+ ["INTERVAL HOUR(4) TO MINUTE", "-2222:22"],
33
+ ["INTERVAL HOUR(4) TO SECOND", "-2323:23:23.232323"],
34
+ ["INTERVAL MINUTE(4)", "-2424"],
35
+ ["INTERVAL MINUTE(4) TO SECOND", "-2525:25.252525"],
36
+ ["INTERVAL SECOND(4)", "-2626.262626"],
37
+ ["BYTE(2)", byte("27")],
38
+ ["CHAR(2)", "28"],
39
+ ];
40
+ console.log(" teradata_parameter bind type Result from TYPE function Round-trip data value");
41
+ console.log(" -------------------------------- ----------------------------------- ---------------------");
42
+ for (let n = 0; n < aao.length; n++) {
43
+ const ao = aao[n];
44
+ const sDataType = ao[0];
45
+ const oValue = ao[1];
46
+ cur.execute("{fn teradata_parameter(1," + sDataType + ")}select trim(type(?))", [null]);
47
+ const row = cur.fetchone();
48
+ const sTypeFuncResult = row ? row[0] : "";
49
+ let oOutput;
50
+ if (sDataType.startsWith("PERIOD")) {
51
+ cur.execute("create volatile table volatiletable (c1 " + sDataType + ") no primary index on commit preserve rows");
52
+ cur.execute("{fn teradata_parameter(1," + sDataType + ")}insert into volatiletable values (?)", [oValue]);
53
+ cur.execute("select * from volatiletable");
54
+ const row = cur.fetchone();
55
+ oOutput = row ? row[0] : null;
56
+ cur.execute("drop table volatiletable");
57
+ }
58
+ else if (sDataType.startsWith("BYTE(")) {
59
+ oOutput = 'byte("' + Buffer.from(oValue).toString() + '")';
60
+ }
61
+ else {
62
+ cur.execute("{fn teradata_parameter(1," + sDataType + ")}select ?", [oValue]);
63
+ const row = cur.fetchone();
64
+ oOutput = row ? row[0] : null;
65
+ }
66
+ console.log(`${(n + 1).toString().padEnd(2)} ${sDataType.padEnd(33)} ${sTypeFuncResult.padEnd(36)} ${oOutput}`);
67
+ }
68
+ cur.close();
69
+ con.close();
70
+ //# sourceMappingURL=ParamDataTypes.js.map
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const teradatasql_1 = require("teradatasql");
4
+ function ShowCommand(cur, s) {
5
+ console.log("-- " + s);
6
+ cur.execute(s);
7
+ let n = 1;
8
+ while (true) {
9
+ console.log(`-- result set ${n}`);
10
+ const rows = cur.fetchall();
11
+ for (const row of rows) {
12
+ const s = JSON.stringify(row).split("\\r").join("\n");
13
+ console.log(s.slice(2, s.length - 2));
14
+ }
15
+ if (cur.nextset()) {
16
+ n += 1;
17
+ }
18
+ else {
19
+ break;
20
+ }
21
+ }
22
+ }
23
+ const con = new teradatasql_1.TeradataConnection();
24
+ con.connect({ host: "whomooz", user: "guest", password: "please" });
25
+ const cur = con.cursor();
26
+ ShowCommand(cur, "show view DBC.DBCInfo");
27
+ console.log();
28
+ ShowCommand(cur, "show select * from DBC.DBCInfo");
29
+ cur.close();
30
+ con.close();
31
+ //# sourceMappingURL=ShowCommand.js.map
@@ -0,0 +1,77 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const teradatasql_1 = require("teradatasql");
4
+ function DisplayResults(cur) {
5
+ while (true) {
6
+ console.log(" === metadata ===");
7
+ console.log(" cur.rowcount:", cur.rowcount);
8
+ console.log(" cur.description:", cur.description);
9
+ console.log(" === result ===");
10
+ console.log(cur.fetchall());
11
+ if (!cur.nextset()) {
12
+ break;
13
+ }
14
+ }
15
+ }
16
+ function cur_execute(cur, sSQL, params) {
17
+ console.log();
18
+ console.log("cur.execute", sSQL, "bound values", params);
19
+ cur.execute(sSQL, params);
20
+ DisplayResults(cur);
21
+ }
22
+ function cur_callproc(cur, sProcName, params) {
23
+ console.log();
24
+ console.log("cur.callproc", sProcName, "bound values", params);
25
+ cur.callproc(sProcName, params);
26
+ DisplayResults(cur);
27
+ }
28
+ const con = new teradatasql_1.TeradataConnection();
29
+ con.connect({ host: "whomooz", user: "guest", password: "please" });
30
+ const cur = con.cursor();
31
+ cur.execute("replace procedure examplestoredproc (in p1 integer, inout p2 integer) begin set p2 = p1 + p2 ; end ;");
32
+ try {
33
+ cur_execute(cur, "{call examplestoredproc (3, 5)}");
34
+ cur_execute(cur, "{call examplestoredproc (?, ?)}", [10, 7]);
35
+ cur_callproc(cur, "examplestoredproc", [20, 4]);
36
+ cur.execute("replace procedure examplestoredproc (out p1 varchar(100)) begin set p1 = 'foobar' ; end ;");
37
+ cur_execute(cur, "{call examplestoredproc (?)}");
38
+ cur.execute(`replace procedure examplestoredproc ()
39
+ dynamic result sets 1
40
+ begin
41
+ declare cur1 cursor with return for select * from dbc.dbcinfo order by 1 ;
42
+ open cur1 ;
43
+ end ;`);
44
+ cur_execute(cur, "{call examplestoredproc}");
45
+ cur_callproc(cur, "examplestoredproc");
46
+ cur.execute(`replace procedure examplestoredproc (in p1 integer, inout p2 integer, inout p3 integer)
47
+ dynamic result sets 2
48
+ begin
49
+ declare cur1 cursor with return for select * from dbc.dbcinfo order by 1 ;
50
+ declare cur2 cursor with return for select infodata, infokey from dbc.dbcinfo order by 1 ;
51
+ open cur1 ;
52
+ open cur2 ;
53
+ set p2 = p1 + p2 ;
54
+ set p3 = p1 * p3 ;
55
+ end ;`);
56
+ cur_execute(cur, "{call examplestoredproc (2, 1, 3)}");
57
+ cur_execute(cur, "{call examplestoredproc (?, ?, ?)}", [3, 2, 4]);
58
+ cur_callproc(cur, "examplestoredproc", [10, 3, 2]);
59
+ cur.execute(`replace procedure examplestoredproc (in p1 integer, inout p2 integer, out p3 varchar(100))
60
+ dynamic result sets 2
61
+ begin
62
+ declare cur1 cursor with return for select * from dbc.dbcinfo order by 1 desc ;
63
+ declare cur2 cursor with return for select infodata, infokey from dbc.dbcinfo order by 1 ;
64
+ open cur1 ;
65
+ open cur2 ;
66
+ set p2 = p1 + p2 ;
67
+ set p3 = 'hello' ;
68
+ end ;`);
69
+ cur_execute(cur, "{call examplestoredproc (10, 5, ?)}");
70
+ cur_execute(cur, "{call examplestoredproc (?, ?, ?)}", [20, 7]);
71
+ }
72
+ finally {
73
+ cur.execute("drop procedure examplestoredproc");
74
+ }
75
+ cur.close();
76
+ con.close();
77
+ //# sourceMappingURL=StoredProc.js.map