예제 #1
0
 public void Clear()
 {
     statements.Clear();
     statementsAboutSubject.Clear();
     statementsAboutObject.Clear();
     distinct = true;
 }
예제 #2
0
            public void RunAddBuffer()
            {
                if (addStatementBuffer.Count == 0)
                {
                    return;
                }

                // TODO: We compute the hash of each resource 2 times.

                bool insertCombined = sql.connection.SupportsInsertCombined;

                StringBuilder valueInsertions     = new StringBuilder();
                StringBuilder statementInsertions = new StringBuilder();

                if (insertCombined)
                {
                    valueInsertions.Append("INSERT " + sql.connection.ValueInsertKeywords + " INTO " + sql.prefix + "_values ");
                }
                if (insertCombined)
                {
                    statementInsertions.Append("INSERT " + sql.connection.StatementInsertKeywords + " INTO " + sql.prefix + "_statements ");
                }
                bool firstValueInsert = true;                 // only used if insertCombined is true

                StatementList statements = addStatementBuffer;

                for (int i = 0; i < statements.Count; i++)
                {
                    Statement statement = (Statement)statements[i];

                    sql.AddValue(statement.Subject, valueInsertions, insertCombined, ref firstValueInsert);
                    sql.AddValue(statement.Predicate, valueInsertions, insertCombined, ref firstValueInsert);
                    sql.AddValue(statement.Object, valueInsertions, insertCombined, ref firstValueInsert);
                    sql.AddValue(statement.Meta, valueInsertions, insertCombined, ref firstValueInsert);

                    if (!insertCombined)
                    {
                        statementInsertions.Append("INSERT " + sql.connection.StatementInsertKeywords + " INTO " + sql.prefix + "_statements ");
                    }

                    if (i > 0)
                    {
                        statementInsertions.Append('(');
                    }
                    statementInsertions.Append('(');
                    statementInsertions.Append('\'');
                    statementInsertions.Append(sql.GetHash(statement.Subject));
                    statementInsertions.Append('\'');
                    statementInsertions.Append(',');
                    statementInsertions.Append('\'');
                    statementInsertions.Append(sql.GetHash(statement.Predicate));
                    statementInsertions.Append('\'');
                    statementInsertions.Append(',');
                    statementInsertions.Append('\'');
                    statementInsertions.Append(sql.GetHash(statement.Object));
                    statementInsertions.Append('\'');
                    statementInsertions.Append(',');
                    statementInsertions.Append('\'');
                    statementInsertions.Append(sql.GetHash(statement.Meta));
                    statementInsertions.Append('\'');
                    if (i == statements.Count - 1 || !insertCombined)
                    {
                        statementInsertions.Append(");");
                    }
                    else
                    {
                        statementInsertions.Append(")");
                    }
                }

                addStatementBuffer.Clear();

                if (insertCombined)
                {
                    valueInsertions.Append(';');
                }
                if (Debug)
                {
                    Console.Error.WriteLine(valueInsertions.ToString());
                }
                sql.connection.RunCommand(valueInsertions.ToString());

                if (Debug)
                {
                    Console.Error.WriteLine(statementInsertions.ToString());
                }
                sql.connection.RunCommand(statementInsertions.ToString());
            }