diff --git a/AdvancedDataGridView/AdvancedDataGridView.csproj b/AdvancedDataGridView/AdvancedDataGridView.csproj
index 6daf93f..67d1e68 100644
--- a/AdvancedDataGridView/AdvancedDataGridView.csproj
+++ b/AdvancedDataGridView/AdvancedDataGridView.csproj
@@ -10,7 +10,7 @@
Properties
ADGV
AdvancedDataGridView
- v4.6.1
+ v4.8
512
SAK
SAK
diff --git a/AdvancedDataGridView/Properties/Resources.Designer.cs b/AdvancedDataGridView/Properties/Resources.Designer.cs
index 03af900..0b5e272 100644
--- a/AdvancedDataGridView/Properties/Resources.Designer.cs
+++ b/AdvancedDataGridView/Properties/Resources.Designer.cs
@@ -19,7 +19,7 @@ namespace ADGV.Properties {
// class via a tool like ResGen or Visual Studio.
// To add or remove a member, edit your .ResX file then rerun ResGen
// with the /str option, or rebuild your VS project.
- [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
internal class Resources {
diff --git a/README.md b/README.md
index a56ebef..1f2c465 100644
--- a/README.md
+++ b/README.md
@@ -47,3 +47,41 @@ This means any and all contribution in the form of commits, change requests, iss
### Credits:
Credits go to Ladislav Zezula for the awesome StormLib and thanks to all those that contribute to the WoWDev wiki.
I've also patched the definitions together for various sources across the internet, there are too many to name, but thanks to all.
+
+### MySQL Setup:
+LOAD DATA LOCAL INFILE is not enabled by default.Normally, it should be enabled by placing local-infile=1 in my.cnf. But it does not work for all installations.
+Connect to your server using MySQL or any console client using the following command:
+```
+mysql -u root -p
+```
+It should echo the following:
+```
+Enter password:
+```
+Now you have to enter your root password.
+After you are connected, paste the following command:
+```
+SHOW GLOBAL VARIABLES LIKE 'local_infile';
+```
+It should echo the following:
+```
++---------------+-------+
+| Variable_name | Value |
++---------------+-------+
+| local_infile | OFF |
++---------------+-------+
+1 row in set (0.00 sec)
+```
+If local_infile = OFF, you need to paste the following command, otherwise if it is ON, you are good to go!
+```
+SET GLOBAL local_infile = 'ON'
+```
+It should echo the following:
+```
++---------------+-------+
+| Variable_name | Value |
++---------------+-------+
+| local_infile | ON |
++---------------+-------+
+1 row in set (0.00 sec)
+```
diff --git a/WDBXEditor/App.config b/WDBXEditor/App.config
index 1c24d60..65b7ba7 100644
--- a/WDBXEditor/App.config
+++ b/WDBXEditor/App.config
@@ -6,7 +6,7 @@
-
+
@@ -55,10 +55,60 @@
-
-
-
-
-
-
-
\ No newline at end of file
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/WDBXEditor/Common/Constants.cs b/WDBXEditor/Common/Constants.cs
index cc389cb..a782ee4 100644
--- a/WDBXEditor/Common/Constants.cs
+++ b/WDBXEditor/Common/Constants.cs
@@ -64,7 +64,7 @@ public enum ImportFlags
TakeNewest
}
- public enum CompressionType
+ public enum CompressionTypeWDBX
{
None = 0,
Immediate = 1,
diff --git a/WDBXEditor/Forms/LegionParser.cs b/WDBXEditor/Forms/LegionParser.cs
index 6adde4a..559066c 100644
--- a/WDBXEditor/Forms/LegionParser.cs
+++ b/WDBXEditor/Forms/LegionParser.cs
@@ -322,12 +322,12 @@ private void ParseWDC1(MemoryStream stream, string file)
continue;
}
- if (header.ColumnMeta[f].CompressionType == CompressionType.None)
+ if (header.ColumnMeta[f].CompressionTypeWDBX == CompressionTypeWDBX.None)
{
int bitSize = header.FieldStructure[f].BitCount;
byteType = FieldTypes[NextPow2(~~(bitSize + 7) / 8)];
}
- else if (header.ColumnMeta[f].CompressionType > CompressionType.Immediate)
+ else if (header.ColumnMeta[f].CompressionTypeWDBX > CompressionTypeWDBX.Immediate)
{
byteType = FieldType.INT;
}
@@ -400,7 +400,7 @@ private void ParseWDC1(MemoryStream stream, string file)
fields[i].Type = FieldType.FLOAT;
else if (options.Contains(FieldType.STRING))
fields[i].Type = FieldType.STRING;
- else if (header.ColumnMeta[i].CompressionType == CompressionType.Immediate && header.ColumnMeta[i].Cardinality == 0)
+ else if (header.ColumnMeta[i].CompressionTypeWDBX == CompressionTypeWDBX.Immediate && header.ColumnMeta[i].Cardinality == 0)
fields[i].Type = FieldType.UINT;
else
fields[i].Type = FieldType.INT;
diff --git a/WDBXEditor/Forms/LoadSQL.cs b/WDBXEditor/Forms/LoadSQL.cs
index 989f7ce..dd33a08 100644
--- a/WDBXEditor/Forms/LoadSQL.cs
+++ b/WDBXEditor/Forms/LoadSQL.cs
@@ -11,12 +11,13 @@
using System.Threading.Tasks;
using System.Windows.Forms;
using static WDBXEditor.Common.Constants;
+using MySqlX.XDevAPI.Relational;
namespace WDBXEditor
{
public partial class LoadSQL : Form
{
- public string ConnectionString => $"Server={txtHost.Text};Port={txtPort.Text};Database={ddlDatabases.Text};Uid={txtUser.Text};Pwd={txtPass.Text};";
+ public string ConnectionString => $"Server={txtHost.Text};Port={txtPort.Text};Database={ddlDatabases.Text};Uid={txtUser.Text};Pwd={txtPass.Text};AllowLoadLocalInfile=true;";
public bool ConnectionOnly { get; set; } = false;
public DBEntry Entry { get; set; }
public string ErrorMessage = string.Empty;
@@ -143,16 +144,19 @@ private void ddlDatabases_SelectedIndexChanged(object sender, EventArgs e)
using (MySqlConnection connection = new MySqlConnection(ConnectionString))
{
connection.Open();
- MySqlCommand command = new MySqlCommand($"USE {ddlDatabases.Text}; SHOW TABLES;", connection);
- using (var rdr = command.ExecuteReader())
+ //string sql = $"SELECT table_name FROM information_schema.tables WHERE table_schema = {ddlDatabases.Text}";
+ string sql = $"USE {ddlDatabases.Text}; SHOW TABLES;";
+ MySqlCommand command = new MySqlCommand(sql, connection);
+ using (var reader = command.ExecuteReader())
{
- ddlTable.Items.Add("");
- while (rdr.Read())
- ddlTable.Items.Add(rdr[0].ToString());
+ while (reader.Read())
+ {
+ ddlTable.Items.Add(reader.GetString(0));
+ }
}
}
}
- catch { return; }
+ catch(Exception ex) { MessageBox.Show(ex.Message); return; }
}
btnLoad.Enabled = !string.IsNullOrWhiteSpace(ddlDatabases.Text) && //Database selected
diff --git a/WDBXEditor/Forms/WotLKItemFix.cs b/WDBXEditor/Forms/WotLKItemFix.cs
index f2b6730..7690409 100644
--- a/WDBXEditor/Forms/WotLKItemFix.cs
+++ b/WDBXEditor/Forms/WotLKItemFix.cs
@@ -10,6 +10,7 @@
using System.Threading.Tasks;
using System.Windows.Forms;
using static WDBXEditor.Common.Constants;
+using MySqlX.XDevAPI.Relational;
namespace WDBXEditor
{
@@ -109,15 +110,17 @@ private void ddlDatabases_SelectedIndexChanged(object sender, EventArgs e)
{
connection.Open();
MySqlCommand command = new MySqlCommand(sql, connection);
- using (var rdr = command.ExecuteReader())
- {
- ddlTable.Items.Add("");
- while (rdr.Read())
- ddlTable.Items.Add(rdr[0].ToString());
+ using (MySqlDataReader reader = command.ExecuteReader())
+ {
+ while (reader.Read())
+ {
+ ddlTable.Items.Add(reader.GetString(0));
+ MessageBox.Show(reader.GetString(0));
+ }
}
}
}
- catch { return; }
+ catch (Exception ex) { MessageBox.Show(ex.Message); }
}
btnLoad.Enabled = !string.IsNullOrWhiteSpace(ddlDatabases.Text) && //Database selected
diff --git a/WDBXEditor/Main.cs b/WDBXEditor/Main.cs
index eec6a5d..0ce38e9 100644
--- a/WDBXEditor/Main.cs
+++ b/WDBXEditor/Main.cs
@@ -641,17 +641,25 @@ private void toSQLToolStripMenuItem_Click(object sender, EventArgs e)
{
if (sql.ShowDialog(this) == DialogResult.OK)
{
- ProgressBarHandle(true, "Exporting to SQL...");
- Task.Factory.StartNew(() => { LoadedEntry.ToSQLTable(sql.ConnectionString); })
- .ContinueWith(x =>
+ try
{
- if (x.IsFaulted)
- MessageBox.Show("An error occured exporting to SQL.");
- else
- MessageBox.Show("Sucessfully exported to SQL.");
-
- ProgressBarHandle(false);
- }, TaskScheduler.FromCurrentSynchronizationContext());
+ ProgressBarHandle(true, "Exporting to SQL...");
+ Task.Factory.StartNew(() => { LoadedEntry.ToSQLTable(sql.ConnectionString); })
+ .ContinueWith(x =>
+ {
+ if (x.IsFaulted)
+ MessageBox.Show("An error occured exporting to SQL. ");
+ else
+ MessageBox.Show("Sucessfully exported to SQL.");
+
+ ProgressBarHandle(false);
+ }, TaskScheduler.FromCurrentSynchronizationContext());
+ }
+ catch (Exception ex)
+ {
+ MessageBox.Show("An error occured exporting to SQL. " + ex.Message);
+ }
+
}
}
}
diff --git a/WDBXEditor/Properties/Resources.Designer.cs b/WDBXEditor/Properties/Resources.Designer.cs
index 7bfea01..cbe4216 100644
--- a/WDBXEditor/Properties/Resources.Designer.cs
+++ b/WDBXEditor/Properties/Resources.Designer.cs
@@ -19,7 +19,7 @@ namespace WDBXEditor.Properties {
// class via a tool like ResGen or Visual Studio.
// To add or remove a member, edit your .ResX file then rerun ResGen
// with the /str option, or rebuild your VS project.
- [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
internal class Resources {
diff --git a/WDBXEditor/Properties/Settings.Designer.cs b/WDBXEditor/Properties/Settings.Designer.cs
index 5efe5dc..3c673ba 100644
--- a/WDBXEditor/Properties/Settings.Designer.cs
+++ b/WDBXEditor/Properties/Settings.Designer.cs
@@ -12,7 +12,7 @@ namespace WDBXEditor.Properties {
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
- [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "15.3.0.0")]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.9.0.0")]
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
diff --git a/WDBXEditor/Reader/ColumnStructureEntry.cs b/WDBXEditor/Reader/ColumnStructureEntry.cs
index eeb79ca..5e4320f 100644
--- a/WDBXEditor/Reader/ColumnStructureEntry.cs
+++ b/WDBXEditor/Reader/ColumnStructureEntry.cs
@@ -12,7 +12,7 @@ public class ColumnStructureEntry
public ushort RecordOffset { get; set; }
public ushort Size { get; set; }
public uint AdditionalDataSize { get; set; }
- public CompressionType CompressionType { get; set; }
+ public CompressionTypeWDBX CompressionTypeWDBX { get; set; }
public int BitOffset { get; set; } // used as common data column for Sparse
public int BitWidth { get; set; }
public int Cardinality { get; set; } // flags for Immediate, &1: Signed
diff --git a/WDBXEditor/Reader/FileTypes/WDC1.cs b/WDBXEditor/Reader/FileTypes/WDC1.cs
index 08ccf74..a66f3ea 100644
--- a/WDBXEditor/Reader/FileTypes/WDC1.cs
+++ b/WDBXEditor/Reader/FileTypes/WDC1.cs
@@ -139,16 +139,16 @@ public override void ReadHeader(ref BinaryReader dbReader, string signature)
RecordOffset = dbReader.ReadUInt16(),
Size = dbReader.ReadUInt16(),
AdditionalDataSize = dbReader.ReadUInt32(), // size of pallet / sparse values
- CompressionType = (CompressionType)dbReader.ReadUInt32(),
+ CompressionTypeWDBX = (CompressionTypeWDBX)dbReader.ReadUInt32(),
BitOffset = dbReader.ReadInt32(),
BitWidth = dbReader.ReadInt32(),
Cardinality = dbReader.ReadInt32()
};
// preload arraysizes
- if (column.CompressionType == CompressionType.None)
+ if (column.CompressionTypeWDBX == CompressionTypeWDBX.None)
column.ArraySize = Math.Max(column.Size / FieldStructure[i].BitCount, 1);
- else if (column.CompressionType == CompressionType.PalletArray)
+ else if (column.CompressionTypeWDBX == CompressionTypeWDBX.PalletArray)
column.ArraySize = Math.Max(column.Cardinality, 1);
ColumnMeta.Add(column);
@@ -157,7 +157,7 @@ public override void ReadHeader(ref BinaryReader dbReader, string signature)
// Pallet values
for (int i = 0; i < ColumnMeta.Count; i++)
{
- if (ColumnMeta[i].CompressionType == CompressionType.Pallet || ColumnMeta[i].CompressionType == CompressionType.PalletArray)
+ if (ColumnMeta[i].CompressionTypeWDBX == CompressionTypeWDBX.Pallet || ColumnMeta[i].CompressionTypeWDBX == CompressionTypeWDBX.PalletArray)
{
int elements = (int)ColumnMeta[i].AdditionalDataSize / 4;
int cardinality = Math.Max(ColumnMeta[i].Cardinality, 1);
@@ -171,7 +171,7 @@ public override void ReadHeader(ref BinaryReader dbReader, string signature)
// Sparse values
for (int i = 0; i < ColumnMeta.Count; i++)
{
- if (ColumnMeta[i].CompressionType == CompressionType.Sparse)
+ if (ColumnMeta[i].CompressionTypeWDBX == CompressionTypeWDBX.Sparse)
{
ColumnMeta[i].SparseValues = new Dictionary();
for (int j = 0; j < ColumnMeta[i].AdditionalDataSize / 8; j++)
@@ -263,9 +263,9 @@ public override void ReadHeader(ref BinaryReader dbReader, string signature)
uint palletIndex;
int take = columnSizes[c] * ColumnMeta[f].ArraySize;
- switch (ColumnMeta[f].CompressionType)
+ switch (ColumnMeta[f].CompressionTypeWDBX)
{
- case CompressionType.None:
+ case CompressionTypeWDBX.None:
int bitSize = FieldStructure[f].BitCount;
if (!HasIndexTable && f == IdIndex)
{
@@ -279,8 +279,8 @@ public override void ReadHeader(ref BinaryReader dbReader, string signature)
}
break;
- case CompressionType.Immediate:
- case CompressionType.SignedImmediate:
+ case CompressionTypeWDBX.Immediate:
+ case CompressionTypeWDBX.SignedImmediate:
if (!HasIndexTable && f == IdIndex)
{
idOffset = data.Count;
@@ -293,21 +293,21 @@ public override void ReadHeader(ref BinaryReader dbReader, string signature)
}
break;
- case CompressionType.Sparse:
+ case CompressionTypeWDBX.Sparse:
if (ColumnMeta[f].SparseValues.TryGetValue(id, out byte[] valBytes))
data.AddRange(valBytes.Take(take));
else
data.AddRange(BitConverter.GetBytes(ColumnMeta[f].BitOffset).Take(take));
break;
- case CompressionType.Pallet:
- case CompressionType.PalletArray:
+ case CompressionTypeWDBX.Pallet:
+ case CompressionTypeWDBX.PalletArray:
palletIndex = bitStream.ReadUInt32(bitWidth);
data.AddRange(ColumnMeta[f].PalletValues[(int)palletIndex].Take(take));
break;
default:
- throw new Exception($"Unknown compression {ColumnMeta[f].CompressionType}");
+ throw new Exception($"Unknown compression {ColumnMeta[f].CompressionTypeWDBX}");
}
@@ -554,24 +554,24 @@ public virtual void WriteData(BinaryWriter bw, DBEntry entry)
if (data.Length == 0)
continue;
- CompressionType compression = ColumnMeta[fieldIndex].CompressionType;
+ CompressionTypeWDBX compression = ColumnMeta[fieldIndex].CompressionTypeWDBX;
- if (isCopyRecord && compression != CompressionType.Sparse) // copy records still store the sparse data
+ if (isCopyRecord && compression != CompressionTypeWDBX.Sparse) // copy records still store the sparse data
continue;
switch (compression)
{
- case CompressionType.None:
+ case CompressionTypeWDBX.None:
for (int i = 0; i < arraySize; i++)
bitStream.WriteBits(data[i], bitSize);
break;
- case CompressionType.Immediate:
- case CompressionType.SignedImmediate:
+ case CompressionTypeWDBX.Immediate:
+ case CompressionTypeWDBX.SignedImmediate:
bitStream.WriteBits(data[0], bitWidth);
break;
- case CompressionType.Sparse:
+ case CompressionTypeWDBX.Sparse:
{
Array.Resize(ref data[0], 4);
if (BitConverter.ToInt32(data[0], 0) != ColumnMeta[fieldIndex].BitOffset)
@@ -579,8 +579,8 @@ public virtual void WriteData(BinaryWriter bw, DBEntry entry)
}
break;
- case CompressionType.Pallet:
- case CompressionType.PalletArray:
+ case CompressionTypeWDBX.Pallet:
+ case CompressionTypeWDBX.PalletArray:
{
byte[] combined = data.SelectMany(x => x.Concat(new byte[4]).Take(4)).ToArray(); // enforce int size rule
@@ -598,7 +598,7 @@ public virtual void WriteData(BinaryWriter bw, DBEntry entry)
break;
default:
- throw new Exception("Unsupported compression type " + ColumnMeta[fieldIndex].CompressionType);
+ throw new Exception("Unsupported compression type " + ColumnMeta[fieldIndex].CompressionTypeWDBX);
}
}
@@ -684,7 +684,7 @@ public virtual void WriteData(BinaryWriter bw, DBEntry entry)
else
bw.WriteUInt32(0);
- bw.Write((uint)meta.CompressionType);
+ bw.Write((uint)meta.CompressionTypeWDBX);
bw.Write(meta.BitOffset);
bw.Write(meta.BitWidth);
bw.Write(meta.Cardinality);
@@ -695,7 +695,7 @@ public virtual void WriteData(BinaryWriter bw, DBEntry entry)
pos = bw.BaseStream.Position;
foreach (var meta in ColumnMeta)
{
- if (meta.CompressionType == CompressionType.Pallet || meta.CompressionType == CompressionType.PalletArray)
+ if (meta.CompressionTypeWDBX == CompressionTypeWDBX.Pallet || meta.CompressionTypeWDBX == CompressionTypeWDBX.PalletArray)
bw.WriteArray(meta.PalletValues.SelectMany(x => x).ToArray());
}
PalletDataSize = (int)(bw.BaseStream.Position - pos);
@@ -704,7 +704,7 @@ public virtual void WriteData(BinaryWriter bw, DBEntry entry)
pos = bw.BaseStream.Position;
foreach (var meta in ColumnMeta)
{
- if (meta.CompressionType == CompressionType.Sparse)
+ if (meta.CompressionTypeWDBX == CompressionTypeWDBX.Sparse)
{
foreach (var sparse in meta.SparseValues)
{
@@ -795,25 +795,25 @@ protected void RemoveBitLimits()
int c = HasIndexTable ? 1 : 0;
int cm = ColumnMeta.Count - (RelationShipData != null ? 1 : 0);
- var skipType = new HashSet(new[] { CompressionType.None, CompressionType.Sparse });
+ var skipType = new HashSet(new[] { CompressionTypeWDBX.None, CompressionTypeWDBX.Sparse });
for (int i = c; i < cm; i++)
{
var col = ColumnMeta[i];
- var type = col.CompressionType;
+ var type = col.CompressionTypeWDBX;
int oldsize = col.BitWidth;
ushort newsize = (ushort)(columnSizes[c] * 8);
c += col.ArraySize;
- if (skipType.Contains(col.CompressionType) || newsize == oldsize)
+ if (skipType.Contains(col.CompressionTypeWDBX) || newsize == oldsize)
continue;
col.BitWidth = col.Size = newsize;
for (int x = i + 1; x < cm; x++)
{
- if (skipType.Contains(ColumnMeta[x].CompressionType))
+ if (skipType.Contains(ColumnMeta[x].CompressionTypeWDBX))
continue;
ColumnMeta[x].RecordOffset += (ushort)(newsize - oldsize);
diff --git a/WDBXEditor/Reader/FileTypes/WDC2.cs b/WDBXEditor/Reader/FileTypes/WDC2.cs
index 6a9a8bb..d4b3011 100644
--- a/WDBXEditor/Reader/FileTypes/WDC2.cs
+++ b/WDBXEditor/Reader/FileTypes/WDC2.cs
@@ -77,16 +77,16 @@ public override void ReadHeader(ref BinaryReader dbReader, string signature)
RecordOffset = dbReader.ReadUInt16(),
Size = dbReader.ReadUInt16(),
AdditionalDataSize = dbReader.ReadUInt32(), // size of pallet / sparse values
- CompressionType = (CompressionType)dbReader.ReadUInt32(),
+ CompressionTypeWDBX = (CompressionTypeWDBX)dbReader.ReadUInt32(),
BitOffset = dbReader.ReadInt32(),
BitWidth = dbReader.ReadInt32(),
Cardinality = dbReader.ReadInt32()
};
// preload arraysizes
- if (column.CompressionType == CompressionType.None)
+ if (column.CompressionTypeWDBX == CompressionTypeWDBX.None)
column.ArraySize = Math.Max(column.Size / FieldStructure[i].BitCount, 1);
- else if (column.CompressionType == CompressionType.PalletArray)
+ else if (column.CompressionTypeWDBX == CompressionTypeWDBX.PalletArray)
column.ArraySize = Math.Max(column.Cardinality, 1);
ColumnMeta.Add(column);
@@ -95,7 +95,7 @@ public override void ReadHeader(ref BinaryReader dbReader, string signature)
// Pallet values
for (int i = 0; i < ColumnMeta.Count; i++)
{
- if (ColumnMeta[i].CompressionType == CompressionType.Pallet || ColumnMeta[i].CompressionType == CompressionType.PalletArray)
+ if (ColumnMeta[i].CompressionTypeWDBX == CompressionTypeWDBX.Pallet || ColumnMeta[i].CompressionTypeWDBX == CompressionTypeWDBX.PalletArray)
{
int elements = (int)ColumnMeta[i].AdditionalDataSize / 4;
int cardinality = Math.Max(ColumnMeta[i].Cardinality, 1);
@@ -109,7 +109,7 @@ public override void ReadHeader(ref BinaryReader dbReader, string signature)
// Sparse values
for (int i = 0; i < ColumnMeta.Count; i++)
{
- if (ColumnMeta[i].CompressionType == CompressionType.Sparse)
+ if (ColumnMeta[i].CompressionTypeWDBX == CompressionTypeWDBX.Sparse)
{
ColumnMeta[i].SparseValues = new Dictionary();
for (int j = 0; j < ColumnMeta[i].AdditionalDataSize / 8; j++)
@@ -271,9 +271,9 @@ public override void ReadHeader(ref BinaryReader dbReader, string signature)
uint palletIndex;
int take = columnSizes[c] * ColumnMeta[f].ArraySize;
- switch (ColumnMeta[f].CompressionType)
+ switch (ColumnMeta[f].CompressionTypeWDBX)
{
- case CompressionType.None:
+ case CompressionTypeWDBX.None:
int bitSize = FieldStructure[f].BitCount;
if (!HasIndexTable && f == IdIndex)
{
@@ -293,8 +293,8 @@ public override void ReadHeader(ref BinaryReader dbReader, string signature)
}
break;
- case CompressionType.Immediate:
- case CompressionType.SignedImmediate:
+ case CompressionTypeWDBX.Immediate:
+ case CompressionTypeWDBX.SignedImmediate:
if (!HasIndexTable && f == IdIndex)
{
idOffset = data.Count;
@@ -310,7 +310,7 @@ public override void ReadHeader(ref BinaryReader dbReader, string signature)
}
break;
- case CompressionType.Sparse:
+ case CompressionTypeWDBX.Sparse:
if (i == 0)
columnOffsets.Add((int)(bitStream.Offset + (bitStream.BitPosition >> 3)));
@@ -321,8 +321,8 @@ public override void ReadHeader(ref BinaryReader dbReader, string signature)
data.AddRange(BitConverter.GetBytes(ColumnMeta[f].BitOffset).Take(take));
break;
- case CompressionType.Pallet:
- case CompressionType.PalletArray:
+ case CompressionTypeWDBX.Pallet:
+ case CompressionTypeWDBX.PalletArray:
if (i == 0)
columnOffsets.Add((int)(bitStream.Offset + (bitStream.BitPosition >> 3)));
@@ -332,7 +332,7 @@ public override void ReadHeader(ref BinaryReader dbReader, string signature)
break;
default:
- throw new Exception($"Unknown compression {ColumnMeta[f].CompressionType}");
+ throw new Exception($"Unknown compression {ColumnMeta[f].CompressionTypeWDBX}");
}
@@ -573,13 +573,13 @@ public override void WriteData(BinaryWriter bw, DBEntry entry)
if (data.Length == 0)
continue;
- CompressionType compression = ColumnMeta[fieldIndex].CompressionType;
- if (isCopyRecord && compression != CompressionType.Sparse) // copy records still store the sparse data
+ CompressionTypeWDBX compression = ColumnMeta[fieldIndex].CompressionTypeWDBX;
+ if (isCopyRecord && compression != CompressionTypeWDBX.Sparse) // copy records still store the sparse data
continue;
switch (compression)
{
- case CompressionType.None:
+ case CompressionTypeWDBX.None:
for (int i = 0; i < arraySize; i++)
{
if (isString)
@@ -589,12 +589,12 @@ public override void WriteData(BinaryWriter bw, DBEntry entry)
}
break;
- case CompressionType.Immediate:
- case CompressionType.SignedImmediate:
+ case CompressionTypeWDBX.Immediate:
+ case CompressionTypeWDBX.SignedImmediate:
bitStream.WriteBits(data[0], bitWidth);
break;
- case CompressionType.Sparse:
+ case CompressionTypeWDBX.Sparse:
{
Array.Resize(ref data[0], 4);
if (BitConverter.ToInt32(data[0], 0) != ColumnMeta[fieldIndex].BitOffset)
@@ -602,8 +602,8 @@ public override void WriteData(BinaryWriter bw, DBEntry entry)
}
break;
- case CompressionType.Pallet:
- case CompressionType.PalletArray:
+ case CompressionTypeWDBX.Pallet:
+ case CompressionTypeWDBX.PalletArray:
{
byte[] combined = data.SelectMany(x => x.Concat(new byte[4]).Take(4)).ToArray(); // enforce int size rule
@@ -621,7 +621,7 @@ public override void WriteData(BinaryWriter bw, DBEntry entry)
break;
default:
- throw new Exception("Unsupported compression type " + ColumnMeta[fieldIndex].CompressionType);
+ throw new Exception("Unsupported compression type " + ColumnMeta[fieldIndex].CompressionTypeWDBX);
}
}
@@ -664,7 +664,7 @@ public override void WriteData(BinaryWriter bw, DBEntry entry)
else
bw.WriteUInt32(0);
- bw.Write((uint)meta.CompressionType);
+ bw.Write((uint)meta.CompressionTypeWDBX);
bw.Write(meta.BitOffset);
bw.Write(meta.BitWidth);
bw.Write(meta.Cardinality);
@@ -675,7 +675,7 @@ public override void WriteData(BinaryWriter bw, DBEntry entry)
pos = bw.BaseStream.Position;
foreach (var meta in ColumnMeta)
{
- if (meta.CompressionType == CompressionType.Pallet || meta.CompressionType == CompressionType.PalletArray)
+ if (meta.CompressionTypeWDBX == CompressionTypeWDBX.Pallet || meta.CompressionTypeWDBX == CompressionTypeWDBX.PalletArray)
bw.WriteArray(meta.PalletValues.SelectMany(x => x).ToArray());
}
PalletDataSize = (int)(bw.BaseStream.Position - pos);
@@ -684,7 +684,7 @@ public override void WriteData(BinaryWriter bw, DBEntry entry)
pos = bw.BaseStream.Position;
foreach (var meta in ColumnMeta)
{
- if (meta.CompressionType == CompressionType.Sparse)
+ if (meta.CompressionTypeWDBX == CompressionTypeWDBX.Sparse)
{
foreach (var sparse in meta.SparseValues)
{
diff --git a/WDBXEditor/Reader/FileTypes/WDC3.cs b/WDBXEditor/Reader/FileTypes/WDC3.cs
index bde6f1f..ba4bd75 100644
--- a/WDBXEditor/Reader/FileTypes/WDC3.cs
+++ b/WDBXEditor/Reader/FileTypes/WDC3.cs
@@ -69,16 +69,16 @@ public override void ReadHeader(ref BinaryReader dbReader, string signature)
RecordOffset = dbReader.ReadUInt16(),
Size = dbReader.ReadUInt16(),
AdditionalDataSize = dbReader.ReadUInt32(), // size of pallet / sparse values
- CompressionType = (CompressionType)dbReader.ReadUInt32(),
+ CompressionTypeWDBX = (CompressionTypeWDBX)dbReader.ReadUInt32(),
BitOffset = dbReader.ReadInt32(),
BitWidth = dbReader.ReadInt32(),
Cardinality = dbReader.ReadInt32()
};
// preload arraysizes
- if (column.CompressionType == CompressionType.None)
+ if (column.CompressionTypeWDBX == CompressionTypeWDBX.None)
column.ArraySize = Math.Max(column.Size / FieldStructure[i].BitCount, 1);
- else if (column.CompressionType == CompressionType.PalletArray)
+ else if (column.CompressionTypeWDBX == CompressionTypeWDBX.PalletArray)
column.ArraySize = Math.Max(column.Cardinality, 1);
ColumnMeta.Add(column);
@@ -87,7 +87,7 @@ public override void ReadHeader(ref BinaryReader dbReader, string signature)
// Pallet values
for (int i = 0; i < ColumnMeta.Count; i++)
{
- if (ColumnMeta[i].CompressionType == CompressionType.Pallet || ColumnMeta[i].CompressionType == CompressionType.PalletArray)
+ if (ColumnMeta[i].CompressionTypeWDBX == CompressionTypeWDBX.Pallet || ColumnMeta[i].CompressionTypeWDBX == CompressionTypeWDBX.PalletArray)
{
int elements = (int)ColumnMeta[i].AdditionalDataSize / 4;
int cardinality = Math.Max(ColumnMeta[i].Cardinality, 1);
@@ -101,7 +101,7 @@ public override void ReadHeader(ref BinaryReader dbReader, string signature)
// Sparse values
for (int i = 0; i < ColumnMeta.Count; i++)
{
- if (ColumnMeta[i].CompressionType == CompressionType.Sparse)
+ if (ColumnMeta[i].CompressionTypeWDBX == CompressionTypeWDBX.Sparse)
{
ColumnMeta[i].SparseValues = new Dictionary();
for (int j = 0; j < ColumnMeta[i].AdditionalDataSize / 8; j++)
@@ -263,9 +263,9 @@ public override void ReadHeader(ref BinaryReader dbReader, string signature)
uint palletIndex;
int take = columnSizes[c] * ColumnMeta[f].ArraySize;
- switch (ColumnMeta[f].CompressionType)
+ switch (ColumnMeta[f].CompressionTypeWDBX)
{
- case CompressionType.None:
+ case CompressionTypeWDBX.None:
int bitSize = FieldStructure[f].BitCount;
if (!HasIndexTable && f == IdIndex)
{
@@ -285,8 +285,8 @@ public override void ReadHeader(ref BinaryReader dbReader, string signature)
}
break;
- case CompressionType.Immediate:
- case CompressionType.SignedImmediate:
+ case CompressionTypeWDBX.Immediate:
+ case CompressionTypeWDBX.SignedImmediate:
if (!HasIndexTable && f == IdIndex)
{
idOffset = data.Count;
@@ -302,7 +302,7 @@ public override void ReadHeader(ref BinaryReader dbReader, string signature)
}
break;
- case CompressionType.Sparse:
+ case CompressionTypeWDBX.Sparse:
if (i == 0)
columnOffsets.Add((int)(bitStream.Offset + (bitStream.BitPosition >> 3)));
@@ -313,8 +313,8 @@ public override void ReadHeader(ref BinaryReader dbReader, string signature)
data.AddRange(BitConverter.GetBytes(ColumnMeta[f].BitOffset).Take(take));
break;
- case CompressionType.Pallet:
- case CompressionType.PalletArray:
+ case CompressionTypeWDBX.Pallet:
+ case CompressionTypeWDBX.PalletArray:
if (i == 0)
columnOffsets.Add((int)(bitStream.Offset + (bitStream.BitPosition >> 3)));
@@ -324,7 +324,7 @@ public override void ReadHeader(ref BinaryReader dbReader, string signature)
break;
default:
- throw new Exception($"Unknown compression {ColumnMeta[f].CompressionType}");
+ throw new Exception($"Unknown compression {ColumnMeta[f].CompressionTypeWDBX}");
}
@@ -567,13 +567,13 @@ public override void WriteData(BinaryWriter bw, DBEntry entry)
if (data.Length == 0)
continue;
- CompressionType compression = ColumnMeta[fieldIndex].CompressionType;
- if (isCopyRecord && compression != CompressionType.Sparse) // copy records still store the sparse data
+ CompressionTypeWDBX compression = ColumnMeta[fieldIndex].CompressionTypeWDBX;
+ if (isCopyRecord && compression != CompressionTypeWDBX.Sparse) // copy records still store the sparse data
continue;
switch (compression)
{
- case CompressionType.None:
+ case CompressionTypeWDBX.None:
for (int i = 0; i < arraySize; i++)
{
if (isString)
@@ -583,12 +583,12 @@ public override void WriteData(BinaryWriter bw, DBEntry entry)
}
break;
- case CompressionType.Immediate:
- case CompressionType.SignedImmediate:
+ case CompressionTypeWDBX.Immediate:
+ case CompressionTypeWDBX.SignedImmediate:
bitStream.WriteBits(data[0], bitWidth);
break;
- case CompressionType.Sparse:
+ case CompressionTypeWDBX.Sparse:
{
Array.Resize(ref data[0], 4);
if (BitConverter.ToInt32(data[0], 0) != ColumnMeta[fieldIndex].BitOffset)
@@ -596,8 +596,8 @@ public override void WriteData(BinaryWriter bw, DBEntry entry)
}
break;
- case CompressionType.Pallet:
- case CompressionType.PalletArray:
+ case CompressionTypeWDBX.Pallet:
+ case CompressionTypeWDBX.PalletArray:
{
byte[] combined = data.SelectMany(x => x.Concat(new byte[4]).Take(4)).ToArray(); // enforce int size rule
@@ -615,7 +615,7 @@ public override void WriteData(BinaryWriter bw, DBEntry entry)
break;
default:
- throw new Exception("Unsupported compression type " + ColumnMeta[fieldIndex].CompressionType);
+ throw new Exception("Unsupported compression type " + ColumnMeta[fieldIndex].CompressionTypeWDBX);
}
}
@@ -658,7 +658,7 @@ public override void WriteData(BinaryWriter bw, DBEntry entry)
else
bw.WriteUInt32(0);
- bw.Write((uint)meta.CompressionType);
+ bw.Write((uint)meta.CompressionTypeWDBX);
bw.Write(meta.BitOffset);
bw.Write(meta.BitWidth);
bw.Write(meta.Cardinality);
@@ -669,7 +669,7 @@ public override void WriteData(BinaryWriter bw, DBEntry entry)
pos = bw.BaseStream.Position;
foreach (var meta in ColumnMeta)
{
- if (meta.CompressionType == CompressionType.Pallet || meta.CompressionType == CompressionType.PalletArray)
+ if (meta.CompressionTypeWDBX == CompressionTypeWDBX.Pallet || meta.CompressionTypeWDBX == CompressionTypeWDBX.PalletArray)
bw.WriteArray(meta.PalletValues.SelectMany(x => x).ToArray());
}
PalletDataSize = (int)(bw.BaseStream.Position - pos);
@@ -678,7 +678,7 @@ public override void WriteData(BinaryWriter bw, DBEntry entry)
pos = bw.BaseStream.Position;
foreach (var meta in ColumnMeta)
{
- if (meta.CompressionType == CompressionType.Sparse)
+ if (meta.CompressionTypeWDBX == CompressionTypeWDBX.Sparse)
{
foreach (var sparse in meta.SparseValues)
{
diff --git a/WDBXEditor/Storage/DBEntry.cs b/WDBXEditor/Storage/DBEntry.cs
index 25c9b28..a1d7455 100644
--- a/WDBXEditor/Storage/DBEntry.cs
+++ b/WDBXEditor/Storage/DBEntry.cs
@@ -17,16 +17,12 @@
using System.Threading.Tasks;
using System.Collections.Concurrent;
using System.Web.Script.Serialization;
-using System.Diagnostics;
using System.Runtime.Serialization.Formatters.Binary;
using System.IO.MemoryMappedFiles;
-using System.Security.AccessControl;
-using System.Reflection;
-using System.Runtime.InteropServices;
namespace WDBXEditor.Storage
{
- public class DBEntry : IDisposable
+ public class DBEntry : IDisposable
{
public DBHeader Header { get; private set; }
public DataTable Data { get; set; }
@@ -298,7 +294,7 @@ public int[] GetPadding()
foreach (var field in header.ColumnMeta)
{
Type type = Data.Columns[c].DataType;
- bool isneeded = field.CompressionType >= CompressionType.Sparse;
+ bool isneeded = field.CompressionTypeWDBX >= CompressionTypeWDBX.Sparse;
if (bytecounts.ContainsKey(type) && isneeded)
{
@@ -500,22 +496,22 @@ public string ToSQL()
///
public void ToSQLTable(string connectionstring)
{
- string tableName = $"db_{TableStructure.Name}_{Build}";
- string csvName = Path.Combine(TEMP_FOLDER, tableName + ".csv");
- StringBuilder sb = new StringBuilder();
- sb.AppendLine("SET SESSION sql_mode = 'NO_ENGINE_SUBSTITUTION';");
- sb.AppendLine($"DROP TABLE IF EXISTS `{tableName}`; ");
- sb.AppendLine($"CREATE TABLE `{tableName}` ({Data.Columns.ToSql(Key)}) ENGINE=MyISAM DEFAULT CHARACTER SET = utf8 COLLATE = utf8_unicode_ci; ");
+ string tableName = $"db_{TableStructure.Name}_{Build}";
+ string csvName = Path.Combine(TEMP_FOLDER, tableName + ".csv");
+ StringBuilder sb = new StringBuilder();
+ sb.AppendLine("SET SESSION sql_mode = 'NO_ENGINE_SUBSTITUTION';");
+ sb.AppendLine($"DROP TABLE IF EXISTS `{tableName}`; ");
+ sb.AppendLine($"CREATE TABLE `{tableName}` ({Data.Columns.ToSql(Key)}) ENGINE=MyISAM DEFAULT CHARACTER SET = utf8 COLLATE = utf8_unicode_ci; ");
- using (StreamWriter csv = new StreamWriter(csvName))
- csv.Write(ToCSV());
+ using (StreamWriter csv = new StreamWriter(csvName))
+ csv.Write(ToCSV());
- using (MySqlConnection connection = new MySqlConnection(connectionstring))
- {
- connection.Open();
+ using (MySqlConnection connection = new MySqlConnection(connectionstring))
+ {
+ connection.Open();
- using (MySqlCommand command = new MySqlCommand(sb.ToString(), connection))
- command.ExecuteNonQuery();
+ using (MySqlCommand command = new MySqlCommand(sb.ToString(), connection))
+ command.ExecuteNonQuery();
new MySqlBulkLoader(connection)
{
@@ -525,13 +521,14 @@ public void ToSQLTable(string connectionstring)
NumberOfLinesToSkip = 1,
FileName = csvName,
FieldQuotationCharacter = '"',
- CharacterSet = "UTF8"
- }.Load();
- }
-
- try { File.Delete(csvName); }
- catch { }
- }
+ CharacterSet = "UTF8",
+ Local = true
+ }.Load();
+ }
+
+ try { File.Delete(csvName); }
+ catch { }
+ }
///
/// Generates a CSV file string
diff --git a/WDBXEditor/WDBXEditor.csproj b/WDBXEditor/WDBXEditor.csproj
index a6e14ae..977ec49 100644
--- a/WDBXEditor/WDBXEditor.csproj
+++ b/WDBXEditor/WDBXEditor.csproj
@@ -9,7 +9,7 @@
Properties
WDBXEditor
WDBX Editor
- v4.6.1
+ v4.8
512
true
false
@@ -29,6 +29,7 @@
true
+
AnyCPU
@@ -103,19 +104,61 @@
-
- ..\packages\MySql.Data.6.9.9\lib\net45\MySql.Data.dll
- True
+
+ ..\packages\BouncyCastle.Cryptography.2.4.0\lib\net461\BouncyCastle.Cryptography.dll
+
+
+ ..\packages\Google.Protobuf.3.27.0\lib\net45\Google.Protobuf.dll
+
+
+ ..\packages\K4os.Compression.LZ4.1.3.8\lib\net462\K4os.Compression.LZ4.dll
+
+
+ ..\packages\K4os.Compression.LZ4.Streams.1.3.8\lib\net462\K4os.Compression.LZ4.Streams.dll
+
+
+ ..\packages\K4os.Hash.xxHash.1.0.8\lib\net462\K4os.Hash.xxHash.dll
+
+
+ ..\packages\Microsoft.Bcl.AsyncInterfaces.8.0.0\lib\net462\Microsoft.Bcl.AsyncInterfaces.dll
+
+
+ ..\packages\MySql.Data.8.4.0\lib\net48\MySql.Data.dll
+
+ ..\packages\System.Buffers.4.5.1\lib\net461\System.Buffers.dll
+
+
+ ..\packages\System.Configuration.ConfigurationManager.8.0.0\lib\net462\System.Configuration.ConfigurationManager.dll
+
+
+ ..\packages\System.Diagnostics.DiagnosticSource.8.0.1\lib\net462\System.Diagnostics.DiagnosticSource.dll
+
-
- ..\packages\System.Threading.Tasks.Dataflow.4.7.0\lib\portable-net45+win8+wpa81\System.Threading.Tasks.Dataflow.dll
- True
+
+ ..\packages\System.IO.Pipelines.8.0.0\lib\net462\System.IO.Pipelines.dll
+
+
+
+ ..\packages\System.Memory.4.5.5\lib\net461\System.Memory.dll
+
+
+
+ ..\packages\System.Numerics.Vectors.4.5.0\lib\net46\System.Numerics.Vectors.dll
+
+
+ ..\packages\System.Runtime.CompilerServices.Unsafe.6.0.0\lib\net461\System.Runtime.CompilerServices.Unsafe.dll
+
+
+ ..\packages\System.Threading.Tasks.Dataflow.8.0.0\lib\net462\System.Threading.Tasks.Dataflow.dll
+
+
+ ..\packages\System.Threading.Tasks.Extensions.4.5.4\lib\net461\System.Threading.Tasks.Extensions.dll
@@ -128,6 +171,9 @@
+
+ ..\packages\ZstdSharp.Port.0.8.1\lib\net462\ZstdSharp.dll
+
diff --git a/WDBXEditor/packages.config b/WDBXEditor/packages.config
index 7455bec..3df12c2 100644
--- a/WDBXEditor/packages.config
+++ b/WDBXEditor/packages.config
@@ -1,5 +1,20 @@
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file