Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Dolt creates secondary indexes of columns in a foreign when you run a delete query and there are foreign key constraints #5316

Closed
timsehn opened this issue Feb 6, 2023 · 4 comments
Labels
bug Something isn't working sql Issue with SQL

Comments

@timsehn
Copy link
Sponsor Contributor

timsehn commented Feb 6, 2023

I made the HEAD version of this database using a dolt version from last week.

https://www.dolthub.com/repositories/dolthub/employees

When I import this dump over top of it:

https://drive.google.com/file/d/11EWKXEty8JJ-79thlZLGg3dwSWd98Q0k/view?usp=share_link

I get schema diffs of the form:

$ dolt diff
diff --dolt a/departments b/departments
--- a/departments @ lgthhijtmjtgsoi1n9dr2mtfp34q86pf
+++ b/departments @ v4tiho4848oqg6ip33k4hkj9319a8e6o
 CREATE TABLE `departments` (
   `dept_no` char(4) COLLATE utf8mb4_0900_ai_ci NOT NULL,
   `dept_name` varchar(40) COLLATE utf8mb4_0900_ai_ci NOT NULL,
   PRIMARY KEY (`dept_no`),
-  UNIQUE KEY `dept_name` (`dept_name`)
+  UNIQUE KEY `dept_name` (`dept_name`),
+  UNIQUE KEY `dept_no` (`dept_no`)
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
diff --dolt a/dept_emp b/dept_emp
--- a/dept_emp @ q1phkqedcjm2slfc30hbpllk1f7agl2k
+++ b/dept_emp @ 73lh4bdg7k4g37mkv1fshllqmsm530un
 CREATE TABLE `dept_emp` (
   `emp_no` int NOT NULL,
   `dept_no` char(4) COLLATE utf8mb4_0900_ai_ci NOT NULL,
   `from_date` date NOT NULL,
   `to_date` date NOT NULL,
   PRIMARY KEY (`emp_no`,`dept_no`),
   KEY `dept_no` (`dept_no`),
+  KEY `emp_no` (`emp_no`),
   CONSTRAINT `dept_emp_ibfk_1` FOREIGN KEY (`emp_no`) REFERENCES `employees` (`emp_no`) ON DELETE CASCADE,
   CONSTRAINT `dept_emp_ibfk_2` FOREIGN KEY (`dept_no`) REFERENCES `departments` (`dept_no`) ON DELETE CASCADE
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
diff --dolt a/dept_manager b/dept_manager
--- a/dept_manager @ 2k6ft35d42ccgfn68o483va71s0fb740
+++ b/dept_manager @ qbhjqfvcgf6hbov9ldq1u2llpitbgio2
 CREATE TABLE `dept_manager` (
   `emp_no` int NOT NULL,
   `dept_no` char(4) COLLATE utf8mb4_0900_ai_ci NOT NULL,
   `from_date` date NOT NULL,
   `to_date` date NOT NULL,
   PRIMARY KEY (`emp_no`,`dept_no`),
   KEY `dept_no` (`dept_no`),
+  KEY `emp_no` (`emp_no`),
   CONSTRAINT `dept_manager_ibfk_1` FOREIGN KEY (`emp_no`) REFERENCES `employees` (`emp_no`) ON DELETE CASCADE,
   CONSTRAINT `dept_manager_ibfk_2` FOREIGN KEY (`dept_no`) REFERENCES `departments` (`dept_no`) ON DELETE CASCADE
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
diff --dolt a/dolt_schemas b/dolt_schemas
--- a/dolt_schemas @ nc0osef92rlmrl8fbquf6t6c0qmbak3i
+++ b/dolt_schemas @ o2j214ke2eqcpikq10uvgoheh1fm2c35
+---+------+----------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----+-----------------+
|   | type | name                 | fragment                                                                                                                                                                                                                                                                                                                                                                                                                             | id | extra           |
+---+------+----------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----+-----------------+
| - | view | current_dept_emp     | /*!50001 CREATE ALGORITHM=UNDEFINED */
/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */
/*!50001 VIEW `current_dept_emp` AS select `l`.`emp_no` AS `emp_no`,`d`.`dept_no` AS `dept_no`,`l`.`from_date` AS `from_date`,`l`.`to_date` AS `to_date` from (`dept_emp` `d` join `dept_emp_latest_date` `l` on(((`d`.`emp_no` = `l`.`emp_no`) and (`d`.`from_date` = `l`.`from_date`) and (`l`.`to_date` = `d`.`to_date`)))) */ | 3  | {"CreatedAt":0} |
| - | view | dept_emp_latest_date | /*!50001 CREATE ALGORITHM=UNDEFINED */
/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */
/*!50001 VIEW `dept_emp_latest_date` AS select `dept_emp`.`emp_no` AS `emp_no`,max(`dept_emp`.`from_date`) AS `from_date`,max(`dept_emp`.`to_date`) AS `to_date` from `dept_emp` group by `dept_emp`.`emp_no` */                                                                                                                  | 4  | {"CreatedAt":0} |
| + | view | current_dept_emp     | /*!50001 CREATE ALGORITHM=UNDEFINED */
/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */
/*!50001 VIEW `current_dept_emp` AS select `l`.`emp_no` AS `emp_no`,`d`.`dept_no` AS `dept_no`,`l`.`from_date` AS `from_date`,`l`.`to_date` AS `to_date` from (`dept_emp` `d` join `dept_emp_latest_date` `l` on(((`d`.`emp_no` = `l`.`emp_no`) and (`d`.`from_date` = `l`.`from_date`) and (`l`.`to_date` = `d`.`to_date`)))) */ | 11 | {"CreatedAt":0} |
| + | view | dept_emp_latest_date | /*!50001 CREATE ALGORITHM=UNDEFINED */
/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */
/*!50001 VIEW `dept_emp_latest_date` AS select `dept_emp`.`emp_no` AS `emp_no`,max(`dept_emp`.`from_date`) AS `from_date`,max(`dept_emp`.`to_date`) AS `to_date` from `dept_emp` group by `dept_emp`.`emp_no` */                                                                                                                  | 12 | {"CreatedAt":0} |
+---+------+----------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----+-----------------+
diff --dolt a/employees b/employees
--- a/employees @ 5508scksq9c6jrvfgjvb1fo9bb0cc2b4
+++ b/employees @ u2b6ri8dco3h04turdgvcjq4vnpdeg0d
 CREATE TABLE `employees` (
   `emp_no` int NOT NULL,
   `birth_date` date NOT NULL,
   `first_name` varchar(14) COLLATE utf8mb4_0900_ai_ci NOT NULL,
   `last_name` varchar(16) COLLATE utf8mb4_0900_ai_ci NOT NULL,
   `gender` enum('M','F') COLLATE utf8mb4_0900_ai_ci NOT NULL,
   `hire_date` date NOT NULL,
-  PRIMARY KEY (`emp_no`)
+  PRIMARY KEY (`emp_no`),
+  UNIQUE KEY `emp_no` (`emp_no`)
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
+---+--------+------------+------------+-----------+--------+------------+
|   | emp_no | birth_date | first_name | last_name | gender | hire_date  |
+---+--------+------------+------------+-----------+--------+------------+
| + | 500000 | 1980-02-03 | Timothy    | Sehn      | M      | 2023-02-03 |
+---+--------+------------+------------+-----------+--------+------------+
diff --dolt a/salaries b/salaries
--- a/salaries @ 0kjejpdctgce2mtiop70268aghhkn7qt
+++ b/salaries @ ionlcu7vouvanbmjlspndhql1102sg5e
+---+--------+---------+------------+------------+
|   | emp_no | salary  | from_date  | to_date    |
+---+--------+---------+------------+------------+
| + | 500000 | 1000000 | 2023-02-03 | 2023-02-03 |
+---+--------+---------+------------+------------+
diff --dolt a/titles b/titles
--- a/titles @ 1epjoj1m9s201qejt4p0kkklkgsj2d8c
+++ b/titles @ lmg19jnai96317ae89ugi4d1o7424i9s
 CREATE TABLE `titles` (
   `emp_no` int NOT NULL,
   `title` varchar(50) COLLATE utf8mb4_0900_ai_ci NOT NULL,
   `from_date` date NOT NULL,
   `to_date` date DEFAULT NULL,
   PRIMARY KEY (`emp_no`,`title`,`from_date`),
+  KEY `emp_no` (`emp_no`),
   CONSTRAINT `titles_ibfk_1` FOREIGN KEY (`emp_no`) REFERENCES `employees` (`emp_no`) ON DELETE CASCADE
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

If I then checkout a table, make a data modification I get the following error:

$ dolt commit -am "Added Tim to database."
error: Failed to commit changes.
cause: foreign key `salaries_ibfk_1` has entered an invalid state, table `salaries` is missing the index `emp_no`
@timsehn
Copy link
Sponsor Contributor Author

timsehn commented Feb 6, 2023

Importing the dump doesn't generate the indexes. This query does:

$ dolt sql -q "delete from employees where emp_no > 500000"                             
Query OK, 2 rows affected (28.86 sec)
$ dolt diff                                                
diff --dolt a/departments b/departments
--- a/departments @ lgthhijtmjtgsoi1n9dr2mtfp34q86pf
+++ b/departments @ v4tiho4848oqg6ip33k4hkj9319a8e6o
 CREATE TABLE `departments` (
   `dept_no` char(4) COLLATE utf8mb4_0900_ai_ci NOT NULL,
   `dept_name` varchar(40) COLLATE utf8mb4_0900_ai_ci NOT NULL,
   PRIMARY KEY (`dept_no`),
-  UNIQUE KEY `dept_name` (`dept_name`)
+  UNIQUE KEY `dept_name` (`dept_name`),
+  UNIQUE KEY `dept_no` (`dept_no`)
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
diff --dolt a/dept_emp b/dept_emp
--- a/dept_emp @ q1phkqedcjm2slfc30hbpllk1f7agl2k
+++ b/dept_emp @ 73lh4bdg7k4g37mkv1fshllqmsm530un
 CREATE TABLE `dept_emp` (
   `emp_no` int NOT NULL,
   `dept_no` char(4) COLLATE utf8mb4_0900_ai_ci NOT NULL,
   `from_date` date NOT NULL,
   `to_date` date NOT NULL,
   PRIMARY KEY (`emp_no`,`dept_no`),
   KEY `dept_no` (`dept_no`),
+  KEY `emp_no` (`emp_no`),
   CONSTRAINT `dept_emp_ibfk_1` FOREIGN KEY (`emp_no`) REFERENCES `employees` (`emp_no`) ON DELETE CASCADE,
   CONSTRAINT `dept_emp_ibfk_2` FOREIGN KEY (`dept_no`) REFERENCES `departments` (`dept_no`) ON DELETE CASCADE
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
diff --dolt a/dept_manager b/dept_manager
--- a/dept_manager @ 2k6ft35d42ccgfn68o483va71s0fb740
+++ b/dept_manager @ qbhjqfvcgf6hbov9ldq1u2llpitbgio2
 CREATE TABLE `dept_manager` (
   `emp_no` int NOT NULL,
   `dept_no` char(4) COLLATE utf8mb4_0900_ai_ci NOT NULL,
   `from_date` date NOT NULL,
   `to_date` date NOT NULL,
   PRIMARY KEY (`emp_no`,`dept_no`),
   KEY `dept_no` (`dept_no`),
+  KEY `emp_no` (`emp_no`),
   CONSTRAINT `dept_manager_ibfk_1` FOREIGN KEY (`emp_no`) REFERENCES `employees` (`emp_no`) ON DELETE CASCADE,
   CONSTRAINT `dept_manager_ibfk_2` FOREIGN KEY (`dept_no`) REFERENCES `departments` (`dept_no`) ON DELETE CASCADE
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
diff --dolt a/dolt_schemas b/dolt_schemas
--- a/dolt_schemas @ nc0osef92rlmrl8fbquf6t6c0qmbak3i
+++ b/dolt_schemas @ mp6n1bfd3hk5h6lvsvplqj0dj59q83og
+---+------+----------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----+-----------------+
|   | type | name                 | fragment                                                                                                                                                                                                                                                                                                                                                                                                                             | id | extra           |
+---+------+----------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----+-----------------+
| - | view | current_dept_emp     | /*!50001 CREATE ALGORITHM=UNDEFINED */
/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */
/*!50001 VIEW `current_dept_emp` AS select `l`.`emp_no` AS `emp_no`,`d`.`dept_no` AS `dept_no`,`l`.`from_date` AS `from_date`,`l`.`to_date` AS `to_date` from (`dept_emp` `d` join `dept_emp_latest_date` `l` on(((`d`.`emp_no` = `l`.`emp_no`) and (`d`.`from_date` = `l`.`from_date`) and (`l`.`to_date` = `d`.`to_date`)))) */ | 3  | {"CreatedAt":0} |
| - | view | dept_emp_latest_date | /*!50001 CREATE ALGORITHM=UNDEFINED */
/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */
/*!50001 VIEW `dept_emp_latest_date` AS select `dept_emp`.`emp_no` AS `emp_no`,max(`dept_emp`.`from_date`) AS `from_date`,max(`dept_emp`.`to_date`) AS `to_date` from `dept_emp` group by `dept_emp`.`emp_no` */                                                                                                                  | 4  | {"CreatedAt":0} |
| + | view | current_dept_emp     | /*!50001 CREATE ALGORITHM=UNDEFINED */
/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */
/*!50001 VIEW `current_dept_emp` AS select `l`.`emp_no` AS `emp_no`,`d`.`dept_no` AS `dept_no`,`l`.`from_date` AS `from_date`,`l`.`to_date` AS `to_date` from (`dept_emp` `d` join `dept_emp_latest_date` `l` on(((`d`.`emp_no` = `l`.`emp_no`) and (`d`.`from_date` = `l`.`from_date`) and (`l`.`to_date` = `d`.`to_date`)))) */ | 15 | {"CreatedAt":0} |
| + | view | dept_emp_latest_date | /*!50001 CREATE ALGORITHM=UNDEFINED */
/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */
/*!50001 VIEW `dept_emp_latest_date` AS select `dept_emp`.`emp_no` AS `emp_no`,max(`dept_emp`.`from_date`) AS `from_date`,max(`dept_emp`.`to_date`) AS `to_date` from `dept_emp` group by `dept_emp`.`emp_no` */                                                                                                                  | 16 | {"CreatedAt":0} |
+---+------+----------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----+-----------------+
diff --dolt a/employees b/employees
--- a/employees @ 5508scksq9c6jrvfgjvb1fo9bb0cc2b4
+++ b/employees @ u2b6ri8dco3h04turdgvcjq4vnpdeg0d
 CREATE TABLE `employees` (
   `emp_no` int NOT NULL,
   `birth_date` date NOT NULL,
   `first_name` varchar(14) COLLATE utf8mb4_0900_ai_ci NOT NULL,
   `last_name` varchar(16) COLLATE utf8mb4_0900_ai_ci NOT NULL,
   `gender` enum('M','F') COLLATE utf8mb4_0900_ai_ci NOT NULL,
   `hire_date` date NOT NULL,
-  PRIMARY KEY (`emp_no`)
+  PRIMARY KEY (`emp_no`),
+  UNIQUE KEY `emp_no` (`emp_no`)
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
+---+--------+------------+------------+-----------+--------+------------+
|   | emp_no | birth_date | first_name | last_name | gender | hire_date  |
+---+--------+------------+------------+-----------+--------+------------+
| + | 500000 | 1980-02-03 | Timothy    | Sehn      | M      | 2023-02-03 |
+---+--------+------------+------------+-----------+--------+------------+
diff --dolt a/salaries b/salaries
--- a/salaries @ 0kjejpdctgce2mtiop70268aghhkn7qt
+++ b/salaries @ 0ace6113s1rdvge4iapomatubrmolkte
 CREATE TABLE `salaries` (
   `emp_no` int NOT NULL,
   `salary` int NOT NULL,
   `from_date` date NOT NULL,
   `to_date` date NOT NULL,
   PRIMARY KEY (`emp_no`,`from_date`),
+  KEY `emp_no` (`emp_no`),
   CONSTRAINT `salaries_ibfk_1` FOREIGN KEY (`emp_no`) REFERENCES `employees` (`emp_no`) ON DELETE CASCADE
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
+---+--------+---------+------------+------------+
|   | emp_no | salary  | from_date  | to_date    |
+---+--------+---------+------------+------------+
| < | 39989  | 69400   | 2000-04-24 | 2001-04-24 |
| > | 39989  | 69399   | 2000-04-24 | 2001-04-24 |
| < | 44532  | 65784   | 1993-11-17 | 1994-11-17 |
| > | 44532  | 65783   | 1993-11-17 | 1994-11-17 |
| < | 80523  | 64338   | 2000-08-05 | 2001-08-05 |
| > | 80523  | 64337   | 2000-08-05 | 2001-08-05 |
| < | 107185 | 67646   | 1989-03-13 | 1990-03-13 |
| > | 107185 | 67645   | 1989-03-13 | 1990-03-13 |
| < | 212744 | 67374   | 2001-09-02 | 9999-01-01 |
| > | 212744 | 67373   | 2001-09-02 | 9999-01-01 |
| < | 261446 | 95776   | 1990-03-05 | 1991-03-05 |
| > | 261446 | 95775   | 1990-03-05 | 1991-03-05 |
| < | 406776 | 51009   | 1996-11-03 | 1997-11-03 |
| > | 406776 | 51008   | 1996-11-03 | 1997-11-03 |
| < | 472928 | 82207   | 2000-07-30 | 2001-07-30 |
| > | 472928 | 82206   | 2000-07-30 | 2001-07-30 |
| < | 480394 | 40219   | 1990-02-06 | 1991-02-06 |
| > | 480394 | 40218   | 1990-02-06 | 1991-02-06 |
| < | 490123 | 98183   | 2002-07-01 | 9999-01-01 |
| > | 490123 | 98182   | 2002-07-01 | 9999-01-01 |
| + | 500000 | 2000000 | 2023-02-03 | 2023-02-06 |
+---+--------+---------+------------+------------+
diff --dolt a/titles b/titles
--- a/titles @ 1epjoj1m9s201qejt4p0kkklkgsj2d8c
+++ b/titles @ lmg19jnai96317ae89ugi4d1o7424i9s
 CREATE TABLE `titles` (
   `emp_no` int NOT NULL,
   `title` varchar(50) COLLATE utf8mb4_0900_ai_ci NOT NULL,
   `from_date` date NOT NULL,
   `to_date` date DEFAULT NULL,
   PRIMARY KEY (`emp_no`,`title`,`from_date`),
+  KEY `emp_no` (`emp_no`),
   CONSTRAINT `titles_ibfk_1` FOREIGN KEY (`emp_no`) REFERENCES `employees` (`emp_no`) ON DELETE CASCADE
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

@timsehn timsehn changed the title New dolt version creates secondary indexes of columns in a foreign key even when they are in a primary key. Dolt creates secondary indexes of columns in a foreign when you run a delete query and there are foreign key constraints Feb 6, 2023
@timsehn timsehn added bug Something isn't working sql Issue with SQL labels Feb 6, 2023
@timsehn
Copy link
Sponsor Contributor Author

timsehn commented Feb 7, 2023

It goes without saying that DELETE queries should not make schema changes.

@jycor
Copy link
Contributor

jycor commented Feb 7, 2023

It turns out there were two issues.

One issue is that we were incorrectly creating SECONDARY INDEXES for foreign keys that were unresolved, but referenced valid PRIMARY KEYS.
The fix for that is here: #5319

However, a db can only get into that state because of this second issue.
When we SET FOREIGN_KEY_CHECKS=0, we don't do any foreign key resolving.
As a result, we don't assign all the references or create any indexes until a query involving those tables is run with FOREIGN_KEY_CHECKS=1

Example:
dolt:

tmp> set foreign_key_checks=0;
tmp> create table child (j int, constraint fk1 foreign key (j) references parent (i));
tmp> show create table child;
+-------+-----------------------------------------------------------------------------+
| Table | Create Table                                                                |
+-------+-----------------------------------------------------------------------------+
| child | CREATE TABLE `child` (
  `j` int,
  CONSTRAINT `fk1` FOREIGN KEY (`j`) REFERENCES `parent` (`i`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin |
+-------+-----------------------------------------------------------------------------+
1 row in set (0.00 sec)

mysql:

mysql> set foreign_key_checks=0;
Query OK, 0 rows affected (0.0003 sec)
mysql> create table child (j int, constraint fk1 foreign key (j) references parent (i));
Query OK, 0 rows affected (0.0200 sec)
mysql> show create table child;
+-------+-------------------------------------------------------------------------------+
| Table | Create Table                                                                  |
+-------+-------------------------------------------------------------------------------+
| child | CREATE TABLE `child` (
  `j` int DEFAULT NULL,
  KEY `fk` (`j`),
  CONSTRAINT `fk` FOREIGN KEY (`j`) REFERENCES `parent` (`i`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci |
+-------+-------------------------------------------------------------------------------+

Consequently, committing this and then running a ddl query will create the secondary key, resulting in a schema diff.
Skipped test Fix here: dolthub/go-mysql-server#1588

@jycor
Copy link
Contributor

jycor commented Feb 16, 2023

Merged fixes for both of the issues discovered.
dolt diff will not print a message if there is a foreign key resolved.
Additionally, we properly check errors when foreign_key_checks=0 and don't generate bad secondary indexes.

@jycor jycor closed this as completed Feb 16, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working sql Issue with SQL
Projects
None yet
Development

No branches or pull requests

2 participants