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; }
// 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); } }
// 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); } } }
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); }
// 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); } } }