protected void createTable()

in empire-db/src/main/java/org/apache/empire/dbms/sqlite/SQLiteDDLGenerator.java [57:126]


	protected void createTable(DBTable t, DBSQLScript script)
	{
		DBSQLBuilder sql = dbms.createSQLBuilder();
		sql.append("-- creating table ");
		sql.append(t.getName());
		sql.append(" --\r\n");
		sql.append("CREATE TABLE ");
		t.addSQL(sql, DBExpr.CTX_FULLNAME);
		sql.append(" (");
		boolean addSeparator = false;
		Iterator<DBColumn> columns = t.getColumns().iterator();
		while (columns.hasNext())
		{
			DBTableColumn c = (DBTableColumn) columns.next();
			if (c.getDataType() == DataType.UNKNOWN)
				continue; // Ignore and continue;
			// Append column
			sql.append((addSeparator) ? ",\r\n   " : "\r\n   ");
			appendColumnDesc(c, false, sql);
			addSeparator = true;

		}
		// Foreign Key
		Map<DBColumn, DBColumn> referencesMap = t.getColumnReferences();
		if (referencesMap != null)
		{
			DBColumn source = null,target = null;
			for (Entry<DBColumn, DBColumn> entry : referencesMap.entrySet())
			{
				source = entry.getKey();
				target = entry.getValue();
				sql.append((addSeparator) ? ",\r\n   " : "\r\n   ");
				sql.append("FOREIGN KEY (");
				source.addSQL(sql, DBExpr.CTX_NAME);
				sql.append(") REFERENCES ");
				sql.append(target.getRowSet().getName());
				sql.append(" (");
				target.addSQL(sql, DBExpr.CTX_NAME);
				sql.append(")");
			}
		}

		// Primary Key
		DBIndex pk = t.getPrimaryKey();
		if (pk != null)
		{ // add the primary key
			sql.append(",\r\n");
			if (namePrimaryKeyConstraint)
			{
				sql.append(" CONSTRAINT ");
				appendElementName(sql, pk.getName());
			}
			sql.append(" PRIMARY KEY (");
			addSeparator = false;
			// columns
			DBColumn[] keyColumns = pk.getColumns();
			for (int i = 0; i < keyColumns.length; i++)
			{
				sql.append((addSeparator) ? ", " : "");
				keyColumns[i].addSQL(sql, DBExpr.CTX_NAME);
				addSeparator = true;
			}
			sql.append(")");
		}
		sql.append(")");
		// Create the table
		addCreateTableStmt(t, sql, script);
		// Create all Indexes
		createTableIndexes(t, pk, script);
	}