15-create-source.td 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  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. $ set-sql-timeout duration=1s
  10. > CREATE SECRET mysqlpass AS '${arg.mysql-root-password}'
  11. > CREATE CONNECTION mysqc TO MYSQL (
  12. HOST mysql,
  13. USER root,
  14. PASSWORD SECRET mysqlpass
  15. )
  16. $ mysql-connect name=mysql url=mysql://root@mysql password=${arg.mysql-root-password}
  17. $ mysql-execute name=mysql
  18. DROP DATABASE IF EXISTS public;
  19. CREATE DATABASE public;
  20. USE public;
  21. CREATE TABLE dummy (f1 INTEGER PRIMARY KEY, id VARCHAR(128));
  22. COMMIT;
  23. #
  24. # Validate CREATE SOURCE
  25. #
  26. > CREATE SOURCE da FROM MYSQL CONNECTION mysqc FOR ALL TABLES;
  27. > SELECT name, type FROM mz_sources WHERE type IN ('mysql', 'subsource') ORDER BY name DESC;
  28. name type
  29. ------------------------------
  30. da mysql
  31. dummy subsource
  32. > SELECT * FROM dummy;
  33. #
  34. # Validate sub-source naming
  35. #
  36. $ mysql-execute name=mysql
  37. DROP DATABASE IF EXISTS public;
  38. CREATE DATABASE public;
  39. USE public;
  40. CREATE TABLE t1 (f1 INTEGER);
  41. INSERT INTO t1 VALUES (1);
  42. CREATE TABLE t2 (f1 INTEGER);
  43. INSERT INTO t2 VALUES (5);
  44. COMMIT;
  45. > DROP SCHEMA IF EXISTS a;
  46. > CREATE SCHEMA a;
  47. > CREATE SOURCE a.mz_source FROM MYSQL CONNECTION mysqc
  48. FOR TABLES (public.t1);
  49. > SELECT * FROM a.t1;
  50. 1
  51. > DROP SCHEMA IF EXISTS another;
  52. > CREATE SCHEMA another;
  53. > CREATE SOURCE another.mz_source FROM MYSQL CONNECTION mysqc
  54. FOR TABLES (public.t1, public.t2);
  55. > SELECT * FROM another.t1;
  56. 1
  57. > SELECT * FROM another.t2;
  58. 5
  59. > DROP SCHEMA IF EXISTS foo;
  60. > DROP SCHEMA IF EXISTS bar;
  61. > CREATE SCHEMA foo;
  62. > CREATE SCHEMA bar;
  63. > CREATE SOURCE foo.mz_source FROM MYSQL CONNECTION mysqc
  64. FOR TABLES (public.t1 as table1, public.t2 as bar.table2);
  65. ! SELECT * FROM table1;
  66. contains: unknown
  67. # table1 gets created in source schema foo because it doesn't have any prefix
  68. > SELECT * FROM foo.table1;
  69. 1
  70. ! SELECT * FROM foo.table2;
  71. contains: unknown
  72. # table2 gets created in mentioned bar because it does have a prefix
  73. > SELECT * FROM bar.table2;
  74. 5
  75. > DROP SCHEMA IF EXISTS baz;
  76. > CREATE SCHEMA baz;
  77. > CREATE SOURCE baz.mz_source FROM MYSQL CONNECTION mysqc
  78. FOR SCHEMAS (public);
  79. > SELECT * FROM baz.t1;
  80. 1
  81. > SELECT * FROM baz.t2;
  82. 5