Browse Source

HPCC-18415 Clean up unnecessary fileview code

Signed-off-by: Gavin Halliday <gavin.halliday@lexisnexis.com>
Gavin Halliday 7 years ago
parent
commit
d454c1e731

+ 0 - 34
common/fileview2/CMakeLists.txt

@@ -29,7 +29,6 @@ project( fileview2 )
 
 set (    SRCS 
          fvdisksource.cpp 
-         fvdsremote.cpp 
          fvidxsource.cpp 
          fvquerysource.cpp 
          fvrelate.cpp 
@@ -40,7 +39,6 @@ set (    SRCS
          fvwusource.cpp 
          
          fvdisksource.ipp 
-         fvdsremote.ipp 
          fvidxsource.ipp 
          fvquerysource.ipp 
          fvrelate.ipp 
@@ -102,35 +100,3 @@ target_link_libraries ( fileview2
          hql 
     )
 
-set (    SRCS 
-         fvserver.cpp 
-    )
-
-ADD_DEFINITIONS ( -D_CONSOLE )
-
-if( PLATFORM )
-    HPCC_ADD_EXECUTABLE ( fvserver ${SRCS} )
-    set_target_properties(fvserver PROPERTIES 
-        COMPILE_FLAGS -D_CONSOLE
-    )
-    #install ( TARGETS fvserver RUNTIME DESTINATION ${EXEC_DIR} ) #not used at present
-
-    target_link_libraries ( fvserver
-         jlib 
-         mp 
-         hrpc 
-         remote 
-         dalibase 
-         environment 
-         dllserver 
-         jhtree 
-         nbcd 
-         eclrtl 
-         deftype 
-         workunit 
-         hql 
-         fileview2 
-    )
-endif()
-
-

+ 0 - 26
common/fileview2/fileview.hpp

@@ -87,36 +87,15 @@ interface IXmlWriter;
 interface IResultSetCursor : extends IInterface
 {
     virtual bool absolute(__int64 row) = 0;
-    virtual void afterLast() = 0;
-    virtual void beforeFirst() = 0;
-    virtual bool fetch(__int64 fileoffset) = 0;
     virtual bool first() = 0;
-    virtual bool getBoolean(int columnIndex) = 0;
-    virtual IDataVal & getBytes(IDataVal & d, int columnIndex) = 0;
-    virtual xdouble getDouble(int columnIndex) = 0;
-    virtual int getFetchSize() const = 0;
     virtual IResultSetCursor * getChildren(int columnIndex) const = 0;
     virtual bool getIsAll(int columnIndex) const = 0;
-    virtual __int64 getInt(int columnIndex) = 0;
     virtual IDataVal & getRaw(IDataVal & d, int columnIndex) = 0;
-    virtual IDataVal & getRawRow(IDataVal & d) = 0;
-    virtual IStringVal & getString(IStringVal & ret, int columnIndex) = 0;
-    virtual bool isAfterLast() const = 0;
-    virtual bool isBeforeFirst() const = 0;
-    virtual bool isFirst() const = 0;
-    virtual bool isLast() const = 0;
-    virtual bool isNull(int columnIndex) const = 0;
     virtual bool isValid() const = 0;
-    virtual bool last() = 0;
     virtual bool next() = 0;
-    virtual bool previous() = 0;
     virtual INewResultSet * queryResultSet() = 0;
-    virtual bool relative(__int64 rows) = 0;
-    virtual void serialize(IDataVal & d) = 0;
     virtual IStringVal & getDisplayText(IStringVal & ret, int columnIndex) = 0;
-    virtual IStringVal & getXml(IStringVal & ret, int columnIndex) = 0;
     virtual IStringVal & getXmlRow(IStringVal & ret) = 0;
-    virtual IStringVal & getXmlItem(IStringVal & ret) = 0;
     virtual void beginWriteXmlRows(IXmlWriter & writer) = 0;
     virtual void writeXmlRow(IXmlWriter & writer) = 0;
     virtual void endWriteXmlRows(IXmlWriter & writer) = 0;
@@ -148,9 +127,7 @@ interface IFilteredResultSet : extends IResultSetFilter
 interface INewResultSet : extends IInterface
 {
     virtual IResultSetCursor * createCursor() = 0;
-    virtual IResultSetCursor * createCursor(IDataVal & buffer) = 0;
     virtual IFilteredResultSet * createFiltered() = 0;
-    virtual IResultSetCursor * createSortedCursor(unsigned column, bool descend) = 0;
     virtual const IResultSetMetaData & getMetaData() const = 0;
     virtual __int64 getNumRows() const = 0;
     virtual bool supportsRandomSeek() const = 0;
@@ -178,9 +155,6 @@ extern FILEVIEW_API INewResultSet* createNewResultSetSeqName(IResultSetFactory &
 extern FILEVIEW_API IResultSetFactory * getResultSetFactory(const char * username, const char * password);
 extern FILEVIEW_API IResultSetFactory * getSecResultSetFactory(ISecManager *secmgr, ISecUser *secuser, const char * username, const char * password);
 
-extern FILEVIEW_API IResultSetFactory * getRemoteResultSetFactory(const char * remoteServer, const char * username, const char * password);
-extern FILEVIEW_API IResultSetFactory * getSecRemoteResultSetFactory(const char * remoteServer, ISecManager &secmgr, ISecUser &secuser);
-
 //Formatting applied remotely, so it can be accessed between different operating systems...
 extern FILEVIEW_API IResultSetFactory * getRemoteResultSetFactory(const char * remoteServer, const char * username, const char * password);
 extern FILEVIEW_API int findResultSetColumn(const INewResultSet * results, const char * columnName);

+ 0 - 601
common/fileview2/fvdsremote.cpp

@@ -1,601 +0,0 @@
-/*##############################################################################
-
-    HPCC SYSTEMS software Copyright (C) 2012 HPCC Systems®.
-
-    Licensed under the Apache License, Version 2.0 (the "License");
-    you may not use this file except in compliance with the License.
-    You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-    Unless required by applicable law or agreed to in writing, software
-    distributed under the License is distributed on an "AS IS" BASIS,
-    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-    See the License for the specific language governing permissions and
-    limitations under the License.
-############################################################################## */
-
-#include "jliball.hpp"
-#include "eclrtl.hpp"
-
-#include "hqlexpr.hpp"
-#include "hqlthql.hpp"
-#include "fvresultset.ipp"
-#include "fileview.hpp"
-#include "fvdisksource.ipp"
-#include "fvwugen.hpp"
-#include "fvdsremote.ipp"
-#include "fverror.hpp"
-#include "mpcomm.hpp"
-
-
-#define TIMEOUT             60000
-#define REMOTE_DATA_SIZE    8000        // roughly how much is sent back for each request
-
-enum { FVCMDnone, FVCMDrow, FVCMDraw, FVCMDnumrows, FVCMDcreatewu, FVCMDcreatefile, FVCMDdestroy, FVCMDfetch, FVCMDfetchraw, FVCMDmax };
-
-//---------------------------------------------------------------------------
-
-static void sendReceive(INode * serverNode, CMessageBuffer & msg)
-{
-    if (!queryWorldCommunicator().sendRecv(msg, serverNode, MPTAG_FILEVIEW, TIMEOUT))
-        throwError(FVERR_TimeoutRemoteFileView);
-
-    msg.setEndian(__BIG_ENDIAN);
-    IException * error = deserializeException(msg);
-    if (error)
-        throw error;
-}
-
-
-RemoteDataSource::RemoteDataSource(const SocketEndpoint & _serverEP, unique_id_t _id, IFvDataSourceMetaData * _metaData, __int64 _cachedNumRows, bool _isIndex) : serverEP(_serverEP)
-{
-    id = _id;
-    metaData.set(_metaData);
-    serverNode.setown(createINode(serverEP));
-    cachedNumRows = _cachedNumRows;
-    index = _isIndex;
-    openCount = 0;
-}
-
-
-IFvDataSourceMetaData * RemoteDataSource::queryMetaData()
-{
-    return metaData;
-}
-
-void RemoteDataSource::beforeDispose()
-{
-    CMessageBuffer msg;
-    msg.setEndian(__BIG_ENDIAN);
-    msg.append((byte)FVCMDdestroy);
-    msg.append(id);
-
-    sendReceive(msg);
-}
-
-
-bool RemoteDataSource::getARow(MemoryBuffer & out, RowCache & cache, byte cmd, __int64 row)
-{
-    RowLocation location;
-
-    if (cache.getCacheRow(row, location))
-    {
-        out.append(location.matchLength, location.matchRow);
-        return true;
-    }
-
-    CMessageBuffer msg;
-    msg.setEndian(__BIG_ENDIAN);
-    msg.append(cmd);
-    msg.append(id);
-    msg.append(row);
-
-    sendReceive(msg);
-
-    bool ok;
-    msg.read(ok);
-    if (!ok) return false;
-
-    __int64 start;
-    msg.read(start);
-
-    VariableRowBlock * next = new VariableRowBlock(msg, start);
-    cache.addRowsOwn(next);
-
-    if (!cache.getCacheRow(row, location))
-        assertex(!"Internal Error!");
-    out.append(location.matchLength, location.matchRow);
-    return true;
-}
-
-
-bool RemoteDataSource::fetchRow(MemoryBuffer & out, __int64 offset)
-{
-    CMessageBuffer msg;
-    msg.setEndian(__BIG_ENDIAN);
-    msg.append(FVCMDfetch);
-    msg.append(id);
-    msg.append(offset);
-
-    sendReceive(msg);
-
-    bool ok;
-    msg.read(ok);
-    if (!ok) return false;
-    size32_t len;
-    msg.read(len);
-    out.append(len, msg.readDirect(len));
-    return true;
-}
-
-bool RemoteDataSource::fetchRawRow(MemoryBuffer & out, __int64 offset)
-{
-    CMessageBuffer msg;
-    msg.setEndian(__BIG_ENDIAN);
-    msg.append(FVCMDfetchraw);
-    msg.append(id);
-    msg.append(offset);
-
-    sendReceive(msg);
-
-    bool ok;
-    msg.read(ok);
-    if (!ok) return false;
-    size32_t len;
-    msg.read(len);
-    out.append(len, msg.readDirect(len));
-    return true;
-}
-
-bool RemoteDataSource::getRow(MemoryBuffer & out, __int64 row)
-{
-    return getARow(out, translatedRows, FVCMDrow, row);
-}
-
-bool RemoteDataSource::getRawRow(MemoryBuffer & out, __int64 row)
-{
-    return getARow(out, rawRows, FVCMDraw, row);
-}
-
-
-__int64 RemoteDataSource::numRows(bool force)
-{
-    if (!force)
-        return cachedNumRows;
-    CMessageBuffer msg;
-    msg.setEndian(__BIG_ENDIAN);
-    msg.append((byte)FVCMDnumrows);
-    msg.append(id);
-
-    sendReceive(msg);
-
-    __int64 result;
-    msg.read(result);
-    return result;
-}
-
-
-void RemoteDataSource::onClose()
-{ 
-    if (--openCount == 0)
-    {
-        //MORE: Should tell the server...
-    }
-}
-
-void RemoteDataSource::onOpen() 
-{ 
-    //MORE: critical section
-    if (openCount++ == 0)
-    {
-        //MORE - tell the server...
-    }
-}
-
-void RemoteDataSource::sendReceive(CMessageBuffer & msg)
-{
-    ::sendReceive(serverNode, msg);
-}
-
-
-IFvDataSource * createRemoteDataSource(const SocketEndpoint & server, const char * username, const char * password, const char * wuid, unsigned sequence, const char * name)
-{
-    Owned<INode> serverNode = createINode(server);
-
-    CMessageBuffer msg;
-    msg.setEndian(__BIG_ENDIAN);
-    msg.append((byte)FVCMDcreatewu);
-    msg.append(myProcessSession());
-    msg.append(username);
-    msg.append(password);
-    msg.append(wuid);
-    msg.append(sequence);
-    msg.append(name);
-
-    sendReceive(serverNode, msg);
-
-    unsigned short version;
-    unique_id_t id;
-    __int64 numRows;
-    bool isIndex;
-    msg.read(version);
-    msg.read(id);
-    msg.read(numRows);
-    Owned<IFvDataSourceMetaData> meta = deserializeDataSourceMeta(msg);
-    msg.read(isIndex);
-    if (id)
-        return new RemoteDataSource(server, id, meta, numRows, isIndex);
-    return 0;
-}
-
-IFvDataSource * createRemoteFileDataSource(const SocketEndpoint & server, const char * username, const char * password, const char * logicalName)
-{
-    Owned<INode> serverNode = createINode(server);
-
-    CMessageBuffer msg;
-    msg.setEndian(__BIG_ENDIAN);
-    msg.append((byte)FVCMDcreatefile);
-    msg.append(myProcessSession());
-    msg.append(username);
-    msg.append(password);
-    msg.append(logicalName);
-
-    sendReceive(serverNode, msg);
-
-    unsigned short version;
-    unique_id_t id;
-    __int64 numRows;
-    bool isIndex;
-    msg.read(version);
-    msg.read(id);
-    msg.read(numRows);
-    Owned<IFvDataSourceMetaData> meta = deserializeDataSourceMeta(msg);
-    msg.read(isIndex);
-
-    if (id)
-        return new RemoteDataSource(server, id, meta, numRows, isIndex);
-    return 0;
-}
-
-
-
-//---------------------------------------------------------------------------
-
-static RemoteDataSourceServer * server;
-
-RemoteDataEntry::~RemoteDataEntry()
-{
-    if (subscription)
-        querySessionManager().unsubscribeSession(subscription);
-}
-
-
-RemoteDataSourceServer::RemoteDataSourceServer(const char * _queue, const char * _cluster) : Thread("Remote File View Server")
-{
-    alive = true;
-    nextId = 0;
-    queue.set(_queue);
-    cluster.set(_cluster);
-}
-
-
-unique_id_t RemoteDataSourceServer::addDataSource(SessionId session, IFvDataSource * ds)
-{
-    RemoteDataEntry * newEntry = new RemoteDataEntry;
-    newEntry->id = ++nextId;
-    newEntry->session = session;
-    newEntry->ds.set(ds);
-    newEntry->subscription = querySessionManager().subscribeSession(session, this);
-
-    //MORE: Register the session so if it dies then we get notified.
-    CriticalBlock procedure(cs);
-    entries.append(*newEntry);
-    return newEntry->id;
-}
-
-void RemoteDataSourceServer::doCmdFetch(bool raw, MemoryBuffer & in, MemoryBuffer & out)
-{
-    Owned<IFvDataSource> ds = readDataSource(in);
-    if (!ds)
-    {
-        out.append(false);
-        return;
-    }
-
-    __int64 requestedOffset;
-    in.read(requestedOffset);
-
-    MemoryBuffer temp;
-    bool ok = ds->fetchRow(temp, requestedOffset);
-    out.append(ok);                     // ok
-    out.append(temp.length());
-    out.append(temp.length(), temp.toByteArray());
-}
-
-void RemoteDataSourceServer::doCmdFetchRaw(bool raw, MemoryBuffer & in, MemoryBuffer & out)
-{
-    Owned<IFvDataSource> ds = readDataSource(in);
-    if (!ds)
-    {
-        out.append(false);
-        return;
-    }
-
-    __int64 requestedOffset;
-    in.read(requestedOffset);
-
-    MemoryBuffer temp;
-    bool ok = ds->fetchRawRow(temp, requestedOffset);
-    out.append(ok);                     // ok
-    out.append(temp.length());
-    out.append(temp.length(), temp.toByteArray());
-}
-
-void RemoteDataSourceServer::doCmdRow(bool raw, MemoryBuffer & in, MemoryBuffer & out)
-{
-    Owned<IFvDataSource> ds = readDataSource(in);
-    if (!ds)
-    {
-        out.append(false);
-        return;
-    }
-
-    __int64 requestedRow;
-    in.read(requestedRow);
-
-    unsigned startPos = out.length();
-    unsigned numRows = 0;
-    out.append(true);                       // ok
-    out.append(requestedRow);       // start 
-
-    unsigned numRowsPos = out.length();
-    out.append(numRows);                // total number of rows;
-    for (;;)
-    {
-        unsigned lengthPos = out.length();
-        out.append((unsigned)0);                // size of this row.
-        unsigned startRow = out.length();
-        if (raw)
-        {
-            if (!ds->getRawRow(out, requestedRow+numRows))
-                break;
-        }
-        else
-        {
-            if (!ds->getRow(out, requestedRow+numRows))
-                break;
-        }
-        if ((numRows != 0) && (out.length() > REMOTE_DATA_SIZE))
-            break;
-        unsigned endRow = out.length();
-        out.rewrite(lengthPos);
-        out.append(endRow-startRow);
-        out.rewrite(endRow);
-        numRows++;
-    }
-
-    if (numRows == 0)
-    {
-        out.rewrite(startPos);
-        out.append(false);
-        return;
-    }
-
-    unsigned totalLength = out.length();
-    out.rewrite(numRowsPos);
-    out.append(numRows);
-    out.rewrite(totalLength);
-}
-
-void RemoteDataSourceServer::doCmdNumRows(MemoryBuffer & in, MemoryBuffer & out)
-{
-    Owned<IFvDataSource> ds = readDataSource(in);
-    __int64 numRows = ds ? ds->numRows(true) : 0;
-    out.append(numRows);
-}
-
-void RemoteDataSourceServer::doCmdCreateWorkunit(MemoryBuffer & in, MemoryBuffer & out)
-{
-    SessionId session;
-    StringAttr wuid, username, password;
-    unsigned sequence;
-    StringAttr name;
-
-    in.read(session);
-    in.read(username).read(password);
-    in.read(wuid);
-    in.read(sequence);
-    in.read(name);
-
-    DBGLOG("RemoteFileView:CreateWorkunit('%s',%d,'%s') by[%s:%" I64F "d", wuid.get(), sequence, name ? name.get() : "", username.get(), session);
-    Owned<IConstWUResult> wuResult = resolveResult(wuid, sequence, name);
-    Owned<IFvDataSource> ds = createDataSource(wuResult, wuid, username, password);
-    unique_id_t id = addDataSource(session, ds);
-
-    out.append((unsigned short)CurRemoteVersion);
-    out.append(id);
-    out.append(ds->numRows(false));
-    ds->queryMetaData()->serialize(out);
-    out.append(ds->isIndex());
-
-    DBGLOG("RemoteFileView:CreateWorkunit returns %" I64F "d", id);
-}
-
-void RemoteDataSourceServer::doCmdCreateFile(MemoryBuffer & in, MemoryBuffer & out)
-{
-    SessionId session;
-    StringAttr username, password, logicalName;
-
-    in.read(session);
-    in.read(username).read(password);
-    in.read(logicalName);
-
-    DBGLOG("RemoteFileView:CreateFile('%s') by[%s:%" I64F "d", logicalName.get(), username.get(), session);
-    Owned<IFvDataSource> ds = createFileDataSource(logicalName, cluster, username, password);
-    unique_id_t id = addDataSource(session, ds);
-
-    out.append((unsigned short)CurRemoteVersion);
-    out.append(id);
-    out.append(ds->numRows(false));
-    ds->queryMetaData()->serialize(out);
-    out.append(ds->isIndex());
-
-    DBGLOG("RemoteFileView:CreateFile returns %" I64F "d", id);
-}
-
-void RemoteDataSourceServer::doCmdDestroy(MemoryBuffer & in, MemoryBuffer & out)
-{
-    unique_id_t id;
-    in.read(id);
-
-    DBGLOG("RemoteFileView:Destroy(%" I64F "d)", id);
-    CriticalBlock block(cs);
-    ForEachItemIn(idx, entries)
-    {
-        RemoteDataEntry & cur = entries.item(idx);
-        if (cur.id == id)
-        {
-            entries.remove(idx);
-            return;
-        }
-    }
-}
-
-
-IFvDataSource * RemoteDataSourceServer::getDataSource(unique_id_t id)
-{
-    CriticalBlock block(cs);
-    ForEachItemIn(idx, entries)
-    {
-        RemoteDataEntry & cur = entries.item(idx);
-        if (cur.id == id)
-            return LINK(cur.ds);
-    }
-    return NULL;
-}
-
-
-void RemoteDataSourceServer::closed(SessionId id)
-{
-    removeSession(id);
-}
-
-void RemoteDataSourceServer::aborted(SessionId id)
-{
-    removeSession(id);
-}
-
-IFvDataSource * RemoteDataSourceServer::readDataSource(MemoryBuffer & in)
-{
-    unique_id_t id;
-    in.read(id);
-    return getDataSource(id);
-}
-
-
-void RemoteDataSourceServer::removeSession(SessionId id)
-{
-    DBGLOG("RemoteFileView:Session Died");
-    CriticalBlock block(cs);
-    ForEachItemInRev(idx, entries)
-    {
-        RemoteDataEntry & cur = entries.item(idx);
-        if (cur.session == id)
-        {
-            DBGLOG("RemoteFileView:Instance Died %" I64F "d", cur.id);
-            entries.remove(idx);
-        }
-    }
-}   
-
-
-//MORE: If this is ever actually used then it should probably have several threads
-//      processing the commands, especially if the commands can involve lots of processing.
-int RemoteDataSourceServer::run()
-{
-    CMessageBuffer msg;
-    MemoryBuffer result;
-    INode * sender;
-    while (alive)
-    {
-        msg.clear();
-        if (queryWorldCommunicator().recv(msg, 0, MPTAG_FILEVIEW, &sender))
-        {
-            msg.setEndian(__BIG_ENDIAN);
-            result.setEndian(__BIG_ENDIAN);
-
-
-            try
-            {
-                serializeException(NULL, result.clear());
-                byte cmd;
-                msg.read(cmd);
-                switch (cmd)
-                {
-                case FVCMDrow:          doCmdRow(false, msg, result); break;
-                case FVCMDraw:          doCmdRow(true, msg, result); break;
-                case FVCMDnumrows:      doCmdNumRows(msg, result); break;
-                case FVCMDcreatewu:     doCmdCreateWorkunit(msg, result); break;
-                case FVCMDcreatefile:   doCmdCreateFile(msg, result); break;
-                case FVCMDdestroy:      doCmdDestroy(msg, result); break;
-                case FVCMDfetch:        doCmdFetch(false, msg, result); break;
-                case FVCMDfetchraw:     doCmdFetchRaw(false, msg, result); break;
-                default:
-                    throwError(FVERR_UnknownRemoteCommand);
-                }
-                msg.clear().append(result);
-            }
-            catch (IException * e)
-            {
-                serializeException(e, msg.clear());
-                e->Release();
-            }
-
-            queryWorldCommunicator().reply(msg, MP_ASYNC_SEND);
-            ::Release(sender);
-        }
-    }
-    server = NULL;
-    return 0;
-}
-
-
-
-void RemoteDataSourceServer::stop()
-{
-    alive = false;
-    queryWorldCommunicator().cancel(0, MPTAG_FILEVIEW);
-    join();
-}
-
-extern FILEVIEW_API void startRemoteDataSourceServer(const char * queue, const char * cluster)
-{
-    //This isn't properly thread safe - it also isn't ever used in practice, so not a problem.
-    if (!server)
-    {
-        server = new RemoteDataSourceServer(queue, cluster);
-        server->start();
-    }
-}
-
-extern FILEVIEW_API void stopRemoteDataSourceServer()
-{
-    if (server)
-        server->stop();
-}
-
-
-IConstWUResult * resolveResult(const char * wuid, unsigned sequence, const char * name)
-{
-    Owned<IWorkUnitFactory> factory = getWorkUnitFactory();
-    Owned<IConstWorkUnit> wu = factory->openWorkUnit(wuid);
-    return getWorkUnitResult(wu, name, sequence);
-}
-
-IConstWUResult * secResolveResult(ISecManager &secmgr, ISecUser &secuser, const char * wuid, unsigned sequence, const char * name)
-{
-    Owned<IWorkUnitFactory> factory = getWorkUnitFactory();
-    Owned<IConstWorkUnit> wu = factory->openWorkUnit(wuid, &secmgr, &secuser);
-    return (wu) ? getWorkUnitResult(wu, name, sequence) : NULL;
-}

+ 0 - 117
common/fileview2/fvdsremote.ipp

@@ -1,117 +0,0 @@
-/*##############################################################################
-
-    HPCC SYSTEMS software Copyright (C) 2012 HPCC Systems®.
-
-    Licensed under the Apache License, Version 2.0 (the "License");
-    you may not use this file except in compliance with the License.
-    You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-    Unless required by applicable law or agreed to in writing, software
-    distributed under the License is distributed on an "AS IS" BASIS,
-    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-    See the License for the specific language governing permissions and
-    limitations under the License.
-############################################################################## */
-
-#ifndef FVDSREMOTE_IPP
-#define FVDSREMOTE_IPP
-
-#include "fvdatasource.hpp"
-#include "fvsource.ipp"
-#include "dadfs.hpp"
-#include "dasess.hpp"
-#include "mpbuff.hpp"
-
-enum { 
-    FVRemoteVersion1 = 1,
-    CurRemoteVersion = FVRemoteVersion1
-};
-
-class RemoteDataSource : public ADataSource
-{
-public:
-    RemoteDataSource(const SocketEndpoint & _serverEP, unique_id_t _id, IFvDataSourceMetaData * _metaData, __int64 _cachedNumRows, bool _isIndex);
-
-    virtual bool init() { return true; }
-    virtual IFvDataSourceMetaData * queryMetaData();
-    virtual __int64 numRows(bool force = false);
-    virtual bool fetchRow(MemoryBuffer & out, __int64 offset);
-    virtual bool fetchRawRow(MemoryBuffer & out, __int64 offset);
-    virtual bool getRow(MemoryBuffer & out, __int64 row);
-    virtual bool getRawRow(MemoryBuffer & out, __int64 row);
-    virtual bool isIndex() { return index; }
-    virtual void onClose();
-    virtual void onOpen();
-
-    virtual void beforeDispose();
-    virtual bool optimizeFilter(unsigned offset, unsigned len, const void * data) { return false; } // MORE: Needs implementing if this is ever used.
-
-protected:
-    bool getARow(MemoryBuffer & out, RowCache & cache, byte cmd, __int64 row);
-    void sendReceive(CMessageBuffer & msg);
-
-protected:
-    const SocketEndpoint & serverEP;
-    unique_id_t id;
-    Owned<IFvDataSourceMetaData> metaData;
-    Owned<INode> serverNode;
-    RowCache rawRows;
-    RowCache translatedRows;
-    __int64 cachedNumRows;
-    unsigned openCount;
-    bool index;
-};
-
-
-class RemoteDataEntry : public CInterface
-{
-public:
-    ~RemoteDataEntry();
-    
-public:
-    unique_id_t id;
-    SessionId session;
-    SubscriptionId subscription;
-    Owned<IFvDataSource> ds;
-};
-
-class RemoteDataSourceServer : public Thread, public ISessionNotify
-{
-public:
-    RemoteDataSourceServer(const char * _queue, const char * _cluster);
-    IMPLEMENT_IINTERFACE
-
-//Thread
-    virtual int run();
-
-//ISessionNotify
-    virtual void closed(SessionId id);
-    virtual void aborted(SessionId id);
-    void stop();
-
-protected:
-    unique_id_t addDataSource(SessionId session, IFvDataSource * ds);
-    void doCmdFetch(bool raw, MemoryBuffer & in, MemoryBuffer & out);
-    void doCmdFetchRaw(bool raw, MemoryBuffer & in, MemoryBuffer & out);
-    void doCmdRow(bool raw, MemoryBuffer & in, MemoryBuffer & out);
-    void doCmdRaw(MemoryBuffer & in, MemoryBuffer & out);
-    void doCmdNumRows(MemoryBuffer & in, MemoryBuffer & out);
-    void doCmdCreateWorkunit(MemoryBuffer & in, MemoryBuffer & out);
-    void doCmdCreateFile(MemoryBuffer & in, MemoryBuffer & out);
-    void doCmdDestroy(MemoryBuffer & in, MemoryBuffer & out);
-    IFvDataSource * getDataSource(unique_id_t id);
-    IFvDataSource * readDataSource(MemoryBuffer & in);
-    void removeSession(SessionId id);
-
-protected:
-    bool alive;
-    unique_id_t nextId;
-    CriticalSection cs;
-    StringAttr queue;
-    StringAttr cluster;
-    CIArrayOf<RemoteDataEntry> entries;
-};
-
-#endif

File diff suppressed because it is too large
+ 33 - 923
common/fileview2/fvresultset.cpp


+ 1 - 117
common/fileview2/fvresultset.ipp

@@ -126,7 +126,6 @@ interface IExtendedNewResultSet : extends INewResultSet
     virtual bool fetchRaw(MemoryBuffer & out, __int64 fileoffset) = 0;
     virtual bool getRow(MemoryBuffer & out, __int64 row) = 0;
     virtual bool getRawRow(MemoryBuffer & out, __int64 row) = 0;
-    virtual void serialize(MemoryBuffer & out) = 0;
     virtual bool isMappedIndexField(unsigned columnIndex) = 0;
     virtual void onOpen() = 0;
     virtual void onClose() = 0;
@@ -140,9 +139,7 @@ public:
 
 //interface IResultSet
     virtual IResultSetCursor * createCursor();
-    virtual IResultSetCursor * createCursor(IDataVal & buffer);
     virtual IFilteredResultSet * createFiltered();
-    virtual IResultSetCursor * createSortedCursor(unsigned column, bool descend);
 
 protected:
     const CResultSetMetaData & getMeta() { return static_cast<const CResultSetMetaData &>(getMetaData()); }
@@ -167,7 +164,6 @@ public:
     virtual bool fetchRaw(MemoryBuffer & out, __int64 fileoffset);
     virtual bool getRow(MemoryBuffer & out, __int64 row);
     virtual bool getRawRow(MemoryBuffer & out, __int64 row);
-    virtual void serialize(MemoryBuffer & out);
     virtual bool isMappedIndexField(unsigned columnIndex);
     virtual void onOpen() { dataSource->onOpen(); }
     virtual void onClose() { dataSource->onClose(); }
@@ -195,10 +191,8 @@ public:
 
     void addValue(unsigned lenText, const char * value);
 
-    void deserialize(MemoryBuffer & buffer);
     bool isValid(const byte * rowValue, const unsigned * offsets);
     bool optimizeFilter(IFvDataSource * dataSource);
-    void serialize(MemoryBuffer & buffer);
 
 protected:
     bool matches(const byte * rowValue, size32_t valueLen, const byte * value);
@@ -254,10 +248,6 @@ public:
     {
         return parent->getRawRow(out, row);
     }
-    virtual void serialize(MemoryBuffer & out)
-    {
-        parent->serialize(out);
-    }
     virtual bool isMappedIndexField(unsigned columnIndex)
     {
         return parent->isMappedIndexField(columnIndex);
@@ -290,7 +280,6 @@ public:
 
     virtual bool getRow(MemoryBuffer & out, __int64 row);
     virtual bool getRawRow(MemoryBuffer & out, __int64 row);
-    virtual void serialize(MemoryBuffer & out);
     virtual __int64 getNumRows() const;
 
 protected:
@@ -313,7 +302,6 @@ public:
     virtual IFilteredResultSet * createFiltered()           { UNIMPLEMENTED; }  // Would need to clone filters into new resultset
     virtual bool getRow(MemoryBuffer & out, __int64 row);
     virtual bool getRawRow(MemoryBuffer & out, __int64 row);
-    virtual void serialize(MemoryBuffer & out);
     virtual __int64 getNumRows() const;
 
 protected:
@@ -324,47 +312,24 @@ class CResultSetCursor : implements IExtendedResultSetCursor, public CInterface
 {
 public:
     CResultSetCursor(const CResultSetMetaData & _meta, IExtendedNewResultSet * _resultSet);
-    CResultSetCursor(const CResultSetMetaData & _meta, IExtendedNewResultSet * _resultSet, MemoryBuffer & val);
     ~CResultSetCursor();
     IMPLEMENT_IINTERFACE;
 
 //interface IResultSet, IResultSetCursor shared
     virtual bool absolute(__int64 row);
-    virtual void afterLast();
-    virtual void beforeFirst();
-    virtual bool fetch(__int64 fileoffset);
     virtual bool first();
-    virtual bool getBoolean(int columnIndex);
-    virtual IDataVal & getBytes(IDataVal &d, int columnIndex);
     virtual IResultSetCursor * getChildren(int columnIndex) const;
-    virtual xdouble getDouble(int columnIndex);
-    virtual int getFetchSize() const;
     virtual bool getIsAll(int columnIndex) const;
-    virtual __int64 getInt(int columnIndex);
     virtual IDataVal & getRaw(IDataVal &d, int columnIndex);
-    virtual IDataVal & getRawRow(IDataVal &d);
-    virtual int getType();
     virtual const IResultSetMetaData & getMetaData() const;
     virtual __int64 getNumRows() const;
-    virtual IStringVal & getString(IStringVal & ret, int columnIndex);
-    virtual bool isAfterLast() const;
-    virtual bool isBeforeFirst() const;
-    virtual bool isFirst() const;
-    virtual bool isLast() const;
-    virtual bool isNull(int columnIndex) const;
     virtual bool isValid() const;
-    virtual bool last();
     virtual bool next();
-    virtual bool previous();
     virtual INewResultSet * queryResultSet() { return resultSet; }
-    virtual bool relative(__int64 rows);
-    virtual void setFetchSize(int rows);
     virtual bool supportsRandomSeek() const;
-    virtual void serialize(IDataVal & d);
     virtual IStringVal & getDisplayText(IStringVal &ret, int columnIndex);
     virtual IStringVal & getXml(IStringVal & ret, int columnIndex);
     virtual IStringVal & getXmlRow(IStringVal &ret);
-    virtual IStringVal & getXmlItem(IStringVal & ret);
 
     virtual void beginWriteXmlRows(IXmlWriter & writer);
     virtual void writeXmlRow(IXmlWriter &writer);
@@ -375,6 +340,7 @@ public:
     virtual void noteRelatedFileChanged() {}
 
 protected:
+    bool getBoolean(int columnIndex);
     void calcFieldOffsets();
     void init(IExtendedNewResultSet * _resultSet);
     bool isMappedIndexField(unsigned columnIndex) { return resultSet->isMappedIndexField(columnIndex); }
@@ -383,8 +349,6 @@ protected:
 
     virtual __int64 getCurRow() const;
     virtual __int64 translateRow(__int64 row) const;
-    virtual void serializeType(MemoryBuffer & buffer);
-    virtual void serialize(MemoryBuffer & buffer);
 
 protected:
     const CResultSetMetaData & meta;
@@ -403,37 +367,16 @@ public:
 
 //interface IResultSet, IResultSetCursor shared
     virtual bool absolute(__int64 row);
-    virtual void afterLast();
-    virtual void beforeFirst();
-    virtual bool fetch(__int64 fileoffset);
     virtual bool first();
-    virtual bool getBoolean(int columnIndex);
-    virtual IDataVal & getBytes(IDataVal &d, int columnIndex);
     virtual IResultSetCursor * getChildren(int columnIndex) const;
-    virtual xdouble getDouble(int columnIndex);
-    virtual int getFetchSize() const;
     virtual bool getIsAll(int columnIndex) const;
-    virtual __int64 getInt(int columnIndex);
     virtual IDataVal & getRaw(IDataVal &d, int columnIndex);
-    virtual IDataVal & getRawRow(IDataVal &d);
     virtual __int64 getNumRows() const;
-    virtual IStringVal & getString(IStringVal & ret, int columnIndex);
-    virtual bool isAfterLast() const;
-    virtual bool isBeforeFirst() const;
-    virtual bool isFirst() const;
-    virtual bool isLast() const;
-    virtual bool isNull(int columnIndex) const;
     virtual bool isValid() const;
-    virtual bool last();
     virtual bool next();
-    virtual bool previous();
     virtual INewResultSet * queryResultSet();
-    virtual bool relative(__int64 rows);
-    virtual void serialize(IDataVal & d);
     virtual IStringVal & getDisplayText(IStringVal &ret, int columnIndex);
-    virtual IStringVal & getXml(IStringVal & ret, int columnIndex);
     virtual IStringVal & getXmlRow(IStringVal &ret);
-    virtual IStringVal & getXmlItem(IStringVal &ret);
     virtual void beginWriteXmlRows(IXmlWriter & writer);
     virtual void writeXmlRow(IXmlWriter &writer);
     virtual void endWriteXmlRows(IXmlWriter & writer);
@@ -457,14 +400,8 @@ public:
     inline void addDependent(IExtendedResultSetCursor & next) { dependents.append(OLINK(next)); }
 
     virtual bool absolute(__int64 row);
-    virtual void afterLast();
-    virtual void beforeFirst();
-    virtual bool fetch(__int64 fileoffset);
     virtual bool first();
-    virtual bool last();
     virtual bool next();
-    virtual bool previous();
-    virtual bool relative(__int64 rows);
     virtual void noteRelatedFileChanged();
     virtual IExtendedResultSetCursor * queryBase() { return cursor; }
 
@@ -513,31 +450,6 @@ protected:
 
 //---------------------------------------------------------------------------
 
-class CResultSetSortedCursor : public CResultSetCursor
-{
-public:
-    CResultSetSortedCursor(const CResultSetMetaData & _meta, IExtendedNewResultSet * _resultSet, unsigned _column, bool _desc);
-    CResultSetSortedCursor(const CResultSetMetaData & _meta, IExtendedNewResultSet * _resultSet, unsigned _column, bool _desc, MemoryBuffer & buffer);
-    ~CResultSetSortedCursor();
-
-    virtual bool absolute(__int64 row);
-
-protected:
-    void buildIndex();
-    virtual __int64 getCurRow() const;
-    virtual __int64 translateRow(__int64 row) const;
-    virtual void serializeType(MemoryBuffer & buffer);
-    virtual void serialize(MemoryBuffer & buffer);
-
-protected:
-    unsigned column;
-    bool desc;
-    unsigned numEntries;
-    unsigned * elements;
-    __int64 lastRow;
-};
-
-
 class CFilteredResultSetBuilder : implements IFilteredResultSet, public CInterface
 {
 public:
@@ -591,33 +503,5 @@ protected:
 };
 
 
-class CRemoteResultSetServer  : public CInterface
-{
-public:
-    void start();
-
-protected:
-    CResultSetFactory factory;
-};
-
-
-class CRemoteResultSetFactory : public CResultSetFactoryBase
-{
-public:
-    CRemoteResultSetFactory(const char * remoteServer, const char * _username, const char * _password);
-    CRemoteResultSetFactory(const char * remoteServer, ISecManager &secmgr, ISecUser &secuser);
-
-    virtual INewResultSet * createNewResultSet(IConstWUResult * wuResult, const char * wuid);
-    virtual INewResultSet * createNewFileResultSet(const char * logicalFile, const char * cluster);
-    virtual INewResultSet * createNewResultSet(const char * wuid, unsigned sequence, const char * name);
-    virtual INewResultSet * createNewFileResultSet(const char * logicalFile);
-    virtual IResultSetMetaData * createResultSetMeta(IConstWUResult * wuResult);
-    virtual IResultSetMetaData * createResultSetMeta(const char * wuid, unsigned sequence, const char * name);
-
-protected:
-    SocketEndpoint serverEP;
-};
-
-
 #endif // _resultsetscm_SCM_INCL
 //end

+ 0 - 61
common/fileview2/fvserver.cpp

@@ -1,61 +0,0 @@
-/*##############################################################################
-
-    HPCC SYSTEMS software Copyright (C) 2012 HPCC Systems®.
-
-    Licensed under the Apache License, Version 2.0 (the "License");
-    you may not use this file except in compliance with the License.
-    You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-    Unless required by applicable law or agreed to in writing, software
-    distributed under the License is distributed on an "AS IS" BASIS,
-    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-    See the License for the specific language governing permissions and
-    limitations under the License.
-############################################################################## */
-
-#include <jliball.hpp>
-
-#include "daclient.hpp"
-#include "dadfs.hpp"
-#include "dasds.hpp"
-#include "dalienv.hpp"
-#include "fileview.hpp"
-#include "dllserver.hpp"
-
-Semaphore sem;
-
-
-bool myAbortHandler()
-{
-    sem.signal();
-    return false;
-}
-
-
-int main(int argc, const char *argv[])
-{
-    InitModuleObjects();
-    if (argc < 4)
-    {
-        printf("fvserver <dali-server> <queue> <cluster>");
-        return 1;
-    }
-    
-    Owned<IGroup> serverGroup = createIGroup(argv[1],DALI_SERVER_PORT);
-    initClientProcess(serverGroup, DCR_Other, 9123, NULL, NULL, MP_WAIT_FOREVER);
-    setPasswordsFromSDS(); 
-
-    LocalAbortHandler localHandler(myAbortHandler);
-    startRemoteDataSourceServer(argv[2], argv[3]);
-    sem.wait();
-    stopRemoteDataSourceServer();
-
-    closeDllServer();
-    closeEnvironment();
-    closedownClientProcess();
-    releaseAtoms();
-    return 0;
-}
-

+ 2 - 282
esp/services/ws_dfu/ws_dfuService.cpp

@@ -3804,8 +3804,7 @@ bool CWsDfuEx::onDFUGetDataColumns(IEspContext &context, IEspDFUGetDataColumnsRe
             {
                 IArrayOf<IEspDFUDataColumn> dataKeyedColumns[MAX_KEY_ROWS];
                 IArrayOf<IEspDFUDataColumn> dataNonKeyedColumns[MAX_KEY_ROWS];
-                Owned<IResultSetCursor> cursor = result->createCursor();
-                const IResultSetMetaData & meta = cursor->queryResultSet()->getMetaData();
+               const IResultSetMetaData & meta = result->getMetaData();
                 int columnCount = meta.getColumnCount();
                 int keyedColumnCount = meta.getNumKeyedColumns();
                 unsigned columnSize = 0;
@@ -4522,8 +4521,7 @@ bool CWsDfuEx::onDFUGetFileMetaData(IEspContext &context, IEspDFUGetFileMetaData
         if (!result)
             throw MakeStringException(ECLWATCH_INVALID_INPUT, "CWsDfuEx::onDFUGetFileMetaData: Failed to access FileResultSet for %s.", fileName);
 
-        Owned<IResultSetCursor> cursor = result->createCursor();
-        CDFUFileMetaDataReader dataReader(context, cursor->queryResultSet()->getMetaData());
+        CDFUFileMetaDataReader dataReader(context, result->getMetaData());
         resp.setTotalColumnCount(dataReader.getTotalColumnCount());
         resp.setKeyedColumnCount(dataReader.getKeyedColumnCount());
         resp.setDataColumns(dataReader.getDataColumns());
@@ -4573,8 +4571,6 @@ bool CWsDfuEx::onDFUBrowseData(IEspContext &context, IEspDFUBrowseDataRequest &r
         bool bSchemaOnly=req.getSchemaOnly() ? req.getSchemaOnly() : false;
         bool bDisableUppercaseTranslation = req.getDisableUppercaseTranslation() ? req.getDisableUppercaseTranslation() : false;
 
-#define HPCCBROWSER 1
-#ifdef HPCCBROWSER
         const char* filterBy = req.getFilterBy();
         const char* showColumns = req.getShowColumns();
 
@@ -4680,231 +4676,6 @@ bool CWsDfuEx::onDFUBrowseData(IEspContext &context, IEspDFUBrowseDataRequest &r
             if (req.getCountForGoback())
                 resp.setCountForGoback(req.getCountForGoback());
         }
-#else
-        StringBuffer username;
-        context.getUserID(username);
-        double version = context.getClientVersion();
-        const char* passwd = context.queryPassword();
-
-        StringBuffer eclqueue, cluster;
-        Owned<IUserDescriptor> userdesc;
-        try
-        {
-            userdesc.setown(createUserDescriptor());
-            userdesc->set(username.str(), passwd, context.querySessionToken(), context.querySignature());
-            Owned<IDistributedFile> df = queryDistributedFileDirectory().lookup(logicalNameStr.str(), userdesc);
-            if(df)
-            {
-                const char* wuid = df->queryAttributes().queryProp("@workunit");
-                if (wuid && *wuid)
-                {
-                    CWUWrapper wu(wuid, context);
-                    if (wu)
-                    {
-                        SCMStringBuffer eclqueue0, cluster0;
-                        eclqueue.append(wu->getQueue(eclqueue0).str());
-                        cluster.append(wu->getClusterName(cluster0).str());
-                    }
-                }
-            }
-        }
-        catch(...)
-        {
-            ;
-        }
-
-        Owned<IResultSetFactory> resultSetFactory = getSecResultSetFactory(context.querySecManager(), *context.queryUser());
-        Owned<INewResultSet> result;
-        if (eclqueue && *eclqueue && cluster && *cluster)
-        {
-            result.setown(resultSetFactory->createNewFileResultSet(logicalNameStr.str(), eclqueue, cluster));
-        }
-        else if (m_clusterName.length() > 0 && m_eclServerQueue.length() > 0)
-        {
-            result.setown(resultSetFactory->createNewFileResultSet(logicalNameStr.str(), m_eclServerQueue.str(), m_clusterName.str()));
-        }
-        else
-        {
-            result.setown(resultSetFactory->createNewFileResultSet(logicalNameStr.str(), NULL, NULL));
-        }
-        const IResultSetMetaData &meta = result->getMetaData();
-        unsigned columnCount = meta.getColumnCount();
-
-        StringArray filterByNames, filterByValues;
-        IArrayOf<IEspDFUDataColumn> dataColumns;
-        if (version > 1.04 && columnCount > 0)
-        {
-            int lenShowCols = 0, showCols[1024];
-            const char* showColumns = req.getShowColumns();
-            char *pShowColumns =  (char*) showColumns;
-            while (pShowColumns && *pShowColumns)
-            {
-                StringBuffer buf;
-                while (pShowColumns && isdigit(pShowColumns[0]))
-                {
-                    buf.append(pShowColumns[0]);
-                    pShowColumns++;
-                }
-                if (buf.length() > 0)
-                {
-                    showCols[lenShowCols] = atoi(buf.str());
-                    lenShowCols++;
-                }
-
-                if (!pShowColumns || !*pShowColumns)
-                    break;
-                pShowColumns++;
-            }
-
-            for(int col = 0; col < columnCount; col++)
-            {
-                Owned<IEspDFUDataColumn> item = createDFUDataColumn("","");
-
-                SCMStringBuffer scmbuf;
-                meta.getColumnLabel(scmbuf, col);
-                item->setColumnLabel(scmbuf.str());
-                if (!showColumns || !*showColumns)
-                {
-                    item->setColumnSize(1); //Show this column
-                    dataColumns.append(*item.getLink());
-                    continue;
-                }
-                else
-                {
-                    item->setColumnSize(0); //not show this column
-                }
-
-                for(int col1 = 0; col1 < lenShowCols; col1++)
-                {
-                    if (col == showCols[col1])
-                    {
-                        item->setColumnSize(1); //Show this column
-                        break;
-                    }
-                }
-                dataColumns.append(*item.getLink());
-            }
-
-            const char* filterBy = req.getFilterBy();
-            if (filterBy && *filterBy)
-            {
-                parseTwoStringArrays(filterBy, filterByNames, filterByValues);
-            }
-
-            if (req.getStartForGoback())
-                resp.setStartForGoback(req.getStartForGoback());
-            if (req.getCountForGoback())
-                resp.setCountForGoback(req.getCountForGoback());
-        }
-
-        StringBuffer filterByStr, filterByStr0;
-        unsigned int max_name_length = 3; //max length for name length
-        unsigned int max_value_length = 4; //max length for value length:
-        filterByStr0.appendf("%d%d", max_name_length, max_value_length);
-        if (columnCount > 0 && filterByNames.length() > 0)
-        {
-            Owned<IFilteredResultSet> filter = result->createFiltered();
-
-            for (int ii = 0; ii < filterByNames.length(); ii++)
-            {
-                const char* columnName = filterByNames.item(ii);
-                const char* columnValue = filterByValues.item(ii);
-                if (columnName && *columnName && columnValue && *columnValue)
-                {
-                    int col = 0;
-                    for(col = 0; col < columnCount; col++)
-                    {
-                        SCMStringBuffer scmbuf;
-                        meta.getColumnLabel(scmbuf, col);
-                        if (stricmp(scmbuf.str(), columnName) == 0)
-                        {
-                            filter->addFilter(col, columnValue);
-                            filterByStr.appendf("%s[%s]", columnName, columnValue);
-                            filterByStr0.appendf("%03d%04d%s%s", strlen(columnName), strlen(columnValue), columnName, columnValue);
-
-                            break;
-                        }
-                    }
-                    if (col == columnCount)
-                    {
-                        throw MakeStringException(0,"The filter %s not defined", columnName);
-                    }
-                }
-            }
-
-            result.setown(filter->create());
-        }
-
-        StringBuffer text;
-        const char* schemaName = "myschema";
-        Owned<IResultSetCursor> cursor = result->createCursor();
-
-        text.append("<XmlSchema name=\"").append(schemaName).append("\">");
-        const IResultSetMetaData & meta1 = cursor->queryResultSet()->getMetaData();
-        StringBufferAdaptor adaptor(text);
-        meta1.getXmlSchema(adaptor, false);
-        text.append("</XmlSchema>").newline();
-
-        text.append("<Dataset");
-        //if (name)
-        //  text.append(" name=\"").append(name).append("\" ");
-        text.append(" xmlSchema=\"").append(schemaName).append("\" ");
-        text.append(">").newline();
-
-        //__int64 total=0;
-        __int64 total=result->getNumRows();
-        __int64 read=0;
-        try
-        {
-            for(bool ok=cursor->absolute(start);ok;ok=cursor->next())
-            {
-                //total++;
-                //if(read < count)
-                {
-                    text.append(" ");
-                    StringBufferAdaptor adaptor2(text);
-                    cursor->getXmlRow(adaptor2);
-                    text.newline();
-
-                    read++;
-                }
-                if(read>=count)
-                    break;
-            }
-        }
-        catch(IException* e)
-        {
-            if ((version < 1.08) || (e->errorCode() != FVERR_FilterTooRestrictive))
-                throw e;
-
-            e->Release();
-            resp.setMsgToDisplay("This search is timed out due to the restrictive filter. There may be more records.");
-        }
-
-        if (count > read)
-            count = read;
-
-        text.append("</Dataset>").newline();
-        ///DBGLOG("Dataset:%s", text.str());
-
-        MemoryBuffer buf;
-        struct MemoryBuffer2IStringVal : public CInterface, implements IStringVal
-        {
-             MemoryBuffer2IStringVal(MemoryBuffer & _buffer) : buffer(_buffer) {}
-             IMPLEMENT_IINTERFACE;
-
-             virtual const char * str() const { UNIMPLEMENTED;  }
-             virtual void set(const char *val) { buffer.append(strlen(val),val); }
-             virtual void clear() { } // clearing when appending does nothing
-             virtual void setLen(const char *val, unsigned length) { buffer.append(length, val); }
-             virtual unsigned length() const { return buffer.length(); };
-             MemoryBuffer & buffer;
-        } adaptor0(buf);
-
-        adaptor0.set(text.str());
-        buf.append(0);
-        resp.setResult(buf.toByteArray());
-#endif
 
         //resp.setFilterBy(filterByStr.str());
         if (filterByStr.length() > 0)
@@ -5634,62 +5405,11 @@ int CWsDfuEx::browseRelatedFileDataSet(double version, IRelatedBrowseFile * file
         {
             for(bool ok=cursor->absolute(start);ok;ok=cursor->next())
             {
-                if (rows > 200)
-                    throw MakeStringException(ECLWATCH_TOO_MANY_DATA_ROWS,"Too many data rows selected.");
 
                 StringBuffer text;
                 StringBufferAdaptor adaptor2(text);
                 cursor->getXmlRow(adaptor2);
 
-#ifdef TESTDATASET
-text.clear();
-if (depth < 1)
-{
-    if (rows < 1)
-    {
-        text.append("<Row><state>AA</state><rtype>ab</rtype><id>abc</id><seq>12</seq></Row>");
-    }
-    else if (rows < 2)
-    {
-        text.append("<Row><state>BB</state><rtype>ba</rtype><id>abc</id><seq>13</seq></Row>");
-    }
-    else if (rows < 3)
-    {
-        text.append("<Row><state>CC</state><rtype>ca</rtype><id>bcd</id><seq>13</seq></Row>");
-    }
-    else
-    {
-        break;
-    }
-}
-else
-{
-    if (read < 1)
-    {
-        if (rows > 0)
-            break;
-        text.append("<Row><date_first_reported>20090511</date_first_reported><msa>6200</msa><sid>abc</sid><seq>12</seq></Row>");
-    }
-    else if (read < 2)
-    {
-        if (rows > 0)
-            break;
-        text.append("<Row><date_first_reported>20090512</date_first_reported><msa>6201</msa><sid>abc</sid><seq>13</seq></Row>");
-    }
-    else if (read < 3)
-    {
-        if (rows > 1)
-            break;
-        else if (rows > 0)
-            text.append("<Row><date_first_reported>20090514</date_first_reported><msa>6203</msa><sid>bcd</sid><seq>13</seq></Row>");
-        else
-            text.append("<Row><date_first_reported>20090513</date_first_reported><msa>6202</msa><sid>bcd</sid><seq>13</seq></Row>");
-    }
-}
-
-rows++;
-#endif
-
                 StringArray dataSetOutput0;
                 if (parentName && *parentName)
                 {

+ 1 - 1
esp/services/ws_workunits/ws_workunitsHelpers.cpp

@@ -1442,7 +1442,7 @@ void WsWuInfo::getResult(IConstWUResult &r, IArrayOf<IEspECLResult>& results, un
                 Owned<IResultSetCursor> cursor(result->createCursor());
                 cursor->first();
 
-                if (cursor->getIsAll(0))
+                if (r.getResultIsAll())
                 {
                     value.set("<All/>");
                 }

+ 2 - 3
esp/services/ws_workunits/ws_workunitsService.cpp

@@ -2656,11 +2656,11 @@ unsigned getResultCSV(IStringVal& ret, INewResultSet* result, const char* name,
     csvOptions.terminator.set("\n");
     csvOptions.includeHeader = true;
     Owned<CommonCSVWriter> writer = new CommonCSVWriter(XWFtrim, csvOptions);
-    Owned<IResultSetCursor> cursor = result->createCursor();
-    const IResultSetMetaData & meta = cursor->queryResultSet()->getMetaData();
+    const IResultSetMetaData & meta = result->getMetaData();
     getCSVHeaders(meta, writer, headerLayer);
     writer->finishCSVHeaders();
 
+    Owned<IResultSetCursor> cursor = result->createCursor();
     count = writeResultCursorXml(*writer, cursor, name, start, count, NULL);
     ret.set(writer->str());
     return count;
@@ -2671,7 +2671,6 @@ void appendResultSet(MemoryBuffer& mb, INewResultSet* result, const char *name,
     if (!result)
         return;
 
-    Owned<IResultSetCursor> cursor(result->createCursor());
     total=result->getNumRows();
 
     if(bin)