|
20 | 20 | package org.apache.hugegraph.unit.mysql; |
21 | 21 |
|
22 | 22 | import org.apache.hugegraph.backend.store.BackendStore; |
| 23 | +import org.apache.hugegraph.backend.store.mysql.MysqlSessions; |
| 24 | +import org.apache.hugegraph.backend.store.mysql.ResultSetWrapper; |
23 | 25 | import org.apache.hugegraph.testutil.Assert; |
24 | 26 | import org.junit.Before; |
25 | 27 | import org.junit.Test; |
| 28 | +import java.sql.PreparedStatement; |
| 29 | +import java.sql.SQLException; |
26 | 30 |
|
27 | 31 | public class MysqlTest extends BaseMysqlUnitTest{ |
28 | 32 | @Before |
29 | | - public void setUp(){ |
| 33 | + public void setUp() throws Exception { |
30 | 34 | super.setup(); |
31 | 35 | } |
32 | 36 |
|
33 | 37 | @Test |
34 | | - public void testMysqlMetaVersion(){ |
| 38 | + public void testMysqlMetaVersion() throws SQLException { |
35 | 39 | BackendStore systemStore = this.provider.loadSystemStore(config); |
| 40 | + |
| 41 | + // Record system version before truncation |
36 | 42 | String beforeVersion = systemStore.storedVersion(); |
| 43 | + |
| 44 | + // Get sessions for direct table operations |
| 45 | + MysqlSessions.Session session = this.sessions.session(); |
| 46 | + session.open(); |
| 47 | + |
| 48 | + // Get the actual table names from the store |
| 49 | + String vertexTable = "g_v"; |
| 50 | + String edgeOutTable = "g_oe"; |
| 51 | + String edgeInTable = "g_ie"; |
| 52 | + |
| 53 | + // Insert test vertex data directly using simple SQL |
| 54 | + String insertVertex = String.format( |
| 55 | + "INSERT INTO %s (ID, LABEL, PROPERTIES, EXPIRED_TIME) VALUES ('test_vertex', 1, '{\"name\":\"test_vertex\"}', 0)", |
| 56 | + vertexTable |
| 57 | + ); |
| 58 | + session.execute(insertVertex); |
| 59 | + |
| 60 | + // Insert test edge data directly using simple SQL |
| 61 | + String insertEdgeOut = String.format( |
| 62 | + "INSERT INTO %s (OWNER_VERTEX, DIRECTION, LABEL, SUB_LABEL, SORT_VALUES, OTHER_VERTEX, PROPERTIES, EXPIRED_TIME) VALUES ('test_vertex', 0, 1, 0, '', 'target_vertex', '{\"weight\":1.0}', 0)", |
| 63 | + edgeOutTable |
| 64 | + ); |
| 65 | + session.execute(insertEdgeOut); |
| 66 | + |
| 67 | + String insertEdgeIn = String.format( |
| 68 | + "INSERT INTO %s (OWNER_VERTEX, DIRECTION, LABEL, SUB_LABEL, SORT_VALUES, OTHER_VERTEX, PROPERTIES, EXPIRED_TIME) VALUES ('target_vertex', 1, 1, 0, '', 'test_vertex', '{\"weight\":1.0}', 0)", |
| 69 | + edgeInTable |
| 70 | + ); |
| 71 | + session.execute(insertEdgeIn); |
| 72 | + |
| 73 | + // Verify data exists by querying |
| 74 | + String selectVertex = String.format("SELECT * FROM %s WHERE ID = 'test_vertex'", vertexTable); |
| 75 | + ResultSetWrapper vResult = session.select(selectVertex); |
| 76 | + Assert.assertTrue("vertex data should exist", vResult.next()); |
| 77 | + vResult.close(); |
| 78 | + |
| 79 | + String selectEdgeOut = String.format("SELECT * FROM %s WHERE OWNER_VERTEX = 'test_vertex' AND DIRECTION = 0", edgeOutTable); |
| 80 | + ResultSetWrapper oeResult = session.select(selectEdgeOut); |
| 81 | + Assert.assertTrue("out edge data should exist", oeResult.next()); |
| 82 | + oeResult.close(); |
| 83 | + |
| 84 | + String selectEdgeIn = String.format("SELECT * FROM %s WHERE OWNER_VERTEX = 'target_vertex' AND DIRECTION = 1", edgeInTable); |
| 85 | + ResultSetWrapper ieResult = session.select(selectEdgeIn); |
| 86 | + Assert.assertTrue("in edge data should exist", ieResult.next()); |
| 87 | + ieResult.close(); |
| 88 | + |
| 89 | + // Execute truncate operation, clears all graph data but preserves system tables |
37 | 90 | this.provider.truncate(); |
38 | | - String afterInitVersion = systemStore.storedVersion(); |
39 | | - Assert.assertNotNull(beforeVersion); |
40 | | - Assert.assertNotNull(afterInitVersion); |
41 | | - Assert.assertEquals(beforeVersion, afterInitVersion); |
| 91 | + |
| 92 | + // Verify system version remains unchanged after truncation |
| 93 | + String afterVersion = systemStore.storedVersion(); |
| 94 | + Assert.assertNotNull("System metadata version should exist", afterVersion); |
| 95 | + Assert.assertEquals("System metadata version should remain unchanged after truncation", beforeVersion, afterVersion); |
| 96 | + |
| 97 | + // Verify data has been cleared |
| 98 | + vResult = session.select(selectVertex); |
| 99 | + Assert.assertFalse("vertex data should not exist", vResult.next()); |
| 100 | + vResult.close(); |
| 101 | + |
| 102 | + oeResult = session.select(selectEdgeOut); |
| 103 | + Assert.assertFalse("out edge data should not exist", oeResult.next()); |
| 104 | + oeResult.close(); |
| 105 | + |
| 106 | + ieResult = session.select(selectEdgeIn); |
| 107 | + Assert.assertFalse("in edge data should not exist", ieResult.next()); |
| 108 | + ieResult.close(); |
42 | 109 | } |
43 | 110 | } |
0 commit comments