Esempio n. 1
0
        public long insert(RegistroIndice registro, long posicao)
        {
            long posicaoIni = stream.Length;
            stream.Position = posicaoIni;

            /*
                primeiro posição do RegistroTabela no arquivo da tabela,
                para nao precisar saber o tamanho da chave se for string.
            */

            // insere a posicao do RegistroTabela no arquivo da tabela
            bw.Write(posicao);

            // Dados do RegistroTabela
            foreach (DadoIndice d in registro.dados)
            {
                // posicao ordinal do campo dentro da tabela
                bw.Write(d.posicao);

                // grava o DadoTabela no indice
                if (d.tipo == TipoDado.Inteiro)
                    bw.Write(d.getValorInt());
                else
                    bw.Write(d.getValorStr());
            }

            // força a gravar no arquivo aquilo que ficou no buffer.
            bw.Flush();

            return posicaoIni;
        }
Esempio n. 2
0
 // Insere um registroindice.
 private void insertIndice(string indice, RegistroIndice registro, long posicao)
 {
     try
     {
         arqsIndices[indice].insert(registro, posicao);
     }
     catch (Exception e)
     {
         throw new SGDBException("Houve erro na inserção do indice! " + e.Message);
     }
 }
Esempio n. 3
0
        // Insere o registro nos indices.
        public void insertIndices(RegistroTabela registro, long posicao, string tabela)
        {
            if (arqsIndices.Count > 0)
            {
                // Percorre indices.
                RegistroIndice registroIndice;
                Metadados      meta = GerenciadorMemoria.getInstance().recuperarMetadados(tabela);
                foreach (KeyValuePair <string, string[]> item in meta.getIndexes())
                {
                    // Monta indice.
                    registroIndice = new RegistroIndice();
                    for (int i = 0; i < item.Value.Length; i++)
                    {
                        DadoIndice dadoIndice = new DadoIndice(meta.getDados()[item.Value[i]].getTipoDado(), registro.dados[meta.getNomesColunas().IndexOf(item.Value[i])].valor);
                        registroIndice.dados.Add(dadoIndice);
                    }

                    // Insere no indice.
                    insertIndice(item.Key, registroIndice, posicao);
                }
            }
        }
Esempio n. 4
0
        public long insert(RegistroIndice registro, long posicao)
        {
            long posicaoIni = stream.Length;

            stream.Position = posicaoIni;

            /*
             *  primeiro posição do RegistroTabela no arquivo da tabela,
             *  para nao precisar saber o tamanho da chave se for string.
             */

            // insere a posicao do RegistroTabela no arquivo da tabela
            bw.Write(posicao);

            // Dados do RegistroTabela
            foreach (DadoIndice d in registro.dados)
            {
                // posicao ordinal do campo dentro da tabela
                bw.Write(d.posicao);

                // grava o DadoTabela no indice
                if (d.tipo == TipoDado.Inteiro)
                {
                    bw.Write(d.getValorInt());
                }
                else
                {
                    bw.Write(d.getValorStr());
                }
            }

            // força a gravar no arquivo aquilo que ficou no buffer.
            bw.Flush();

            return(posicaoIni);
        }
Esempio n. 5
0
 // Insere um registroindice.
 private void insertIndice(string indice, RegistroIndice registro, long posicao)
 {
     try
     {
         arqsIndices[indice].insert(registro, posicao);
     }
     catch (Exception e)
     {
         throw new SGDBException("Houve erro na inserção do indice! " + e.Message);
     }
 }
Esempio n. 6
0
        // Insere o registro nos indices.
        public void insertIndices(RegistroTabela registro, long posicao, string tabela)
        {
            if (arqsIndices.Count > 0)
            {
                // Percorre indices.
                RegistroIndice registroIndice;
                Metadados meta = GerenciadorMemoria.getInstance().recuperarMetadados(tabela);
                foreach (KeyValuePair<string, string[]> item in meta.getIndexes())
                {
                    // Monta indice.
                    registroIndice = new RegistroIndice();
                    for (int i = 0; i < item.Value.Length; i++)
                    {
                        DadoIndice dadoIndice = new DadoIndice(meta.getDados()[item.Value[i]].getTipoDado(), registro.dados[meta.getNomesColunas().IndexOf(item.Value[i])].valor);
                        registroIndice.dados.Add(dadoIndice);
                    }

                    // Insere no indice.
                    insertIndice(item.Key, registroIndice, posicao);
                }
            }
        }