20-column-options.td 3.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. # Copyright Materialize, Inc. and contributors. All rights reserved.
  2. #
  3. # Use of this software is governed by the Business Source License
  4. # included in the LICENSE file at the root of this repository.
  5. #
  6. # As of the Change Date specified in that file, in accordance with
  7. # the Business Source License, use of this software will be governed
  8. # by the Apache License, Version 2.0.
  9. # Setup SQL Server state.
  10. #
  11. # Create a table that has CDC enabled.
  12. $ postgres-execute connection=postgres://mz_system:materialize@${testdrive.materialize-internal-sql-addr}
  13. ALTER SYSTEM SET enable_sql_server_source = true;
  14. $ sql-server-connect name=sql-server
  15. server=tcp:sql-server,1433;IntegratedSecurity=true;TrustServerCertificate=true;User ID=${arg.default-sql-server-user};Password=${arg.default-sql-server-password}
  16. $ sql-server-execute name=sql-server
  17. DROP DATABASE IF EXISTS test_column_options;
  18. CREATE DATABASE test_column_options;
  19. USE test_column_options;
  20. EXEC sys.sp_cdc_enable_db;
  21. ALTER DATABASE test_column_options SET ALLOW_SNAPSHOT_ISOLATION ON;
  22. CREATE TABLE t1_columns (c1 decimal(20, 10), c2 time, c3 money, c4 varbinary(100));
  23. EXEC sys.sp_cdc_enable_table @source_schema = 'dbo', @source_name = 't1_columns', @role_name = 'SA', @supports_net_changes = 0;
  24. INSERT INTO t1_columns VALUES (1.444889, '12:00:00', '$100.99', 0x1100AB);
  25. CREATE TABLE t2_columns (c1 varchar(256));
  26. EXEC sys.sp_cdc_enable_table @source_schema = 'dbo', @source_name = 't2_columns', @role_name = 'SA', @supports_net_changes = 0;
  27. INSERT INTO t2_columns VALUES ('invisible');
  28. CREATE TABLE dummy (data int);
  29. EXEC sys.sp_cdc_enable_table @source_schema = 'dbo', @source_name = 'dummy', @role_name = 'SA', @supports_net_changes = 0;
  30. > CREATE SECRET IF NOT EXISTS sql_server_pass AS '${arg.default-sql-server-password}'
  31. > CREATE CONNECTION sql_server_columns_connection TO SQL SERVER (
  32. HOST 'sql-server',
  33. PORT 1433,
  34. DATABASE test_column_options,
  35. USER '${arg.default-sql-server-user}',
  36. PASSWORD = SECRET sql_server_pass
  37. );
  38. > CREATE SOURCE t1_columns_sql_server
  39. FROM SQL SERVER CONNECTION sql_server_columns_connection (
  40. TEXT COLUMNS (dbo.t1_columns.c1, dbo.t1_columns.c2, dbo.t1_columns.c4),
  41. EXCLUDE COLUMNS (dbo.t1_columns.c3)
  42. )
  43. FOR TABLES (dbo.t1_columns);
  44. > SHOW CREATE SOURCE t1_columns_sql_server;
  45. materialize.public.t1_columns_sql_server "CREATE SOURCE materialize.public.t1_columns_sql_server\nIN CLUSTER quickstart\nFROM\n SQL SERVER CONNECTION materialize.public.sql_server_columns_connection (TEXT COLUMNS = (dbo.t1_columns.c1, dbo.t1_columns.c2, dbo.t1_columns.c4), EXCLUDE COLUMNS = (dbo.t1_columns.c3))\nFOR TABLES (test_column_options.dbo.t1_columns AS materialize.public.t1_columns)\nEXPOSE PROGRESS AS materialize.public.t1_columns_sql_server_progress;"
  46. > SHOW COLUMNS FROM t1_columns;
  47. c1 true text ""
  48. c2 true text ""
  49. c4 true text ""
  50. # Wait until snapshot has emitted stats and then insert a new row
  51. # to force LSN in MS SQL to progress.
  52. > SELECT s.name, ss.snapshot_records_known = ss.snapshot_records_staged
  53. FROM mz_internal.mz_source_statistics ss JOIN mz_sources s using (id)
  54. WHERE s.name = 't1_columns_sql_server' AND ss.snapshot_records_staged > 0;
  55. t1_columns_sql_server true
  56. $ sql-server-execute name=sql-server
  57. INSERT INTO dummy VALUES (1);
  58. > SELECT c1, c2, c4 FROM t1_columns;
  59. 1.4448890000 12:00:00 EQCr
  60. $ sql-server-execute name=sql-server
  61. INSERT INTO t1_columns VALUES (2.000001, '01:59:32.99901', '$0.89', 0x1122AABBCC00DD), (NULL, NULL, '$99.99', NULL);
  62. > SELECT c1, c2, c4 FROM t1_columns;
  63. 1.4448890000 12:00:00 EQCr
  64. 2.0000010000 01:59:32.999010 ESKqu8wA3Q==
  65. <null> <null> <null>
  66. ! CREATE SOURCE t2_columns_sql_server
  67. FROM SQL SERVER CONNECTION sql_server_columns_connection (
  68. EXCLUDE COLUMNS (dbo.t2_columns.c1)
  69. )
  70. FOR TABLES (dbo.t2_columns);
  71. contains:Table t2_columns had all columns excluded
  72. > DROP SOURCE t1_columns_sql_server CASCADE;