@@ -332,7 +332,7 @@ public void doExport(List<SQLTable> tableList, SQLDatabase targetDB ) throws SQL
332332 tableInputMeta .setSQL (tableMapping .get (sourceTable ).toString ());
333333 transMeta .addStep (stepMeta );
334334 //sort the Rows
335- StepMeta sortedStepMeta = createSortRowsStep (transMeta ,stepMeta );
335+ StepMeta sortedStepMeta = createSortRowsStep (transMeta ,stepMeta , keyFields1 );
336336 transMeta .addStep (sortedStepMeta );
337337 inputSteps .add (sortedStepMeta );
338338 }
@@ -921,10 +921,25 @@ public Object[] createTestRepository() {
921921 * @param inputStep
922922 * @return stepMeta
923923 */
924- private StepMeta createSortRowsStep (TransMeta transMeta , StepMeta inputStep ) {
924+ private StepMeta createSortRowsStep (TransMeta transMeta , StepMeta inputStep , List < String []> sortKeys ) {
925925 StepMeta stepMeta = null ;
926+
926927 SortRowsMeta sortRowsMeta = new SortRowsMeta ();
927928 sortRowsMeta .setDefault ();
929+
930+ if (!sortKeys .isEmpty ()) {
931+ String [] sortFields = sortKeys .get (0 );
932+ boolean [] ascendingFields = new boolean [sortFields .length ];
933+ boolean [] caseSensitive = new boolean [sortFields .length ];
934+ for (int i =0 ;i <sortFields .length ; i ++) {
935+ ascendingFields [i ] = true ;
936+ caseSensitive [i ] = false ;
937+ }
938+ sortRowsMeta .setFieldName (sortFields );
939+ sortRowsMeta .setAscending (new boolean [] {true });
940+ sortRowsMeta .setCaseSensitive (new boolean [] {false });
941+ }
942+
928943 Point location = inputStep .getLocation ();
929944 stepMeta = new StepMeta ("SortRows" , "SortRows for " + inputStep .getName (), sortRowsMeta );
930945 stepMeta .setDraw (true );
@@ -950,16 +965,20 @@ List<StepMeta> createMergeJoins(int defaultJoinType, TransMeta transMeta, List<S
950965 mergeJoinMeta .setStepMeta1 (inputSteps .get (0 ));
951966 mergeJoinMeta .setStepName2 (inputSteps .get (1 ).getName ());
952967 mergeJoinMeta .setStepMeta2 (inputSteps .get (1 ));
953- String [] keyField_1 = keyField1 .get (0 );
954- String [] keyField_2 = keyField2 .get (0 );
968+ if (!keyField1 .isEmpty ()) {
969+ String [] keyField_1 = keyField1 .get (0 );
970+ logger .debug ("Key_Field1 :" +Arrays .toString (keyField_1 ));
971+ mergeJoinMeta .setKeyFields1 (keyField_1 );
972+ }
973+ if (!keyField2 .isEmpty ()) {
974+ String [] keyField_2 = keyField2 .get (0 );
975+ logger .debug ("Key_Field2 :" +Arrays .toString (keyField_2 ));
976+ mergeJoinMeta .setKeyFields2 (keyField_2 );
977+ }
955978 logger .debug ("MergeJoin Join tables " +
956979 inputSteps .get (0 ).getName () + " and " +
957980 inputSteps .get (1 ).getName ());
958- logger .debug ("Key_Field1 :" +Arrays .toString (keyField_1 ));
959- logger .debug ("Key_Field2 :" +Arrays .toString (keyField_2 ));
960- mergeJoinMeta .setKeyFields1 (keyField_1 );
961- mergeJoinMeta .setKeyFields2 (keyField_2 );
962- //removing the 'SortRows for' form the previous inputsets(sortRoes steps) to make the name more meaning for merge join.
981+ //removing the text 'SortRows for' form the previous inputsets(sortRows steps) to make the name more meaning for merge join.
963982 String table1_name = inputSteps .get (0 ).getName ();
964983 table1_name = table1_name .replaceFirst ("SortRows for " ,"" );
965984 String table2_name = inputSteps .get (0 ).getName ();
@@ -985,11 +1004,14 @@ List<StepMeta> createMergeJoins(int defaultJoinType, TransMeta transMeta, List<S
9851004 mergeJoinMeta .setStepMeta1 (mergeSteps .get (i ));
9861005 mergeJoinMeta .setStepName2 (inputSteps .get (i +2 ).getName ());
9871006 mergeJoinMeta .setStepMeta2 (inputSteps .get (i +2 ));
988- String [] keyField_1 = keyField1 .get (i +2 );
989- String [] keyField_2 = keyField2 .get (i +2 );
990-
991- mergeJoinMeta .setKeyFields1 (keyField_1 );
992- mergeJoinMeta .setKeyFields2 (keyField_2 );
1007+ if (!keyField1 .isEmpty ()) {
1008+ String [] keyField_1 = keyField1 .get (i +2 );
1009+ mergeJoinMeta .setKeyFields1 (keyField_1 );
1010+ }
1011+ if (!keyField2 .isEmpty ()) {
1012+ String [] keyField_2 = keyField2 .get (i +2 );
1013+ mergeJoinMeta .setKeyFields2 (keyField_2 );
1014+ }
9931015 String table1_name = inputSteps .get (i +2 ).getName ();
9941016 table1_name = table1_name .replaceFirst ("SortRows for " ,"" );
9951017 StepMeta stepMeta = new StepMeta ("MergeJoin" , "Join table " + table1_name , mergeJoinMeta );
0 commit comments