Tarantool development patches archive
 help / color / mirror / Atom feed
* [tarantool-patches] [PATCH 1/1] sql: remove unused struct AutoinfInfo
@ 2018-04-17 20:50 Vladislav Shpilevoy
  2018-04-18  5:50 ` [tarantool-patches] " Kirill Yukhin
  0 siblings, 1 reply; 2+ messages in thread
From: Vladislav Shpilevoy @ 2018-04-17 20:50 UTC (permalink / raw)
  To: tarantool-patches; +Cc: korablev

---
Branch: https://github.com/tarantool/tarantool/tree/remove-autoincinfo

I was trying to remove iAutoIncPKey from struct Table, but it appeared, that
it can be not only 0. SQL allows to create autoincrement not only on a first
field. During researching I have removed struct AutoinfInfo, so there is the
patch.

 src/box/sql/build.c     |  2 --
 src/box/sql/sqliteInt.h | 16 ----------------
 src/box/sql/tokenize.c  |  5 -----
 src/box/sql/trigger.c   |  2 +-
 4 files changed, 1 insertion(+), 24 deletions(-)

diff --git a/src/box/sql/build.c b/src/box/sql/build.c
index c6185e41a..4aff123ac 100644
--- a/src/box/sql/build.c
+++ b/src/box/sql/build.c
@@ -119,8 +119,6 @@ sqlite3FinishCoding(Parse * pParse)
 		/* A minimum of one cursor is required if autoincrement is used
 		 *  See ticket [a696379c1f08866]
 		 */
-		if (pParse->pAinc != 0 && pParse->nTab == 0)
-			pParse->nTab = 1;
 		sqlite3VdbeMakeReady(v, pParse);
 		pParse->rc = SQLITE_DONE;
 	} else {
diff --git a/src/box/sql/sqliteInt.h b/src/box/sql/sqliteInt.h
index 59662cf14..a49c636a2 100644
--- a/src/box/sql/sqliteInt.h
+++ b/src/box/sql/sqliteInt.h
@@ -1455,7 +1455,6 @@ void *sqlite3_wsd_find(void *K, int L);
  * Forward references to structures
  */
 typedef struct AggInfo AggInfo;
-typedef struct AutoincInfo AutoincInfo;
 typedef struct Bitvec Bitvec;
 typedef struct Column Column;
 typedef struct Schema Schema;
@@ -2854,20 +2853,6 @@ struct SelectDest {
 	ExprList *pOrderBy;	/* Key columns for SRT_Queue and SRT_DistQueue */
 };
 
-/*
- * During code generation of statements that do inserts into AUTOINCREMENT
- * tables, the following information is attached to the Table.u.autoInc.p
- * pointer of each autoincrement table to record some side information that
- * the code generator needs.  We have to keep per-table autoincrement
- * information in case inserts are done within triggers.  Triggers do not
- * normally coordinate their activities, but we do need to coordinate the
- * loading and saving of autoincrement information.
- */
-struct AutoincInfo {
-	AutoincInfo *pNext;	/* Next info block in a list of them all */
-	Table *pTab;		/* Table this info block refers to */
-};
-
 /*
  * Size of the column cache
  */
@@ -2947,7 +2932,6 @@ struct Parse {
 	int nSelect;		/* Number of SELECT statements seen */
 	int nSelectIndent;	/* How far to indent SELECTTRACE() output */
 #endif
-	AutoincInfo *pAinc;	/* Information about AUTOINCREMENT counters */
 	Parse *pToplevel;	/* Parse structure for main program (or NULL) */
 	Table *pTriggerTab;	/* Table triggers are being coded for */
 	u32 nQueryLoop;		/* Est number of iterations of a query (10*log2(N)) */
diff --git a/src/box/sql/tokenize.c b/src/box/sql/tokenize.c
index 2894f8d7e..c77aa9bcf 100644
--- a/src/box/sql/tokenize.c
+++ b/src/box/sql/tokenize.c
@@ -639,11 +639,6 @@ sqlite3RunParser(Parse * pParse, const char *zSql, char **pzErrMsg)
 		sqlite3WithDelete(db, pParse->pWithToFree);
 	sqlite3DeleteTrigger(db, pParse->pNewTrigger);
 	sqlite3DbFree(db, pParse->pVList);
-	while (pParse->pAinc) {
-		AutoincInfo *p = pParse->pAinc;
-		pParse->pAinc = p->pNext;
-		sqlite3DbFree(db, p);
-	}
 	while (pParse->pZombieTab) {
 		Table *p = pParse->pZombieTab;
 		pParse->pZombieTab = p->pNextZombie;
diff --git a/src/box/sql/trigger.c b/src/box/sql/trigger.c
index ed7b948ab..28c56db3a 100644
--- a/src/box/sql/trigger.c
+++ b/src/box/sql/trigger.c
@@ -932,7 +932,7 @@ codeRowTrigger(Parse * pParse,	/* Current parse context */
 		sqlite3VdbeDelete(v);
 	}
 
-	assert(!pSubParse->pAinc && !pSubParse->pZombieTab);
+	assert(!pSubParse->pZombieTab);
 	assert(!pSubParse->pTriggerPrg && !pSubParse->nMaxArg);
 	sqlite3ParserReset(pSubParse);
 	sqlite3StackFree(db, pSubParse);
-- 
2.15.1 (Apple Git-101)

^ permalink raw reply	[flat|nested] 2+ messages in thread

* [tarantool-patches] Re: [PATCH 1/1] sql: remove unused struct AutoinfInfo
  2018-04-17 20:50 [tarantool-patches] [PATCH 1/1] sql: remove unused struct AutoinfInfo Vladislav Shpilevoy
@ 2018-04-18  5:50 ` Kirill Yukhin
  0 siblings, 0 replies; 2+ messages in thread
From: Kirill Yukhin @ 2018-04-18  5:50 UTC (permalink / raw)
  To: tarantool-patches; +Cc: korablev

Hello Vlad,
On 17 апр 23:50, Vladislav Shpilevoy wrote:
> ---
> Branch: https://github.com/tarantool/tarantool/tree/remove-autoincinfo
> 
> I was trying to remove iAutoIncPKey from struct Table, but it appeared, that
> it can be not only 0. SQL allows to create autoincrement not only on a first
> field. During researching I have removed struct AutoinfInfo, so there is the
> patch.
LGTM. Comitted to 2.1.0.

--
Regards, Kirill Yukhin

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2018-04-18  5:50 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-04-17 20:50 [tarantool-patches] [PATCH 1/1] sql: remove unused struct AutoinfInfo Vladislav Shpilevoy
2018-04-18  5:50 ` [tarantool-patches] " Kirill Yukhin

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox